Что такое Gherkin и какие ключевые слова он использует?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое Gherkin?
Gherkin — это предметно-ориентированный язык (Domain-Specific Language, DSL), предназначенный для описания функциональности программного обеспечения в виде простых, понятных человеку сценариев поведения (behavior scenarios). Он является неотъемлемой частью фреймворка Cucumber и других инструментов, поддерживающих методологию Behavior-Driven Development (BDD). Ключевая цель Gherkin — служить "мостом" между техническими и нетехническими участниками проекта (бизнес-аналитиками, продакт-менеджерами, тестировщиками и разработчиками), обеспечивая общее, однозначное понимание требований и ожидаемого поведения системы через исполняемые спецификации.
Файлы сценариев, написанные на Gherkin, имеют расширение .feature. Каждый такой файл структурирован, читаем и состоит из ключевых слов, которые задают четкий формат.
Ключевые слова Gherkin
Язык Gherkin использует небольшой, фиксированный набор ключевых слов (на английском языке), которые определяют структуру сценария. Эти слова одинаково работают в большинстве локализаций, но могут быть переведены на многие языки (включая русский: "Допустим", "Когда", "То" и т.д.). Однако в международных проектах чаще используют английские варианты.
Основные ключевые слова для структуры сценария:
-
Feature(Функция / Свойство) — ключевое слово верхнего уровня, которое начинает.featureфайл. Оно описывает высокоуровневую бизнес-функцию, которую покрывают сценарии в этом файле.Feature: User Authentication As a registered user I want to log in to my account So that I can access personalized content -
Scenario(Сценарий) — определяет конкретный бизнес-сценарий, пример того, как функция должна работать. Это основа исполняемой спецификации.Scenario: Successful login with valid credentials -
Given(Допустим / Дано) — описывает начальный контекст системы. Это "предусловия", которые должны быть выполнены до начала действий пользователя. Может быть несколько шаговGiven.Given I am on the login page And I have a registered user account -
When(Когда) — описывает ключевое действие или событие, выполняемое пользователем (или системой), которое приводит к какому-либо результату. Обычно это один шаг.When I enter valid username and password And I click the 'Login' button -
Then(То / Тогда) — описывает ожидаемый результат или постусловие. Это то, что мы проверяем после выполнения действия (When). Может быть несколько шаговThen.Then I should be redirected to the dashboard page And I should see a welcome message "Hello, User!" -
And(И / К тому же),But(Но) — служебные слова для улучшения читаемости. Они используются в комбинации с любым из основных шагов (Given,When,Then), чтобы избежать их повторения и сделать текст более естественным.When I enter a valid username And I enter an invalid password # 'And' заменяет второй 'When' But I leave the "Remember me" checkbox unchecked # 'But' для контраста
Дополнительные ключевые слова для улучшения структуры:
-
Background(Предыстория) — содержит шаги (Given, режеWhen), которые являются общими для всех сценариев в данном.featureфайле. Выполняется перед каждым сценарием. Позволяет избежать дублирования кода.Background: Given the application is running And I have opened the main page -
Scenario Outline(Контур сценария) иExamples(Примеры) — мощная конструкция для параметризации сценариев. Позволяет запускать один и тот же сценарий с разными наборами тестовых данных. Шаблон сценария описывается один раз, а данные подставляются из таблицы.Scenario Outline: Login with invalid credentials Given I am on the login page When I enter "<username>" and "<password>" And I click the 'Login' button Then I should see an error message "<error_message>" Examples: | username | password | error_message | | invalid | secret | Invalid username or password. | | user | wrong | Invalid username or password. | | | secret | Username is required. | -
Rule(Правило) (появилось в Gherkin 6) — используется для группировки нескольких сценариев, которые вместе иллюстрируют одно бизнес-правило. Это делает структуруFeatureболее логичной.Feature: Loyalty Program Rule: Points are awarded for purchases Scenario: Purchase over $50 awards 10 points Scenario: Purchase under $50 awards 1 point per $5
Значение для QA Automation
Для автоматизатора тестирования Gherkin — это не только инструмент коммуникации, но и контракт на реализацию. Каждый шаг сценария (Given, When, Then) должен быть связан ("сматчен") с соответствующим методом на языке программирования (например, Java, Python, JavaScript). Эти методы содержат автоматизированный код, который либо подготавливает систему, либо выполняет действия, либо проверяет результат. Таким образом, сценарии на Gherkin становятся исполняемыми тестами.
Преимущества такого подхода:
- Живая документация:
.featureфайлы всегда актуальны, так как их можно запустить как тесты. - Регрессионное тестирование: Любое изменение в поведении системы будет обнаружено при прогоне сценариев.
- Фокус на поведении: Автоматизация начинается с обсуждения поведения, а не с кода, что приводит к созданию более релевантных и устойчивых тестов.
В итоге, Gherkin — это структурированный язык, который через свои ключевые слова (Feature, Scenario, Given, When, Then и др.) формализует требования и превращает их в основу для автоматизации, являясь краеугольным камнем практики BDD.