Story opzet voor Behaviour Driven Development (BDD)

Behaviour Driven Development (BDD) gaat er van uit dat een idee voor een functie eenvoudig en effectief kan worden omgezet naar geïmplementeerde, geteste en productie geschikte code, zolang de requirements specifiek genoeg zijn zodat iedereen weet wat er moet gebeuren. Om dit te realiseren, is er een manier nodig om de requirements zodanig te beschrijven dat iedereen – business, analist, ontwikkelaar en tester – een gemeenschappelijk begrip hebben van de scope en werking van de functionaliteit. Een BDD story kan trouwens ook gebruikt worden voor het beschrijven van niet-functionele requirements

Een story is een beschrijving van:

  • een functie
  • de toegevoegde waarde voor de business
  • de requirements waaraan de functie moet voldoen
  • scenario’s voor het beschrijven van voorbeelden

Structuur van een story

BDD biedt de onderstaande structuur voor een story. Deze structuur is niet verplicht, maar heeft zich in de praktijk wel bewezen. De story moet op zijn minst alle elementen bevatten die in de template worden beschreven.

Title (one line describing the story)

Narrative:
As a [role]
I want [feature]
So that [benefit]

Requirements:

  • requirement 1
  • requirement 2

Scenario 1: Title
Given [context]
And [some more context]…
When [event]
Then [outcome]
And [another outcome]…

Scenario 2: …

.

Uitleg story aan de hand van een voorbeeld

Aan de hand van onderstaand voorbeeld wordt de opzet van een story uitgelegd.

Voorbeeld

Title: Webshop bezoeker ziet gerelateerde producten bij bekijken product

As a product manager
I want dat een bezoeker van de webshop gerelateerde producten te zien krijgt bij een product
So that de omzet per order met minimaal 5% verhoogd wordt

Requirements:

  • 2 gerelateerde producten worden getoond mits op voorraad
  • Er worden willekeurig 2 producten getoond van de gerelateerde producten
  • Gerelateerde producten die niet op voorraad zijn mogen niet worden getoond
  • Wanneer er geen gerelateerde producten zijn, dan wordt er niets getoond
  • Gerelateerde product mag niet het getoonde product zijn

Scenario 1: Voorradige gerelateerde producten
Given het product heeft 2 voorradige gerelateerde producten
When webshop bezoeker product bekijkt
Then worden de 2 gerelateerde producten getoond

Scenario 2: Geen gerelateerde producten
Given het product geen gerelateerde producten heeft
When webshop bezoeker product bekijkt
Then worden er geen gerelateerde producten getoond

Scenario 3: Meer dan 2 voorradige gerelateerde producten
Given het product heeft 10 voorradige gerelateerde producten
When webshop bezoeker product 10 x bekijkt
Then worden er steeds 2 gerelateerde producten getoond
AND worden er minimaal 5 verschillende producten getoond

Scenario 4
…..

De title beschrijft een activiteit

De title van een story moet een activiteit beschrijven. In bovenstaand voorbeeld is dat: “Webshop bezoeker ziet gerelateerde producten bij bekijken product”. Zolang deze functionaliteit nog niet is geïmplementeerd zal een webshop bezoeker dus geen gerelateerde producten zien. Zodra de functionaliteit is opgeleverd ziet hij ze wel. Dit is een mooi startpunt voor de “definition of done”.

De story moet een rol, functie en voordeel bevatten

Het gebruiken van onderstaand template heeft een aantal voordelen.

As a [role]
I want [feature]
So that [benefit]

Door de rol expliciet te specificeren, weet je met wie je moet praten over de functie. Door het voordeel te laten beschrijven, moet de schrijver nadenken over waarom een functie nodig is.

As a product manager
I want dat een bezoeker van de webshop gerelateerde producten te zien krijgt bij een product
So that de omzet per order met minimaal 5% verhoogd wordt

Requirements

De requirements beschrijven de eisen waaraan de functionaliteit moet voldoen en dienen als basis voor het uitwerken van de scenario’s

Requirements:

  • 2 gerelateerde producten worden getoond mits op voorraad
  • Er worden willekeurig 2 producten getoond van de gerelateerde producten
  • Gerelateerde producten die niet op voorraad zijn mogen niet worden getoond
  • Wanneer er geen gerelateerde producten zijn, dan wordt er niets getoond
  • Gerelateerde product mag niet het getoonde product zijn

Title van scenario beschrijft het verschil

Wanneer de verschillende titles van scenario’s onder elkaar worden gezet moeten de titles het verschil tussen de scenario’s duidelijk maken.

Opbouw scenario

Ieder scenario moet worden beschreven met de Given-When-Then opzet.

Given [context]
And [some more context]…
When [event]
Then [outcome]
And [another outcome]…

Het gebruiken van given-when-then zorgt er in de praktijk voor dat de kans kleiner wordt dat beschrijvingen voor meerdere uitleg vatbaar zijn. Omdat alle key stakeholders betrokken zijn bij het uitwerken van de scenario’s ontstaat er een gemeenschappelijk begrip van de scope en werking van de functionaliteit.

Scenario 1: Voorradige gerelateerde producten
Given het product heeft 2 voorradige gerelateerde producten
When webshop bezoeker product bekijkt
Then worden de 2 gerelateerde producten getoond

Tot slot

Wanneer een BDD story is uitgewerkt kan gestart worden met het ontwikkelen van de code het eventueel automatiseren van de scenario’s voor de testuitvoering. 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 test automatiserings frameworks. De meeste andere BDD frameworks gebruiken ook Gherkin, maar zijn niet altijd 100% compatibel met de Gherkin standaard van Cucumber.

Ook interessant?

Test first - X-driven development

Test first – Introductie tot X-driven development

TDD, BDD en ATDD zijn termen die regelmatig terugkomen in een Agile omgeving. Ze zijn de afgelopen jaren steeds populairder ...
Behavior Driven Development

Behaviour Driven Development (BDD)

Regelmatig lees of hoor je dat IT-projecten falen, een langere doorlooptijd nodig hebben dan oorspronkelijk gepland en veel meer kosten ...
Gerkin Syntax

Uitleg van de Gherkin Syntax

Binnen een Behaviour Driven Development (BDD) story vormen de scenario’s een belangrijk onderdeel. Elk scenario beschrijft een(1) enkel gedrag van ...
Tools voor Behaviour Driven Development (BDD)

Algemene introductie Tools voor BDD

Het primaire doel van BDD is om mensen te laten communiceren en de kloof te dichten tussen ‘technische’ en ‘business’ ...
Blijf op de hoogte van onze nieuwste ontwikkelingen, schrijf je hier in voor de nieuwsbrief!