Testautomatisering wordt nog steeds onderschat

testautomatisering

Door: Matthijs Drenth

In mijn rol als Test Consultant merk ik dat het inzetten van testautomatisering om diverse redenen nog steeds onderschat wordt. Deze blogpost biedt houvast bij de overwegingen die je moet maken voordat je überhaupt met testautomatisering aan de slag gaat.

Tijdens software ontwikkeltrajecten zijn bugfixes onvermijdelijk. Er zijn allerlei redenen waarom bugs ontstaan, maar een deel van die bugs kun je voorkomen door reeds gebouwde en bestaande functionaliteiten bij iedere release weer te testen. Dit kun je handmatig uitvoeren zolang de testset van beperkte omvang is. Maar … voor iedere nieuwe functionaliteit moeten nieuwe testgevallen worden geschreven die bovenop de reeds bestaande testgevallen komen. De testset wordt dus steeds groter. Het schrijven, onderhouden en uitvoeren van die testgevallen kost tijd. En als die tijd beperkt is, moeten er keuzes worden gemaakt. Bijvoorbeeld door minder testgevallen te schrijven zodat je minder hoeft te testen, met als gevolg dat je testdekking en daarmee je kwaliteit hardhollend achteruit gaat. Of er komt een moment dat een tester de software ontwikkelaars niet meer bij kan houden, waardoor de releasefrequentie in gevaar komt.

De snelste actie die je dan kunt uitvoeren om deze problemen te tackelen is door extra testcapaciteit aan te trekken. Echter er komt een moment dat je wederom tegen hetzelfde probleem aanloopt. En wat ga je dan doen? Weer je testcapaciteit uitbreiden en het probleem voor je uit blijven schuiven? Toch maar inboeten op kwaliteit? Of, wordt het misschien tijd om het uitvoeren van je testen te automatiseren? En waar begin je dan? Wat ga je dan precies automatiseren? Wat heb je nodig? Wat levert het je allemaal op?

“En waar begin je dan? Wat ga je dan precies automatiseren? Wat heb je nodig? Wat levert het je allemaal op?”

Met al deze vragen is het verstandig om even diep in te ademen en afstand te nemen. Ga dus vooral niet direct in het wilde weg starten met het automatiseren van je testen. Testautomatisering kan weliswaar veel voordelen bieden, maar dient op zorgvuldige wijze overwogen en geïmplementeerd te worden. Beantwoord daarom eerst onderstaande vragen.

Heb ik iemand in huis met de juiste ervaring?

De allereerste vraag die je moet beantwoorden is of je de juiste ervaring aan boord hebt. Voor succesvolle testautomatisering heb je namelijk specialisten nodig. Mensen die weten welke randvoorwaarden van toepassing zijn op geautomatiseerde test uitvoering. Specialisten die enerzijds weten hoe je goed test en anderzijds ervaring hebben met testautomatisering, de bijbehorende tools en onderliggende technologieën. En voor het schrijven en onderhouden van testscripts is het helemaal fijn als ze ook nog een beetje kunnen programmeren.

Als je deze vraag met “nee” beantwoordt, dan is het verstandig om eerst een specialist van buiten aan te trekken. Die gaat je vervolgens helpen om te automatiseren en je team een vliegende start te geven. Het neerzetten van een goed team dat de juiste kennis in huis heeft is vaak al de helft van het fundament waarop je testautomatisering rust.

Wat en wanneer ga ik automatiseren?

Het 100% automatiseren van je tests is niet altijd realistisch. Er kunnen namelijk altijd onderdelen zijn die niet geautomatiseerd kunnen worden of waarbij het niet efficiënt is om te automatiseren. Een stukje ‘ouderwets’ handmatig testen blijft dus altijd onderdeel van je testproces. Met het inzetten van bijvoorbeeld performancetests, regressietests en load-/stresstests is het zeker mogelijk om dicht in de buurt van volledige automatisering te komen. Als je serieus overweegt om je testuitvoering te automatiseren moet je in ieder geval heel goed beseffen dat het om een substantieel deel van je testen moet gaan. Anders is de investering die je doet weggegooid geld. De stelregel moet dus zijn: automatiseren tenzij…

“De stelregel moet dus zijn: automatiseren tenzij…”

Van elke geautomatiseerde testsuite moet de levensduur lang genoeg zijn om haar implementatiekosten te rechtvaardigen ten opzichte van de kosten van handmatig testen. In het algemeen is het bij een waterval-aanpak niet altijd een goed idee om testen te automatiseren in een vroeg stadium van de ontwikkelcyclus. De kosten van het onderhouden van scripts zijn bij waterval trajecten relatief hoog vanwege de vaak langere ontwikkel-cycli. Het tegenovergestelde geldt voor agile ontwikkelomgevingen. Hier valt vaak wel een hogere automatiseringsgraad te behalen, juist omdat deel-functionaliteiten vaak in kleinere, behapbare, opleverbare onderdelen worden ontwikkeld.

