Behavior driven development met Behat

Behat is een testmethode die behavior driven development mogelijk maakt: een Agile ontwikkelmethode die de werking van een applicatie beziet vanuit gebruikersperspectief. Maar minstens zo belangrijk is dat met Behat ook niet-technische teamleden functionaliteit kunnen testen. In dit artikel delen we onze ervaringen en geven we tips over hoe je Behat kunt gebruiken om samen aan een stabielere en beter functionerende website te werken.

28 maart 2020
placeholder

Je herkent de situatie waarschijnlijk wel

Je zit in de kick-off van een nieuw project en iedereen wordt enthousiast van wat jullie gaan maken. Er is een duidelijke visie, budget om een degelijk bureau in te huren en een opsomming van alle functionaliteit die je nodig denkt hebben voor een succesvolle website. Let's go!

Een en ander wordt uitgewerkt in een functioneel ontwerp en het ontwikkelteam gaat aan de slag. Bij de unittests worden er wat kleine foutjes gevonden maar deze zijn snel verholpen. Een succes, toch? Niet helemaal want bij de eerste oplevering blijkt de gebouwde functionaliteit niet precies te doen wat de opdrachtgever voor ogen had. De vraagt zich af of het niet precies genoeg is omschreven, of hij te veel ruimte liet voor een andere interpretatie. Of begrijpt het team de context en eindgebruiker niet genoeg?

Behavior-driven development

Dit soort situaties zijn precies de reden dat behavior-driven development (BDD) zo populair is geworden: het verbetert de communicatie en samenwerking tussen ontwikkelaars en niet-technische stakeholders. User stories zijn natuurlijk een goede manier om dit soort ‘ruis’ te voorkomen: iedereen begrijpt de concrete beschrijving van de acties die een gebruiker moet kunnen verrichten en het resultaat daarvan. Maar hoe zorg je als opdrachtgever dat de user stories correct worden omgezet naar automatische tests?

Behat: normale mensen mogen ook meedoen

Het uitgangspunt van behavioral driven development is dus dat softwareontwikkeling gestuurd wordt door menselijk gedrag in plaats van een abstract functioneel ontwerp. Maar om te testen of de techniek dit gedrag ook echt ondersteunt, is het zinvol om de test eveneens in gewone mensentaal te schrijven. Dat is precies wat Behat mogelijk maakt.

De grote winst van Behat is daarmee dat user stories bijna een-op-een kunnen worden gebruikt voor geautomatiseerde tests. Je komt snel overeen wat er getest moet worden en vooral: op welke manier. De test wordt gevisualiseerd in een browser, je kunt als het ware ‘live’ meekijken terwijl de tests worden uitgevoerd. Het zijn daardoor niet langer alleen developers die snel de ontwikkelde functionaliteit kunnen testen; met Behat kunnen opdrachtgevers ze ook zelf eenvoudig toetsen aan de user stories.

Bijkomend voordeel is dat je bij beveiligingsupdates of deployment van nieuwe functionaliteit aan een bestaand platform, bestaande Behat-tests kunt blijven gebruiken in je regressietests. Ook browser testing wordt een stuk eenvoudiger met Behat: door het gebruik van een plugin kunnen alle tests in Browserstack gedraaid worden, waardoor alle tests automatisch in verschillende browsers op verschillende systemen gedraaid worden.

 

Voorbeeldscenario

Scenario: Checking search FAQ + link to FAQ
  When I am on "/zoeken"
  And I fill in "drinkpak" for "zoekterm"
  And I press the "Zoek" button
  Then I should see "In welke afvalbak horen drinkpakken?"
  When I click "In welke afvalbak horen drinkpakken?"
  Then I should be on "/zelf-regelen/veelgestelde-vragen"
  And I should see "Drinkpakken mogen bij het plastic."

BDD vs. Unit-testen

Testen met Behat is dus een fundamenteel andere methode dan bijvoorbeeld Unit-testen. Met Unit-testen test je geïsoleerde stukjes broncode (units): als je er A in stopt, moet er B uitkomen. De uitkomsten van een unit test zijn abstract en geïsoleerd waardoor voor een opdrachtgever moeilijk oordelen is of het platform de gebruikers bedient zoals je ogen had. Bij BDD wordt er echter vanuit het gebruikersperspectief getest.

Verschillende scenario’s testen (en gedoe voorkomen)

Je wilt natuurlijk niet alleen de scenario’s testen waarin de gebruiker precies handelt zoals gedacht, ook afwijkend gedrag is interessant. Door deze grensgevallen samen te identificeren en de gewenste resultaten te beschrijven in user stories, voorkom je dat deze grensgevallen incorrect of onvolledig afgehandeld worden in het ontwikkelproces. Daarnaast creëer je zo een vollediger beeld van het functioneren van je applicatie voldoen aan de specificaties.

Behat: betere samenwerking en betere techniek

Onze ervaringen zijn dus heel positief: snellere communicatie, duidelijke verwachtingen, betere prestaties en een stabieler systeem. Maar belangrijker is misschien dat je als opdrachtgever meer regie krijgt over op het ontwikkelproces. Veel van hen hebben geen diepgaande technische kennis; daar huren ze immers een bureau voor in. Maar omdat iedereen een user story kan schrijven en daarmee een test in Behat, kan iedereen bijdragen. Zo worden niet alleen de kwaliteit van de tests vergroot, het zorgt ook voor meer participatie, draagvlak en ownership binnen de organisatie.

Doorpraten over Behat en Behavior Driven Development?

Stuur me een berichtje!