Jargonwaarschuwing
In dit artikel delen we onze ervaringen met de implementatie van Behat voor het automatiseren van acceptatietests. Het is dus bedoeld voor softwareontwikkelaars en geïnteresseerden. In de loop van het artikel worden de begrippen uitgelegd.
Er wordt bij Tweakers tegenwoordig flink ingezet op het geautomatiseerd testen van de eigen software. We zijn in de afgelopen sprints bezig geweest het bdd-framework Behat aan de teststack toe te voegen, waarbij we veel hebben geleerd. Omdat lang niet ieder bedrijf daar zoveel tijd voor kan vrijmaken, delen we onze bevindingen, zodat anderen er hun voordeel mee kunnen doen.
We hadden al een uitgebreide unit en integration test suite, maar we misten nog een geautomatiseerd end-to-endtestframework. Omdat Tweakers voor een groot deel in php is gebouwd, lag de keuze voor Behat voor de hand. Voor bdd is het belangrijk om de testomgeving volledig onder controle te hebben. Daarvoor hebben we een mini-Tweakers in Docker-containers ingericht.
Er zijn verschillende opensourcetools en voorbeeldimplementaties beschikbaar waarvan we best practices hebben afgeleid. Een belangrijk onderdeel van het project bestond uit het werkend krijgen van de website in Docker-containers, zodat alle developers makkelijk Behat-scenario’s op hun computer kunnen uitvoeren. We zijn begonnen met het breed en oppervlakkig testen van de bestaande functionaliteit van de website. Dit gaf ons tegelijk inzicht in welke onderdelen van de website moeilijk geautomatiseerd kunnen worden getest.
We ervoeren al vroeg in het project dat bdd vooral een communicatietool is. Het verder ontwikkelen van de ubiquitous language heeft momenteel onze aandacht.
Het was een grote investering om een bdd-framework te introduceren in dit bestaande project. Net als bij tdd voelt het schrijven van tests achteraf aan als veel werk. Bovendien mis je de flexibiliteit om de structuur van je applicatie te verbeteren, zoals je die wel hebt als je een nieuw project tegelijk met bdd begint. In de nabije toekomst willen we de set-up eventueel nog uitbreiden met Selenium om JavaScript- en php-functionaliteit buiten Symfony te kunnen testen.