Unit Test
مقدمه
در این فاز با Unit Test و مفهوم Code Coverage آشنا میشوید. همچنین برای کدی که در فازهای قبلی نوشتهاید، تست مینویسید و کیفیت کد خود را بیش از پیش افزایش میدهید.
خوب است اما نیمنگاهی به مسئله تست به طور کلی داشته باشیم. در تصویر زیر میتوانید سطوج مختلف تست را مشاهده کنید:
مفهوم Unit Test و اهمیت آن
برای آگاهی از اهمیت نوشتن Unit Test در فرایند توسعه نرمافزار، لینکهای زیر را مطالعه کنید:
- Unit Testing - Important role in Software Development
- Why Is Unit Testing Important in Software Development?
- The importance of Unit Testing
- Time difference between developing with unit tests vs no tests
مفهوم Code Coverage در Unit Testing و اهمیت آن
پس از مطالعه و درک مفهوم Unit Testing و اهمیت آن در توسعۀ نرمافزار، برای درک مفهوم Code Coverage و اهمیت آن لینکهای زیر را مطالعه کنید:
- Code Coverage - Wikipedia
- 5 Reasons You Should Care about Code Coverage
- The Importance of Code Coverage
نوشتن Unit Test در java با استفاده از jUnit
برای شروع کار با jUnit پیشنهاد میشود Getting Started with jUnit Code را مطالعه کنید. همچنین میتوانید نحوۀ مشاهدۀ Code Coverage را در intelliJ Idea از طریق این لینک ببینید.
تاثیر اصول SOLID بر Unit Testing
برای آگاهی از تاثیر رعایت اصول SOLID بر تستنویسی SOLID, Object Oriented Design and Unit Testing را مطالعه کنید.
آشنایی با مبانی TDD
برای درک مفهوم TDD و مراحل آن لینکهای زیر را مطالعه کنید:
آشنایی بیشتر با اصول SOLID و تاثیر آن بر TDD
در این مرحله، فکر کنید که هر یک از اصول SOLID، چگونه میتواند بر سادهتر شدن روند TDD تاثیر بگذارد. با همتیمی خود در این مورد بحث کنید.
در ادامه برای درک این موضوع لینکهای زیر را مطالعه کنید:
- SOLID design principles make test-driven development (TDD) faster and easier
- Does test-driven development force me to follow SOLID?
در جستجوی تست!
حال میخواهیم پروژههای که پیشتر ساختهایم را یک قدم به محصول واقعی نزدیکتر کنیم و برای آن یونیتتست بنویسیم. با استفاده از دانشی که در این فاز بدست آوردهاید سعی کنید برای هسته اصلی این سرویس جستوجو (فقط هسته اصلی!) یونیتتست بنویسید و coverage آن بخش از پروژه را به ۱۰۰٪ نزدیک کنید.
همچنین در این فاز میخواهیم یک ویژگی جدید و جالب را به پروژهمان اضافه کنیم. تصور کنید لیست بلندی از کاربران پیامرسان را در اختیار دارید که هر کدام دارای نام و نام خانوادگی مشخصی به صورت یکتا هستند. حال به عنوان یک کاربر میخواهیم لیستی از افرادی که نام و یا نام خانوادگیشان با عبارت `` آغاز میشود را پیدا کنیم. مشابه زمانی که به دنبال یک کالای خاص در فروشگاه اینترنتی میگردیم ... حال از شما میخواهیم این قابلیت را برای برنامه خود با رویکرد TDD پیادهسازی کنید. به نظرتان چگونه میتوان از چنین قابلیتی پشتیبانی کرد.