Binnen een Behaviour Driven Development (BDD) story vormen de scenario’s een belangrijk onderdeel. Elk scenario beschrijft een(1) enkel gedrag van een functie. Ze dienen als requirement en testcase. In dit artikel wordt kort ingegaan hoe de scenario’s in de Gherkin feature files beschreven moeten worden.
Introductie van Gherkin
De in een BDD story gebruikte Given-When-Then opzet is door Cucumber uitgewerkt naar de Gherkin taal. Gherkin kan gebruikt worden als basis voor het automatiseren van de testen. Cucumber is een van de bekendste BDD testautomatiserings frameworks. De meeste andere BDD frameworks gebruiken ook Gherkin, maar zijn niet altijd 100% compatibel met de Gherkin standaard van Cucumber.
De scenario’s worden met behulp van Gherkin uitgewerkt in .feature files. Deze files worden later door een BDD testautomatiserings tool uitgevoerd.
Binnen Gherkin moet iedere niet lege regel beginnen met een Gherkin keyword, gevolgd door een willekeurige tekst.
De belangrijkste keywords zijn:
- Feature
- Scenario
- Given, When, Then, And, But (Steps / stappen)
- Background
- Scenario Outline
- Examples
Feature
Het Feature deel heeft een titel en een omschrijving en wordt alleen gebruikt voor documentatie doeleinden. In de praktijk wordt hier vaak de beschrijving van de BDD story opgenomen. Een feature bevat een (1) of meerdere scenario’s die elk een unieke titel hebben.
Scenario
Een scenario heeft een titel en een omschrijving en net als bij het feature deel wordt dit alleen gebruikt voor documentatie doeleinden. Vaak wordt alleen een titel gebruikt. De omschrijving is onbeperkt qua lengte. De tekst tussen de titel en het eerste Gherkin keyword wordt gezien als omschrijving.
Elk scenario is in essentie een requirement en testcase. Het Given-When-Then-formaat geeft een bondig beeld van het te testen gedrag. Iedere Given-When-Then regel wordt een stap genoemd.
Binnen stappen moet de volgorde Given-When-Then worden aangehouden. Tijdens de testuitvoering worden deze stappen achter elkaar uitgevoerd.
Given-When-Then
Een Given stap wordt gebruikt om de uitgangssituatie of startsituatie te beschrijven. Tijdens de testuitvoering zorgt de Given stap er voor dat het systeem in de juiste startsituatie wordt gebracht. Denk hierbij bijvoorbeeld aan het toevoegen van data aan de testdatabase. De When stap beschrijft de acties die moeten worden uitgevoerd en de Then stap beschrijft de controles die, na het uitvoeren van de acties, moet worden gedaan.
De beschrijving die na de stap keyword komt geeft aan wat er moet gebeuren en wordt gekoppeld aan een “step definition” (een methode/functie die de code bevat om de acties uit de stap uit te voeren). Dit is bijvoorbeeld Java code die wordt vastgelegd in de testautomatiserings tool die wordt gebruikt.
And of But
Elke regel in een scenario wordt aangeduid als stap. Aan iedere Given-When-Then kunnen meerdere stappen worden toegevoegd door gebruik te maken van de keywords And en But .
Background
Een background in een feature file maakt het mogelijk om een aantal stappen te definiëren die in elk scenario op dezelfde wijze moeten worden gebruikt. Het gebruik is beperkt tot Given en And. Het is dus bedoelt om een startsituatie die voor elk scenario hetzelfde is, maar een (1) keer te hoeven definiëren. Daarmee wordt de leesbaarheid en onderhoudbaarheid van de scenario’s verbetert.
Een background kan maar een (1) keer voor komen in een feature file en moet altijd voor het eerste scenario worden geplaatst.
Een background kan net als een feature en scenario’s een titel en omschrijving hebben. Het is echter niet verplicht om deze op te nemen bij een background.
Scenario Outline
Soms hebben verschillende scenario’s exact hetzelfde stappenpatroon en gebruiken ze alleen verschillende invoerwaarden of te verwachte resultaten.
In onderstaand voorbeeld worden de verzendkosten berekend afhankelijk van het totaal bedrag. De stappen in de scenario’s zijn hetzelfde met uitzondering van de bedragen.
Een scenario outline kan gebruikt worden om de stappen een (1) keer te beschrijven en vervolgens met verschillende waardes (zowel voor input als voor de resultaten) te laten uitvoeren.
Alle woorden tussen <> worden bij uitvoering vervangen door de bijbehorende waardes zoals opgenomen bij de Examples.
In een feature file kun je meerdere Scenario Outlines gebruiken met bijbehorende Examples.