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

Test Case و نحوه نوشتن آن

Test Scenario
Test Scenario

یک Test Case چیست؟

یک Test Case جهت ممیزی یک امکان(Feature) یا Functionality خاص از یک اپلیکیشن نرم‌افزاری، به صورت مجموعه‌ای از Actionهای قابل اجرا تعریف می‌شود. یک Test Case، جزیی ضروری از LifeCycle تست نرم افزار است که باعث تائید اعتبار (AUT(Application Under Test می‌شود.

Test Scenario در مقابل Test Case

Test Scenario نسبتا مبهم(دقیقا مشخص نیست چه انتظاری از آنها باید داشت) هستند و گستره وسیعی از احتمالات را پوشش می‌دهند.

برای یک Test Scenario: بررسی Functionality مربوط به Login می‌تواند Test Caseهای احتمالی زیر را داشته باشد:

  • Test Case 1: بررسی نتایج در حالت ورود User ID معتبر و Password معتبر
  • Test Case 2: بررسی نتایج در حالت ورود User ID نامعتبر و Password نامعتبر
  • Test Case 3: بررسی نتایج در حالتیکه User ID خالی باشد و دکمه لاگین فشرده شود

نحوه ایجاد یک Test Case

اجازه دهید یک Test Case برای این سناریو ایجاد کنیم: بررسی Functionality مربوط امکان Login

Test Case Figure 1
Test Case Figure 1

مرحله ۱– یک Test Case  ساده برای این سناریو می‌تواند چنین باشد

  • Test Case 1:
    • شرح Test Case: پاسخ را در شرایطی که Email و Password معتبر وارد می‌شوند، بررسی کنید

مرحله ۲– برای اجرای Test Case، نیازمند Test Data(داده تست) هستید. نمونه این داده‌ها را در پایین می‌بینید:

  • Test Case 1:
    • شرح Test Case: پاسخ را در شرایطی که Email و Password معتبر وارد می‌شوند، بررسی کنید
    • Test Data: مقدار Email=guru99@email.com / مقدار Password=lNf9^Oti7^2h

شناسایی Test Dataها می‌تواند زمان زیادی را به خود اختصاص دهد، و گاهی اوقات ممکن است نیازمند ایجاد داده‌های تست جدید باشید. دلیل این کار نیز باید مستند باشد.

مرحله ۳– برای اجرای یک Test Case، تستر باید یک مجموعه خاص از Actionها را در AUT انجام دهد. این کار به صورت زیر مستند می‌شود:

  • Test Case 1:
    • شرح Test Case: پاسخ را در شرایطی که Email و Password معتبر وارد می‌شوند، بررسی کنید
    • Test Stepها:
      1. ورود Email Address
      2. ورود Password
      3. کلیک روی Sign In
    • Test Data: مقدار Email=guru99@email.com / مقدار Password=lNf9^Oti7^2h

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

مرحله ۴– هدف Test Caseها بررسی رفتار AUT برای یک نتیجه مورد انتظار است. این موضوع باید به صورت زیر ثبت شود

  • Test Case 1:
    • شرح Test Case: پاسخ را در شرایطی که Email و Password معتبر وارد می‌شوند، بررسی کنید
    • Test Stepها:
      1. ورود Email Address
      2. ورود Password
      3. کلیک روی Sign In
    • Test Data: مقدار Email=guru99@email.com / مقدار Password=lNf9^Oti7^2h
    • Expected Result(نتیجه مورد انتظار): لاگین باید به صورت موفقیت‌آمیز انجام شود

در خلال اجرای تست، تستر نتایج مورد انتظار را در مقابل نتایج واقعی مورد بررسی قرار می‌دهد و تعیین می‌کند که آیا تست Pass(موفق) شده است یا Fail(ناموفق).

مرحله ۵– از جمله مواردی که در Test Case شما وجود دارد این است که ممکن است فیلدی مانند یک Pre-Condition(پیش شرط) داشته باشید که بر اساس آن شرایطی که قبل از اجرای تست باید فراهم شود مشخص می‌گردد. برای Test Case شما پیش‌شرط می‌تواند نصب یک مرورگر برای دسترسی به سایت تحت تست باشد. علاوه بر این یک Test Case می‌تواندشامل Post-Conditions(پس شرط) نیز باشد. این مشخصه تعیین کننده هر آن چیزیست که بعد از تکمیل Test Case اِعمال می‌شود. برای مثال ما یک Postcondition می‌تواند زمان و تاریخ ذخیره شده لاگین در پایگاه داده باشد.

فرمت یک Test Case استاندارد

در زیر یک فرمت از Login Test Case استاندارد ارائه شده است:

  • Test Case 1:
    • Test Case ID(شناسه): TU01
    • Test Scenario: ورود مشتری را با داده‌های معتبر بررسی کنید
    • Test Stepها:
      1. برو به اینجا
      2. User ID را وارد کن
      3. Password را وارد کن
      4. Submit را کلیک کن
    • Test Data: مقدار User ID=guru99  / Password=pass99
    • Expected Result(نتیجه مورد انتظار): کاربر باید به اپلیکیشن لاگین کند
    • Actual Result(نتیجه واقعی): مطابق با نتیجه مورد انتظار
    • وضعیت نهایی: Pass(موفق)
  • Test Case 2:
    • Test Case ID(شناسه): TU02
    • Test Scenario: ورود مشتری را با داده‌های نامعتبر بررسی کنید
    • Test Stepها:
      1. برو به اینجا
      2. User ID را وارد کن
      3. Password را وارد کن
      4. Submit را کلیک کن
    • Test Data: مقدار User ID=guru99  / Password=glass99
    • Expected Result(نتیجه مورد انتظار): کاربر باید به اپلیکیشن لاگین کند
    • Actual Result(نتیجه واقعی): مطابق با نتیجه مورد انتظار
    • وضعیت نهایی: Pass(موفق)

این ساختار را می‌توان یه صورت جدولی نیز آماده کرد. آنچنانکه ستون‌ها به ترتیب در برگیرنده  Test Case ID، Test Scenario، Test Step، Test Data، Expected Result، Actual Result و وضعیت باشند. کل این ساختار را می‌توان در Word، Excel، یا هر ابزاری که ویژه مدیریت تست باشد ایجاد نمود.

زمانیکه یک Test Case آماده می‌کنید، باید آنرا به گونه‌ای تدوین نمایید که مطالب زیر را در بر گیرد:

  • شرح آینکه چه نیازمندی باید تست شود
  • توضیح اینکه سیستم چگونه تحت تست قرار خواهد گرفت
  • Test Setup مانند نسخه اپلیکیشن تحت تست، نرم نرم‌افزار، فایل‌های داده(Data File)، سیستم عامل، سخت افزار، دسترسی امنیتی(Security Access)، پیش نیازها مانند تست‌های دیگر و هر گونه Setup Information مربوط به نیازمندی‌های(Requirement) در حال تست
  • ورودی ها و خروجی‌ها یا Actionها و نتایج مورد انتظار
  • هر گونه مدرک یا پیوست
  • Test Case نباید بیش از ۱۵ مرحله باشد
  • از زبان اظهار(Assertive Language) استفاده کنید
  • یک Test Script خودکار با ورودی‌ها، هدف و نتایج مورد انتظار کامنت می‌شود
  • باید جایگزین‌هایی برای تست‌های پیش‌نیاز وجود داشته باشد، تا در صورتیکه امکان تست و تائید صحت آنها وجود نداشت، Test Caseهای بعدی دچار مشکل نشوند

بهترین شیوه‌ها(Best Practice) برای نوشتن نمونه Test Caseهای خوب

۱- Test Caseها باید ساده و شفاف باشند

Test Caseها باید تا حد امکان به شکلی ساده ایجاد شوند. آنها باید روشن و مختصر باشند، زیرا ممکن است نویسنده Test Case آنها را اجرا نکند.

از زبان اظهار(Assertive Language) استفاده کنید، مانند: “برو به homepage، داده‌ها را وارد کن، و روی این کلیک کن” یا مواردی از این دست. این کار درک مراحل تست را آسان کرده و باعث اجرای سریعتر آنها خواهد شد.

۲- Test Caseها را در ذهن خود با حضور کاربر درست کنید

هدف نهایی هر پروژه نرمافزاری، ایجاد Test Caseای است که نیازهای مشتریان را برآورده کند، و برای استفاده و بهره‌برداری آسان باشد. تستر باید Test Caseها را با توجه به چشم انداز کاربر نهایی ایجاد و تنظیم نماید.

۳- از تکرار Test Case اجتناب کنید

Test Case را تکرار نکنید. اگر یک Test Case برای اجرای برخی Test CAseهای دیگر مورد نیاز است، Test Case را با Test Case ID در ستون پیش شرایط آن قرار دهید.

۴- فرض نکنید

در زمان تهیه Test Caseهای خود Functionalityها و Featureهای اپلیکیشن را فرض نکنید، بدین معنی که نرم‌افزار شما ملاک و معیار طراحی Test Case نباشد، بلکه به اسناد یا افرادی که منبع Business سیستم هستند، مراجعه نمایید. در صورتیکه خود سیستم را ملاک طراحی Test Case قرار دهید، ممکن است خطاهای سیستم را نیز به عنوان بخشی از سیستم تصور نمایید.

۵- از Coverage به میزان ۱۰۰% اطمینان حاصل کنید

اطمینان حاصل کنید که Test Caseها تمام Requirementهای مندرج در اسناد مشخص را بررسی خواهند کرد. برای حصول اطمینان از اینکه Functionها یا Conditionها(سناریوها) بدون تست رها نمی‌شوند، از ماتریس ردیابی(Traceability Matrix) استفاده کنید.

۶- Test Caseها باید قابل شناسایی باشند

حتما برای Test Case یک Test Case ID در نظر بگیرید، تا آنها در زمان تراک کردن نواقص یا شناسایی یک نیازمندی نرم‌افزاری در مراحل بعد به سادگی قابل شناسایی باشند.

۷- تکنیک‌های تست را پیاده کنید

ممکن نیست بتوانید تمام سناریوهای(Condition) موجود در اپلیکیشن خود را بررسی نمایید. تکنیک‌های تست نرم‌افزار به شما کمک می‌کنند تا تعداد محدودی Test Case با بالاترین احتمال رویت باگ را انتخاب نمایید. بخشی از تکنیک‌های پرکاربرد عبارتند از:

  • (Boundary Value Analysis(BVA-تحلیل مقدار مرزی: همانطور که از نام آن پیداست، این تکنیک تست کردن مرزها برای یک محدود مشخص از مقادیر را در نظر دارد.
  • (Equivalence Partition(EP-پارتیشن هم ارزی: این روش دامنه مقادیر ممکن در متغرها را به قسمت‌ها کلاس‌ها یا پارتیشن‌هایی تقسیم می‌کند که انتظار می‌رود سیستم با هر یک از مقادیر موجود در این قسمت‌ها برخورد یکسان داشته باشد. این تکنیک منجر به کاهش بسیار شدید Test Caseهای Physical خواهد شد
  • تکنیک State Transition-انتقال وضعیت: این تکنیک زمانی استفاده می‌شود که رفتار نرم‌افزار پس از تغییر وضعیت(از یک وضعیت به وضعیت دیگر) تغییر می‌کند.
  • تکنیک Error Guessing-حدس زدن Error: این تکنیک برای حدس زدن/پیش‌بینی خطاییست که ممکن است هنگام انجام تست به صورت دستی(Manual) phne شود. این یک روش رسمی نیست، اما یکی از تکنیک‌های محبوب تسترهای تجربیست.

۸-  Self-Cleaning(خود تمیزکاری)

Test Caseای که شما ایجاد می‌کنید باید محیط تست را به حالت پیش از تست بازگرداند و نباید محیط تست را غیر قابل استفاده نماید. این به خصوص برای Configuration Testing درست صادق است.

۹- قابل تکرار و خود اتکا(Self-Standing)

Test Case باید فارق از اینکه چه کسی آنرا تست می‌کند، هر بار باید نتایج مشابهی تولید کند. بنابراین در زمان نوشتن Test Case نباید آنرا به صورت مبهم بنویسید که هر کس آنرا به میل خود اجرا نماید.

۱۰- بررسی همکار(Peer Review)

پس از ایجاد Test Caseها، باید آنها را توسط همکاران خود بررسی کنید. همکاران شما می‌توانند نواقص(Defect) موجود در طراحی تست(Test Design) شما را بر ملا نمایند، که ممکن است به آسانی از دست برود.

ابزارهای مدیریت Test Case

ابزار مدیریت تست، ابزار اتوماسیونی است که به مدیریت و نگهداری Test Caseها کمک می‌کند. امکانات(Feature) اصلی یک ابزار مدیریت Test Case عبارتند از:

۱- برای مستندسازی Test Caseها: با استفاده از این ابزار، باید بتوانید ایجاد Test Case را با استفاده از Templateها تسریع نمایید.

۲- Test Case را اجرا کرده و نتایج را رکورد کنید: Test Caseها می‌توانند از طریق این ابزارها و نتایج بدست آمده(که می‌توانند به سادگی رکورد شوند) اجرا شوند.

۳- Defect Tracking را اتومات کنید: تست‌های Fail شده به طور خودکار به Bug Tracker مرتبط است، که به نوبه خود می‌تواند به توسعه‌دهندگان آنها Assign شود. علاوه بر این می@توان آنرا با Email Notification نیز Track شود.

۴- Traceability: نیازمندی‌ها(Requirement)، موارد تست(Test Case) و اجرای Test Caseها از طریق این ابزارها به یکدیگر لینک شده و هر یک نیز قابل Trace شدن به دیگری برای بررسی Test Coverage است.

۵- حفاظت از Test Caseها: Test Caseها باید قابل استفاده مجدد(Reusable) باشند و از نظر کنترل نسخه ضعیف باید در مقابل از دست رفتن یا تخریب بواسطه کنترل نسخه ضعیف محافظت شوند. ابزار مدیریت Test Case باید امکاناتی مانند موارد زیر را ارائه دهد:

  • قراردادهای شماره‌گذاری و نامگذاری
  • Versioning(نسخه‌گذاری)
  • ذخیره‌سازی فقط خواندنی(غیرقابل تغییر)
  • دسترسی کنترل شده
  • پشتیبان‌گیری Off-Site(خارج از سایت)

از ابزارهای مدیریت تست که محبوبیت بالایی در بازار دارند می‌توان از Quality Center و JIRA نام برد.

منابع

  • لطفا توجه داشته باشید که Template استفاده شده برای Test Case، می‌تواند پروژه به پروژه متفاوت باشد.

 

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

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

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

Selenium

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

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

یک دیدگاه

  1. سلام.
    برای نوشتن Testcase، در تست Manual، از چه ابزاری استفاده کنیم؟

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

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