Medewerkers van Netvlies monitoren de webapplicaties via grote monitoringschermen.

Waarom automatisch testen essentieel is voor je webapplicatie

een blog over stabiliteit en continuïteit

Doorlopend blijven testen

Wanneer je een webapplicatie, intranet of webshop laat ontwikkelen, wil je uiteraard dat deze vlekkeloos werkt en blijft werken. Hick-ups in werk- of bestelprocessen kunnen allerlei ongewenste problemen veroorzaken, variërend van irritatie bij klanten en medewerkers tot en met stagnatie van je online omzet. Daarom is het belangrijk om ook na oplevering van je webapplicatie, intranet of webshop doorlopend te blijven testen of alles nog werkt zoals het is bedoeld.

In dit blog leg ik uit wat het belang van automatisch testen is én hoe we automatisch testen inzetten in onze Scrum-projecten, op onze supportafdeling en bij het doorvoeren van software-upgrades. Ik focus me als developer vooral op het ontwikkelen van webapplicaties en webshops, maar in grote lijnen komt wat hieronder staat ook overeen met hoe we websites testen.

Netvlies medewerker schrijft code.

Wat is automatisch testen?

Simpel gezegd is automatisch testen niets anders dan het automatisch – door een computer – laten uitvoeren en controleren van scenario’s. Deze scenario’s worden zo geschreven dat ze begrijpelijk zijn voor iedereen – met én zonder technische kennis – en in gecodeerde tests kunnen worden opgenomen. Bij iedere aanpassing (bijv. een bugfix of een nieuwe feature) worden –  voordat de developer zijn werk definitief doorvoert – deze tests automatisch afgetrapt. Zo is de developer zeker dat er geen bestaande tests zijn omgevallen door zijn nieuwe wijzigingen.

Waarom automatisch testen?

Elke webapplicatie en webshop heeft per definitie een bepaalde mate van complexiteit. Als je iets aanpast, bijvoorbeeld in een kritieke berekening, een koppeling met een extern systeem of een formulier, kan er iets misgaan waardoor een onderdeel – mogelijk zelfs een hele andere functionaliteit dan je aan het bouwen bent – niet meer helemaal goed functioneert. Als team testen we ons werk natuurlijk goed en we houden rekening met de meest uiteenlopende scenario’s, maar het is onmogelijk of in ieder geval niet haalbaar voor een mens om bij iedere aanpassing alle mogelijke scenario’s handmatig na te lopen.

Doorlopend automatisch testen is dus nodig om ook na livegang en ingebruikname van de webapplicatie een hoge mate van kwaliteit te kunnen garanderen. Met op korte termijn investeren in tests bespaar je op de lange termijn veel kosten ten opzichte van handmatig testen en reparaties achteraf. In onze ogen is het hoofddoel van automatisch testen niet het besparen van kosten, maar het garanderen van een hoge mate van stabiliteit en het voorkomen van ergernis: niet alleen bij de eindgebruikers, maar ook bij onze opdrachtgevers én bij onszelf.

Bij een webshop beginnen we bijvoorbeeld standaard met het testen van de complete happy flow. Ofwel: het volledige proces vanaf het moment dat de klant op de website komt, waarbij alles gaat zoals het is bedoeld: producten bekijken, producten toevoegen aan het winkelmandje, naar de kassa gaan en succesvol afrekenen. Maar we kunnen ook testen op fouten in het bestelproces en op foutmeldingen. Wat gebeurt er bijvoorbeeld als het afleveringsadres onjuist is ingevuld of als een bank een betalingsopdracht niet goedkeurt?

Voordelen van automatisch testen

Automatisch testen heeft onder meer de volgende voordelen:

  • Bij iedere aanpassing worden alle bestaande tests afgetrapt;
  • Je kunt allerlei zaken testen die handmatig niet of niet goed kunnen worden getest;
  • Automatisch testen kan 24/7, dus óók ’s nachts, in het weekend en op feestdagen;
  • Automatische tests kunnen letterlijk in enkele minuten een aantal scenario’s uitvoeren die handmatig dagen werk zouden kosten;
  • Automatische tests zijn vele malen nauwkeuriger dan handmatig uitgevoerde;
  • Tests leggen de intentie of business rules expliciet vast, zodat zelfs een developer met minder domeinkennis kan zien wat de code hoort te doen als een test faalt.

Denk maar eens aan financiële berekeningen met meerdere scenario’s en variabelen, zoals een kortingsactie in een webshop. Je moet daarbij rekening houden met allerlei mogelijke scenario’s. Bijvoorbeeld:

  • De kortingsactie heeft alleen betrekking op een bepaalde productgroep;
  • De korting is een % of een X-bedrag;
  • Naarmate je meer producten bestelt, loopt de korting op;
  • Combineert de klant bepaalde producten, dan wordt de korting hoger;
  • Boven een bepaalde bestelwaarde vervallen de bestel- of verzendkosten.

Als dit soort foutgevoelige scenario’s – waarbij rekening moet worden gehouden met talloze combinaties – handmatig worden getest, gaat het al snel mis. Het is en blijft immers ‘mensenwerk’. Wordt een scenario, bijvoorbeeld een combinatiekorting, over het hoofd gezien, dan levert dat al snel klachten, boze klanten en omzetverlies op.

De kosten verdienen zich altijd terug

