BDD (Behaviour Driven Development) ist eine Methode, die 2003 von Dan North bekannt gemacht wurde und sich aus TDD (Test Driven Development) ableitet, das sie ergänzt.
Warum BDD einsetzen? Gerade um die häufigen Probleme mit Spezifikationen im agilen Entwicklungsansatz anzugehen:
BDD ist daher eine agile Methode, die darauf abzielt, die verschiedenen an der Entwicklung einer Funktion beteiligten Akteure hinsichtlich der beabsichtigten Funktionsweise aufeinander abzustimmen. Das Ziel von BDD ist es, Abnahmetests zu entwerfen, die das Verhalten der Funktion veranschaulichen, wobei Methoden wie die „3 Amigos“ oder das Beispiel-Mapping zum Einsatz kommen. Der BDD-Ansatz wird in der Regel in drei Phasen durchgeführt: Entdeckung, Formulierung und Automatisierung.
Die Beteiligten werden mithilfe gemeinsam entworfener Beispiele aufeinander abgestimmt, die das Verhalten der Funktionalität veranschaulichen: Dies ist die „Discovery“-Phase, die häufig durch das Treffen der „3 Amigos“ (Kunde, Entwickler und Tester) erreicht wird. Dieses Treffen sorgt für ein gemeinsames Verständnis der Anforderung und ermöglicht das Verfassen von Abnahmeszenarien zur Validierung der Abnahmekriterien.
Diese Beispiele werden in einer gemeinsamen Sprache, Gherkin, formuliert, die von den verschiedenen Rollen der „3 Amigos“ leicht verstanden wird. Die Gherkin-Sprache ist so konzipiert, dass strukturierte Tests in natürlicher Sprache geschrieben werden können, die a priori für alle verständlich ist. Gherkin-Tests werden mit den vier Grundelementen geschrieben: GIVEN / WHEN / THEN … AND (GIVEN ein bestimmter Kontext, WHEN ich führe eine Aktion aus, THEN erhalte ich ein Ergebnis1 AND ein Ergebnis2).
Ausgehend von dieser strukturierten (und formatierten) Formulierung des Verhaltens der Funktionalität ist es möglich, diese Beispiele in ein Software-Tool wie beispielsweise Cucumber zu integrieren, das diese Gherkin-Sprache interpretiert, um automatisierte Abnahmetests auszuführen, die an diese Beispiele angepasst sind. Dies ist die Automatisierungsphase.
BDD wird mittlerweile in vielen Unternehmen eingesetzt, um das Verhalten bestimmter Funktionen in enger Zusammenarbeit mit den Anwendern zu testen. Doch auch wenn BDD dazu dient, ein gemeinsames Verständnis der Anforderungen zu erreichen, gibt es nach wie vor eine Reihe von Missverständnissen rund um diese agile Praxis, die zu gewissen Missbräuchen führen können. Welche sind das?
Vor dem Sprint besteht die BDD-Praxis darin, durch Discovery ein gemeinsames Verständnis der Anforderung bei allen beteiligten Akteuren zu validieren. Dieses Verständnis wird durch Beispiele, Akzeptanzkriterien und Akzeptanzszenarien formuliert, die anschließend in einem Tool für den Entwurf und die Ausführung automatisierter Tests implementiert werden.
Die Anwendung der verschiedenen Phasen dieses Ansatzes trägt dazu bei, BDD-Drift entgegenzuwirken und vor allem die derzeitige Verwirrung hinsichtlich der verschiedenen Begriffe rund um das BDD-Konzept zu beseitigen.