Gherkin is een domeinspecifieke taal die gebruikt wordt om softwaregedrag te beschrijven in begrijpelijke, gestructureerde tekst. Het speelt een centrale rol binnen Behavior Driven Development (BDD), waarbij communicatie tussen stakeholders zoals developers, testers en product owners wordt verbeterd door middel van concrete voorbeelden.
Het doel van Gherkin is om requirements te vertalen naar testbare scenario’s. In plaats van vage beschrijvingen of technische user stories, legt Gherkin de nadruk op het beschrijven van gedrag aan de hand van voorbeelden. Deze voorbeelden kunnen vervolgens automatisch getest worden met tools zoals Cucumber.
Het gebruik van Gherkin maakt het eenvoudiger om misverstanden in de specificaties te voorkomen. Doordat de syntax begrijpelijk is voor zowel technische als niet-technische stakeholders, bevordert het de samenwerking en kwaliteit van het ontwikkelproces.
Een Gherkin-bestand beschrijft één of meerdere scenario’s binnen een feature (functionaliteit). Elk bestand begint met het sleutelwoord Feature, gevolgd door een korte beschrijving. Daaronder worden scenario’s uitgewerkt die het gewenste gedrag tonen op basis van input en verwachte output.
Gherkin-bestanden hebben standaard de extensie .feature en kunnen door tools zoals Cucumber, SpecFlow, of Behave geïnterpreteerd worden. Deze tools koppelen elk scenario aan geautomatiseerde testcode.
Voorbeeldstructuur:
Feature: Inloggen op webshop
Scenario: Inloggen met geldige gegevens
Given de gebruiker bevindt zich op de loginpagina
When de gebruiker voert een geldig e-mailadres en wachtwoord in
Then wordt de gebruiker doorgestuurd naar het dashboard
De Gherkin-syntaxis is eenvoudig, maar strikt. Elke regel begint met een keyword, gevolgd door beschrijvende tekst. De keywords structureren het scenario in stappen:
Feature: beschrijft de functionaliteit
Scenario: beschrijft een concreet voorbeeld
Given: beschrijft de uitgangssituatie
When: beschrijft de actie
Then: beschrijft de verwachte uitkomst
And / But: optioneel, als uitbreiding op bovenstaande stappen
Deze opbouw zorgt ervoor dat ieder scenario logisch te volgen is en direct kan worden gekoppeld aan de daadwerkelijke softwarelogica.
Elk Gherkin-bestand begint met het sleutelwoord Feature. Hiermee wordt het gedrag van een specifieke functionaliteit beschreven. Dit dient als context voor de onderliggende scenario’s.
Voorbeeld:
Feature: Wachtwoord resetten
Om toegang te krijgen tot mijn account
Als een gebruiker die zijn wachtwoord is vergeten
Wil ik een nieuw wachtwoord kunnen aanvragen
Scenario wordt gebruikt om één specifiek geval te beschrijven waarin de gebruiker interactie heeft met het systeem. Scenario Outline wordt ingezet als dezelfde scenario-structuur met verschillende invoerwaarden getest moet worden.
Voorbeeld:
Scenario Outline: Inloggen met verschillende gebruikers
Given de gebruiker bevindt zich op de loginpagina
When de gebruiker logt in met "<gebruikersnaam>" en "<wachtwoord>"
Then wordt "<resultaat>" getoond
Examples:
| gebruikersnaam | wachtwoord | resultaat |
| jan@example.nl | welkom123 | Welkom Jan! |
| fout@example.nl| verkeerd | Ongeldige login |
Deze drie kernwoorden vormen de basis van elk scenario:
Given: startconditie of uitgangssituatie
When: de actie die uitgevoerd wordt
Then: de verwachte uitkomst of verandering
Ze worden in natuurlijke taal geschreven, zodat iedereen in het team ze kan begrijpen.
Voorbeeld:
Given de gebruiker is ingelogd
When hij klikt op 'Uitloggen'
Then wordt hij doorgestuurd naar de loginpagina
Gebruik And of But om stappen toe te voegen die logisch gekoppeld zijn aan Given, When of Then.
Voorbeeld:
Given de winkelwagen bevat een product
And de gebruiker is ingelogd
When hij klikt op 'Afrekenen'
Then verschijnt het betaaloverzicht
Met Background definieer je stappen die voor elk scenario binnen een feature gelden. Dit voorkomt herhaling en verhoogt de leesbaarheid.
Voorbeeld:
Background:
Given de gebruiker is op de homepage
And de winkelwagen is leeg
In een agile workflow starten teams vaak met een user story zoals:
“Als gebruiker wil ik mijn wachtwoord kunnen resetten, zodat ik weer kan inloggen.”
Deze story wordt vervolgens uitgewerkt in één of meerdere Gherkin-scenario’s.
Door in concrete stappen te denken, wordt duidelijk hoe de functionaliteit zich moet gedragen, en kunnen tests daarop gebouwd worden.
Een goed Gherkin-scenario:
is duidelijk en concreet
gebruikt echte voorbeelden
heeft een duidelijke structuur
beschrijft alleen gedrag, geen technische implementatie
Fouten die je wilt vermijden:
Te lange scenario’s
Vage bewoording zoals “iets moet gebeuren”
Onvolledige of overlappende stappen
Gherkin is nauw verbonden met testautomatisering. Tools zoals Cucumber en Behave koppelen de scenario’s aan test code via zogeheten step definitions. Hierdoor kan elk scenario automatisch worden uitgevoerd.
Voorbeeld:
Scenario: Inloggen met geldige gegevens
Given de gebruiker is op de loginpagina
When hij voert zijn e-mailadres en wachtwoord in
Then wordt hij doorgestuurd naar het dashboard
Kan gekoppeld worden aan testcode in bijvoorbeeld Python of Java die precies test of deze interactie correct werkt.
Naast de basisstructuur met Feature, Scenario, en Given-When-Then, biedt Gherkin extra mogelijkheden die scenario’s flexibeler en krachtiger maken. Deze geavanceerde functies zijn vooral handig wanneer je werkt met herhaalbare scenario’s of gestructureerde invoer. Hierdoor wordt testautomatisering niet alleen nauwkeuriger, maar ook beter schaalbaar.
Soms moet je in een scenario extra data meegeven. Gherkin ondersteunt dit via Doc Strings en Data Tables.
Een Doc String wordt gebruikt wanneer je een stuk tekst of JSON wilt meegeven aan een stap.
Voorbeeld:
Given de gebruiker vult het volgende formulier in:
"""
naam: Jan
e-mail: jan@example.com
opmerking: Ik wil graag meer informatie
"""
Met een Data Table kun je gestructureerde input meegeven, bijvoorbeeld meerdere velden of opties.
Voorbeeld:
Given de volgende producten zijn toegevoegd aan de winkelwagen:
| product | prijs |
| Laptop | 999 |
| Muis | 25 |
Data Tables zijn ideaal bij het testen van verschillende combinaties of inputs.
Een Scenario Outline is handig als je dezelfde stapvolgorde wilt herhalen met verschillende invoerwaarden. Zo hoef je het scenario niet meerdere keren te schrijven.
Voorbeeld:
Scenario Outline: Kortingscode toepassen
Given de gebruiker voert "<code>" in
When hij klikt op 'Toepassen'
Then ziet hij "<bericht>"
Examples:
| code | bericht |
| WELKOM | Korting van 10% toegepast |
| ONGELD | Code is niet geldig |
Onder het kopje Examples geef je de waarden op die worden ingevoegd in de outline. Dit maakt tests overzichtelijker en makkelijker aan te passen.
Gherkin ondersteunt meerdere natuurlijke talen. Zo kunnen teams over de hele wereld scenario’s schrijven in hun eigen taal. Denk aan Nederlands, Frans, Duits, Spaans of Turks.
Voorbeeld in het Nederlands:
Feature: Aanmelden
Scenario: Succesvol aanmelden
Gegeven een geregistreerde gebruiker
Als de gebruiker zich aanmeldt met correcte gegevens
Dan wordt hij doorgestuurd naar zijn profielpagina
Voordelen:
Toegankelijk voor niet-Engelstalige teams
Verhoogt de betrokkenheid van domeinspecialisten
Nadelen:
Moeilijker bij internationale samenwerking
Stapdefinities moeten per taal onderhouden worden
Gherkin is breed inzetbaar binnen softwareontwikkeling, vooral in agile teams die gebruikmaken van Behavior Driven Development (BDD). Het helpt om specificaties beter af te stemmen tussen ontwikkelaars, testers en business stakeholders. Door concrete voorbeelden in natuurlijke taal te beschrijven, wordt de communicatie verbeterd en fouten vroegtijdig voorkomen.
Gherkin is niet beperkt tot één soort project of technologie. Hieronder zie je enkele veelvoorkomende toepassingen.
In agile werkwijzen draait het om samenwerking en snelle feedback. Gherkin helpt hierbij door user stories aan te vullen met duidelijke, testbare scenario’s. Tijdens refinement of sprintplanning kunnen teams gezamenlijk deze scenario’s opstellen. Zo worden de verwachtingen helder voordat het ontwikkelwerk begint.
Voor testers is het voordeel dat deze scenario’s automatisch uitvoerbaar zijn. Voor developers bieden ze een duidelijk doel. En voor business stakeholders vormen ze controleerbare acceptatiecriteria.
Gherkin wordt vaak toegepast in de volgende situaties:
Webapplicaties: bijvoorbeeld voor het testen van loginflows, winkelwagentjes of zoekfuncties.
API-testen: door het beschrijven van request-response gedrag in scenario’s.
Mobile apps: waar gebruikersacties zoals swipen of pushmeldingen getest worden.
Dankzij de natuurlijke taalstructuur is Gherkin geschikt voor uiteenlopende domeinen van e-commerce tot financiële software.
Gherkin biedt een eenvoudige maar krachtige manier om softwaregedrag vast te leggen. Door het gebruik van natuurlijke taal worden requirements concreet, begrijpelijk en direct testbaar. Vooral binnen agile en Behavior Driven Development (BDD) zorgt Gherkin voor betere communicatie tussen alle betrokken partijen.
Dankzij de duidelijke structuur met Feature, Scenario, Given-When-Then en aanvullende opties zoals Background, Scenario Outline en Data Tables, kan vrijwel elk gewenst gedrag nauwkeurig worden beschreven en getest. Hierdoor verklein je de kans op misverstanden, verhoog je de kwaliteit van software en maak je testautomatisering toegankelijker.
Voor teams die streven naar heldere specificaties en betrouwbare softwarekwaliteit, vormt Gherkin een waardevol hulpmiddel in het ontwikkelproces.
Gherkin wordt gebruikt om functionele specificaties van software op een begrijpelijke en testbare manier vast te leggen. Door het gedrag van de applicatie in natuurlijke taal te beschrijven, kunnen zowel technische als niet-technische teamleden dezelfde specificaties begrijpen en controleren. Daarnaast vormt Gherkin de basis voor geautomatiseerde tests binnen Behavior Driven Development (BDD), waarbij tools zoals Cucumber de scenario’s direct kunnen uitvoeren.
Binnen agile wordt Gherkin vaak gebruikt als aanvulling op user stories. Tijdens refinementsessies of sprintplanningen zet het team samen de acceptatiecriteria om in Gherkin-scenario’s. Dit voorkomt onduidelijkheden, zorgt voor betere samenwerking tussen business en development en maakt het mogelijk om automatisch te testen of de gewenste functionaliteit correct is geïmplementeerd.