جمعه , ۱۰ فروردین ۱۴۰۳

آموزش SpecFlow-قسمت ششم: اجرای سناریوهای تست در Specflow

Specflow
Specflow

در این قسمت از آموزش نحوه اجرای سناریوهای تست در SpecFlow  را خواهیم آموخت. SpecFlow برای اجرای تست‌های پذیرش، چارچوب‌های Unit Test متفاوتی را پشتیبانی می‌کند. به عنوان نمونه Nunit، Xunit، MS Test و…. . بنابراین برای اجرای تست پذیرش لازم است ابتدا چارچوب Unit Test خود را انتخاب نمایید. در این آموزش Nunit به عنوان چارچوب Unit Test مورد استفاده قرار می‌گیرد. در کنسول مدیریت پکیج Nuget،  Nunit را با دستور زیر به رفرنس‌های پروژه اضافه نمایید.

PM > install-package Nunit

حال مطابق تصویر ۱۹ روی Feature اضافه شده به پروژه کلیک راست نموده و گزینه Run SpecFlow Scenarios را انتخاب نمایید. برای مشاهده نتیجه اجرای تست از Toolbar گزینه Test-> windows-> Test Explorer را انتخاب نمایید.

Figure 19
Figure 19

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

از این جا به بعد نوبت توسعه‌دهنده و تستر است تا به صورت موازی، توسعه Test Caseها و کد سیستم را پیش ببرند. این کار را برای سناریوی ورود کاربر انجام می‌دهیم. سناریوی ورود کاربر در قسمت‌های پیشین آموزش را به شکل پارامتری در می‌آوریم. این سناریو در تصویر ۲۰ نمایش داده شده است.

Figure 20
Figure 20

حال تستر و توسعه‌دهنده، تولید کد را آغاز می‌کنند. اگر تستر کد تست را توسعه دهد و آنرا اجرا کند، به دلیل آن که پیاده‌سازی معادلی برای کد تست وجود ندارد، تست رد1 می‌شود. پیاده‌سازی کلاس‌ها و متدهای برنامه که انجام شد، تست مربوط به سناریو باید اجرا شود. چنانچه تست با موفقیت2 پشت سر گذاشته شود، توسعه کد سیستم توقف می‌یابد. در تصویر ۲۱ یک کلاس به پروژه Unit Test خود اضافه نموده‌ایم و کد اعتبارسنجی تست را در آن قرار داده‌ایم.

Figure 21
Figure 21

گام‌های پیاده‌سازی تست نیز در تصویر ۲۲ نمایش داده شده است. برای سهولت در درک گام‌های سناریو، تنها از گام دریافت نام کاربری به بعد پیاده‌سازی را انجام داده‌ایم. در این گام نام کاریری یا همان ایمیل را در.current  ScenarioContext به عنوان یک متغیر ذخیره می‌کنیم تا بین گام‌های سناریو قابل استفاده مجدد باشد. سپس رمز عبور موجود در تعریف سناریو را به کلاس پیاده‌سازی شده که یک شی از آن ساخته‌ایم انتقال می‌دهیم. از نتیجه خروجی متد اعتبارسنجی رمز عبور، برای صحت‌سنجی3 تست استفاده می‌کنیم. یک تست بدون صحت سنجی اعتباری ندارد. برای این منظور از اعلان‌ها4 استفاده می‌شوند. به همین منظور در آخرین گام سناریو، بررسی می‌کنیم که اگر نام کاربری ‘ali.md@example.com’ باشد، خروجی متد اعتبارسنجی رمز عبور باید “NotOK” را برگرداند و اگر خروجی متد با خروجی مورد نظر ما تطابق داشته باشد، پیغام مناسب داده می‌شود. در غیر این صورت اجرای تست با شکست مواجه می‌شود. در ورودی بعدی Test Case خروجی مورد انتظار ما که “OK” است چک می‌شود و اگر هماهنگی داشته باشد، پیغام مناسب نمایش داده می‌شود و در غیر این صورت اجرای تست با شکست مواجه می‌شود.

اگر به testexplorer پروژه نگاه کنید، متوجه خواهید شد که دو Test Case با نام Visitors are NOT able to register وجود دارد اما هر کدام از این Test Caseها داده‌های ورودی مرتبط به خود را مطابق با تعریف سناریو دارند. یعنی یکی با نام کاربری ‘ali.md@example.com’ و سایر اطلاعات و دیگری با نام کاربری ‘reza.md@example.com’ و سایر اطلاعات تعریف شده‌اند. روی سناریو SpecFlow کلیک راست کرده و Run Specflow Scenarios را انتخاب نمایید. پس از اجرای TestCaseها اگر تست با موفقیت طی شود، نتیجه‌ای همانند تصویر ۲۳ مشاهده خواهید کرد.

Figure 22
Figure 22
Figure 23
Figure 23

چنانچه به دلایلی در کلاس اعتبارسنجی تغییری رخ دهد که منجر به شکست تست گردد، تصویری مشابه با تصویر ۲۴ مشاهده خواهید کرد. با شکست تست، کد سیستمیِ تغییر یافته باید بررسی گردد و توسعه ادامه یابد تا تست با موفقیت پشت سر گذاشته شود.

Figure 24
Figure 24

سناریو و گام‌های تست امکان Debugging نیز دارند. برای این منظور روی سناریو یا گام مورد نظر breakpoint قرار دهید  و با کلیک راست روی سناریوی Specflow گزینه Debug SpecFlow Scenarios را انتخاب نمایید.

 

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

تمام قسمت‌های آموزش Specflow، به صورت دسته‌بندی شده از اینجا در دسترس است.

آموزش

پاورقی

  1. Fail
  2. Pass
  3. Verify
  4. Assertion

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

Selenium

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

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

یک دیدگاه

  1. ممنون از مطلب مفیدتون

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

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