Behaviour Driven Development und Bamboo: Visualisierung von Cucumber-Szenarien

Read in English.

Verhaltensgetriebene Entwicklung (Behaviour Driven Development, BDD) setzt sich zum Ziel, in Software-Projekten die beteiligten Akteure von Stakeholdern bis zum Entwickler zusammenzubringen und funktionale Anforderungen in einer einfachen, verständlichen und normierten Sprache zu dokumentieren.

Diese Texte dienen dann nicht nur dem gemeinsamen Verständnis und der Dokumentation, sondern lassen sich verwenden, um mithilfe moderner Werkzeuge die umfassende Erfüllung der definierten Kriterien in der Software zu testen und  nachzuweisen.

Häufig wird zur Beschreibung die Gherkin-Syntax verwendet; die Szenarien werden in "Gegeben" ("Given", Ausgangszustände, Initialisierungen etc.), "Wenn" ("When", Signal, Import, Ereignis, Aktion), "Dann" ("Then", Ergebnis, Ausgang) unterteilt, wie wir im folgenden Beispiel sehen können.

Ein häufig verwendetes Tool, das als Bindeglied zwischen textueller Anforderungsbeschreibung und konkretem Software-Test dient, ist Cucumber.

Da die BDD-Szenarien genauso wie beispielsweise Unit- oder Integrationstests auf dem Integrationsserver ausgeführt werden sollten, aber eine spezielle Visualisierung der Testergebnisse hilfreich ist, wollen wir im folgenden Tutorial demonstrieren, wie Cucumber-Szenarien auf einem Bamboo-Server ausgeführt und wie Testergebnisse visualisiert werden können.

Installation des Cucumber Report Plugins

Die Bamboo-Erweiterung Cucumber Report Plugin von Hindsight Software ist auf dem Atlassian Marketplace erhältlich und für Bamboo-Instanzen aller Größen kostenfrei. Die Installation lässt sich bequem (je nach Bamboo-Version) über den Plugin-Manager oder den Plugin-Upload im Bamboo-Administrationsbereich bewerkstelligen.

Cucumber-Szenarien und Schritte

Nun nehmen wir an, dass wir eine Funktion entwickeln, die es unseren Nutzern ermöglicht, mit der Anwendung nach Büchern zu suchen. Wie ein BDD-Szenario aussehen kann (hier in englischer Sprache, Cucumber unterstützt jedoch auch die Verwendung vieler anderer Sprachen bereits von Haus aus), zeigt das folgende Snippet, das ich aus einem Tutorial meines privaten Blogs hasCode.com recyceln konnte. (Dort finden sich für Interessierte auch die beispielhaften Quelltexte für die Integration der Cucumber-Bibliothek in eine Java-Anwendung.)

Feature: Book search
To allow a customer to find his favourite books quickly, the library must offer multiple ways to search for a book.

Scenario: Search books by publication year
Given a book with the title 'One good book', written by 'Anonymous', published in 14 March 2013
And another book with the title 'Some other book', written by 'Tim Tomson', published in 23 August 2014
And another book with the title 'How to cook a dino', written by 'Fred Flintstone', published in 01 January 2012
When the customer searches for books published between 2013 and 2014
Then 2 books should have been found
And Book 1 should have the title 'Some other book'
And Book 2 should have the title 'One good book'

Nun möchten wir daran gehen,  die Verifizierung des Szenarios und der Kriterien auf einem Bamboo-Server zu konfigurieren.

Build-Plan-Konfiguration in Bamboo

Zunächst erstellen wir in Bamboo einen neuen Build-Plan und fügen einen einfachen Maven-Task hinzu, der clean test ausführt. Sofern das Maven-Projekt Cucumber und die dazugehörigen Szenarien korrekt konfiguriert hat, müssen wir hier zunächst nichts weiter tun.

Konfiguration des Build-Plans: Tests mit Maven ausführen

Visualisierung der Testergebnisse

Nach erfolgreichem Durchlauf zeigt Bamboo eine übersichtliche Liste verifizierter Szenarien und Schritte unter Angabe der Durchlaufzeit und des Testergebnisses an:

Übersicht der durchgelaufenen Szenarien

Von hier aus können wir direkt tiefer in die Details eines einzelnen Szenario-Schrittes einsteigen:

Darstellung von Detailinformationen zu einem Szenario

So einfach ist die Integration von Cucumber-Szenarios in unsere CI-Infrastruktur. Tests können effizient gesammelt und ausgeführt werden, wir erhalten einen schnellen Überblick über unsere Tests, die stringente Visualisierung hilft bei der Fehlerermittlung. Effektiv und hilfreich.

Ihr Partner für individuelle Software-Projekte

Planen Sie bereits ein konkretes Software-Projekt? Oder gibt es bestimmte Prozesse in Ihrem Unternehmen, die Ihnen schon lange Kopfzerbrechen bereiten? Bremst ein System oder eine Schnittstelle Ihre Mitarbeiter auf der einen oder Ihre Kunden auf der anderen Seite aus? Dann sprechen Sie mit uns darüber! Wir freuen uns darauf, gemeinsam eine individuelle Lösung zu entwickeln – bei höchster Qualität und voller Kostenkontrolle. Wir legen größten Wert auf Erweiterbarkeit, Performanz, Skalierbarkeit, Plattformunabhängigkeit und Testbarkeit und schaffen individuelle High-End-Software-Lösungen, die sich auch im Nachhinein flexibel ausbauen und verändern lassen.

Weiterführende Infos

Code-Coverage-Metriken mit Bamboo und Clover
Code-Qualität optimieren mit SonarQube und Bamboo
Individuelle Software-Entwicklung: Workflows, Branching-Modelle und Continuous Delivery
Was agile Software-Projekte dem Kunden bringen
Der Beginn eines Happy Ends: Initialer Anforderungs-Workshop für erfolgreiche Projekte