Angenommen, Wenn, Dann
Kurz gesagt: Ein Gherkin-Szenario ist ein Beispiel in drei Schritten: Angenommen (wo wir anfangen), Wenn (was geschieht), Dann (was man sieht). „Und“ und „Aber“ setzen den Schritt davor fort. Ein gutes Szenario besteht auf dem richtigen System und fällt auf dem System mit einem Fehler durch, darum läuft hier jedes Szenario gegen beide.
Problem
Ein Beispiel, drei Lesarten
In der Sitzung zur Lieferung liegt eine grüne Karte: „Ein Warenkorb von 50,00 €: Die Lieferung ist kostenlos“. Alle nicken.
Dann schreibt es jeder auf seine Weise auf. Der Inhaber behält es in einer E-Mail. QA schreibt einen Test in eine Tabelle. Der Entwickler baut eine Prüfung in den Code ein. Einen Monat später ändert jemand die Regel, und nur einer der drei Orte wird korrigiert.
Wir brauchen eine Aufzeichnung für alle: Der Inhaber liest sie als Satz, und der Computer führt sie als Test aus.
Die Idee
Ein Szenario in drei Schritten
Das Beispiel wird als Szenario (scenario) in drei Schritten aufgeschrieben:
- Angenommen: wo wir anfangen. Was da ist, bevor etwas geschieht;
- Wenn: was geschieht. Die Handlung, um die es im Szenario geht;
- Dann: was man sieht. Das Ergebnis, das geprüft wird.
# language: deFunktionalität: Kostenlose Lieferung
Szenario: Eine Bestellung von genau 50 € Angenommen ein Warenkorb von 50,00 € Wenn ich bestelle Dann ist die Lieferung kostenlosDie Sprache heißt Gherkin. Die Wörter am Zeilenanfang sind ihre Schlüsselwörter. Die erste Zeile, # language: de, sagt, dass sie auf Deutsch sind. Funktionalität ist der Titel der Datei: das, was wir beschreiben. Darunter stehen die Szenarien, jedes mit seinem eigenen Namen.
Der Rest ist gewöhnlicher Text. Deshalb liest sich ein Szenario wie ein Satz: „Angenommen, ein Warenkorb von 50 €. Wenn ich bestelle, dann ist die Lieferung kostenlos.“
Probier es aus
Welcher Schritt?
Die Idee
„Und“ und „Aber“
Manchmal besteht der Anfang aus zwei Dingen, oder es gibt zwei Prüfungen. Dann beginnt der nächste Schritt mit Und oder Aber:
# language: deFunktionalität: Kostenlose Lieferung
Szenario: Eine Bestellung knapp unter der Grenze Angenommen ein Warenkorb von 49,99 € Wenn ich bestelle Dann wird die Bestellung angenommen Aber die Lieferung beträgt 4,90 €„Und“ und „Aber“ sind keine neue Art von Schritt. Sie übernehmen die Art des Schritts davor: Hier ist „Aber“ eine weitere Prüfung. Der Unterschied zwischen beiden ist nur für den Leser. „Aber“ sagt „und trotzdem“: Die Bestellung wird angenommen, aber die Lieferung kostet etwas.
Achte auf die Wortstellung. Nach „Dann“ steht das Verb an zweiter Stelle („Dann beträgt die Lieferung 4,90 €“), nach „Und“ und „Aber“ gilt die gewöhnliche Wortstellung („Aber die Lieferung beträgt 4,90 €“).
Die Idee
Wie ein Szenario hier geprüft wird
In den Aufgaben schreibst du Szenarien in einem Editor. Daneben steht das Wörterbuch der Schritte: die Sätze, die das System versteht, etwa Angenommen ein Warenkorb von {Betrag} €. An die Stelle von {Betrag} schreibst du eine Zahl, zum Beispiel 49,99. Ein Schritt außerhalb des Wörterbuchs kann nicht laufen, und die Prüfung nennt dir den ähnlichsten.
Dann laufen die Szenarien zweimal:
- Gegen das richtige System. Hier muss jedes Szenario bestehen. Fällt eines durch, ist die Erwartung darin falsch: Prüfe sie gegen die Regel.
- Gegen Versionen mit je einem Fehler. Jede ist derselbe Shop mit einem echten Defekt:
>statt>=bei 50 €, eine falsche Gebühr, ein leerer Warenkorb, der berechnet wird. Eine solche Version heißt Mutant (mutant). Ein gutes Szenario fällt auf ihm durch, es fängt ihn also ab.
Die Antwort klingt so: „Die Szenarien bestehen auf dem richtigen System und fangen 2 von 3 Fehlern ab. Ein Fehler rutscht durch: bei einem leeren Warenkorb.“ Sie sagt nicht, welches Szenario fehlt. Sie sagt, wo du suchen sollst.
Übung
Die ersten Szenarien
1. Genau 50 €. Der Name des Szenarios ist schon da.
Vervollständige das Szenario für eine Bestellung von genau 50,00 €: Angenommen, Wenn, Dann.
Lösung
# language: de
Funktionalität: Kostenlose Lieferung
Szenario: Eine Bestellung von genau 50 €
Angenommen ein Warenkorb von 50,00 €
Wenn ich bestelle
Dann ist die Lieferung kostenlos
Nur die Grenze unterscheidet „ab 50 €“ von „über 50 €“. Bei 49,99 € und bei 60 € geben die beiden Regeln dasselbe, deshalb fängt ein Szenario für diese Beträge den Fehler nicht ab. Das tut nur 50,00 €.
2. Drei Fälle. Das Szenario für 50 € ist schon da.
Füge ein Szenario knapp unter der Grenze (mit „Aber“ oder „Und“) und ein Szenario für einen leeren Warenkorb hinzu. Die drei Szenarien müssen alle drei Fehler abfangen.
Lösung
# language: de
Funktionalität: Kostenlose Lieferung
Szenario: Eine Bestellung von 49,99 €
Angenommen ein Warenkorb von 49,99 €
Wenn ich bestelle
Dann wird die Bestellung angenommen
Aber die Lieferung beträgt 4,90 €
Szenario: Eine Bestellung von genau 50 €
Angenommen ein Warenkorb von 50,00 €
Wenn ich bestelle
Dann ist die Lieferung kostenlos
Szenario: Ein leerer Warenkorb
Angenommen ein leerer Warenkorb
Wenn ich bestelle
Dann wird die Bestellung abgelehnt
Unter der Grenze sieht man die Gebühr (4,90 €, nicht 4,99 €), auf der Grenze sieht man die kostenlose Lieferung, und der leere Warenkorb ist keine „Bestellung unter 50 €“: Er lässt sich gar nicht bestellen. Jedes der drei Szenarien fängt seinen eigenen Fehler ab.
Die Idee
Ein Szenario ist ein Beispiel
Sieh dir an, was du geschrieben hast. Jedes Szenario ist eine grüne Karte aus dem Example Mapping, nur so aufgeschrieben, dass es laufen kann. Zusammen sind die Szenarien die Akzeptanzkriterien der Story.
Deshalb hat ein gutes Szenario konkrete Zahlen. „Angenommen eine große Bestellung“ kann nicht laufen, und jeder liest es anders. „Angenommen ein Warenkorb von 50,00 €“ liest man nur auf eine Weise.
Genauer, für Neugierige
ISTQB CTFL v4.0.1, Abschnitt 2.1.3 („Testing as a Driver for Software Development“), beschreibt BDD (behavior-driven development) als Ansatz, bei dem das gewünschte Verhalten mit Testfällen in einer einfachen natürlichen Sprache ausgedrückt wird, die die Interessengruppen verstehen, meist im Format Given/When/Then. Abschnitt 4.5.2 nennt das das szenarioorientierte Format der Akzeptanzkriterien, neben dem regelorientierten Format (eine Prüfliste oder eine Tabelle Eingabe → Ausgabe).
Die Schlüsselwörter. Die Gherkin Reference in der Dokumentation von Cucumber nennt die wichtigsten Wörter und ihre Übersetzung in mehr als 70 Sprachen. Die erste Zeile # language: de sagt Cucumber, welche Sprache die Datei benutzt; ohne sie wird Englisch angenommen. Auf Deutsch sind es: Funktionalität, Regel, Grundlage, Szenario (oder Beispiel, beides ist dasselbe), Szenariogrundriss, Beispiele, Angenommen, Wenn, Dann, Und, Aber. Statt eines Schlüsselworts für einen Schritt kann man auch * schreiben.
Die zwei Sprachen. Dasselbe Szenario auf Englisch:
# language: enFeature: Free delivery
Scenario: An order of exactly 50 € Given a cart of 50.00 € When I place the order Then delivery is freeIm Kurs stehen die Szenarien in der Sprache der Seite, weil der Fachbereich sie lesen soll und der Kunde hier Deutsch schreibt. In einem internationalen Team schreibt man Szenarien auf Englisch, damit jeder sie lesen kann.
Mutanten stammen aus dem Mutationstest: Man baut absichtlich einen kleinen Fehler in ein Programm ein und schaut, ob die Tests ihn abfangen. Hier sind die Mutanten fertig und beschreiben das Verhalten des Shops, keinen Code.
Test
Teste dich
Verwandte Lektionen
Abschnitt „Verwandte Lektionen“- Baut auf: Warum Programme versagen · Was eine Story ist · Akzeptanzkriterien · Example Mapping: Regeln, Beispiele, Fragen
- Geht weiter in: Szenariogrundriss und Beispiele · Was, nicht wie · Schlechte Szenarien · Lebendige Dokumentation
- Aufgaben zum Thema: Szenarien mit Gherkin