Gherkin Tutorial: BDD mit Given-When-Then & Praxisbeispiele [2026]

Aktualisiert: 10. März 2025
Inhaltsverzeichnis

Was ist Gherkin?

Gherkin ist die Sprache hinter BDD-Frameworks wie Cucumber oder SpecFlow. Sie ermöglicht es, Testszenarien in natürlicher Sprache zu formulieren, sodass Entwickler, Tester und Fachabteilungen sie gleichermaßen verstehen. Die Grundstruktur folgt dem Given-When-Then-Muster:

  • Given (Gegeben): Ausgangszustand beschreiben
  • When (Wenn): Aktion ausführen
  • Then (Dann): Erwartetes Ergebnis prüfen

Gherkin-Szenarien werden in Feature Files (.feature) gespeichert und können direkt von BDD-Frameworks wie Cucumber ausgeführt werden.

Die Bausteine von Gherkin

Gherkin-Syntax ist simpel, aber effektiv. Hier sind die wichtigsten Schlüsselwörter:

Feature: Login-Funktionalität
  Als registrierter Benutzer
  möchte ich mich einloggen können
  damit ich auf mein Dashboard zugreifen kann

  Scenario: Erfolgreicher Login
    Given der Benutzer ist auf der Login-Seite
    When er den Benutzernamen "testuser" eingibt
    And er das Passwort "sicher123" eingibt
    And er auf "Anmelden" klickt
    Then wird er zum Dashboard weitergeleitet
    And sieht die Begrüßung "Willkommen, testuser"

  Scenario: Fehlgeschlagener Login
    Given der Benutzer ist auf der Login-Seite
    When er den Benutzernamen "testuser" eingibt
    And er ein falsches Passwort eingibt
    And er auf "Anmelden" klickt
    Then sieht er die Fehlermeldung "Ungültige Anmeldedaten"

Weitere Schlüsselwörter: Background (Voraussetzungen für alle Szenarien), Scenario Outline (parametrisierte Tests mit Examples-Tabelle), And/But (zusätzliche Schritte).

Gherkin in der Praxis

In der Theorie klingt Gherkin wunderbar, aber wie setzt man es konkret um? Hier zwei Beispiele mit den wichtigsten Frameworks.

Verwendung von Feature-Files in Java

Mit Cucumber für Java werden Feature Files über Step Definitions mit Code verbunden:

Feature: Warenkorb
  Scenario: Produkt hinzufügen
    Given der Online-Shop ist geöffnet
    When der Benutzer "Laptop" in den Warenkorb legt
    Then enthält der Warenkorb 1 Produkt

Die zugehörige Step Definition in Java:

// Step Definition (TypeScript/Cucumber.js Äquivalent)
import { Given, When, Then } from "@cucumber/cucumber";

Given("der Online-Shop ist geöffnet", async function () {
  await this.page.goto("https://shop.example.com");
});

When("der Benutzer {string} in den Warenkorb legt", async function (product: string) {
  await this.page.click(`[data-product="${product}"] .add-to-cart`);
});

Then("enthält der Warenkorb {int} Produkt", async function (count: number) {
  const cartCount = await this.page.textContent(".cart-count");
  expect(Number(cartCount)).toBe(count);
});

Gherkin mit Playwright

Für UI-Tests kann Playwright ebenfalls mit Gherkin genutzt werden, über das cucumber-js Paket:

# Installation
npm install @cucumber/cucumber playwright @types/node typescript
// playwright.steps.ts
import { Given, When, Then } from "@cucumber/cucumber";
import { chromium, Page } from "playwright";

let page: Page;

Given("der Benutzer ist auf der Login-Seite", async function () {
  const browser = await chromium.launch();
  page = await browser.newPage();
  await page.goto("https://app.example.com/login");
});

When("er den Benutzernamen {string} eingibt", async function (username: string) {
  await page.fill("#username", username);
});

Then("wird er zum Dashboard weitergeleitet", async function () {
  await page.waitForURL("**/dashboard");
});

Best Practices für Gherkin-Tests

Damit Gherkin-Tests tatsächlich die Entwicklung erleichtern und nicht verkomplizieren, sind einige Best Practices zu beachten:

  1. Klar und präzise formulieren
    Ein Given-When-Then-Szenario sollte so verständlich sein, dass es auch ein Fachfremder nachvollziehen kann. Vermeide technische Details in den Szenarien.
  2. Atomic Scenarios schreiben
    Jedes Szenario sollte genau einen Ablauf testen. Wenn ein Test zu viele Steps enthält, könnte er in mehrere kleinere Tests aufgeteilt werden.
  3. Step Definitions wiederverwenden
    Gute Gherkin-Tests nutzen generische Schritte, die in mehreren Szenarien wiederverwendet werden können.
  4. Nicht alle Tests müssen in Gherkin sein
    Gherkin ist ideal für Akzeptanztests, aber nicht immer für Unit- oder Integrationstests notwendig.
  5. Tests in CI/CD einbinden
    Gherkin-Szenarien sollten automatisiert und in CI/CD-Pipelines eingebunden werden, um Regressionen frühzeitig zu erkennen.

Fazit zu Gherkin

Gherkin bietet eine klare, strukturierte Möglichkeit, Anforderungen und Tests in einer einheitlichen Sprache zu formulieren. Dadurch verbessert es die Zusammenarbeit zwischen Entwicklern, Testern und Fachabteilungen erheblich. Die Nähe zu User Stories erleichtert die Ableitung von Testfällen, wodurch Software bereits in der Entwicklungsphase effektiver getestet werden kann. Durch die enge Verbindung mit BDD-Frameworks wie Cucumber oder Playwright lassen sich Tests direkt aus verständlichen Szenarien ableiten, was zu einer besseren Nachvollziehbarkeit führt. Wer Gherkin konsequent nutzt, kann eine robuste Teststrategie schaffen, die langfristig zu höherer Softwarequalität und einer effizienteren Zusammenarbeit im Team führt.

FAQ: Häufig gestellte Fragen zu Gherkin

Was ist der Unterschied zwischen BDD und TDD?

BDD beschreibt erwartetes Verhalten aus Nutzersicht mit Given-When-Then. TDD prüft technische Korrektheit mit Unit-Tests. Beide ergänzen sich: BDD für Akzeptanztests, TDD für die Komponentenebene. Mehr dazu in unserem BDD-Grundlagen-Artikel.

Welche Testautomatisierungs-Tools unterstützen Gherkin?

Cucumber (Java), Playwright mit cucumber-js, Cypress mit cypress-cucumber-preprocessor und Robot Framework.

Wie schreibe ich gute Gherkin-Szenarien?

Jedes Szenario testet genau ein Verhalten. Given beschreibt den Ausgangszustand, When die Aktion, Then das Ergebnis. Halte Szenarien auf 5 bis 7 Steps.

Kann ich Gherkin ohne Cucumber verwenden?

Ja. Playwright, Cypress und andere Frameworks haben eigene Gherkin-Adapter. Entscheidend ist, dass das Team die Grundregeln der Testautomatisierung beherrscht.

Was sind die Grenzen von Gherkin?

Gherkin eignet sich für Akzeptanztests und E2E-Tests. Für Unit-Tests, Performance-Tests oder API-Tests sind andere Ansätze effizienter.

Testautomatisierung Beratung

Sie möchten Ihre Testautomatisierung optimieren? Unsere Experten helfen Ihnen bei der Auswahl der richtigen Tools, Best Practices und CI/CD-Integration.

Jetzt anfragen

Finden Sie weitere interessante Artikel zum Thema: