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.
Gherkinové soubory mají příponu .feature a obsahují popis jedné funkcionality systému. Každý soubor se skládá z:
| 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ě.
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"
Gherkin umožňuje znovupoužití kroků pomocí parametrů a datových tabulek.
Kroky mohou obsahovat proměnné – např. `„alice“` nebo `„secret123“` – které jsou předány do implementace kroku jako argumenty.
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
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.
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/
Gherkin je primárně používán s:
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).