یکشنبه , ۹ اردیبهشت ۱۴۰۳

تست اتوماتیک: فرآیند، Planning، و ابزار

Automation Testing
Automation Testing

تست خودکار چیست؟
تست دستی توسط شخصی که در مقابل یک کامپیوتر نشسته است و با دقت مراحل تست را اجرا می‌کند، انجام می‌شود.

تست اتوماتیک به معنای استفاده از یک ابزار اتوماسیون برای اجرای مجموعه Test Caseهاست.

نرم‌افزار اتوماسیون همچنین می‌تواند داده‌های تست(Test Data) را در سیستم تحت تست(System Under Test-SUT) وارد کرده، نتایج مورد انتظار(Expected Result) و نتایج واقعی(Actual Result) را مقایسه نموده و گزارش‌های تست(Test Report) را به صورت دقیق تولید کند. اتوماسیون تست نیازمند سرمایه‌گذاری مالی و تخصیص منابع قابل توجه است.

چرخه‌های متوالی توسعه نیازمند اجرای یک Test Suite(مجموعه تست) یکسان به صورت مکرر هستند. با استفاده از یک ابزار اتوماسیون تست، می‌توانید این مجموعه تست را ضبط کرده(Record) و در صورت لزوم آنرا مجددا اجرا نمایید. هنگامی که مجموعه تست شما خودکار است، به هیچ مداخله انسانی نیاز ندارید. هدف از اتوماسیون، کاهش تعداد Test Caseها برای اجرا به صورت دستیست، نه اینکه تست دستی را به صورت کامل حذف کند.

چرا تست خودکار؟

Why Automation Testing
Why Automation Testing

تست نرم‌افزار به صورت اتوماتیک به دلایل زیر اهمیت دارد:

  • تست دستی برای تمام 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
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)
  • تسترهای غیرفنی می‌توانند در کد درگیر شوند
  • دوره آموزش استفاده از ابزار را می‌توان کاهش داد
  • درگیر کردن داده‌ها در هر کجا که اقتضا کند

چهار نوع چارچوب در اتوماسیون تست نرم‌افزار استفاده می‌شود:

  1. چارچوب اتوماسیون داده محور(Data Driven Automation Framework)
  2. چارچوب اتوماسیون کلیدواژه محور(Keyword Driven Automation Framework)
  3. چارچوب اتوماسیون ماژولار(Modular Automation Framework)
  4. چارچوب اتوماسیون ترکیبی(Hybrid Automation Framework)

بهترین شیوه‌ها(Best Practice) در ابزار اتوماسیون
برای به دست آوردن حداکثر ROI(بازده سرمایه‌گذاری) از اتوماسیون، موارد ذیل را رعایت کنید:

  • محدوده اتوماسیون باید قبل از آغاز پروژه مشخص شود. این کار باعث ایجاد انتظارات درست از اتوماسیون می‌شود.
  • ابزار اتوماسیون مناسب را انتخاب کنید: ابزار را نباید براساس محبوبیت آن انتخاب کرد، بلکه ابزار باید متناسب با نیازمندی‌های اتوماسیون باشد.
  • چارچوب مناسب را انتخاب کنید
  • استانداردهای اسکریپت‌نویسی: در هنگام نوشتن اسکریپت برای اتوماسیون باید استانداردها را رعایت کنید. بعضی از آنها عبارتند از:-
    • ایجاد اسکریپت‌های یکنواخت، کامنت‌ها، و دندانه‌گذاری(Indentation) روی کد
    • Exception Handling کافی: نحوه اداره Error در زمان System Failure(نارسایی سیستم) یا رفتار غیرمنتظرۀ برنامه
    • پیام‌های تعریف شده توسط کاربر باید کدنویسی شوند، و یا برای فهم تسترها به منظور Error Logging استانداردسازی گردند
  • معیارهای اندازه‌گیری(Measure Metric): موفقیت اتوماسیون را نمی‌توان با مقایسه میان تلاش تست دستی و تلاش تست اتوماتیک تعیین نمود، بلکه این مهم با دستیابی به متریک‌های زیر تعیین می‌گردد:
    • درصد نواقص یافته شده
    • زمان مورد نیاز برای تست اتوماتیک برای هر یک از چرخه‌های تست
    • حداقل زمان صرف شده برای Release
    • شاخص رضایت مشتری(Customer Satisfaction Index)
    • بهبود بهره وری

دستورالعمل‌های فوق در صورت رعایت، می‌توانند به شما در موفقیت اتوماسیون کمک کنند.

مزایای اتوماسیون تست
مزایای تست خودکار به شرح زیر است:

Automation Benefits
Automation Benefits
  • سریعتر از تست دستی به میزان ۷۰%
  • پوشش تست(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

این مطلب بخشی از دوره آموزشی رایگان تست نرم‌افزار بود، که می‌توانید تمامی مطالب این دوره رایگان را در اینجا مشاهده نمایید.

ابوالفضل خواجه دیزجی

همچنین ببینید

Selenium

آموزش Selenium-قسمت هفدهم: Mouse Click Event و Keyboard Event و موضوع Action Class در Selenium WebDriver

در این بخش، ما رویداد کیبورد(Keyboard Event) و ماوس(Mouse Event) را در Selenium Webdriver آموزش …

۵ دیدگاه

  1. سلام ممنون از سایت خوبتون .. میشه ابزار تست اتومات و آموزش کار با آن رو هم بهم معرفی کنین

    • ابوالفضل خواجه دیزجی
      ابوالفضل خواجه دیزجی

      سلام.
      بالغ بر ۲۵۰۰ ابزار مختلف در حوزه هاس گوناگون تست در دنیا وجود داره، که حدود ۲۵۰ ابزار در مقوله تست اتوماتیک به کار میاد، مثل Cypress، Selenium، SOATest، Ranorex و …
      بستگی داره چه چیزی کار شما رو راه بندازه. البته بعضی از ابزارها به دلایل گوناگون در دنیا بسیار پرطرفدار هستند مثل Cypress و Selenium
      البته برای بعضی از ابزارها دوره آموزشی هم در مجموعه تیستن تعریف شده. مثلا دوره آموزشی Selenium در آدرس زیر
      /tisten.ir/blog/selenium-webdriver-3-5/

  2. ممنون از آموزش خوبتون
    البته من هنوز کامل مطالعه نکردم ولی تا همین جا عالیه
    خیلی ممنون میشیم اگر هرچه زودتر آموزش نرم افزار های تست رو هم به صورت ویدیویی شروع کنید
    هم تست موبایل اپ ها هم تست وب اپ ها
    بی صبرانه منتظریم . . ممنون از لطفتون
    با تشکر

  3. با سلام از مطالب جالب کمال تشکر را دارم
    خواهشمند است لطفاً یکی از فریم ورک های تست اتوماتیک مانند codeception را آموزش دهید متشکرم

    • ابوالفضل خواجه دیزجی
      ابوالفضل خواجه دیزجی

      سلام.
      از لطف شما سپارسگذارم.
      سعی میکنیم در اولین فرصت این کار را انجام می‌دهیم. اما در وهله اول اولویت با اتمام آموزش‌های فعلیست،.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *