Zum Inhalt
wannacode

Szenariogrundriss und Beispiele

Kurz gesagt: Fünf Szenarien, die sich nur im Betrag unterscheiden, werden zu einem Szenariogrundriss mit einer Tabelle der Beispiele: Jede Zeile ist ein eigenes Beispiel. Eine Grundlage enthält den Anfang, den alle Szenarien teilen. Eine Regel fasst die Beispiele unter der Geschäftsregel zusammen, die sie zeigen, wie die grünen Karten unter der blauen.

Problem

Dasselbe fünfmal

Jemand hat die Lieferung mit fünf Szenarien beschrieben. Sie unterscheiden sich nur im Betrag: 30, 49,99, 50, 50,01 und 120 €. Sonst sind sie Zeile für Zeile gleich.

Du liest die Datei und musst fünf Blöcke vergleichen, um zu sehen, was anders ist. Und wenn die Gebühr auf 5,90 € steigt, korrigierst du drei Stellen und vergisst die vierte.

Die Idee

Ein Grundriss und Beispiele

Szenarien, die sich nur in ihren Werten unterscheiden, werden zu einem Szenariogrundriss (scenario outline). An die Stelle der Werte treten Namen in <>, und die Werte stehen in einer Tabelle der Beispiele:

# language: de
Funktionalität: Kostenlose Lieferung
Szenariogrundriss: Lieferung bei einer Bestellung von <Betrag> €
Angenommen ein Warenkorb von <Betrag> €
Wenn ich bestelle
Dann beträgt die Lieferung <Lieferung> €
Beispiele:
| Betrag | Lieferung |
| 30,00 | 4,90 |
| 49,99 | 4,90 |
| 50,00 | 0,00 |
| 120,00 | 0,00 |

Jede Zeile der Tabelle ist ein eigenes Szenario. Dieser Grundriss läuft viermal. Fällt er durch, sagt der Bericht, welche Zeile der Beispiele.

Jetzt sieht man die Unterschiede sofort: eine Spalte mit Beträgen und eine Spalte mit der Lieferung. Die Tabelle ist sehr nah an dem, was der Inhaber in einer E-Mail schreibt: „bis 49,99 € zahlt man 4,90 €, ab 50 € nichts“.

Probier es aus

Welche Zeile?

1. Die Beispiele zur Lieferung enthalten schon 49,99 € und 50,00 €. Welche Zeile bringt am wenigsten?
2. Was kann eine Datentabelle (an einem Schritt), was Beispiele nicht können?
3. Was gehört in eine Grundlage?

Übung

Ein Grundriss für die Lieferung

1. Von Kopien zu einem Grundriss. Am Anfang stehen drei kopierte Szenarien.

Mach aus den Szenarien für 30 € und 50 € einen Szenariogrundriss mit Beispielen. Füge auch die Zeilen hinzu, die die letzten Fehler abfangen: Die Prüfung sagt dir, wo du suchen sollst.

GherkinKostenlose Lieferung

Die Idee

Eine Datentabelle

Manchmal braucht ein Schritt mehrere Zeilen Eingabe. Zum Beispiel ein Warenkorb mit mehreren Produkten:

# language: de
Funktionalität: Die Summe des Warenkorbs
Szenario: Ein Warenkorb mit zwei Produkten
Angenommen ein Warenkorb mit den Produkten:
| Produkt | Preis | Stück |
| T-Shirt | 20,00 | 2 |
| Tasse | 9,99 | 1 |
Wenn ich bestelle
Dann beträgt die Summe 49,99 €

Das ist eine Datentabelle (data table). Sie ist die Eingabe eines Schritts, und das Szenario läuft einmal. Beispiele machen das Gegenteil: Sie wiederholen das ganze Szenario für jede Zeile.

Das Wörterbuch in den Aufgaben hier hat nur einfache Schritte, deshalb ist die Datentabelle nur zum Lesen da.

Die Idee

Grundlage

