Cucumber für BDD Tests verwenden

Ashley Goolam

Ashley Goolam

23 December 2025

Cucumber für BDD Tests verwenden

Behavior-Driven Development hat die Art und Weise, wie Teams über Softwarequalität denken, grundlegend verändert, indem es Tests für jedermann lesbar macht! Die Verwendung von Cucumber für BDD-Tests ist eine Fähigkeit, die die Lücke zwischen Geschäftsanforderungen und technischer Implementierung schließt und eine lebendige Dokumentation erstellt, die tatsächlich ausgeführt wird. Wenn Sie mit Testfällen zu kämpfen hatten, die sofort nach dem Schreiben veraltet waren, zeigt Ihnen dieser Leitfaden einen besseren Weg.

button

Was sind Cucumber und BDD?

Cucumber ist ein Open-Source-Tool, das automatisierte Tests in einfacher Sprache ausführt. Es implementiert Behavior-Driven Development (BDD), eine Methodik, bei der Entwickler, Tester und Geschäftsinteressenten zusammenarbeiten, um das Softwareverhalten anhand konkreter Beispiele zu definieren.

BDD konzentriert sich auf die Beantwortung einer Frage: „Was soll das System tun?“ anstatt „Wie sollen wir es testen?“. Das Ergebnis ist eine gemeinsame Sprache, die Missverständnisse beseitigt und Tests erstellt, die sowohl als Spezifikationen als auch als ausführbare Validierung dienen.

Cucumber liest .feature-Dateien, die in Gherkin-Syntax geschriebene Szenarien enthalten, und führt diese gegen Schrittdefinitionen aus – Code, der die eigentliche Automatisierung durchführt. Diese Trennung bedeutet, dass Geschäftsinteressenten Testszenarien überprüfen können, ohne Code lesen zu müssen, während Entwickler die technischen Details separat implementieren.

cucumber

Cucumber für JavaScript installieren

Die Einrichtung von Cucumber in einem Node.js-Projekt erfordert nur wenige Befehle:

Voraussetzungen:

prüfen, ob npm und node auf Ihrem lokalen Rechner installiert sind
# Create a new project directory
mkdir cucumber-bdd-demo && cd cucumber-bdd-demo

# Initialize npm
npm init -y

# Install Cucumber and testing dependencies
npm install --save-dev @cucumber/cucumber chai axios
Cucumber im Projekt einrichten

Ihre package.json sollte ein Test-Skript enthalten:

{
  "scripts": {
    "test": "cucumber-js"
  }
}

Erstellen Sie diese Verzeichnisstruktur:

project/
├── features/
│   └── user-management.feature
├── step-definitions/
│   └── user-steps.js
├── package.json
└── cucumber.json

Praktischer Leitfaden: Ihren ersten BDD-Test schreiben

Lassen Sie uns einen Test für eine Benutzerverwaltungs-API erstellen, um zu demonstrieren, wie man Cucumber für BDD-Tests verwendet.

Schritt 1: Die Feature-Datei schreiben

Erstellen Sie features/user-management.feature:

Feature: Benutzerverwaltungs-API
  Als API-Client
  Ich möchte Benutzer verwalten
  Damit ich Benutzerfunktionalität in meine Anwendung integrieren kann

  Szenario: Neuen Benutzer erfolgreich erstellen
    Angenommen, ich habe eine gültige Benutzer-Payload
    Wenn ich eine POST-Anfrage an "/api/users" sende
    Dann sollte der Antwortstatus 201 sein
    Und die Antwort sollte eine Benutzer-ID enthalten

  Szenario: Versuch, Benutzer mit ungültiger E-Mail zu erstellen
    Angenommen, ich habe eine Benutzer-Payload mit ungültiger E-Mail
    Wenn ich eine POST-Anfrage an "/api/users" sende
    Dann sollte der Antwortstatus 400 sein
    Und die Antwort sollte "Ungültiges E-Mail-Format" enthalten

Schritt 2: Schrittdefinitionen implementieren

Erstellen Sie step-definitions/user-steps.js:

const { Given, When, Then } = require('@cucumber/cucumber');
const { expect } = require('chai');
const axios = require('axios');

let requestPayload;
let response;

Given('I have a valid user payload', function() {
  requestPayload = {
    name: 'Test User',
    email: 'test@example.com',
    password: 'ValidPass123'
  };
});

Given('I have a user payload with invalid email', function() {
  requestPayload = {
    name: 'Test User',
    email: 'invalid-email',
    password: 'ValidPass123'
  };
});

