✅ تست های شما باید ایزوله باشند
در حالت ایده آل، یک تست باید "کاملا" از سایر تست ها "ایزوله" باشه.
این امر موجب میشه تست ها هیچ تاثیری (side effect) روی هم نداشته باشند و ترتیب اجراشونم به هم بستگی نداشته باشه در نتیجه میتونیم براحتی اون ها رو به صورت موازی (Parallel) اجرا کنیم
این امر در بر نامه های وب مخصوصا از اهمیت بیشتری برخوردار میشه چرا که به دلیل ماهیت برنامه های وب، که درخواست ها به صورت موازی اجرا میشن، موازی اجرا شدن تست ها باعث میشه اطمینان خاطر بیشتری به عملکرد کد ها پیدا کنیم
مثلا فرض کنید برنامه نویسی اشتباها از روشی توی کدش استفاده کرده باشه که side effect داره (مثلا ذخیره Username کاربر جاری تو یه متغیر "static") در این صورت با موازی اجرا کردن تست ها به خطا میخوریم و متوجه ایراد کار میشیم ولی با اجرای ترتیبی (Sequential) خیر
اینکه چطور توابع side-effect free (بدون تاثیر جانبی) و بالا تر از اون pure functions (توابع خالص) ایجاد کنیم از مباحث Functional Programming (به اختصار FP) هست که اکیدا پیشنهاد میکنم اونها رو مطالعه کنید
در حالت ایده آل هیچ تستی نباید به نتیجه تست قبلیش وابستگی داشته باشه یا تاثیری روی تست بعدی بگذاره
از طرفی یه تست زمان بر، انگیزه برنامه نویس برای اجرا تست رو به شدت کم میکنه
اگه 1000 تا تست داشته باشید که هر کدوم 1ثانیه طول میکشه، ترتیبی بودنش 16 دقیقه زمان میبره در صورتی که موازی بودنش (با فرض اینکه pc شما 8 عدد logical processor یا thread واقعی داره) این زمان به 2 دقیقه کاهش پیدا میکنه
پس توصیه میکنم همیشه سعی تون بر این باشه که تست ها کاملا ایزوله باشن و به صورت Parallel اجرا بشن مگر جایی که واقعا راهی وجود نداشته باشه
▪️در این ویدئو نیز Kent Beck (خالق متدولوژی XP و روش TDD) در مورد اهمیت و چرایی این موضوع صحبت میکنه
Tests Should Be Isolated (from each other)
__________________
@DotNetZoom
Post #1150
2.81K