Beginnen alle Szenarien einer Datei gleich, zum Beispiel mit „der Kunde ist angemeldet“, kann dieser Anfang in eine Grundlage (background) umziehen. Ihre Schritte laufen vor jedem Szenario darunter, als stünden sie darin.

# language: de
Funktionalität: Höchstens 10 Stück eines Produkts
Grundlage:
Angenommen ein Warenkorb mit 9 Stück des Produkts
Szenario: Das zehnte Stück wird angenommen
Wenn ich 1 Stück hinzufüge
Dann enthält der Warenkorb 10 Stück des Produkts
Szenario: Zwei weitere werden abgelehnt
Wenn ich 2 Stück hinzufüge
Dann wird das Hinzufügen abgelehnt

Sei vorsichtig damit. Wer das zweite Szenario liest, sieht nicht, wo es anfängt, ohne nach oben zurückzugehen. Eine Grundlage ist also kurz und enthält nur, was wirklich gemeinsam ist.

Die Idee

Regel

Im Example Mapping sind die blauen Karten die Regeln und die grünen die Beispiele darunter. In Gherkin sagt man dasselbe mit dem Schlüsselwort Regel: Darunter stehen die Szenarien, die sie zeigen.

# language: de
Funktionalität: Höchstens 10 Stück eines Produkts
Regel: Der Warenkorb enthält höchstens 10 Stück eines Produkts
Szenario: Das zehnte Stück wird angenommen
Angenommen ein Warenkorb mit 9 Stück des Produkts
Wenn ich 1 Stück hinzufüge
Dann enthält der Warenkorb 10 Stück des Produkts
Regel: Man fügt mindestens 1 Stück hinzu
Szenario: Null Stück ist kein Hinzufügen
Angenommen ein Warenkorb mit 5 Stück des Produkts
Wenn ich 0 Stück hinzufüge
Dann wird das Hinzufügen abgelehnt

Jetzt sagt die Datei nicht nur, was wir prüfen, sondern auch warum. Fällt ein Szenario durch, siehst du sofort, welche Regel gebrochen ist. Jede Regel kann ihre eigene Grundlage haben.

Übung

Die Grenze mit Regeln

2. Zwei Regeln. Die Regeln sind geschrieben, ohne etwas darunter.

Setze unter jede Regel Beispiele (mit einem Grundriss oder mit Szenarien), sodass alle sechs Fehler in der Grenze abgefangen werden.

GherkinHöchstens 10 Stück eines Produkts
Genauer, für Neugierige

Die Gherkin Reference (Cucumber):

  • „Rule“ gibt es in Gherkin seit Version 6. Ihr Zweck ist, eine Geschäftsregel darzustellen, die umgesetzt werden soll;
  • „Scenario Outline“ hat ein Synonym, „Scenario Template“. Unter einem Grundriss kann es mehrere Beispiele geben, jedes mit eigenem Namen, zum Beispiel „Um die Grenze herum“ und „Weit von der Grenze“;
  • es gibt eine Grundlage pro Funktionalität oder pro Regel. Die Reference rät, sie kurz zu halten: Ist sie länger als 4 Zeilen, gehört ein Teil der Einzelheiten wahrscheinlich in Schritte auf höherer Ebene;
  • neben einer Datentabelle kann ein Schritt auch einen längeren Text in """ tragen (einen Doc String), zum Beispiel den Text einer E-Mail.

Die Zeilen in den Beispielen zu wählen, ist Testentwurf: Äquivalenzklassen und Grenzwerte. Dafür gibt es später ein eigenes Modul. Vorerst gilt die Regel: eine Zeile aus jeder Klasse und eine von jeder Seite jeder Grenze.

Test

Teste dich

1. Was ist ein Szenariogrundriss?
2. Der Grundriss hat den Schritt „Angenommen ein Warenkorb von <Summe> €“, und die Spalte der Beispiele heißt „Betrag“. Was passiert?
3. Was zeigt eine Regel?
4. Die Grundlage ist auf 9 Zeilen gewachsen. Was tust du?

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