terug naar overzicht

02/03/23

Insight insight

Quality Assurance

Michael van Noorloos

+31 6 41 62 90 36


02/03/23

Welke keuzes maak je en waarom

De do’s and don’ts van testautomatisering

Testautomatisering maakt de tester overbodig. Je schrijft een paar tests in één of andere tool en zorgt dat die elke dag draaien. Als er een fout naar voren komt dan grijpt de ontwikkelaar in, lost de bug op en daardoor draait de test weer naar behoren. Nou mooi, is dat opgelost, einde blog. Of toch niet?

De werkelijkheid is natuurlijk anders, het maken van de tests in een tool is al een ontwikkeltaak op zich. Het onderhouden van de tests dan ook en bugs die uit de tests komen moeten ook worden onderzocht. Zijn de bugs veroorzaakt door de applicatie of door de testtool? En zo zijn er nog talloze andere vragen te beantwoorden. Maar laten we beginnen bij de basis, welke keuzes maak je en waarom?

Voordat we een lijst opnoemen van een aantal zaken waar je aan kan denken hebben we al een aantal logische keuzes gemaakt, denk hierbij aan:

  1. Selecteer de juiste tool die ingezet gaat worden voor het automatiseren van de tests.
  2. Train de testers in deze tool.
  3. Zorg voor goede infrastructuur, zodat de testtool goed opereert.
De do’s van testautomaterising
  1. Doe aan verwachtingsmanagement

Misschien wel het belangrijkste! Zorg dat de verwachtingen rondom testautomatisering correct zijn. Deze tool gaat namelijk niet alles testen, er blijven bugs in het systeem zitten. De tool gaat ook wel eens stuk, moet onderhouden worden en kost resources, ook als je kiest voor een ‘gratis’ tool.

  1. Kies welke paden je gaat automatiseren

Sommige tests zijn heel lastig of niet te automatiseren. Denk hierbij aan tests waarbij verschillende devices nodig zijn of tests met een scenario dat zelden voorkomt in real-life. Houd dus altijd een soort van return on investment (ROI) in gedachten, wat kost het en wat levert het op?

  1. Automatiseer niet vanaf dag 1

Het lijkt aanlokkelijk om vanaf de eerste dag testautomatisering in te zetten, maar het levert ook heel veel mogelijke problemen op. De applicatie verandert continu, dit kunnen requirements zijn maar ook design. Hier kan testautomatisering over het algemeen slecht mee omgaan, bij bijna elke verandering in één van de twee faalt de test. Wees dus geduldig en wacht totdat de requirements duidelijk zijn en het design is vastgesteld. Voor zover dat mogelijk is.

  1. Kies de juiste mensen

Het is belangrijk dat iedereen het belang van testautomatisering inziet in het project. Maar kies de juiste mensen voor het maken van de scenario’s en kies de juiste mensen voor het maken van de code van de test om dit scenario te kunnen draaien. Hiermee wordt ook duidelijk dat de tester helemaal niet verdwijnt. De tester stelt de scenario’s vast en schrijft de tests. Als dit goed is, dan maakt de tester ook de geautomatiseerde tests. De ontwikkelaar kan meekijken om te zien of zaken anders of efficiënter kunnen. Op deze manier krijgt de ontwikkelaar meer betrokkenheid bij testautomatisering en kan hij de tester helpen bij het vinden van de bugs. Eventueel kan een QA-manager bepalen welke van de geschreven tests worden gebruikt in testautomatisering.

  1. Zorg voor leesbare tests

Welke tool je ook kiest voor het automatiseren van de tests, zorg dat ze leesbaar zijn. En dat hoeft niet altijd te betekenen dat je moet kiezen voor de G,W,T, (Given, When, Then) structuur. Als het maar leesbaar is. Zie hieronder een praktijk geval, bij een Gatling test gemaakt in Scala, waren de tests best leesbaar.

code blog testautomatisering

Het voorbeeld hierboven zijn twee API calls waarbij de eerste call is: een gebruiker zoeken aan de hand van een JSON en controleren of de username ‘John Doe’ is. Vervolgens doen we nog een call om de details van deze gebruiker op te vragen. Natuurlijk is het handig als enige ervaring van Gatling en Scala aanwezig zijn maar je hoeft hiervoor ook geen senior developer te zijn.

De don’ts van testautomatisering
  1. Onderschatten van het onderhoud

Een veel gemaakte fout is het onderschatten van de tijd die het onderhoud vergt van de gemaakte tests. Als een test wordt opgeleverd dan werkt die goed en staan alle signalen op groen, maar na verloop van tijd zijn er aanpassingen gedaan in de applicatie waardoor tests gaan falen. Dit moet worden onderhouden, anders is het project testautomatisering gedoemd te mislukken.

  1. Afhankelijkheden in de tests

Net als bij het maken van code voor de applicatie moet je voorkomen dat tests afhankelijk zijn van andere tests. Of in ieder geval, zorg dat het tot het minimum is beperkt. Dit is soms lastig, in de praktijk heb ik ervaren dat zeker met workflow-achtige applicaties, er scenario’s kunnen ontstaan die heel lang zullen zijn. Dus denk goed aan punt 1 van de do’s!

  1. Draai niet altijd alle testen

Sommige tests zijn belangrijker of nuttiger dan andere (het is niet anders), zorg dat die vaker draaien dan de tests die iets minder belangrijk zijn. Sommige onderdelen van de applicatie onder test zijn misschien kritiek en moeten regelmatig worden nagelopen. Maar er zijn vast ook onderdelen die vaststaan, waaraan niet/nauwelijks meer aan wordt ontwikkeld. Draai de tests die daarmee te maken hebben minder regelmatig, ook dit is natuurlijk wel weer flexibel.

Volgens mij zijn hiermee wel de belangrijke items op een rijtje gezet en kan testautomatisering een absolute meerwaarde zijn binnen het ontwikkelen van software. Uiteraard moet je kijken hoe het past binnen je eigen organisatie of project. Uit eigen ervaring kan ik aangeven dat in de projecten waar testautomatisering werd ingezet, het succesvol was als we deze punten aanhielden en niet succesvol als we dat niet deden.

Delen