Een ander belangrijk punt van aandacht is de stabiliteit van je applicatie. Als een bepaald deel van de applicatie op grote schaal nog verandert kunnen de kosten van het onderhouden en beheren van scripts zeer hoog zijn. Een beperkte set testscripts op de basisfunctionaliteit van dat specifieke deel is dan vaak voldoende in dergelijke gevallen.

Kortom maak een duidelijke strategie van wat op welk moment geautomatiseerd moet worden.

Welke tools heb ik nodig?

Bij het automatiseren van je tests is de juiste toolkeuze een zeer belangrijke driver voor succes. Als het goed is heb je inmiddels de beschikking over een specialist die je gaat helpen met het automatiseren van de testuitvoering. Hij of zij kan je ook helpen bij het selecteren van de juiste tool(s). Om je enigszins op weg te helpen heb ik enkele aandachtspunten voor je op een rijtje gezet.

Er zijn ontzettend veel tools op de markt – zowel open source als commercieel – die allemaal verschillen in functionaliteit, gebruikersvriendelijkheid, leercurve en prijs. Het is dus van belang dat je van tevoren helder hebt aan welke eisen de tool(s) moeten voldoen waarmee jij je testen wil automatiseren. Anders beland je geheid in een wirwar aan specificaties en zie je uiteindelijk door de bomen het bos niet meer. Houd steeds voor ogen dat je uiteindelijk niet wilt eindigen met een tool die ongebruikt op de plank ligt.

Bij het opstellen van de eisen kun je in ieder geval de volgende zaken meenemen:

  • Inpasbaarheid. Biedt de tool voldoende functionaliteit om gewenste testsoorten uit te voeren en de resultaten te monitoren?
  • Installeerbaarheid, onderhoudbaarheid en gebruikersvriendelijkheid. Is de tool makkelijk te installeren, te onderhouden en te gebruiken in de huidige test omgeving? Houd hierbij ook rekening met de infrastructuur!
  • Kosten. Wat zijn de licentiekosten en wat zijn de kosten van eventueel maatwerk om ontbrekende functionaliteiten te realiseren?

Als je uiteindelijk de eisen op een rijtje hebt wordt het tijd om rond te kijken wat de markt te bieden heeft. Ga hierbij rationeel te werk, blijf bij je lijstje met eisen en laat je niet verleiden door functionaliteiten die je (vooralsnog) niet nodig hebt. Maak een top drie van tools die voldoen aan je eisen en zorg ervoor dat je een Proof of Concept (PoC) – en geen demo’s – draait in de omgeving waar je uiteindelijk gebruik gaat maken van de tool. Die PoC’s geven je een goed beeld van wat er wel en niet mogelijk is met een tool. Zorg er voor dat je kritisch blijft en een specialist uit je team aanhaakt. Die kan de juiste vragen stellen om uiteindelijk tot een goed onderbouwde keuze voor een tool te komen.

Wat levert het op?

Een argument dat ik heel vaak hoor in de praktijk is dat je met testautomatisering bespaart op capaciteit voor handmatig testen. Dit is voor een deel zeker waar, maar je zult ook rekening moeten houden met kosten voor (eventuele) licenties van tools, training, onderhoud aan de testsuite, inzet van (externe) expertise, etc. Reken je dus niet te snel rijk.

Besparen op kosten is zeker niet het belangrijkste argument, het zou mijns inziens ook niet de belangrijkste driver moeten zijn om te kiezen voor testautomatisering. Testautomatisering biedt je namelijk een uitgesproken kans om de kwaliteit van je testen te vergroten! Zeker bij veel repetitief testwerk, zoals regressietesten kun je hiermee de menselijke factor elimineren en ben je er zeker van dat je telkens weer goede testen draait.

“Besparen op kosten is zeker niet het belangrijkste argument, het zou mijns inziens ook niet de belangrijkste driver moeten zijn om te kiezen voor testautomatisering.”

Onder de streep houd je tijd over omdat al die repetitieve werkzaamheden niet meer met de hand worden uitgevoerd. Die tijd kun je gebruiken om je testdekking te vergroten, waarmee je ook de kwaliteit van het testproces vergroot. Dit leidt uiteindelijk tot minder bugs in de software, zodat je minder tijd kwijt bent aan bugfixing. Bijkomend voordeel is dat minder bugs leidt tot meer tevreden klanten. En die vertellen dat écht wel door. Dat is nog eens een mooie ROI!

Conclusie

Testautomatisering is een serieuze aangelegenheid. Onderschat het dus niet. Haak minimaal één specialist aan en krijg goed helder wát je wilt automatiseren. Onderbouw je toolselectie en focus niet alleen op kostenbesparing. Het inzetten van testautomatisering biedt namelijk een uitgelezen kans om de kwaliteit van je testen én het testproces een enorme boost te geven.

Kortom, zorg ervoor dat je geen spijt krijgt van de beslissing om je testen te automatiseren!

Delen:

Matthijs Drenth

Matthijs Drenth is Test Consultant bij Oelan en helpt organisaties bij het optimaliseren van het software testproces en het verbeteren van de kwaliteit van de ontwikkelde software.
Bekijk de LinkedIn pagina van Matthijs Drenth