Uživatelské nástroje

Nástroje pro tento web


gherkin

Gherkin

Gherkin je doménově specifický jazyk (DSL – Domain-Specific Language) určený k popisu chování softwarového systému v rámci metodiky Behavior-Driven Development (BDD). Gherkin je čitelný jak pro lidi, tak pro stroje – umožňuje psát testovací scénáře v přirozeném jazyce, které lze následně automaticky spustit jako funkční testy (např. pomocí nástroje Cucumber).

Cílem Gherkinu je vytvořit „živou dokumentaci“, která je vždy aktuální, protože je součástí testovací sady.

Struktura dokumentu Gherkin

Gherkinové soubory mají příponu .feature a obsahují popis jedné funkcionality systému. Každý soubor se skládá z:

  • Popisku funkce (Feature),
  • Jednoho nebo více scénářů (Scenario),
  • Kroků (Steps), které popisují předpoklady, akce a očekávané výsledky.

Klíčová slova (anglická – doporučená)

Klíčové slovo Účel Česká alternativa (lokální)
Feature Nadpis a popis celé funkce Požadavek, Funkce
Scenario Konkrétní testovací případ Scénář
Given Počáteční stav (předpoklady) Za předpokladu, Mám
When Uživatelská akce nebo událost Když
Then Očekávaný výsledek Pak
And / But Připojení dalšího kroku stejného typu A, Ale
💡 Doporučení: I když Gherkin podporuje lokalizaci (včetně češtiny), v praxi se důrazně doporučuje používat anglická klíčová slova, protože:
- většina nástrojů (Cucumber, IDE pluginy) lépe podporuje angličtinu,
- zajišťuje lepší kompatibilitu v mezinárodních týmech,
- step definitions (implementace kroků) jsou téměř vždy v angličtině.

Příklad Gherkin souboru (anglicky)

Feature: User login
 
  As a registered user
  I want to log in to the system
  So that I can access my personal dashboard
 
  Scenario: Successful login with valid credentials
    Given the user "alice" exists with password "secret123"
    When I enter "alice" and "secret123" into the login form
    And I click the "Login" button
    Then I should be redirected to the dashboard
    And I should see a welcome message "Welcome, alice!"
 
  Scenario: Login fails with invalid password
    Given the user "alice" exists with password "secret123"
    When I enter "alice" and "wrongpass" into the login form
    And I click the "Login" button
    Then I should see an error message "Invalid username or password"

Parametry a tabulky

Gherkin umožňuje znovupoužití kroků pomocí parametrů a datových tabulek.

Parametry ve složených závorkách

Kroky mohou obsahovat proměnné – např. `„alice“` nebo `„secret123“` – které jsou předány do implementace kroku jako argumenty.

Datové tabulky (Data Tables)

Pro testování více vstupů ve stejném scénáři lze použít tabulky:

Scenario: Login with various invalid inputs
  Given I am on the login page
  When I try to log in with the following credentials:
    | username | password   |
    | alice    | wrong123   |
    | bob      | incorrect  |
    |          | secret123  |
  Then I should see the error message "Invalid username or password" for each attempt

Scénářové osnovy (Scenario Outline) + Příklady (Examples)

Pro spuštění stejného scénáře s různými vstupy se používá Scenario Outline:

Scenario Outline: Login with different valid users
  Given the user "<username>" exists with password "<password>"
  When I log in as "<username>" with password "<password>"
  Then I should be on the dashboard
 
  Examples:
    | username | password   |
    | alice    | secret123  |
    | bob      | mypass456  |
    | eve      | qwerty789  |

Tento scénář se spustí třikrát – jednou pro každý řádek v sekci Examples.

Pravidla psaní dobrých Gherkin scénářů

  • Zaměř se na „co“, ne „jak“ – popisuj cíl uživatele, ne technické detaily (např. „Když přidám zboží do košíku“, ne „Když kliknu na tlačítko s ID #add-cart“).
  • Každý scénář by měl mít jeden jasný cíl – testuj jednu věc.
  • Vyhněte se podmínkám (`if`, `unless`) – raději vytvořte samostatné scénáře pro každý případ.
  • Používej přirozený jazyk – scénář by měl být srozumitelný i pro nevývojáře.
  • Nepřetěžuj Gherkin technickými detaily – ty patří do implementace kroků, nikoli do `.feature` souboru.

Lokalizace Gherkinu

Gherkin podporuje více než 70 jazyků. Pro použití češtiny stačí na začátek souboru přidat:

# language: cs
 
Požadavek: Přihlášení uživatele
 
  Scénář: Úspěšné přihlášení
    Za předpokladu, že uživatel "jan" existuje
    Když zadám "jan" a "heslo"
    Pak bych měl být přihlášen

Seznam podporovaných jazyků a klíčových slov je k dispozici na: https://cucumber.io/docs/gherkin/languages/

Integrace s nástroji

Gherkin je primárně používán s:

  • Cucumber (pro Ruby, Java, JavaScript, C#),
  • SpecFlow (.NET),
  • Behave nebo pytest-bdd (Python),
  • Godog (Go).

Tyto nástroje mapují jednotlivé řádky Gherkinu na step definitions – funkce v programovacím jazyce, které skutečně provádějí test (např. ovládají prohlížeč přes Selenium).

Související pojmy

Externí odkazy

Viz také

gherkin.txt · Poslední úprava: autor: admin