Behavior Driven Development
Behavior Driven Development, kurz BDD, verbindet fachliche Anforderungen mit automatisierten Tests. Dabei werden Anforderungen in einer gemeinsamen, natürlichen Sprache beschrieben, die Entwickler, Tester und Fachbereiche gleichermaßen verstehen. BDD reduziert Missverständnisse und schafft eine geteilte Sicht auf das gewünschte Verhalten.
In a Nutshell
- BDD beschreibt Verhalten in natürlicher Sprache mit dem Schema Given-When-Then.
- Es fördert die Zusammenarbeit zwischen Fachbereich, Entwicklung und Qualitätssicherung.
- Werkzeuge wie Cucumber, SpecFlow oder Behave übersetzen Szenarien in ausführbare Tests.
- BDD ist keine Testmethode, sondern eine Kommunikations- und Entwicklungspraxis.
Kompakte Fachbeschreibung
BDD entwickelte sich aus TDD und fokussiert auf das Verhalten der Software aus Geschäftssicht. Anstatt technisch zu formulieren, welche Methode welches Ergebnis liefern soll, werden Beispiele in der Sprache der Anwender beschrieben. Diese Beispiele werden zu Tests, die gleichzeitig als Spezifikation und als lebende Dokumentation dienen.
Das Given-When-Then Schema
Given
Beschreibt den Ausgangszustand oder die Voraussetzung für ein Szenario.
When
Beschreibt die Aktion, die ausgeführt wird.
Then
Beschreibt das erwartete Ergebnis oder die erwartete Reaktion.
Beispiel-Szenario
Szenario: Kunde erhält Rabatt bei großem Einkauf
Given ein Kunde hat Waren im Wert von 200 Euro im Warenkorb
When der Kunde zur Kasse geht
Then soll der Gesamtbetrag um 20 Euro reduziert werden
Wichtige Werkzeuge
- Cucumber: Populäres BDD-Framework für Java, Ruby, JavaScript und viele andere Sprachen.
- SpecFlow: BDD-Framework für .NET.
- Behave: BDD-Framework für Python.
- Serenity BDD: Erweiterung für Cucumber mit Reporting-Fokus.
- Gauge: Leichtgewichtige BDD-Alternative von ThoughtWorks.
Praxisbeispiel: Cucumber-Feature für einen Bestellprozess
Feature: Rabattberechnung
Szenario: Standardrabatt ab 100 Euro
Given der Warenkorb enthält Artikel im Wert von 100 Euro
When der Kunde den Bestellvorgang startet
Then wird ein Rabatt von 10 Euro angewendet
And der neue Gesamtbetrag beträgt 90 Euro
Szenario: Kein Rabatt unter 100 Euro
Given der Warenkorb enthält Artikel im Wert von 50 Euro
When der Kunde den Bestellvorgang startet
Then wird kein Rabatt angewendet
And der Gesamtbetrag beträgt 50 Euro
Vorteile und Nachteile
Vorteile
- Gemeinsame Sprache: Fachbereich und Entwicklung sprechen über dieselben Beispiele.
- Klare Anforderungen: Missverständnisse werden vor der Implementierung erkannt.
- Lebende Dokumentation: Szenarien beschreiben das Systemverhalten nachvollziehbar.
- Fokus auf Nutzerwert: Tests orientieren sich am Geschäftswert, nicht an technischen Details.
Nachteile
- Aufwand: Das Erstellen und Pflegen von Szenarien kostet Zeit.
- Komplexität: Große Feature-Dateien können unübersichtlich werden.
- Abhängigkeit von Fachbereich: Ohne regelmäßige Einbindung entsteht keine echte Wirkung.
- Technische Bruchstelle: Schlecht gepflegte Schrittdefinitionen können zu Wartungsproblemen führen.
Prüfungsrelevante Stichpunkte
- Definition und Ziel von BDD.
- Das Given-When-Then Schema.
- Unterschied zwischen BDD und TDD.
- Rolle von Fachbereich, Entwicklung und Test.
- Gängige Werkzeuge: Cucumber, SpecFlow, Behave.
Typische Prüfungsfragen (mit Kurzantwort)
-
Was ist BDD? Eine Praxis, die fachliches Verhalten in natürlicher Sprache beschreibt und als Tests nutzt.
-
Was bedeutet Given-When-Then? Es beschreibt Voraussetzung, Aktion und erwartetes Ergebnis eines Szenarios.
-
Nenne ein BDD-Werkzeug. Cucumber, SpecFlow oder Behave.
-
Was ist der Hauptunterschied zwischen BDD und TDD? BDD beschreibt Verhalten aus Geschäftssicht, TDD konzentriert sich auf technische Einheiten.
-
Was ist ein Vorteil von BDD? Fachbereich und Entwicklung teilen ein gemeinsames Verständnis der Anforderungen.
Wichtigste Quellen
- https://cucumber.io/docs/bdd/
- https://specflow.org/bdd/
- https://en.wikipedia.org/wiki/Behavior-driven_development
Häufig gestellte Fragen
Was ist der Hauptzweck von BDD?
BDD fördert ein gemeinsames Verständnis des Systemverhaltens zwischen Fachbereich, Entwicklung und Test durch ausführbare Beispiele in natürlicher Sprache.
Was bedeutet Given in einem Szenario?
Given beschreibt den Ausgangszustand und die Voraussetzungen, die vor der Aktion erfüllt sein müssen.
Kann BDD ohne TDD eingesetzt werden?
BDD und TDD ergänzen sich. BDD legt den Fokus auf fachliche Beispiele, TDD auf die technische Entwicklung. Beide können zusammen genutzt werden.
Welche Rolle spielen Fachbereiche bei BDD?
Fachbereiche formulieren und validieren Szenarien. Sie sorgen dafür, dass die Tests das echte Geschäftsverhalten abbilden.
Was ist eine Feature-Datei?
Eine Feature-Datei enthält in Gherkin-Syntax beschriebene Szenarien, die das Verhalten einer Funktion aus Sicht der Anwender dokumentieren.
Was ist Gherkin?
Gherkin ist eine einfache, strukturierte Sprache für BDD-Szenarien. Sie verwendet Schlüsselwörter wie Feature, Scenario, Given, When, Then, And und But.
Was sind Step Definitions?
Step Definitions verbinden die natürlichsprachigen Szenarien mit dem ausführbaren Code, der die eigentlichen Testaktionen durchführt.
Ist BDD nur für Webanwendungen geeignet?
Nein. BDD kann für jede Art von Software verwendet werden, solange das Verhalten in Beispielen beschrieben werden kann.
Was ist ein BDD-Anti-Pattern?
Zu technische oder zu detaillierte Szenarien, die den Fokus auf die Implementierung statt auf das Geschäftsverhalten legen, sind typische Anti-Patterns.
Wie unterscheidet sich BDD von klassischen Anforderungsdokumenten?
BDD-Szenarien sind ausführbar und werden direkt als Tests verwendet. Statische Dokumente veralten schnell, während BDD als lebende Dokumentation dient.
Was ist Specification by Example?
Specification by Example ist ein verwandter Ansatz, bei dem Anforderungen durch konkrete Beispiele spezifiziert werden. BDD nutzt diese Idee direkt für ausführbare Tests.
Welche Programmiersprachen unterstützt Cucumber?
Cucumber unterstützt unter anderem Java, JavaScript, Ruby, Python, C# und Kotlin.
Wie viele Szenarien sollte eine Feature-Datei enthalten?
Eine Feature-Datei sollte überschaubar bleiben. Mehrere verwandte Szenarien pro Feature sind sinnvoll, aber bei zu vielen Szenarien empfiehlt sich eine Aufteilung.
Was ist ein BDD-Report?
Ein BDD-Report zeigt, welche Szenarien erfolgreich waren und welche fehlgeschlagen sind. Er dient gleichzeitig als Nachweis der erfüllten Anforderungen.
Lohnt sich BDD in kleinen Teams?
Ja, auch kleine Teams profitieren von klareren Anforderungen und lebender Dokumentation. Der Aufwand sollte jedoch zum Projekt passen.
Weiter im Software Testing Lernpfad
Der nächste Artikel im Software Testing Lernpfad behandelt Testautomatisierung und Softwarequalität — wie Testautomatisierung die Softwarequalität verbessert.