When('I send a POST request to {string}', async function(endpoint) {
  try {
    response = await axios.post(`http://localhost:3000${endpoint}`, requestPayload);
  } catch (error) {
    response = error.response;
  }
});

Then('the response status should be {int}', function(statusCode) {
  expect(response.status).to.equal(statusCode);
});

Then('the response should contain a user ID', function() {
  expect(response.data).to.have.property('userId');
  expect(response.data.userId).to.match(/^[0-9a-fA-F]{24}$/);
});

Then('the response should contain {string}', function(message) {
  expect(response.data.message).to.include(message);
});

Schritt 3: Die Datei Cucumber.json bearbeiten

Erstellen Sie eine Datei „cucumber.json“ im Stammverzeichnis Ihres Projekts und fügen Sie den folgenden Code hinzu:

{
    "default": {
        "formatOptions": {
            "snippetInterface": "synchronous"
        }
    }
}

Schritt 4: Die Tests ausführen

Führen Sie Ihre Tests aus mit:

npm test

Cucumber gibt detaillierte Ergebnisse aus, die zeigen, welche Schritte bestanden, undefiniert sind oder fehlgeschlagen sind.

Regeln für das Schreiben guter BDD-Szenarien

Um Cucumber für BDD-Tests effektiv zu nutzen, müssen Sie diese bewährten Regeln befolgen:

1. Gegeben-Wenn-Dann-Struktur

Jedes Szenario muss diese drei Teile in dieser Reihenfolge haben:

2. Deklarativ schreiben, nicht imperativ

Schlecht:

Angenommen, ich öffne den Browser
Und ich navigiere zu "/login"
Und ich tippe "test@example.com" in das E-Mail-Feld
Und ich tippe "password" in das Passwortfeld
Und ich klicke auf den Anmelde-Button

Gut:

Angenommen, ich befinde mich auf der Anmeldeseite
Wenn ich mich mit gültigen Anmeldeinformationen anmelde
Dann sollte ich das Dashboard sehen

Konzentrieren Sie sich darauf, was Sie testen, nicht darauf, wie Sie es tun.

3. Ein Szenario, ein Zweck

Jedes Szenario sollte ein einzelnes Verhalten testen. Kombinierte Szenarien verbergen Fehler und erschweren das Debugging.

4. Geschäftssprache verwenden

Schreiben Sie Szenarien, die Geschäftsinteressenten verstehen können. Vermeiden Sie technischen Jargon und Implementierungsdetails.

5. Szenarien unabhängig machen

Szenarien sollten nicht voneinander abhängen. Jedes sollte seine eigenen Daten einrichten und danach aufräumen.

Erweiterte Cucumber-Funktionen: Datentabellen und Szenarienübersichten

Datentabellen für komplexe Eingaben

Wenn Sie mit mehreren Datenpunkten testen müssen, verwenden Sie Tabellen:

Szenario: Benutzer mit unterschiedlichen Rollen erstellen
  Angenommen, ich habe die folgenden Benutzerdaten:
    | name     | email             | role    |
    | Alice    | alice@example.com | admin   |
    | Bob      | bob@example.com   | user    |
  Wenn ich eine POST-Anfrage an "/api/users" sende
  Dann sollten alle Benutzer erfolgreich erstellt werden

Schrittdefinition:

Given('I have the following user data:', function(dataTable) {
  requestPayload = dataTable.hashes();
});

Szenarienübersichten für datengesteuerte Tests

Wenn Sie dasselbe Szenario mit verschiedenen Daten ausführen möchten, verwenden Sie Übersichten:

Szenario-Übersicht: Anmeldung mit verschiedenen Anmeldeinformationen
  Angenommen, ich befinde mich auf der Anmeldeseite
  Wenn ich "" und "" eingebe
  Dann sollte ich "" sehen

  Beispiele:
    | email             | password   | result          |
    | test@example.com  | validPass  | Dashboard       |
    | test@example.com  | wrongPass  | Invalid password|
    | invalid@email.com | validPass  | Invalid email   |

Dadurch werden automatisch drei separate Testszenarien erstellt.

Tests mit Tags organisieren

Tags helfen Ihnen, Szenarien zu kategorisieren und zu filtern:

@smoke @regression
Szenario: Benutzeranmeldung
  Angenommen, ich befinde mich auf der Anmeldeseite
  Wenn ich mich mit gültigen Anmeldeinformationen anmelde
  Dann sollte ich das Dashboard sehen

@api @critical
Szenario: API-Zustandsprüfung
  Angenommen, die API läuft
  Wenn ich "/health" anfordere
  Dann sollte der Antwortstatus 200 sein

Nur bestimmte Tags ausführen:

