IT Język testów BDD

Gherkin

Znany też jako:składnia Given-When-ThenFeature files

Definicja #

Gherkin to język domeny specyficznej (DSL) do opisywania zachowania systemu w sposób zrozumiały dla wszystkich uczestników projektu — programistów, testerów, analityków biznesowych i product ownerów. Scenariusze Gherkin są bezpośrednio uruchamiane przez narzędzia BDD takie jak Cucumber, SpecFlow czy Behave.

Kluczowe słowa kluczowe Gherkin:

  • Feature — opis funkcjonalności; nagłówek pliku .feature
  • Scenario — pojedynczy przypadek testowy opisujący konkretne zachowanie
  • Given (Zakładając) — kontekst wyjściowy; stan systemu przed akcją
  • When (Gdy) — akcja użytkownika lub zdarzenie wyzwalające
  • Then (Wtedy) — oczekiwany wynik; asercja
  • And / But — kontynuacja poprzedniego kroku (Given/When/Then)
  • Background — wspólny kontekst dla wszystkich scenariuszy w Feature
  • Scenario Outline + Examples — parametryzacja scenariusza tabelą danych
  • @Tag — tagowanie scenariuszy do selektywnego uruchamiania

Przykład scenariusza:

Feature: Koszyk zakupowy
  Background:
    Given użytkownik jest zalogowany

  Scenario: Dodanie produktu do koszyka
    Given produkt "Laptop" jest dostępny w magazynie
    When użytkownik dodaje "Laptop" do koszyka
    Then koszyk zawiera 1 produkt
    And suma koszyka wynosi 2999 PLN

  Scenario Outline: Różne ilości produktów
    When użytkownik dodaje <ilość> sztuk produktu
    Then koszyk zawiera <ilość> produktów
    Examples:
      | ilość |
      | 1     |
      | 3     |
      | 10    |

Gherkin jest językiem naturalnym z ograniczoną strukturą — może być pisany po polsku (Given/When/Then tłumaczone na Zakładając/Gdy/Wtedy) lub angielsku w zależności od konfiguracji projektu.

Zastosowania #

  • Testy akceptacyjne pisane przez Product Ownerów i BA — scenariusze Gherkin jako żywa specyfikacja zrozumiała dla osób nie-technicznych
  • Automatyzacja testów E2E — pliki .feature powiązane ze step definitions sterującymi Selenium, Playwright lub REST API
  • Living documentation — feature files jako aktualna dokumentacja systemu weryfikowana przez CI/CD
  • Komunikacja wymagań — Gherkin jako format dla User Stories z konkretnymi przykładami zachowania (Specification by Example)
  • Testy regresji — zestaw scenariuszy Gherkin uruchamianych przy każdym wdrożeniu

Ścieżka nauki #

Gherkin jest prostym językiem — nauka składni zajmuje godziny; wyzwaniem jest pisanie dobrych, utrzymywalnych scenariuszy.

Zacznij od:

  • Podstawy składni: Feature, Scenario, Given/When/Then, And, But
  • Background i współdzielony kontekst — kiedy używać Background vs duplikowania kroków
  • Scenario Outline z tabelą Examples — parametryzacja testów
  • Tagowanie scenariuszy: @smoke, @regression, @wip — uruchamianie wybranych tagów

Następnie w kontekście narzędzia:

  • Cucumber-JVM (Java) — step definitions z @Given, @When, @Then; JUnit Runner
  • Cucumber.js (JavaScript/TypeScript) — step definitions jako funkcje; integracja z Playwright
  • SpecFlow (.NET/C#) — odpowiednik Cucumber dla środowiska Microsoft
  • Behave (Python) — implementacja Gherkin dla ekosystemu Python
  • Zasady dobrego Gherkin: pisz scenariusze z perspektywy zachowania (nie implementacji), unikaj szczegółów technicznych w krokach, jeden scenariusz = jedno zachowanie

FAQ #

Czym jest Gherkin i jak go używać?
Gherkin to język składni Given-When-Then do opisywania zachowania systemu w plikach .feature. Pliki te są parsowane przez narzędzia BDD (Cucumber, SpecFlow) i każde zdanie jest mapowane na step definition — funkcję testową w Javie, C#, JS lub innym języku. Gherkin pozwala pisać testy zrozumiałe dla całego zespołu, łącznie z osobami nie-technicznymi.
Czym różni się Gherkin od Cucumber?
Gherkin to język (format tekstowy scenariuszy Given-When-Then). Cucumber to narzędzie BDD, które parsuje pliki Gherkin i uruchamia step definitions powiązane z krokami scenariuszy. Gherkin bez Cucumber'a jest tylko tekstem; Cucumber bez Gherkin nie ma sensu — są ze sobą ściśle powiązane.
Czy Gherkin można pisać po polsku?
Tak — Gherkin obsługuje wiele języków, w tym polski. Słowa kluczowe po polsku: 'Funkcja' (Feature), 'Scenariusz' (Scenario), 'Zakładając' lub 'Mając' (Given), 'Jeżeli' lub 'Gdy' (When), 'Wtedy' (Then). Konfiguruje się to przez język pliku: # language: pl. W praktyce większość projektów używa angielskich słów kluczowych dla spójności.
Czym jest SpecFlow w .NET?
SpecFlow to implementacja BDD/Gherkin dla platformy .NET/C#. Używa tej samej składni plików .feature co Cucumber, ale step definitions pisze się w C# z atrybutami [Given], [When], [Then] i integruje z NUnit, xUnit lub MSTest. Jest najpopularniejszym narzędziem BDD w ekosystemie .NET.
Ostatnia aktualizacja:

Przeglądaj słownik IT alfabetycznie

Wybierz literę, aby zobaczyć wszystkie hasła zaczynające się od niej.