
آموزش SpecFlow و Gherkin برای نوشتن تست پذیرش (Acceptance Test)
آموزش SpecFlow و Gherkin برای نوشتن تست پذیرش (Acceptance Test) یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته آموزشی، آموزش فریمورک SpecFlow و زبان Gherkin برای نوشتن تست پذیرش (Acceptance Test) است که با نام اصلی Automated Acceptance Testing with SpecFlow and Gherkin از شرکت Pluralsight منتشر شده است.
فریمورک SpecFlow چیست؟
به بیان ساده فریمورک SpecFlow برای استفاده کردن از روش BDD می باشد. با استفاده از این فریمورک میتوانید در صدد نوشتن کدهای قابل خوانده شدن توسط افراد تجاری سازمان مورد نظرتان بربیایید. نوشتن فایلهای feature و همچنین کدهای خودکارسازی و یا automation code با استفاده از زبان برنامه نویسی مورد نظرتان به سادگی انجام پذیر است. استفاده کردن از فریمورک SpecFlow مزیت های متعددی را برای برنامه نویسان فراهم می کند. برای مثال میتوان از SpecFlow برای نوشتن توصیف های قابل خواندن توسط انسان استفاده کرد و سپس نیازمندیهای نرم افزار را بر اساس همین توصیف ها و تست های نوشته شده بر اساس آنها ایجاد نمود. این موضوع کمک می کند که یک درک مشترک از یک سیستم نرم افزاری به وجود بیاید.

استفاده کردن از BDD کمک میکند تا حوزههای ناشناخته یک سیستم نرمافزاری را سریعتر کشف کرده و آنها را به عنوان نیازمندی جدید اضافه کنید. علاوه بر این فریمورک SpecFlow کمک می کند تا با استفاده از زبان مشترک تمامی اعضای حاضر در یک تیم نرم افزاری، از تست های نوشته شده استفاده کنند. با استفاده از زبان Gherkin که در این فریمورک مورد استفاده قرار می گیرد، می توان یک درک مشترک از یک سیستم نرم افزاری را برای کل اعضای تیم ایجاد نمود. استفاده کردن از فریمورک SpecFlow کمک میکند تا گسترش دادن و نگهداری تست های خودکار از قبل وجود ساده تر بگردد. این موضوع با استفاده از تفکیکی که SpecFlow بین test case ها و automation code ایجاد میکند، انجام می پذیرد. علاوه بر تمامی این موضوعات گزارش گیری در فریمورک SpecFlow نیز بسیار ساده است. به عبارت دیگر فریمورک SpecFlow کمک می کند تا شما بتوانید مستندات خود را به همراه نتایج اجرا شدن تست ها در یک مکان یکسان داشته باشید. به همین دلیل است که با فریمورک SpecFlow میتوانیم مستندات زنده و یا living documentation ایجاد کنیم.
زبان Gherkin چیست؟
زبان Gherkin زبانی است که با استفاده از آن می توانیم سناریوهای تست بسیار خوانا را در فریمورک SpecFlow ایجاد کنید. با استفاده از Gherkin شما می توانید از یک زبان طبیعی، مثل زبان انگلیسی برای توصیف test case ها استفاده کرده و از این جهت تمامی اعضای یک تیم نرم افزاری را قادر به خواندن سناریوهای تست کنید. زبان Gherkin بر اساس سناریوی Given-When-Then کار می کند. در واقع زبان Gherkin کمک می کند تا شما بتوانید تست هایی را بنویسید که افراد غیر فنی و یا غیر برنامه نویس نیز بتوانند این سناریو های تست را بخوانند و با آنها ارتباط برقرار کنند.

