چرا تست برنامه مهمه؟
تست کردن در برنامه نویسی بیشتر مربوط به استفاده از اسکریپت ها برای تایید عملکرد درست یک اپلیکیشن میشه. از اونجایی که برای ساخت اپلیکیشن ها کد نوشته میشه و اون کد در صورت تغییر نکردن اکثر مواقع ساختار مشخصی داره، برای تست های برنامه هم کد مینویسیم که مزایای زیر رو داره:
- میشه اپلیکیشن ها رو با سرعت بالاتر و تعداد دفعات بیشتری تست کرد.
- میشه اجرای تست ها رو به صورت اتوماتیک تنظیم کرد تا در مواقع مشخصی در چرخه توسعه برنامه اجرا بشن.
- از تست شدن تمام قابلیت های برنامه به طور کامل مطمئن میشیم.
- امکان تست برنامه در چندین محیط مختلف به طور همزمان وجود داره.
- امکان شبیه سازی تعاملات انسانی با برنامه و برقراری ارتباط بین سرویس های مختلف به صورت خودکار وجود داره.
- میشه تست ها رو جوری تنظیم کرد که فقط وقتی همه تست ها با موفقیت و بدون خطا انجام شدن بیلد های برنامه دیپلوی بشن، اینطوری باعث میشه downtime (مدت از کار افتادن برنامه به دلایل مختلف از جمله وقوع خطا یا ترافیک بیش از حد) در پروداکشن کمتر بشه.
- امکان محاسبه پوشش تست (test coverage) وجود داره، (این به این معنیه که تا چه حد قابلیت های همه برنامه تست میشن) و میشه از تست شدن قابلیت های جدید مطمئن شد.
- میشه بررسی کرد که قابلیت های جدید موجب از کار افتادن قابلیت های قبلی و عملکرد برنامه نشن.
این روزا خیلی از اپلیکیشن های تحت مرورگر بزرگتر مثل اپلیکیشن های تک صفحه ای (single-page applications / SPA) یا حتی وبسایت های دارای طراحی های سنگین توسط گروه های مختلفی از توسعه دهنده ها و طراحا در تیم های مختلف ایجاد شدن. معمولا این اپلیکیشن ها به صورت ماژولار توسعه داده میشن تا هر نفر بتونه یک یا دو ماژول کار کنه؛ با این حال با اینکه این اپلیکیشن ها به قسمت های کوچک تر تقسیم میشن، این قسمت ها باید بتونن به درستی با هم کار کنن تا باعث عملکرد درست در یک اپلیکیشن بزرگتر بشن. از اونجایی که هر نفر داره روی یک قسمت کوچک تری از اپلیکیشن کار میکنه، هر نفر همیشه نمیتونه حواسش به کل اپلیکیشن باشه. با توجه به این موضوع ممکنه تغییراتی که توسط یک توسعه دهنده ایجاد شدن روی کار یک توسعه دهنده دیگه تاثیر داشته باشن و این مورد توی کار تیمی میتونه خیلی رایج باشه.
ارائه زودهنگام تست ها در چرخه توسعه اپلیکیشن باعث میشه که هر تغییری که در کد اپلیکیشن ایجاد میشه باعث ایجاد باگ های غیرقابل پیش بینی و غیرمنتظره نشه. اینطوری اگر یک قسمت از اپلیکیشن به دلیل بروز مشکلاتی در یک قسمت دیگه از کار بیافته، میشه اونها رو به راحتی شناسایی کرد و به توسعه دهنده مربوطه برای حل اونها اطلاع داد.