Zum Inhalt
wannacode

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: 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

Die 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?

1. „… ein Warenkorb von 49,99 €“
2. „… ich bestelle“
3. „… die Lieferung beträgt 4,90 €“
4. „… der Kunde ist ein Stammkunde“

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: de
Funktionalitä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:

  1. Gegen das richtige System. Hier muss jedes Szenario bestehen. Fällt eines durch, ist die Erwartung darin falsch: Prüfe sie gegen die Regel.
  2. 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.

GherkinKostenlose Lieferung

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.

GherkinKostenlose Lieferung

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: en
Feature: Free delivery
Scenario: An order of exactly 50 €
Given a cart of 50.00 €
When I place the order
Then delivery is free

Im 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

1. Was sagt der Schritt „Dann“?
2. Was bedeutet „Und“ nach „Dann“?
3. Das Szenario für 49,99 € besteht auf dem richtigen System. Heißt das, dass es gut ist?
4. Wie heißt die erste Zeile der Datei, unter der die Szenarien stehen?

Erstellt von Ivo Gergov im Rahmen der Kampagne von Evo Tech für zugängliche Programmierausbildung ·