Behaviour Driven Testing - Klare Testprozesse und glückliche Endnutzer!

🕒 Lesedauer: 3 Minuten

Agile Softwareentwicklung ist heute ein sehr wichtiger Bestandteil des Entwicklungsprozesses. Behaviour Driven Development (BDD) nimmt dabei eine Schlüsselrolle ein. Es hilft, zunächst die Spezifikation von Anforderungen via einer Anforderungsanalyse zu definieren und zu testen, indem man sich auf das Verhalten der Anwendung bzw. der Software konzentriert.

Haben Sie sich auch schon darüber geärgert, dass sehnlichst erwartete Features in Ihrem Softwareprodukt fehlerhaft oder ganz anders implementiert wurden, als Sie sich das als Auftraggeber vorgestellt haben? Vielleicht haben Sie sich mit den Ursachen beschäftigt und suchen jetzt nach Wegen, um die Anforderungen in künftigen Projekten von Anfang an eindeutig und glasklar festzulegen sowie die Umsetzung und Abnahme der Anforderungen systematisch sicherzustellen.

Behaviour Driven Testing ist in einer solchen Situation eine hervorragende Vorgehensweise.

Image
Testautomatisierung mit BDD

Was bedeutet Behaviour Driven Development (BDD)?

Behaviour Driven Development (BDD) ist im Wesentlichen eine Strategie in der Softwareentwicklung, die sicherstellt, dass das Endprodukt den Erwartungen der Benutzer gerecht wird.

Zur Umsetzung der Strategie werden oft Szenarien verwendet, die in einfacher Sprache beschreiben, wie die Software in bestimmten Situationen funktionieren soll. Szenarien werden auch als Anwendungsfälle oder “User Stories” bezeichnet. Diese Szenarien dienen als Basis für Tests, um sicherzustellen, dass die Software so funktioniert, wie sie soll.

Das Ziel von BDD ist es, Missverständnisse zwischen denjenigen, die die Software bauen, und denjenigen, die sie prüfen oder verwenden, zu minimieren.
 

Wichtige Punkte

  • Die agile Softwareentwicklung mit BDD fördert die Zusammenarbeit zwischen Entwicklern, Testern, Stakeholdern und Teammitgliedern im Allgemeinen.
  • BDD ermöglicht eine bessere Umsetzung von Anforderungen und Erwartungen der Stakeholder.
  • Die Verwendung von BDD reduziert die Fehlerquote und verbessert die Gesamtleistung der Software.
  • BDD ist ein wichtiger Teil der modernen Softwareentwicklung.
  • Die agile Softwareentwicklung mit BDD ermöglicht eine schnellere und flexiblere Entwicklung von Software.
     

Was hat BDD mit Testen zu tun?

In der agilen Softwareentwicklung hat sich die Bedeutung des BDD-Ansatzes in den letzten Jahren gewandelt. Ursprünglich als Mittel zur besseren Verständigung zwischen Fachbereich und Entwicklern gedacht, hat es sich als Werkzeug für alle Projektteilnehmer etabliert.

Dafür sorgt nicht zuletzt die ubiquitäre Sprache, eine einheitliche Fachsprache, die in der Softwareentwicklung verwendet wird, um alle Aktivitäten der Projektteilnehmer mit einzubinden. Dies hat den Vorteil, dass die Kommunikation zwischen Projektteilnehmern aus verschiedenen Fachbereichen, dazu zählen Softwareentwickler, Softwaretester und Stakeholder, verbessert und die jeweiligen Aufgaben und Verantwortungen definiert werden.

Der Software-Lifecycle zwingt in der Entwicklung eine kontinuierliche Qualitätssicherung zu betreiben. Hierfür müssen zu den Anforderungen die Gesichtspunkte der Softwaretests einfließen. Hierzu ermöglicht die BDD-Syntax, mit der Definition der Ein- und Ausgangsbedingungen, hervorragend Testfälle abzuleiten. Im Prozess ermöglicht es dies, die Testfälle vor der Entwicklung entstehen zu lassen, analog zum Test-Driven-Development (TDD). Die Softwareentwicklung gilt dann als erfolgreich, wenn diese funktionsfähig ist und den Anforderungen entspricht.

Der Gedanke hinter Behaviour Driven Testing ist also das Testen des Verhaltens einer Software im Vordergrund (Blackbox-Testing). Es beschäftigt sich damit “was” die Software leistet und nicht “wie” sie es leistet.
 

Wie sieht Behaviour Driven Testing in der Praxis aus?

In der Welt der IT gibt es einige Tools, die die Idee von Behaviour Driven Testing verfolgen. Das bekannteste ist Cucumber, das sich der Gherkin-Syntax bedient. In Gherkin ist ein Testfall Teil eines Features, das in Szenarios und Steps (Schritte) unterteilt ist. Ein Feature entspricht einem Anwendungsfall und beinhaltet mehrere Szenarios, die wiederum in Given-, When- und Then-Steps unterteilt sind:

  • Given (Precondition): Beschreibt die Vorrausetzung vor dem Test.
  • When (Aktion): Beschreibt die Interaktion des Testfalls mit dem Testobjekt, also die Testdurchführung.
  • Then (Postcondition): Validiert das Ergebnis mit dem erwarteten Ergebnis.

Diese werden in so genannte Feature-Files zusammengefasst:  

 
 Feature: Der Administrator soll die Nutzerdaten vom neuen Benutzer eintragen und abspeichern können.
 Szenario: Der Administrator gibt gültige Nutzdaten ein und speichert diese ab.
 Given: Ich habe mich erfolgreich als Administrator mit dem dazugehörigen Passwort eingeloggt.
 When: Ich trage die Nutzerdaten auf der Registrierungsseite ein und speichere diese ab.
 Then: Sollte der neue Benutzer angelegt sein.
 

Ähnliche Formulierungen finden sich auch bei Tools, die Programmiersprachen wie Java, JavaScript, Python und Ruby akzeptieren.
Nun stellt sich die Frage, in welchem Bereich das Software Behaviour Driven Testing am sinnvollsten genutzt werden sollte. Es macht wenig Sinn, beispielsweise Behaviour Driven Testing in Komponententests anzuwenden, da die Implementierung einer einzelnen Komponente getestet wird, nicht das Verhalten des Systems selbst. Es kommen zwei Bereiche in Betracht:

  • UI-Testing: Zum UI-Testing bietet sich Behaviour Driven Testing gut an, da die Fachbereiche ihre Anforderungen meist auf Basis vom UI formulieren.
  • API-Testing: Wird beispielweise das Backend eines Systems über HTTP-Anfragen getestet, so verleiht Behaviour Driven Testing den Testfällen eine übersichtliche Struktur.

 

Für tiefere Einblicke empfehlen wir unsere Podcastfolge: Behaviour Driven Development - Szenarien, Einführung, Einsatz, Testautomatisierung


Exkurs: Cucumber in der Praxis

In dem sehr ausführlichen Podcast behandelt Pascal Moll verständlich die diversen Themenbereiche des BDD-Tools Cucumber, wie unter anderem Schlüsselwörter ermöglichen automatisierte Tests zu schreiben oder wie es beim Qualitätsmanagement bzw. Testmanagement genutzt werden kann:


Was sind die Vorteile und Nachteile vom Behaviour Driven Testing?

Vorteile von BDD:

  • Die strukturierte und übersichtliche Testfallbeschreibung von Behaviour Driven Testing sorgt für eine schnellere Qualitätsverbesserung der Software.
  • Verbesserung der Kommunikation der Projektteilnehmer untereinander. Das mindert Rücksprachen, was zu Zeitersparnis führt.
  • Eine Dokumentation in der ubiquitären Sprache sorgt für ein besseres gemeinsames Verständnis und mindert somit Produkt- /Projektrisiken.

Nachteile von BDD:

  • Einarbeitung in eine neue Syntax, die eine Disziplin erfordert, die konsequent umzusetzen ist.
  • Anfänglich kommt es zu höheren Aufwänden bei Anforderungsdefinitionen.
  • Die Vorteile von Behaviour Driven Testing kommen erst durch eine einheitliche Verwendung der natürlichen Sprache voll zur Geltung.
     

BDD-Frameworks und Tools im Überblick

Bei der Einführung vom Behavior Driven Development (BDD) spielen Frameworks und Tools eine entscheidende Rolle. Sie tragen zur Optimierung des Softwareentwicklungsprozesses bei und fördern den Austausch zwischen Entwicklern, Testern und Stakeholdern. Zu den bekanntesten gehören Cucumber, SpecFlow, JBehave und Behat.

Die Wahl des richtigen Frameworks hängt von den Projektanforderungen ab. Cucumber ist sehr beliebt und wird oft mit SpecFlow kombiniert. JBehave und Behat bieten viele Funktionen und Erweiterungen.

