← Назад к вопросам

Что такое Gherkin и какие ключевые слова он использует?

1.0 Junior🔥 121 комментариев
#Теория тестирования

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI7 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое Gherkin?

Gherkin — это предметно-ориентированный язык (Domain-Specific Language, DSL), предназначенный для описания функциональности программного обеспечения в виде простых, понятных человеку сценариев поведения (behavior scenarios). Он является неотъемлемой частью фреймворка Cucumber и других инструментов, поддерживающих методологию Behavior-Driven Development (BDD). Ключевая цель Gherkin — служить "мостом" между техническими и нетехническими участниками проекта (бизнес-аналитиками, продакт-менеджерами, тестировщиками и разработчиками), обеспечивая общее, однозначное понимание требований и ожидаемого поведения системы через исполняемые спецификации.

Файлы сценариев, написанные на Gherkin, имеют расширение .feature. Каждый такой файл структурирован, читаем и состоит из ключевых слов, которые задают четкий формат.

Ключевые слова Gherkin

Язык Gherkin использует небольшой, фиксированный набор ключевых слов (на английском языке), которые определяют структуру сценария. Эти слова одинаково работают в большинстве локализаций, но могут быть переведены на многие языки (включая русский: "Допустим", "Когда", "То" и т.д.). Однако в международных проектах чаще используют английские варианты.

Основные ключевые слова для структуры сценария:

  1. Feature (Функция / Свойство) — ключевое слово верхнего уровня, которое начинает .feature файл. Оно описывает высокоуровневую бизнес-функцию, которую покрывают сценарии в этом файле.

    Feature: User Authentication
      As a registered user
      I want to log in to my account
      So that I can access personalized content
    
  2. Scenario (Сценарий) — определяет конкретный бизнес-сценарий, пример того, как функция должна работать. Это основа исполняемой спецификации.

    Scenario: Successful login with valid credentials
    
  3. Given (Допустим / Дано) — описывает начальный контекст системы. Это "предусловия", которые должны быть выполнены до начала действий пользователя. Может быть несколько шагов Given.

    Given I am on the login page
    And I have a registered user account
    
  4. When (Когда) — описывает ключевое действие или событие, выполняемое пользователем (или системой), которое приводит к какому-либо результату. Обычно это один шаг.

    When I enter valid username and password
    And I click the 'Login' button
    
  5. Then (То / Тогда) — описывает ожидаемый результат или постусловие. Это то, что мы проверяем после выполнения действия (When). Может быть несколько шагов Then.

    Then I should be redirected to the dashboard page
    And I should see a welcome message "Hello, User!"
    
  6. 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' для контраста
    

Дополнительные ключевые слова для улучшения структуры:

  1. Background (Предыстория) — содержит шаги (Given, реже When), которые являются общими для всех сценариев в данном .feature файле. Выполняется перед каждым сценарием. Позволяет избежать дублирования кода.

    Background:
      Given the application is running
      And I have opened the main page
    
  2. 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.             |
    
  3. 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.

Что такое Gherkin и какие ключевые слова он использует? | PrepBro