تست نویسی چرا و چطور سری اول - "چرا تست بنویسیم؟"

داود ی برنامه نویس اندرویده. اون تازه کار نوشتن ی امکان جدید تو برنامه رو به اتمام رسونده و صدها خط کد به کدبیس برنامه اضافه کرده. داود برنامه رو اجرا میکنه، میره به صفحه مورد نظر که تغییرش داده و… کرش

برمیگرده سر کد با تعجب دقایقی صفحه مانیتور رو نگاه میکنه ی کم میخوندش و… آها. فراموش کرده که ی متغیر رو پر کنه. ی بار دیگه اجراش می­کنه و به همون صفحه میره. ورودی رو تو editText وارد می­کنه. هوم… برنامه "سود" رو درست محاسبه نکرده.

دوباره برمی­گرده سر کد و این دفعه debuggerو روشن می­کنه. بعد از مدتی مشکلو می­فهمه. نسبت به دفعه قبل وقت بیشتری ازش میگیره.. این دفعه برنامه درست کار میکنه.

این کار یعنی اجرا، تست دستی و رفع باگ حدود 20 دقیقه ای ازش وقت میگیره.




زهرا، در مقابل کارش رو به روش دیگه ای انجام میده. اون هر بار که تغییر کوچیکی تو کد میده ی unit test هم براش می­نویسه که از سالم بودنش مطمئن بشه. زهرا بعد نوشتن هر تیکه­​ ی کد تستاش رو اجرا میکنه، تست ها در عرض چند ثانیه اجرا میشن بهمین خاطر نیازی نیست زهرا زیاد منتظر بمونه تا متوجه بشه میتونه بره سراغ تیکه ی بعدی یا نه.

اگه مشکلی باشه زهرا سریع متوجه مشکل میشه و حلش میکنه. حل مشکلات تو روش اون نسبت به روش داود راحت ­تره، چون فقط لازمه تو قسمت کوچیکی از کد دنبال مشکل بگرده.

اون تست هاش رو تو کدبیس ذخیره میکنه تا هر بار که تغییری تو قسمت خاصی داد، مطمئن بشه تغییر جدید امکانات قبلی برنامه رو خراب نمیکنه. اینطوری دیگه لازم نیست کلی زمان برای تست دستی امکانات موجود برنامه بزاره.(چون تست های قبلی هست و زهرا اونها رو همراه تست های جدید اجرا میکنه)

در مورد فهم نحوه کار سیستم هم، تست های زهرا، برای بقیه اعضای تیم زمان می خره. وقتی علی می­پرسه: "وقتی X و Y ترکیب میشن سیستم چطور کار میکنه؟"، داود میگه: "اوممم… اینطوریه که… راستش نمیدونم بزار کدو نگاه کنم." بعضی وقتا این کارش چند دقیقه زمان میبره، ولی اکثرا نیم ساعت یا بیشتر ازش زمان می گیره. ولی زهرا میره سراغ unit-testهاش و به جواب های لحظه ای می­رسه.(تست ها مفهوم کد نوشته شده رو آسون­​ تر از خود کد می­رسونن)




اجرای روش زهرا به این آسونی هام نیست و مشکلاتی داره، ولی اگه دانش تست نویسی رو داشته باشیم، میشه از پس این مشکلات بر بیایم. ی راه خوب خوندن کتاب "Pragmatic Unit Testing in Java 8 with JUnit" که این داستان از این کتاب برگرفته شده.

این سری اول از مجموعه ی "تست نویسی چرا و چطور" هست. منتظر قسمت های بعدی باشید.

لینک کتاب نوشته Jeff Langr