npm test -- --tags "@smoke"

Wie Apidog bei API-Tests in BDD-Workflows hilft

Während Cucumber bei der Definition von Verhalten glänzt, automatisiert Apidog die mühsame Arbeit der Erstellung und Ausführung von API-Tests und macht Cucumber für BDD-Tests weitaus effizienter.

KI-gesteuerte Generierung von API-Testfällen

Anstatt Schrittdefinitionen für API-Aufrufe manuell zu schreiben, generiert Apidog diese mithilfe von KI aus Ihrer OpenAPI-Spezifikation:

# Your API spec
paths:
  /api/users:
    post:
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name: string
                email: string
      responses:
        '201':
          description: User created

Apidog erstellt automatisch testbereite Szenarien:

button
Testfälle in Apidog generieren

Häufig gestellte Fragen

Q1: Muss ich programmieren können, um Cucumber-Tests zu schreiben?

Antw: Das Schreiben von Gherkin-Szenarien erfordert keine Programmierung – nur klares Denken über das Verhalten. Die Implementierung von Schrittdefinitionen erfordert jedoch Kenntnisse in JavaScript (oder einer anderen Sprache). Tools wie Apidog reduzieren diesen Aufwand, indem sie den Code der Schrittdefinitionen automatisch generieren.

Q2: Wie unterscheidet sich Cucumber von traditionellen Test-Frameworks?

Antw: Traditionelle Frameworks (Jest, Mocha) konzentrieren sich auf die technische Implementierung. Cucumber konzentriert sich auf das Geschäftsverhalten. Dasselbe Cucumber-Szenario kann Web-UI-Tests (Selenium), API-Tests (Axios) oder mobile Tests (Appium) steuern, ohne den Gherkin-Text zu ändern.

Q3: Kann Cucumber API-Testtools ersetzen?

Antw: Cucumber bietet die Teststruktur, aber Sie benötigen immer noch Tools, um API-Aufrufe auszuführen (Axios, Supertest) und Antworten zu validieren. Apidog ergänzt Cucumber, indem es die API-Ausführungsschicht übernimmt, während Cucumber den BDD-Workflow verwaltet.

Q4: Was macht ein gutes Cucumber-Szenario aus?

Antw: Gute Szenarien sind unabhängig, verwenden Geschäftssprache, folgen der Gegeben-Wenn-Dann-Struktur und testen jeweils ein Verhalten. Sie sollten für nicht-technische Beteiligte lesbar sein und sich darauf konzentrieren, was das System tut, nicht wie es es tut.

Q5: Wie handhabt Apidog die Authentifizierung in BDD-Tests?

Antw: Apidog verwaltet Authentifizierungs-Tokens automatisch. Sie können Schritte wie „Angenommen, ich bin authentifiziert“ definieren, die die Anmeldeinformationsverwaltung von Apidog verwenden, um gültige Tokens abzurufen, wodurch die manuelle Token-Behandlung in Ihren Schrittdefinitionen entfällt.

Fazit

Die effektive Nutzung von Cucumber für BDD-Tests transformiert Ihren Entwicklungsprozess, indem sie ein gemeinsames Verständnis zwischen technischen und geschäftlichen Teams schafft. Die Gherkin-Syntax erzwingt Klarheit, während die Trennung von Szenarien und Schrittdefinitionen die Wartbarkeit der Tests bei der Weiterentwicklung Ihrer Anwendung gewährleistet.

Die wahre Stärke liegt in der Integration von Cucumber mit modernen Automatisierungstools. Apidog eliminiert die mühsame manuelle Arbeit des Schreibens von API-Testcode, sodass Sie sich auf die Definition aussagekräftiger Verhaltensweisen konzentrieren können, während es die Ausführung übernimmt. Diese Kombination bietet das Beste aus beiden Welten: menschenlesbare Spezifikationen, die als lebendige Dokumentation dienen, und robuste automatisierte Tests, die kontinuierlich laufen.

Fangen Sie klein an. Wählen Sie einen API-Endpunkt. Schreiben Sie drei Szenarien: Erfolg, Fehler und Grenzfall. Implementieren Sie die Schrittdefinitionen. Führen Sie sie aus. Zeigen Sie die Ergebnisse Ihrem Produktverantwortlichen. Sobald dieser sieht, wie Geschäftsanforderungen als Tests ausgeführt werden, erhalten Sie die Zustimmung, BDD auf Ihr gesamtes Projekt auszudehnen. Dann hört die Verwendung von Cucumber für BDD-Tests auf, eine technische Praxis zu sein, und wird zu einer teamweiten Qualitätsbewegung.

button

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen