Lebendige Dokumentation
Kurz gesagt: Ein Word-Dokument veraltet unbemerkt. Szenarien laufen bei jeder Änderung und fallen durch, sobald das System nicht mehr tut, was sie sagen: Das ist lebendige Dokumentation. Sie werden vor der Arbeit geschrieben, von den Three Amigos: Fachbereich, Entwickler und QA. BDD ist dieses Gespräch. Szenarien, die QA allein nach dem Code schreibt, sind nur Tests mit mehr Arbeit.
Problem
Das Dokument, das unbemerkt lügt
Ein neuer Mensch im Team öffnet die Spezifikation der Lieferung. Ein Word-Dokument von vor zwei Jahren. Darin steht: „kostenlose Lieferung über 40 €“.
Der Shop liefert ab 50 € kostenlos. Jemand hat die Regel geändert, aber nicht das Dokument. Niemand hat es bemerkt, weil das Dokument nichts tut: Es liegt nur da.
Jetzt weiß der neue Mensch nicht, was stimmt: das Dokument oder das System?
Die Idee
Dokumentation, die läuft
Die Szenarien in diesem Modul sind Dokument und Test zugleich. Ändert sich die Regel im System, aber nicht im Szenario, fällt das Szenario beim nächsten Lauf durch. Ändert sie sich im Szenario, aber nicht im System, fällt es auch durch. Die beiden können nicht unbemerkt auseinanderdriften.
Das heißt lebendige Dokumentation (living documentation). Sie lebt unter einer Bedingung: Die Szenarien laufen bei jeder Änderung, meistens automatisch. Szenarien, die niemand ausführt, veralten genauso wie das Word-Dokument.
Damit die Datei Dokumentation ist, muss sie sich auch so lesen:
- Funktionalität sagt, was die Datei beschreibt, und die Story selbst kann darunter stehen;
- Regel ist jede Geschäftsregel, in den Worten des Inhabers;
- unter jeder Regel stehen die Beispiele: Szenarien und Grundrisse mit konkreten Zahlen.
# language: deFunktionalität: Kostenlose Lieferung Als Kunde möchte ich bei einer größeren Bestellung kostenlose Lieferung, damit ich keine 4,90 € für die Lieferung zahle.
Regel: Ein leerer Warenkorb kann nicht bestellt werden
Szenario: Ein Warenkorb ohne Produkte Angenommen ein leerer Warenkorb Wenn ich bestelle Dann wird die Bestellung abgelehntDer Text unter „Funktionalität“ ist kein Schritt. Er ist eine Beschreibung: Gherkin überspringt ihn beim Ausführen, und Menschen lesen ihn.
Die Idee
Wer sie schreibt und wann
Szenarien schreibt nicht ein Mensch allein. Sie entstehen aus einem Gespräch zwischen drei Menschen, die du schon vom Example Mapping kennst. Sie heißen die Three Amigos:
- der Fachbereich (der Inhaber oder die Analystin) nennt die Regeln und was zählt;
- der Entwickler fragt, wie es gebaut wird und was daran schwierig ist;
- QA fragt „was, wenn …?“: die Grenzen, den leeren Warenkorb, die Ablehnung.
Und wann? Vor der Arbeit. Ein Szenario, das vor dem Code geschrieben wird, sagt, was gewollt ist. Ein Szenario, das nach dem Code geschrieben wird, beschreibt, was gebaut wurde, Fehler eingeschlossen.
Die Dokumentation von Cucumber nennt die drei Schritte Entdeckung (discovery: ein Gespräch über konkrete Beispiele), Formulierung (formulation: Die Beispiele werden so aufgeschrieben, dass sie laufen können, und der Fachbereich bestätigt sie) und Automatisierung (automation: Der Entwickler bindet die Schritte an das System). Der dritte Schritt hat später ein eigenes Modul.
Probier es aus
Von der Story zum Dokument
Bring den Weg von der Story zur lebendigen Dokumentation in die Reihenfolge.
Der Inhaber bringt die StoryDer Entwickler bindet die Schritte und baut die FunktionDie Three Amigos legen Regeln, Beispiele und Fragen ausDer Fachbereich liest die Szenarien und sagt „ja, so ist es“Bei jeder späteren Änderung laufen die Szenarien wiederDie Beispiele werden als Gherkin-Szenarien aufgeschriebenDie Szenarien bestehen und die Story ist fertig
Das Gespräch kommt vor den Szenarien, und die Szenarien kommen vor dem Code. Der Fachbereich bestätigt sie, bevor die Arbeit beginnt: Dann ist eine Korrektur am billigsten. Die letzte Zeile hält sie am Leben.
Die Idee
BDD gegen „Gherkin-Tests“
All das hat einen Namen: BDD (behaviour-driven development, verhaltensgetriebene Entwicklung). Das Wichtige an BDD ist nicht Gherkin. Es ist diese Reihenfolge: Gespräch, Beispiele, dann Code.
Viele Teams übernehmen nur die Syntax. QA schreibt die Szenarien allein, nach dem Code, mit „klicke auf den Button“. Der Fachbereich liest sie nie. Das sind Gherkin-Tests: gewöhnliche automatisierte Tests mit einer weiteren Schicht darüber, die gepflegt werden muss. Die Kosten von BDD sind bezahlt, und der Nutzen fehlt.
Anzeichen dafür:
- niemand aus dem Fachbereich hat die Szenarien gelesen;
- die Szenarien werden nach dem Code geschrieben;
- die Schritte handeln von Buttons und Feldern, nicht von Regeln;
- Szenarien werden korrigiert, wenn sie durchfallen, ohne zu fragen, ob das System es falsch gemacht hat.
Gibt es kein Gespräch, ist die ehrliche Wahl ein einfacher Komponententest. Er ist schneller und billiger. Gherkin lohnt sich, wenn der Fachbereich die Szenarien wirklich liest.
Probier es aus
BDD oder nicht?
Übung
Das Dokument zur Lieferung
Die ganze Funktionalität. Die Story und die Regeln sind geschrieben.
Setze unter jede Regel die Beispiele, die sie zeigen: um die Grenze herum, weit von ihr und den leeren Warenkorb. Das Dokument muss alle sechs Fehler abfangen.
Lösung
# language: de
Funktionalität: Kostenlose Lieferung
Als Kunde
möchte ich bei einer größeren Bestellung kostenlose Lieferung,
damit ich keine 4,90 € für die Lieferung zahle.
Regel: Die Lieferung ist ab 50,00 € einschließlich kostenlos, sonst kostet sie 4,90 €
Szenariogrundriss: Eine Bestellung von <Betrag> €
Angenommen ein Warenkorb von <Betrag> €
Wenn ich bestelle
Dann beträgt die Lieferung <Lieferung> €
Beispiele: Um die Grenze herum
| Betrag | Lieferung |
| 49,99 | 4,90 |
| 50,00 | 0,00 |
Beispiele: Weit von der Grenze
| Betrag | Lieferung |
| 12,00 | 4,90 |
| 150,00 | 0,00 |
Regel: Ein leerer Warenkorb kann nicht bestellt werden
Szenario: Ein Warenkorb ohne Produkte
Angenommen ein leerer Warenkorb
Wenn ich bestelle
Dann wird die Bestellung abgelehnt
Diese Datei kann man einem neuen Menschen statt des Word-Dokuments geben. Die Story sagt warum, die Regeln sagen was, und die Beispiele zeigen genau, wo die Grenze liegt. Zwei Beispielblöcke unter einem Grundriss trennen die Fälle um die Grenze von denen weit entfernt, und ihre Namen sagen, warum sie da sind. Und weil sie läuft, kann sie nicht unbemerkt veralten.
Genauer, für Neugierige
ISTQB CTFL v4.0.1. Abschnitt 2.1.3 („Testing as a Driver for Software Development“) stellt TDD, ATDD und BDD nebeneinander: Alle drei legen die Tests vor dem Code fest und wenden das Prinzip des frühen Testens an. Für BDD heißt es, die Testfälle werden in einer einfachen natürlichen Sprache geschrieben, die die Interessengruppen verstehen, meist Given/When/Then, und dann in automatisierte Tests umgewandelt. Abschnitt 4.5.3 beschreibt ATDD (acceptance test-driven development): einen Spezifikationsworkshop, in dem die Story und ihre Kriterien gemeinsam besprochen werden (Kunde, Entwickler, Tester), dann die Testfälle, zuerst die positiven, dann die negativen, dann die nichtfunktionalen. Liegen sie in einem Format vor, das ein Framework zur Testautomatisierung versteht, werden die Abnahmetests zu ausführbaren Anforderungen.
ISTQB CT-AcT v1.0 (Abnahmetest) hat ein Kapitel über kollaborativen Abnahmetest und behandelt Akzeptanzkriterien und Abnahmetests als gemeinsame Arbeit von Business-Analyse und Testen.
Dan North beschreibt BDD im Artikel „Introducing BDD“, zuerst im März 2006 im Magazin Better Software erschienen. Darin entwickelt er mit Chris Matts eine Vorlage für Akzeptanzkriterien als Szenarien: Given (der Kontext), When (das Ereignis), Then (die Ergebnisse).
Die Three Amigos. Der Name ist in der agilen Gemeinschaft weit verbreitet. Er wird oft mit George Dinwiddie verbunden, aber wir haben keine Primärquelle gefunden, die das bestätigt.
Die Dokumentation von Cucumber („Behaviour-Driven Development“) beschreibt die drei Praktiken: Discovery, Formulation und Automation.
Test
Teste dich
Verwandte Lektionen
Abschnitt „Verwandte Lektionen“- Baut auf: Angenommen, Wenn, Dann · Szenariogrundriss und Beispiele · Was, nicht wie · Schlechte Szenarien
- Geht weiter in: Warum und was automatisieren · Vom Szenario zu den Schritten · Komponententests
- Aufgaben zum Thema: Szenarien mit Gherkin