Die Frameworks

  • Cucumber: Eines der bekanntesten BDD-Frameworks, das eine einfache und intuitive Syntax bietet.
  • SpecFlow: Ein Framework, das speziell für .NET-Entwickler entwickelt wurde und eine enge Integration mit Visual Studio bietet.
  • JBehave: Ein Framework, das eine Vielzahl von Funktionen und Erweiterungen bietet und oft in Kombination mit anderen Tools verwendet wird.
  • Behat: Ein Framework, das eine einfache und flexible Syntax bietet und oft in Kombination mit anderen Tools verwendet wird.

Die Verwendung von BDD-Frameworks und Tools verbessert den Entwicklungsprozess. Sie fördern die Kommunikation und Zusammenarbeit im Team. Durch die richtige Auswahl von Frameworks und Tools können Entwickler ihre Arbeit effizienter gestalten.
 

Fazit: Die Zukunft der Softwareentwicklung mit BDD

Die Erfahrung mit Behavior Driven Testing in Projekten zeigt, dass diese nie zu hundert Prozent angewendet wird. Aber es ist ein guter Ansatz, um Projekteilnehmer dazu zu bewegen, sich früh Gedanken über die Testfallbeschreibung der Software vor der eigentlichen Implementierung zu machen. Dies kann den Entwicklungsprozess einer Software beschleunigen, gleichzeitig aber werden Missverständnisse zwischen den Fachbereichen gemindert und somit die geforderte Funktionalität geliefert, die von den Stakeholdern gewünscht wird.

 

 

FAQ - Behavior Driven Development

Was ist Behavior Driven Development?

Verhaltensgesteuerte Entwicklung, abgekürzt BDD, ist ein Ansatz zur Softwareentwicklung. Dabei liegt der Fokus darauf, welche Erwartungen die Nutzer an eine Software haben. Anstelle lediglich Funktionen zu erstellen, beschreibt BDD, welches Verhalten das System aufweisen soll.

Wie unterscheidet sich BDD von Test Driven Development?

BDD und Test Driven Development (TDD) sind unterschiedlich. BDD legt den Fokus auf die Nutzererwartungen. TDD konzentriert sich auf die Erstellung von Testfällen. BDD nutzt die Gherkin-Sprache, um die Verhaltensweisen zu beschreiben.

Welche Grundprinzipien hat der BDD-Ansatz?

Die Grundprinzipien von BDD sind:

  • Testautomatisierung: BDD fördert die Automatisierung von Tests, um schnelles Feedback zu bekommen.
  • Kollaboration: BDD erfordert die Zusammenarbeit zwischen Entwicklern, Produktmanagern und Stakeholdern.
  • Lesbarer Kontext: BDD nutzt die Gherkin-Sprache, um Verhaltensweisen einfach zu beschreiben.

Wie lässt sich BDD in den agilen Entwicklungsprozess integrieren?

BDD passt gut in agile Prozesse wie Scrum. Man definiert gemeinsam mit Stakeholdern die Verhaltensweisen. Diese werden in Feature-Dateien festgehalten. Im Sprint werden sie umgesetzt und automatisch getestet.

Wie funktioniert die Gherkin-Syntax in BDD?

Die Gherkin-Syntax ist einfach und leicht zu lesen. Sie besteht aus Schlüsselwörtern wie "Funktionalität" und "Szenario". Mit dieser Syntax kann man Verhaltensweisen klar definieren.

Welche BDD-Frameworks und -Tools gibt es?

Beliebte BDD-Frameworks und -Tools sind:

  • Cucumber: Ein Open-Source-Rahmenwerk, das Gherkin unterstützt.
  • SpecFlow: Ein .NET-Framework, das Gherkin nutzt.
  • JBehave: Ein Java-Framework, ähnlich wie Cucumber.
  • Behat: Ein PHP-Framework, auf Symfony basierend.

Wie kann man BDD-Szenarien in der Praxis umsetzen?

Um BDD-Szenarien umzusetzen, folgt man diesen Schritten:

  1. Erstellung von Feature-Dateien in Gherkin.
  2. Schreiben von Step-Definitionen für die Szenarien.
  3. Verbindung der Step-Definitionen mit Testautomatisierungswerkzeugen.
  4. Überprüfung und Anpassung der Szenarien.

Veröffentlicht am 30.Oktober 2024

Aktualisiert am 13.Januar 2025

Wilson Campero

Geschäftsführer, Senior Testmanager

Wilson Campero ist IT-Unternehmer und Experte für Softwarequalität sowie ISTQB Certified Full Advanced Tester. Seit mehr als 20 Jahren ist das Testen von Software sein Spezialgebiet.

Finden Sie weitere interessante Artikel zum Thema: