تست خودکار چیست؟
تست دستی توسط شخصی که در مقابل یک کامپیوتر نشسته است و با دقت مراحل تست را اجرا میکند، انجام میشود.
تست اتوماتیک به معنای استفاده از یک ابزار اتوماسیون برای اجرای مجموعه Test Caseهاست.
نرمافزار اتوماسیون همچنین میتواند دادههای تست(Test Data) را در سیستم تحت تست(System Under Test-SUT) وارد کرده، نتایج مورد انتظار(Expected Result) و نتایج واقعی(Actual Result) را مقایسه نموده و گزارشهای تست(Test Report) را به صورت دقیق تولید کند. اتوماسیون تست نیازمند سرمایهگذاری مالی و تخصیص منابع قابل توجه است.
چرخههای متوالی توسعه نیازمند اجرای یک Test Suite(مجموعه تست) یکسان به صورت مکرر هستند. با استفاده از یک ابزار اتوماسیون تست، میتوانید این مجموعه تست را ضبط کرده(Record) و در صورت لزوم آنرا مجددا اجرا نمایید. هنگامی که مجموعه تست شما خودکار است، به هیچ مداخله انسانی نیاز ندارید. هدف از اتوماسیون، کاهش تعداد Test Caseها برای اجرا به صورت دستیست، نه اینکه تست دستی را به صورت کامل حذف کند.
تست نرمافزار به صورت اتوماتیک به دلایل زیر اهمیت دارد:
تست دستی برای تمام Workflowها، تمام Fieldها(زمینههای کاری)، و سناریورهای منفی(Negative Scenario) زمانبر و پرهزینه است
تست دستی سایتها چندزبانه مشکل است
اتوماسیون مستلزم دخالت انسان نیست. شما میتوانید تست خودکار را بدون نظارت اجرا نمایید(به صورت شبانه)
اتوماسیون سرعت اجرای تست(Test Execution) را افزایش میدهد
اتوماسیون به افزایش پوشش تست(Test Coverage) کمک میکند
تست دستی میتواند خسته کننده باشد و به همین دلیل مستعد خطاست
کدام Test Caseها را اتومات کنیم؟
برای افزایش بازده سرمایهگذاری(ROI) اتوماسیون، میتوان Test Caseهایی که باید اتوماتیک شوند را با استفاده از معیارهای زیر انتخاب نمود:
ریسک بالا – Test Caseهای Business Critical(بخشهایی از سیستم که کار کردن آنها بر اساس انتظار ذیتفعان از اهمیت بالایی برخوردار است)
Test Caseهایی که مکررا اجرا میشوند
Test Caseهایی که اجرای دستی آنها بسیار خسته کننده و یا دشوار است
Test Caseهایی که وقت گیر هستند
Test Caseهایی که در دستههای ذیل قرار دارند برای اتوماسیون مناسب نیستند:
Test Caseهایی که تازه طراحی شدهاند و حتی یک بار هم به صورت دستی اجرا نشدهاند
Test Caseهایی که نیازمندیهای(Requirement) آنها اغلب تغییر میکنند
Test Caseهایی که به صورت Ad-Hoc(یک باره و ناگهانی) اجرا میشوند
خودکارسازی فرآیند تست:
مراحل زیر در یک فرآیند اتوماسیون دنبال میشوند:
Test Automation Process
انتخاب ابزار تست
انتخاب ابزار تست عمدتا بستگی به تکنولوژیهایی دارد که Application Under Test(برنامه تحت تست) بر اساس آن ساخته شده است. به عنوان مثال، QTP از Informatica پشتیبانی نمیکند. بنابراین QTP نمیتواند برای تست برنامههای Informatica استفاده شود. این مثال یک مثال خوب برای محدودیت استفاده از ابزار در اتوماسیون تست است.
تعریف دامنه اتوماسیون:
دامنه اتوماسیون همان محدودۀ برنامه تحت تست شماست که قرار است تست آن اتومات شود. نکات زیر به تعیین این دامنه کمک میکنند:
Featureهایی(ویژگی) که برای کسب و کار مهم هستند
سناریوهایی که مقدار زیادی از دادهها را در بر میگیرند
Functionalityهای مشترک در سراسر برنامهها
قابلیت فنی
میزان استفاده مجدد از Business Componentها
پیچیدگی Test Caseها
توانایی استفاده از Test Caseهای مشابه برای Cross-Browser Testing
Planning(برنامهریزی)، طراحی و توسعه
در طی این مرحله شما استراتژی و Plan(برنامه) اتوماسیون را ایجاد میکنید که شامل جزئیات زیر است:
انتخاب ابزارهای اتوماسیون
طراحی Framework و Featureهای آن
عناصر دروندامنه و بروندامنه برای اتوماسیون
آمادهسازی بستر اتوماسیون
برنامه و زمانبندی اسکریپتنویسی و اجرا
تحویلدادنیهای تست اتومات
اجرای تست:
در این مرحله اسکریپتهای اتوماسیون اجرا میشوند. اسکریپتها قبل از اینکه برای اجرا تنظیم شوند، نیاز به دادههای ورودی تست(Input Test Data) دارند. پس از اجرای آنها یک Test Report دقیق ارائه میشود.
اجرا را میتوان با استفاده از ابزار اتوماسیون(به طور مستقیم) یا از طریق ابزار مدیریت تست که ابزار اتوماسیون را فراخوانی مینماید انجام داد.
به عنوان مثال: Quality Center یک ابزار مدیریت تست است که به نوبه خود برای اجرای اسکریپتهای اتوماسیون به QTP متصل میشود. اسکریپتها را میتوان در یک ماشین یا یک گروه از ماشینها اجرا نمود. به منظور صرفهجویی در زمان میتوان اجرا را در طول شب انجام داد.
نگهداشت(Maintenance)
همانطور که Functionalityهای جدید با چرخههای پی در پی به سیستم تحت تست اضافه میشوند، باید به اسکریپتهای اتوماسیون نیز افزوده شود، و علاوه بر این هر یک از اسکریپتها نیز باید بازبینی(Review) و نگهداری(Maintain) شوند. نگهداشت برای بهبود اثربخشی اسکریپتِ اتوماسیون ضروریست.
چارچوبی(Framework) برای اتوماسیون
چارچوب، مجموعهای از دستورالعملهای اتوماسیون است که به شما برای امور زیر کمک میکند:
حفظ یکپارچگی تست
بهبود ساختار تست
استفاده حداقلی از کد
نگهداشت کمتر روی کد
بهبود قابلیت استفاده مجدد( Reusability)
تسترهای غیرفنی میتوانند در کد درگیر شوند
دوره آموزش استفاده از ابزار را میتوان کاهش داد
درگیر کردن دادهها در هر کجا که اقتضا کند
چهار نوع چارچوب در اتوماسیون تست نرمافزار استفاده میشود:
چارچوب اتوماسیون داده محور(Data Driven Automation Framework)
چارچوب اتوماسیون کلیدواژه محور(Keyword Driven Automation Framework)
چارچوب اتوماسیون ماژولار(Modular Automation Framework)
چارچوب اتوماسیون ترکیبی(Hybrid Automation Framework)
بهترین شیوهها(Best Practice) در ابزار اتوماسیون
برای به دست آوردن حداکثر ROI(بازده سرمایهگذاری) از اتوماسیون، موارد ذیل را رعایت کنید:
محدوده اتوماسیون باید قبل از آغاز پروژه مشخص شود. این کار باعث ایجاد انتظارات درست از اتوماسیون میشود.
ابزار اتوماسیون مناسب را انتخاب کنید:
ابزار را نباید براساس محبوبیت آن انتخاب کرد، بلکه ابزار باید متناسب با نیازمندیهای اتوماسیون باشد.
چارچوب مناسب را انتخاب کنید.
استانداردهای اسکریپتنویسی:
در هنگام نوشتن اسکریپت برای اتوماسیون باید استانداردها را رعایت کنید. بعضی از آنها عبارتند از:
ایجاد اسکریپتهای یکنواخت، کامنتها، و دندانهگذاری(Indentation) روی کد
Exception Handling کافی: نحوه اداره Error در زمان System Failure(نارسایی سیستم) یا رفتار غیرمنتظرۀ برنامه
پیامهای تعریف شده توسط کاربر باید کدنویسی شوند، و یا برای فهم تسترها به منظور Error Logging استانداردسازی گردند
معیارهای اندازهگیری(Measure Metric): موفقیت اتوماسیون را نمیتوان با مقایسه میان تلاش تست دستی و تلاش تست اتوماتیک تعیین نمود، بلکه این مهم با دستیابی به متریکهای زیر تعیین میگردد:
درصد نواقص یافته شده
زمان مورد نیاز برای تست اتوماتیک برای هر یک از چرخههای تست
حداقل زمان صرف شده برای Release
شاخص رضایت مشتری(Customer Satisfaction Index)
بهبود بهره وری
دستورالعملهای فوق در صورت رعایت، میتوانند به شما در موفقیت اتوماسیون کمک کنند.
مزایای اتوماسیون تست
مزایای تست خودکار به شرح زیر است:
سریعتر از تست دستی به میزان ۷۰%
پوشش تست(Test Coverage) گستردهتر روی Featureهای برنامه
قابل اطمینان در نتایج
اطمینان از انسجام
صرفهجویی در زمان و هزینه
بهبود دقت
مداخلۀ انسانی در هنگام اجرا ضروری نیست
افزایش بازده
سرعت بهتر در اجرای تست
اسکریپتهای تست با قابلیت استفاده مجدد
تست مکرر و کامل
چرخههای اجرای بیشتری را میتوان از طریق اتوماسیون عملیاتی کرد
Time To Market(زمان رسیدن به بازار) سریع
انواع مختلفی از تست نرمافزار که میتوان آنها را خودکار نمود:
تست دود(Smoke Testing)
Unit Testing
تست یکپارچهسازی(Integration Testing)
تست کارکرد(Functional Testing)
تست کلیدواژه(Keyword Testing)
تست رگرسیون(Regression Testing)
تست دادهمحور(Data Driven Testing)
تست جعبه سیاه(Black Box Testing)
چگونه میتوان یک ابزار اتوماسیون انتخاب کرد؟
انتخاب ابزار مناسب میتواند یک کار پیچیده باشد. معیارهای زیر به شما کمک خواهند کرد که بهترین ابزار را برای نیاز خود انتخاب کنید:
پشتیبانی محیطی
سهولت در استفاده
تست کردن پایگاه داده(Testing of Database)
شناسایی Object
تست تصویر(Image Testing)
تست بازیابی خطا(Error Recovery Testing)
Object Mapping
زبان اسکریپتنویسی مورد استفاده
پشتیبانی از انواع مختلف تست، از جمله: Functional، مدیریت تست، موبایل، و غیره …
پشتیبانی از Test Frameworkهای متعدد
سهولت در اشکالزدایی(Debugging) از اسکریپتهای نرمافزاری اتوماسیون
قابلیت تشخیص Objectها در هر محیط
Test Reportها و Test Resultهای گسترده
کم بودن هزینه آموزش ابزار انتخابی
انتخاب ابزار یکی از بزرگترین چالشهاییست که قبل از سوق پیدا کردن به سمت اتوماسیون باید حل شود. ابتدا، نیازمندیها را شناسایی کرده و روی ابزارهای مختلف و قابلیتهایشان کاوش کنید. انتظارات خود از ابزار را تنظیم کرده و پس از انتخاب ابزار به دنبال راهاندازی آزمایشی آن بروید.
ابزار تست خودکار:
تعداد زیادی از ابزارها برای تست Functional و رگرسیون در دنیا وجود دارد. ما در تیستن به مرور زمان ابزارهای مختلف را آموزش میدهیم. هر چند که بعید است بتوانیم به دلیل تعدد این ابزارها تمام آنها بویژه ابزارهایی که برای اتوماسیون تست ارائه میشوند را آموزش دهیم، اما در اینجا نام برخی از این ابزارها که به کرات توسط تسترها استفاده میشوند را ارائه میدهیم:
Tricentis
mabl
Selenium
QTP-MicroFocus UFT
Rational Functional Tester
WATIR
SilkTest
SilkTest