In het verleden zagen we regelmatig dat klanten de meerwaarde van automatisch testen onderschatten. Zeker als het als optie in de offerte stond, werd de post ‘automatisch testen’ best vaak geschrapt. En ja, natuurlijk liggen de kosten in het begin wat hoger en kost een serviceticket of nieuwe feature meer tijd als er tests voor worden geschreven, maar je verdient de investering echt terug. Denk maar eens aan wat het kost als je webshop er een paar uur uit ligt of als de check-out niet werkt zoals het moet. Of de uren die in steeds opnieuw alles handmatig testen gaan zitten of een major upgrade die uitgevoerd moet worden op een ongeteste code base. 

Het goede nieuws is: we hebben de afgelopen jaren een aantal mooie standaardisatie slagen gemaakt. Hierdoor zijn de instapkosten voor het inrichten van automatisch testen – wat bij Netvlies altijd maatwerk is – aanzienlijk lager dan pakweg 3 jaar geleden.

Een medewerker van Netvlies voor het Scrum bord.

Automatisch testen en Scrum

Om de kwaliteit te waarborgen, is automatisch testen vandaag de dag standaard verweven in ons Scrum-proces en denken we bij iedere user story met onze tester, front-end developers en back-end developers op voorhand mogelijke scenario’s uit. Ook zorgen we dat we in de Product Backlog Refinement – dus voorafgaand aan een nieuwe sprint – al hebben nagedacht over wát we willen testen. We bakenen daarbij nog niet alles helemaal af, maar we zetten wel de basis op.

Rolverdeling bij een webapplicatie

  • Back-end developer: richt zich vooral op de API en interne functionaliteit.
  • Front-end developer: schrijft voornamelijk tests voor procedures / flows, bijvoorbeeld voor het inloggen, het ophalen van data vanuit de API en het controleren dat alles goed wordt getoond en interactie werkt zoals is bedoeld.
  • Tester: denkt na over concrete scenario’s, bijvoorbeeld voor het inloggen, vaak meer gestuurd vanuit een testplan.
  • Klant: levert (indien nodig) specifieke domeinkennis en data aan om de test goed op te kunnen zetten, maar is voornamelijk klankbord.

Waar mogelijk, proberen we je als klant uiteraard maximaal te ontzorgen. Zo kun jij je op andere belangrijke zaken in het Scrum-proces richten, zoals handmatig testen, stakeholder management en het verzorgen/plaatsen van content.

De impact van automatisch testen op het Scrum-proces

Automatisch testen tijdens het Scrummen heeft onder meer de volgende voor- en nadelen:

Voordelen

Automatisch testen gaat veel sneller, waardoor we meer kunnen testen in dezelfde tijd. Problemen worden sneller zichtbaar, waardoor ze minder impact hebben op het Scrum-proces. Daarnaast worden we gedwongen om beter na te denken over wat we tijdens het ontwikkelproces allemaal kunnen tegenkomen voordat we daadwerkelijk code gaan schrijven. Hierdoor kunnen we de uses story op voorhand al anders formuleren. En wat ik tot slot zelf als developer wel fijn vind, is dat we door automatisch te testen op voorhand meer zekerheid krijgen over de kwaliteit van datgene dat we maken en dát werkt best motiverend!

Nadelen

Op de korte termijn kost automatisch testen geld. Bovendien zijn er meerdere disciplines nodig om de testen op te zetten. Daarnaast vormt het schrijven van automatische testen een extra stap in het ontwikkelproces. En tot slot vergt het testen zelf onderhoud. Als je bijv. honderd tests schrijft voor een inlogformulier, levert dat meer onderhoud op aan de tests dan aan het formulier zelf. Als team moeten we zorgen dat we deze balans bewaken.

Automatisch testen en support / bugfixing

Voor het uitvoeren van upgrades geldt grotendeels hetzelfde als voor het oplossen van servicetickets. Alleen hebben upgrades veel meer impact op de codebase. Zo blijft bij een upgrade, naar bijvoorbeeld een nieuwe Symfony- of PHP-versie, maar weinig code onaangeroerd. Het is dan essentieel dat goed wordt getest om de upgrade succesvol en zonder bugs te kunnen uitvoeren. Bij grotere upgrades is automatisch testen zelfs een absolute voorwaarde, anders is het risico levensgroot dat het hele kaartenhuis in elkaar valt of dat er weken later nog vervelende - niet opgevallen - bugs naar voren komen. Daarom kijken we bij een upgrade altijd goed naar de testdekking en voeren we een upgrade pas door als de tests succesvol verlopen. Zeker bij een webapplicatie is dat belangrijk, omdat daarin vaak bedrijfskritische processen zitten. Werkt de webapplicatie na de update niet vlekkeloos, dan loop je omzet mis of kunnen je medewerkers niet werken.

Een visuele weergave van een voorbeeld test pipline in een Scrumproject.

Een voorbeeld CI pipeline die aftrapt bij iedere code wijziging. Allereerst wordt een security check uitgevoerd. Daarna volgen een code kwaliteitscontrole en de automatische tests. Pas als alles geslaagd is, kan de code gedeployed worden.

Goed onderhouden en betrouwbare webapplicatie

Naast automatisch testen monitoren we webapplicaties intensief en anticiperen we proactief op bugs via geïntegreerde error tracking. We passen code quality en profiling tools toe om de performance en betrouwbaarheid van de webapplicatie nóg verder te verbeteren. Kortom: we zorgen ervoor dat je webapplicatie in goede staat blijft en op een verantwoorde, betrouwbare en prettige manier met de organisatie kan blijven meegroeien.

Benieuwd hoe een webapplicatie jouw organisatie effectiever en efficiënter kan maken? Neem vrijblijvend contact met ons op.