توسعه آزمون محور – بخش اول

  • علیرضا اسماعیلی

نویسنده: علیرضا اسماعیلی، مدیرعامل شرکت رویای سبز نرم افزارهای آینده (فیوسافت) و عضو تیم ترجمه کتاب اصول و روش کاربردی اسکرام

علیرضا اسماعیلی هستم. مدیر مجموعه‎ای که شاید یکی از مهمترین دغدغه‎هاشون، تولید محصول باکیفیت بوده. این قراریه که با هم گذاشتیم: محصول باکیفیت تولید می‎کنیم؛ محصولی که زیر اون رو امضا کنیم و همه‎ی مسئولیتش رو می‎پذیریم؛ هرچند در دوره‎های مختلف، تجربه‎های موفق و ناموفق زیادی داشته‎ایم.
به نظرم جا انداختن چنین ارزشی در تیم یا به اصطلاح فرهنگ‎سازی اون، نیازمند به‎کارگیری یکی از مهمترین تجربه‎های چابکه. Test Driven Development یا به اختصار TDD. برای اطلاعات بیشتر اینجا و اینجا رو که ببینید.

Professional Test Driven Development with C#: Developing Real World Applications with TDD

با دوست عزیزم آقای مهندس مسعود خاری مشورت کردم، آمازون را جستجو کردم و کتاب‎های مختلف تو این حوزه رو بررسی کردم تا به کتاب Professional Test Driven Development with C#: Developing Real World Applications with TDD از انتشارات راکس رسیدم.

کتابی که مفاهیم TDD رو به زبانی ساده بیان می‎کنه و در کنارش شما رو تا جزییات پیاده‎سازی همراهی می‎کنه. این کتاب به زبانی ساده نوشته شده و مرجع مفیدی برای برنامه نویساست. لذت خوندن این کتاب رو از دست ندید!
متأسفانه رویکردی که بیشتر افراد در برخورد با مطالب جدید در پیش می‎گیرند مراجعه به اینترنت و استفاده از مطالب جسته و گریخته است. به جد توصیه می‎کنم که برای یادگیری این موضوع به سراغ اینترنت نرید و از کتاب‎های معتبر استفاده کنید. در این مورد کتابی دیدم با عنوان «کم‌عمق‌ها – اینترنت با مغز ما چه می‌کند». این کتاب در سال ۹۳ توسط آقای امیر سپهرام، ترجمه و توسط انتشارات مازیار به چاپ رسیده. برای اطلاعات بیشتر اینجا رو ببینید.

برای انتقال مفاهیم به همه‎ی اعضای تیم، مطالعه کتاب رو تو دستور کار تیم قرار دادیم. هر ماه دو فصل و آخر ماه یک آزمون کتبی به همراه آزمون عملی و انجام پروژه. این یادگیری حدود شش ماه طول کشید. مایلم نتیجه را از زبان چند نفر از اعضای تیم بشنوید:

مسیری جهت توسعه ی ماندگار وقابلیت نگهداری.
روشی که با آن از تغییرات نمی ترسیم.
روشی که با آن منبع باگ ها و مشکلات را به سرعت پیدا میکنیم.
زبانی است برای تعامل بهتر با کاربران غیر فنی و نیازمندهای عملیاتی.

آرین شمشیری، عضو تیم توسعه سیستم‌های مالی

با اینکه حرفای آرین شبیه به تبلیغاته ولی عین واقعیته.


توسعه مبتنی بر تست نه تنها یک روش، بلکه می‎تونیم بگیم یک تفکره. تفکری که منجر به بالا رفتن کیفیت کد و برنامه می‎شه و باعث می‎شه که در انتهای توسعه‎ی یک جزء کوچک یا یک ویژگی، از این موضوع اطمینان داشته باشیم که آن جزء یا ویژگی بطور کامل و صحیح وظیفه خودش رو در برنامه به انجام می رسونه و همچنین به یکپارچگی دائمی اجزای برنامه کمک بزرگی می‎کنه.

سیدحسین جلیلی، عضو تیم توسعه پروژه فین‌تک و نرم‌افزارهای اندروید


یکی از مزایایی که TDD به همراه می آورد این است که هر تکه از سیستم قابل اجرا بدون نیاز به کلیت سیستم است، هر تکه از سیستم آماده اجراست دقیقا وقتی شما بیشترین تمرکز و توجه را به چیزی که پیاده کردید دارید. یعنی نیاز نیست بخشهای دیگر کامل شوند تا شما از عملکرد تکه کدی که قبل تر نوشتید اطمینان پیدا کنید. شما در زمان کامل شدن یک ویژگی نمی‌توانید روی همه جزییات آن تسلط داشته باشید. امکان یافتن ، فهمیدن و حل کردن یک نقص در بین مجموعه ای از تکه های یک ویژگی بسیار دشوار تر از فهمیدن و حل کردن آن در یک تکه است!
به بیان دیگر به علت ظرفیت محدود ذهن انسان، هرچه مسئله یا اشکال یا قابلیت مورد نیاز سیستم، ساده تر و کوچک تر باشند ، امکان یافتن، فهمیدن و حل کردن اشکال یا توسعه قابلیت، با سرعت و کیفیت بالاتر همراه خواهد شد و در نهایت این تکه های با کیفیت و بررسی شده ، یک سیستم با کیفیت و بررسی شده را به وجود خواهند آورد.
و مهمترین حسی که این چنین سیستمی به من می دهد حس تسلط بر آن و تحت کنترل بودن اش در شرایط متفاوت است.
بر نیایم یک تنه با سه نفر
پس ببرمشان نخست از همدگر
هر یکی را من به سویی افکنم
چونک تنها شد سبیلش بر کنم

پیمان چیت‎ساز، مدیر پروژه فین‌تک


وقتی TDD رو بخونیم در اول می فهمیم سیستم بدون تست به فاجعه منجر می شه.
دوم اهمیت این موضوع که همه کار رو کنار بذاریم و اول از همه تست رو بنویسیم فوق‎العاده است واقعا کمکت می‌کنه به همون اندازه که نیازه کد بزنی و همین طور خیلی کمک می‌کنه ذهنمون منسجم‌تر, طراحی رو داخل همون تست ایجاد کنه.
سوم با تست خودکار و پیشروی برنامه اگر تست‌ها دقیق باشن با اضافه کردن هر ویژگی از تاثیر آن روی باقی قسمت ها با خبر می‌شیم.
در اخر هر هزینه‌ای برای نوشتن تست انجام دهیم در روند پروژه سرعت و دقتمان رو بالا می‌بره و هزینه انجام‌شده حتی بیشتر برگردانده می‌شود.

امیرمحمد قزوینی، عضو تیم توسعه سیستم‌های مالی


هنر نوشتن کد به میزان کافی برای کسب و کار، هنر وسیع اندیشیدن،

دقیقاً جمله «شروع کردن را متوقف کنید، تمام کردن را آغاز کنید» رو به معنای واقعی کلمه پیاده‎سازی می‎کنه چون باعث میشه صفر تا صد یک ویژگی کسب‎و ‎کار پیاده‎سازی بشه و از درستی‎شون اطمینان حاصل بشه.

ریحانه جعفری، عضو تیم توسعه BPMS

https://bibalan.com/?p=2006
علیرضا اسماعیلی

علیرضا اسماعیلی


کانال تلگرام

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

برای خروج از جستجو کلید ESC را بفشارید