Learning Test-Driven Development
توسعه آزمون محور، تکنیکی برای طراحی و ساختار دهی کد است که سادگی را تشویق میکند و اعتماد شخص به کدها را حتی با افزایش اندازه آن، بیشتر میکند. ما بسیار خوش شانس هستیم! ما سالها توسعه آزمون محور داشته ایم. چندین دهه از زمانی که توسعه دهندگانی که کد برنامه فضایی مرکوری را نوشتند و Punch Card TDD (توسعه آزمون محور) را عملی کردند میگذرد. همچنین کتابخانههای XUnit که پذیرش توسعه آزمون محور را تسهیل میکنند به اوایل قرن برمیگردند. در واقع، Kent Beck، که کتاب توسعه آزمون محور: با مثال (Addison-Wesley Professional، 2002) را نوشت و چارچوب JUnit را توسعه داد، به خودش اشاره میکند که شیوه TDD را «کشف مجدد» کرده است (و نه اختراع). این گفته گواه فروتنی اوست، اما حقیقت نیز هست. قدمت TDD به اندازه خود توسعه نرم افزار است.
پس چرا توسعه آزمون محور هنوز با روش استاندارد نوشتن کد فاصله دارد؟ چرا زمانی که فشار زمان بندی وجود دارد، یا زمانی که بودجههای فناوری اطلاعات باید کاهش یابند، یا (مورد علاقه شخصی من) زمانی که تمایل به «افزایش سرعت تیم تحویل نرمافزار» وجود دارد، اغلب اولین شیوه ای است که قربانی میشود؟ همه این دلایل با وجود در دسترس بودن شواهد تجربی و آزمایشی که TDD تعداد نقصها را کاهش میدهد، طراحی سادهتری ایجاد میکند و اعتماد توسعهدهندگان به کد خودشان را بهبود میبخشد، ارائه شدهاند.
آیا توسعه آزمون محور تضمین میکند که تمام کدهایی که مینویسیم به طور خودکار و ناگزیر سادهترین کدی هستند که کار میکنند؟ نه اینطور نیست. هیچ شیوه، قانون، کتاب یا بیانیه ای نمیتواند این کار را انجام دهد. این به افرادی بستگی دارد که این شیوهها را عملی میکنند تا اطمینان حاصل کنند که سادگی به دست آمده است و حفظ میشود.
کد شما گواهی بر مهارتهای شما به عنوان یک توسعه دهنده است. مهم نیست از چه زبانی استفاده میکنید، کد شما باید تمیز، ظریف و مرتب باشد؟ با توسعه آزمون محور (TDD)، کد بهتری را مینویسید که به راحتی قابل درک است، ظرافت خود را حفظ میکند و برای سالهای سال کار میکند. کتاب Learning Test-Driven Development (یادگیری توسعه آزمون محور) به شما نشان میدهد که چگونه TDD در سه زبان مختلف کار میکند: Go، JavaScript و Python.
مطالبی که در کتاب Learning Test-Driven Development: A Polyglot Guide to Writing Uncluttered Code، یاد خواهید گرفت:
- مهار کردن پیچیدگی دامنه با استفاده از رویکرد تقسیم و غلبه
- درک نحوه عملکرد TDD در زبان ها، چارچوبهای تست و مفاهیم دامنه
- دیدن اینکه چگونه TDD، یکپارچه سازی مداوم و تحویل مداوم را امکان پذیر میکند
- پشتیبانی از ریفکتور کردن و باز طراحی با TDD
- راه اندازی یک محیط یکپارچه سازی مداوم با آزمونهای واحد تولید شده در حین TDD
- نوشتن کدهای تمیز و مرتب با استفاده از TDD در Go، جاوا اسکریپت و پایتون