verhaltensgetriebene Entwicklung (Behavior-Driven Development, BDD)

Was ist verhaltensgetriebene Entwicklung (BDD)?

Verhaltensgetriebene Entwicklung (Behavior-Driven Development, BDD) ist eine kollaborative Entwicklungsmethodik, bei der der Fokus auf der Definition des erwarteten Verhaltens einer Komponente oder eines Systems aus der Perspektive des Kunden oder Endnutzers liegt. In BDD wird das zu entwickelnde System oder die zu entwickelnde Funktionalität zunächst in alltäglicher Sprache beschrieben, die sowohl für technische als auch nicht-technische Stakeholder verständlich ist. Diese Beschreibung bildet die Basis für die Testfälle, die dann die Implementierung und Verifizierung des Verhaltens sicherstellen.

Merkmale der verhaltensgetriebenen Entwicklung:

  • Kollaborative Kommunikation: Alle Beteiligten (wie Entwickler, Tester, Product Owner und Fachabteilungen) arbeiten eng zusammen, um sicherzustellen, dass die Anforderungen klar definiert sind und das System das richtige Verhalten aus Sicht des Benutzers liefert.
  • Verhaltensfokussierte Spezifikation: Die Anforderungen werden in Form von Beispielen und Verhaltensbeschreibungen formuliert, die beschreiben, wie das System auf bestimmte Eingaben reagieren sollte. Diese Beispiele sind oft in natürlicher Sprache verfasst, wodurch Missverständnisse vermieden werden.
  • Automatisierte Tests: Basierend auf den Verhaltensspezifikationen werden automatisierte Tests erstellt, die sicherstellen, dass das System das gewünschte Verhalten wie erwartet liefert. Diese Tests sind lebende Dokumente, die jederzeit den Zustand des Systems widerspiegeln.
  • Ergebnisse messbar machen: BDD-Tests sind prüfbar und dienen als klare Indikatoren dafür, ob das System die definierten Verhaltensanforderungen erfüllt.

Beispiel für Verhaltensgetriebene Entwicklung:

Nehmen wir an, ein Team entwickelt ein Online-Banking-System. Um eine Funktion zu testen, die es den Benutzern ermöglicht, Geld zu überweisen, könnte eine Verhaltensbeschreibung wie folgt aussehen:

  • Feature: Überweisung von Geld
    • Szenario 1: Der Benutzer gibt gültige Kontoinformationen ein und überweist einen Betrag von 100 EUR
      • Gegeben sei: Der Benutzer ist eingeloggt und hat 200 EUR auf seinem Konto
      • Wenn der Benutzer 100 EUR auf das Konto eines anderen Benutzers überweist
      • Dann sollte der Überweisungsbetrag erfolgreich verarbeitet werden und das Konto des Benutzers sollte mit 100 EUR weniger angezeigt werden

In BDD formulieren wir die Anforderungen also durch Geschichten (User Stories) und Szenarien, die dann in automatisierte Akzeptanztests übersetzt werden. In diesem Fall würde ein Test die Überweisung prüfen und sicherstellen, dass der Betrag korrekt überwiesen wird und der Kontostand des Absenders aktualisiert wird.

Vorteile der verhaltensgetriebenen Entwicklung:

  • Klarheit für alle Beteiligten: Da die Anforderungen in natürlicher Sprache beschrieben sind, verstehen alle Stakeholder, einschließlich Entwickler, Tester und Business-Teams, was genau entwickelt und getestet werden muss.
  • Frühzeitiges Testen: Durch das frühzeitige Schreiben von Tests auf Basis des erwarteten Verhaltens können Probleme und Missverständnisse bereits zu Beginn der Entwicklung erkannt und korrigiert werden.
  • Kontinuierliche Rückmeldung: BDD sorgt für kontinuierliches Feedback während des gesamten Entwicklungsprozesses, da automatisierte Tests jederzeit durchgeführt werden können, um sicherzustellen, dass das System den Benutzeranforderungen entspricht.
  • Dokumentation und Test in einem: Die Verhaltensspezifikationen, die in BDD verwendet werden, dienen gleichzeitig als Dokumentation und Testfälle, was den Aufwand für die Dokumentation reduziert und die Konsistenz zwischen Anforderungen und Implementierung sicherstellt.

Nachteile der verhaltensgetriebenen Entwicklung:

  • Erforderliche Disziplin und Zusammenarbeit: BDD erfordert eine enge Zusammenarbeit zwischen allen Teammitgliedern (insbesondere zwischen Business und Technik). Ein Mangel an dieser Zusammenarbeit kann den Erfolg der Methode beeinträchtigen.
  • Initialer Aufwand: Das Erstellen von klaren Beispielen und Verhaltensspezifikationen erfordert zu Beginn mehr Zeit und Aufwand.
  • Wartung der Tests: Da BDD stark auf automatisierten Tests basiert, müssen diese Tests regelmäßig gewartet und aktualisiert werden, um sicherzustellen, dass sie mit den sich entwickelnden Systemanforderungen übereinstimmen.

Hinweise zur Praxis:

  • Verwendung von BDD-Tools: Tools wie Cucumber, SpecFlow oder JBehave helfen, die in natürlicher Sprache formulierten Spezifikationen in automatisierte Tests umzusetzen.
  • Beispiele verwenden: Die Erstellung von Beispielen sollte immer in guter Zusammenarbeit mit den Fachabteilungen und Endbenutzern erfolgen, um sicherzustellen, dass alle relevanten Geschäftsprozesse und -regeln berücksichtigt werden.
  • Kontinuierliche Validierung: Die BDD-Tests sollten regelmäßig und kontinuierlich ausgeführt werden, um sicherzustellen, dass das System ständig den aktuellen Anforderungen entspricht.