تستنویسی یک جزء بسیار مهم و بنیادی در مهندسی نرمافزار است که اهمیت بسیار زیادی دارد که به منظور ارزیابی و اعتبارسنجی کیفیت و عملکرد یک نرمافزار یا سیستم انجام میشود. هدف اصلی تست نویسی، تشخیص خطاها، مشکلات و عدم انطباق با نیازمندیها در نرمافزار است.
در زیر به تعدادی از مفاهیم اساسی در مورد تست نویسی میپردازیم:
تست نویسی اساسیترین قسمت از تضمین کیفیت نرمافزار است و در فرآیند توسعه به تشخیص زودهنگام خطاها و اشکالات، بهرهوری تیمهای توسعه و کاهش هزینههای مرتبط با خطاها و مشکلات کمک میکند تا از ارائه نرمافزارهای پایدار و قابل اطمینان به کاربران اطمینان حاصل شود.
و اما خیارشور(Gherkin) که در این محتوا درمورد تست نویسی به زبان Gherkin میپردازیم.
تست Gherkin نوعی تست مرتبط با توسعه رفتار محور(BDD) است. Gherkin زبانی است برای توصیف رفتار نرمافزار که در قالبی قابل خواندن و ساختار یافته توسط انسان استفاده میشود. این زبان از کلمات کلیدی مانند "When"، "Given" و "Then" برای تعریف سناریوها و مراحل استفاده میکند.
در تست Gherkin، سناریوها با جملات ساده انگلیسی نوشته میشوند و رفتار مورد انتظار یک سیستم را از دیدگاه کاربر نشان میدهند. سپس این سناریوها را میتوان به عنوان تست برای تأیید اینکه این نرمافزار همانطور که در نظر گرفته شده است اجرا خواهد شد یا خیر.
ابزارهایی مانند Cucumber یا Behave اغلب سناریوهای Gherkin را تفسیر میکنند و اجرای تستها را بر اساس این سناریوها انجام میدهند.
این زبان همکاری بین اعضاء غیر فنی و توسعهدهندگان را بهبود میدهد زیرا سناریوها در قالبی قابل درک برای هر دو گروه نوشته میشوند.
فرض کنید ما در حال توسعه فانکشن جمع دو عدد مثبت هستیم و میخواهیم یک سناریوی Gherkin برای تست آن بنویسیم.
توجه داشته باشید که سناریوها را باید در فایلی با پسوند feature در پوشه features بنویسید.
| Project/ | features/ | steps/ # -- Steps directory *.py # -- Step implementation or use step-library python files. | *.feature | logics/
#sum_two_positive_number.feature Feature: Addition Testing in Gherkin This feature is designed to test the addition operation for two positive numbers. Scenario Outline: Adding two positive numbers Given I have entered the <number_1> Given And i have entered the <number_2> When I calculate the sum of number_1 and number_2 Then The <result> should be calculated Examples: | number_1 | number_2 | result | | 11 | 11 | 22 |
این سناریوی Gherkin مراحلی از جمع دو عدد مثبت را با توجه به اعداد و نتیجه مورد انتظار نشان میدهد.
تا به اینجا ما فقط سناریو جمع دو عدد مثبت را نوشتهایم و برای تست فانکشن نیاز است تا این سناریو را روی فانکشن مورد نظر اجرا کنیم. برای اینکار کافیست پکیج behave را نصب کنید.
برای اینکار کافیست بعد از ساختن یک محیط مجازی از دستور زیر استفاده کنید:
pip install behave
حال با توجه به سناریو نوشته شده باید stepهای این سناریو را بنویسیم.
توجه داشته باشید که stepها را باید در پوشه steps در پوشه features بنویسیم.
#sum_two_positive_number.py from behave import given, then, when from behave.runner import Context from logics.sum_number import sum_two_positive_number @given("I have entered the {number_1}") def given_step(context: Context, number_1: str) -> None: context.number_1 = number_1 @given("And i have entered the {number_2}") def given_step(context: Context, number_2: str) -> None: context.number_2 = number_2 @when("I calculate the sum of number_1 and number_2") def when_imp(context: Context) -> None: context.sum = sum_two_positive_number( int(context.number_1), int(context.number_2) ) @then("The {result} should be calculated") def then_step(context: Context, result: str) -> None: assert context.sum == int(result)
حال با اجرای دستور زیر میتوانید نتیجه سناریو را مشاهده کنید.
bahave features/sum_two_positive_number.features
درصورتی که نتیجه تست با نتیجه سناریو نوشته شده مطابقت نداشته باشد، خطا مورد نظر به شما نشان داده خواهد شد.
Examples: | number_1 | number_2 | result | | 11 | 11 | 22 | | 2 | 19 | 21 | | 1 | 1 | 2 |
@given("Given title") def given_step(context: Context) -> None: for row in context.table: context.number_1 = row.get("number_1")
در ادامه برای دسترسی به متغیر number_1 در Whenها از context.number_1 استفاده میشود.
اینها توضیحات مختصری از تستنویسی، مخصوصا تستنویسی به زبان Gherkin بود تا با این زبان آشنا شوید. شما میتوانید با مراجعه به داکیومنت Gherkin روشهای دیگری از پیادهسازی سناریوهای این زبان را یاد گرفته و بیشتر با این زبان جذاب آشنا شوید.