استفاده کردن از زبان Gherkin برای نوشتن تست ها مزیت هایی را برای برنامه نویسان فراهم میکند. برای مثال؛ ساده تر شدن، ماژولار شدن و افزایش قابلیت نگهداری تست ها با استفاده از زبان Gherkin جزء مهمترین مزیت های استفاده کردن از آن می باشند. استفاده کردن از تکنیکها و موجودیت هایی از قبیل step definition ها و قابلیت navigate کردن به آنها و همچنین استفاده کردن از hook ها و تکنیک context injection نیز جزو مواردی هستند که با استفاده از فریمورک SpecFlow و زبان Gherkin قابل انجام می باشند.
تبدیل نیازمندیها به سناریوهای پذیرش با SpecFlow
آموزش Automated Acceptance Testing with SpecFlow and Gherkin از ایجاد اولین Feature File شروع میشود و نشان میدهد چگونه میتوان سناریوهای مورد انتظار یک نرمافزار را به شکلی ساختارمند تعریف کرد. در این روش، Gherkin برای بیان رفتار مورد انتظار در قالب سناریوها استفاده میشود و SpecFlow این سناریوها را به مراحل اجرایی آزمون متصل میکند. چنین ساختاری به تیم کمک میکند انتظار خود از یک قابلیت را روشنتر بیان کند و سپس همان انتظار را بهصورت خودکار بررسی کند. این رویکرد برای آزمودن رفتار قابل مشاهده برنامه، فراتر از تست یک متد منفرد، کاربرد دارد.
در بخشهای عملی، سناریوها، Tagها و Scenario Outlineها بررسی میشوند. Tagها امکان دستهبندی سناریوها را فراهم میکنند و Scenario Outline برای اجرای یک الگوی سناریو با دادههای متفاوت به کار میرود. در نتیجه، میتوانید رفتار یک قابلیت را با چند ورودی آزمایش کنید، بدون اینکه برای هر حالت مجبور باشید سناریویی کاملاً تکراری بنویسید. این مباحث به سازماندهی مجموعه تستهای پذیرش کمک میکنند و برای تیمهایی مفیدند که میخواهند سناریوهای کسبوکار را در کنار کد آزمون نگه دارند و اجرای آنها را به فرایند توسعه نزدیکتر کنند.
ساخت Step Definitionهای قابل استفاده مجدد و خودکارسازی وبسایت
برای اجرای سناریوهای Gherkin، هر مرحله باید به کدی متصل شود که رفتار مورد نظر را انجام میدهد. این ارتباط در SpecFlow از طریق Bindingها و Step Definitionها شکل میگیرد. آموزش توضیح میدهد چگونه پارامترها را به مراحل اضافه کنید تا یک تعریف مرحله بتواند با دادههای متفاوت استفاده شود و میزان تکرار در Automation Code کاهش پیدا کند. همچنین حذف Stepها و Refactoring کد خودکارسازی مطرح میشود تا ساختار آزمونها با تغییر نیازها قابل نگهداری باقی بماند. این بخش برای کسانی اهمیت دارد که میخواهند از انباشته شدن مراحل مشابه و دشوار شدن اصلاح تستها جلوگیری کنند.
در بخش پایانی، خودکارسازی یک وبسایت با استفاده از SpecFlow و WatiN بررسی میشود. این ترکیب امکان میدهد سناریوهای تعریفشده را به تعاملات واقعی با وبسایت پیوند دهید و رفتار آن را در قالب آزمونهای پذیرش بررسی کنید. آشنایی با WatiN در کنار Feature Fileها و Step Definitionها، ارتباط میان توصیف سناریو و اجرای آزمون را ملموستر میکند. با این رویکرد میتوانید سناریوهایی بسازید که نهتنها به جزئیات داخلی کد وابستهاند، بلکه نتیجهای را ارزیابی میکنند که کاربر از تعامل با برنامه انتظار دارد.
سرفصل مطالب آموزش ویدئویی SpecFlow و Gherkin برای نوشتن تست پذیرش (Acceptance Test)
فصل اول: مقدمه دوره آموزشی و نصب کردن دوره های مورد نیاز
- مقدمه
- ابزار SpecFlow چیست؟
- تست پذیرش (Acceptance Test) چیست؟
- بررسی تست های Business Facing
- SpecFlow یک ابزار است
- کاربرد SpecFlow در روش های Test-first
- بررسی ساختار SpecFlow
- نصب کردن ابزار های مورد نیاز در ویژوال استودیو و ایجاد اولین Feature File
- جمع بندی
فصل دوم: بررسی زبان Gherkin
- مقدمه
- زبان Gherkin چیست؟
- بررسی Feature ها
- بررسی سناریوها
- بررسی Step های Given وWhen و Then
- بررسی Tag ها
- آموزش عملی: استفاده از Tag ها
- آموزش عملی: قرار دادن کامنت ها
- کار با Data Table ها در Step ها
- کار کردن با Scenario Outline ها برای ساختن Data-Driven ها
- بررسی Background ها
- جمع بندی
فصل سوم: کدنویسی و ایجاد کردن Automation Step ها
- مقدمه
- نصب کردن NuGet Package های مورد نیاز
- بررسی Binding ها در Step Definition ها
- تنظیم Step Definition Style پیشفرض
- اضافه کردن Step Definition Style های جدید
- حذف کردن Step ها
- اجرا و Debugg کردم سناریوها و Step Definition ها
- اشتراک گذاشتن Step Definition ها
- اضافه کردن پارامترها برای افزایش قابلیت استفاده مجدد (Reusability) از Step Definition ها
- لحاظ کردن چندین پارامتر رشته ای در یک Step Definition تک
- ایجاد یک Step Definition با استفاده از یک Data Table
- استقاده ازStep Definition ها و Scenario Outline
- به اشتراک و تگهداری داده ها بین Step Definition ها
- جمع بندی
فصل چهارم: تست و Automat کردن یک وب سایت با استفاده از SpecFlow و WatiN
- مقدمه
- مقدمه ای بر وب سایتی که قرار است مورد تست شدن قرار بگیرد
- معرفی WatiN
- نوشتن سناریوی مربوط به قدرت گذرواژه
- نوشتن Automation مربوط به سناریوی مورد نظر
- ریفکتور کردن Automation Code نوشته شده
- استفاده از hook ها برای Dispose کردن Instance مربوط یه مرورگر
- ریفکتور کردن و استفاده کردن از یک Scenario Outline
- نوشتن سناریوی جدید
- ریفکتور کردن Feature ها و استفاده کردن از Background ها
- ریفکتور کردن Step Definition ها به درون کلاس های دیگر
- ریفکتور کردن تعامل با مرورگر به درون یک Page Model
- جمع بندی







