Automated Testing

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


دیدیم که دیباگینگ و لاگینگ چگونه میتوانند به پیدا کردن ایرادات برنامه ی نوشته شده کمک کنند؛ حالا به این فکر کنید:

آیا بهتر نیست که خطاهای برنامه را قبل از اجرای آنها بفهمیم؟!

بله بهتر است! برای حذف باگ ها و داشتن یک code base بدون باگ برنامه نویسان موفق از automated testing استفاده می کنند.

تمام برنامه نویسان در ابتدای مسیر شغلی خود به صورت دستی برنامه های خود را تست می کنند. این کار باعث میشود که بتوانیم از صحت ابتدایی عملکرد برنامه مطمئن شویم. مشکل این روش این است که تنها برای حالت فعلی برنامه سازگار است و در صورت بزرگ شدن یا تغییر برنامه، نمیتوانیم از صحت عملکرد آن مطمئن باشیم.

فرآیند Automated testing دقیقا همین مشکل را حل میکند و مراحل بررسی صحت عملکرد برنامه را سریع تر کرده و کاهش می دهد. با این کار تعداد باگهای code base خود را به حداقل(یا صفر) می رسانیم و نه تنها برنامه را به شکل درست و اصولی ارزیابی می کنیم، بلکه از عملکرد درست برنامه در زمان اجرا نیز اطمینان حاصل می کنیم؛ همچنین با تغییر یا بزرگ شدن برنامه میتوانیم بدانیم که آیا هنوز کدهای قبلی قابل اعتماد هستند یا نه!؟

گاهی حجم برنامه ی تست از برنامه ی اصلی نیز بیشتر می شود، در این موارد بازهم نوشتن تست ها بسیار مهم است و شاید در ابتدا زمان زیادی را از شما بگیرد اما بعدا برای توسعه و عرضه ی نسخه های آینده ی برنامه دستتان بازترخواهد بود و سرعت بیشتری را تجربه خواهید کرد. ضمنا تست ها بخشی از مسئله ی کنترل کیفیت quality assurance (QA) برنامه های مدرن و قابل اطمینان نیز هستند.


نکته:

به صورت اصولی هر تسکی که در آینده ی شغلی خود به عهده خواهید گرفت باید دو بخش داشته باشد، تست و برنامه. در این حالت ابتدا تست را نوشته و عملکرد مورد نظر خود را مشخص میکنید و سپس به نوشتن برنامه می پردازید و میبینید که تست ها را پاس می کند یا نه.

برای مطالعه ی بیشتر در این زمینه در مورد Test Driven Development یا TDD سرچ کنید و سعی کنید اهمیت آن را درک کرده و با عملکرد آن آشنا شوید.


در کنار این مسئله Automated testing میتواند مشکلات برنامه ی شما را قبل از اجرا مشخص کند و تجربه ی troubleshoot شما را بهتر و ساده تر کند. با test scenario ها میتوانید حالت های مختلفی از ارتباط با برنامه ی خود را شبیه سازی کنید و محیط دلخواهی را برای برنامه تعریف کنید(به این مسئله regression test نیز گفته می شود.) ضمنا در طول عمر یک برنامه، تست های آن مرتبا بروز شده و تا توسعه دهندگان از test coverage آن مطمئن شوند. test coverage را در دو قسمت دیگر بررسی میکنیم.