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.
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 für JavaScript installieren
Die Einrichtung von Cucumber in einem Node.js-Projekt erfordert nur wenige Befehle:
Voraussetzungen:
- Node.js
- NPM
- Ein API-Projekt mit einer Anmeldefunktion, die wir testen werden (Dieses Tutorial behandelt nur die Cucumber-Installation und Gherkin-Tests).

# 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

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:
- Gegeben: Legt Vorbedingungen fest
- Wenn: Beschreibt die Aktion
- Dann: Validiert das Ergebnis
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:
- Positiver Test: Gültige Payload → 201 Status
- Negativer Test: Ungültige E-Mail → 400 Status
- Grenzwerttest: Fehlendes Pflichtfeld → 400 Status

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.
