Wanneer starten met testautomatisering?

Om de vraag: ‘wanneer start je met testautomatisering’ te beantwoorden is het belangrijk het doel van testautomatisering helder voor ogen te hebben.

Testautomatisering is bedoeld om een zo kort mogelijke feedback-loop te creëren en aan de ontwikkelaar zo kort-cyclisch mogelijk de regressie inzichtelijk te maken.

Dit gezegd hebbende, denk ik dat het belangrijk is een aantal basis standpunten te bekijken en te zien of deze van toepassing zijn op jouw product.

Is het product (of delen daarvan) bedrijfskritisch?

Hoeveel schade loopt het bedrijf op wanneer er in de productie regressie optreedt? Denk hierbij aan kosten als schadeclaims, inkomstenderving door imagoschade en inactiviteit van werknemers.

Wat is de oplos-snelheid?

Hoe snel is het ontwikkelteam in staat fouten in de productie te herstellen? De zogenoemde roll-forward. Hierbij is het niet alleen van belang te weten hoe snel de betreffende bevinding is opgelost, maar tevens het vertrouwen dat het oplossen van de bevinding geen nieuwe regressie teweeg brengt.

Ook kan gedacht worden aan de mogelijkheden tot roll-back.

Wat is de grootte en complexiteit van het product?

Het aantal functionaliteiten en de tijd die het kost deze handmatig te testen, gedurende een regressietest set, zijn als factor zeker niet achterwege te laten. 

Een systeem met als doel, alle telefoonnummers op een aangeleverde lijst, te bellen voor salesactiviteiten is veel gemakkelijker te testen dan een systeem dat, op basis van de telefonische klantreactie, aan een medewerker vraagsuggesties voorstelt.

Wet- en regelgeving

In bijvoorbeeld de financiële markt stelt de Nederlandsche Bank aan banken de eis de informatiebeveiliging in de gebruikte software te laten voldoen aan COBIT niveau 3. Hiermee zegt de DNB dat banken moeten bewijzen dat ze controle hebben over hun softwareontwikkeling voordat zij software live mogen brengen.

Team maturity

Hoe zijn de teamleden op elkaar ingespeeld? Is elkaars code reviewen een standaard werkwijze of gebeurt dit incidenteel? Zijn de teamleden in staat elkaars werkzaamheden over te nemen en zijn ze vertrouwd met de door anderen geschreven code? Maar ook het gemak waarmee het team zelfstandig in staat is (delen van) testautomatisering op te pakken. 

Happiness

Kun je van je team verwachten dezelfde regressietest met grote regelmaat herhaalbaar uit te voeren? Wat doet dat met je medewerkers en het plezier waarmee zij dagelijks uit bed stappen om naar hun werk te gaan?

ROI

Bij veel nieuwe dingen in het bedrijfsleven is het belangrijk even stil te staan bij het financiële plaatje. Wat gaat het kosten, wat levert het op en wanneer is het terugverdiend? Dit is misschien wel de lastigste vraag om te beantwoorden. Ook omdat niet alle voordelen in geld uit te drukken zijn.

Architectuur van de software

Modulair opgebouwde software stelt heel andere eisen aan kwaliteitszorg dan software waar de code in elkaar verweven zit. Bij de laatste is de kans op regressie groter, omdat vaak niet helder is waar het aangepaste stukje software elders in het systeem gebruikt wordt.

Gradatie testautomatisering 

plaatje afkomstig van PolteQ
Plaatje van Polteq

Er zijn verschillende vormen van testautomatisering. Deze zijn terug te vinden in de test automatiseringsdriehoek.

Ieder van deze testsoorten kan in diverse gradaties in je project opgenomen. Kies je ervoor unit testen onderdeel te maken van de oplevering of gebeurt dit op basis van best effort voor cruciale systeemonderdelen?

Time to Market

Wanneer de bedrijfsdoelstelling een korte time to market vereist, is de tijd voor het uitvoeren van een handmatige regressietest beperkt. Dit resulteert vaak in het uitvoeren van een beperkte regressietest.

Vertrouwen in software

Vertrouwen in software ontstaat doordat functionaliteiten die in productie in het verleden ‘altijd werkten’ bij een nieuwe release nog steeds werken. Dit maakt de noodzaak van een goede betrouwbare regressietest set essentieel. Omdat bij iedere wijziging vaak nieuwe functionaliteit ontstaat, groeit de regressietest set mee.

Conclusie

Testautomatisering is hoofdzakelijk bedoeld vroegtijdig regressie inzichtelijk te maken voor de ontwikkelaars. Daarnaast echter biedt testautomatisering ook snel en herhaalbaar inzicht in de kwaliteit van je product.

In de huidige markt ontkom je niet meer aan het automatiseren van je testen. Wel blijft het zaak stil te blijven staan bij de gradatie waarin testautomatisering voor jouw product toegevoegde waarde biedt. Bovengenoemde punten helpen bij het opstellen van de kaders voor het automatiseren van testen bij jouw product.

Daarnaast is het verstandig deze kaders elke 3 maanden te evalueren. Er is namelijk niets mis met een onderbouwde keuze voor toekomstige wijzigingen, op een andere manier of zelfs minder testen, te automatiseren.