Artikel

Testautomatisering

In een wereld waarin het snel opleveren van nieuwe of aangepaste software steeds belangrijker is, we vrijwel allemaal zijn overgestapt op Agile werken, er steeds meer teams DevOps werken en waarin automatiseren van tests noodzaak is om continue kwaliteit te garanderen.

In die wereld lijken we soms nog wel eens te veel vertrouwen te hebben in testautomatisering. Te denken dat door zoveel mogelijk tests te automatiseren, we meer inzicht en grip hebben op de kwaliteit van het product. We sneller de juiste resultaten hebben en we dus efficiënter werken. Maar is dat wel zo? Kunnen we bijna blindelings vertrouwen op die automatische tests? Moeten we wel alles willen automatiseren? Dat iets kan, wil niet zeggen dat het ook moet, of dat het eindproduct daardoor beter wordt.

Wellicht een gek standpunt voor iemand met een voorliefde voor testautomatisering (ik). Graag licht ik dit toe in deze blog. Waarin ik wil ingaan op de voorwaarden voor testautomatisering. Voorwaarden vanuit de business (Ready). Vanuit de teams (Set). En vervolgens vanuit het testperspectief… (Automate?)

Ready

Net zoals een huis een goede fundering nodig heeft, moet er voor testautomatisering ook een goede basis zijn. Waarom wordt er gekozen voor testautomatisering? Is dat om bestaande uitdagingen binnen het ontwikkeltraject op te lossen? Of is het ter ondersteuning en versterking van de bestaande teststrategie? Er zijn verschillende redenen om testautomatisering toe te passen binnen een organisatie. En die redenen bepalen voor een deel ook de wijze waarop testautomatisering het beste toegepast kan worden. Een paar van deze redenen zijn:

  • Fast feedback is één van de meest voorkomende redenen om te automatiseren. Door een specifieke testset na elke build of merge naar develop te draaien. Krijg je direct inzicht in mogelijke bevindingen en kunnen deze ook gelijk opgepakt worden. Dit maakt het ontwikkelproces efficiënter en maakt de stap naar continue integratie (CI/CD) mogelijk.
  • Kostenbesparing op lange termijn is ook een mogelijke reden. Automatische tests hoeven ten slotte maar 1 keer opgesteld te worden en kunnen daarna herhaald worden. Uiteraard kost het opzetten en onderhouden van die scripts tijd. Maar op de lange termijn voorkomt het repetitief handmatig testwerk wat veel tijd kost. Daarnaast geeft het ook de ruimte om de focus te leggen op meer complexe tests of exploratory testing.
  • Handmatig testen kost niet alleen veel tijd. Maar is ook gevoelig voor fouten. Een teststap kan overgeslagen worden. Of de testdata is niet volledig of correct klaar gezet. Nauwkeurigheid en vergroten van de testdekking is dan ook een vaak voorkomende reden om bepaalde tests te automatiseren.

En zo zijn er nog meer redenen om testautomatisering toe te gaan passen. CI/CD, Performance, schaalbaarheid, herbruikbaarheid.

Het is van belang dat een organisatie hierover nadenkt. Goede testautomatisering is een grote investering. Niet alleen in geld, maar ook in tijd, kennis en ervaring. En als het niet goed geïmplementeerd wordt, dan kan het uiteindelijk juist kwaliteit, tijd en geld gaan kosten. In plaats van opleveren. Kortom, er moet een valide business case zijn om testautomatisering te introduceren.

Wanneer de business case duidelijk is, moet gekeken worden of de organisatie er technisch ook klaar voor is. Is de infrastructuur geschikt om tests te automatiseren? Zijn er voldoende resources om tests te kunnen automatiseren? Moeten er meerdere testomgevingen en databases beschikbaar zijn of wordt er juist gebruik gemaakt van containerhosting? Ook hierbij is het van belang dat er goed wordt nagedacht. Welke mogelijkheden biedt de huidige infrastructuur en kan daarop doorgebouwd worden. Of is er juist behoefte aan een nieuwe infrastructuur.

"Goede testautomatisering is een grote investering. Niet alleen in geld, maar ook in tijd, kennis en ervaring. Er moet daarom een valide business case zijn om testautomatisering te introduceren."

Set

De organisatie is er klaar voor. Er is nagedacht over de reden en de infrastructuur ligt er ook. Dan is het van belang dat de teams er ook klaar voor zijn. En dat begint bij de teamleden. Is er voldoende kennis en ervaring voor testautomatisering. En zo niet, is dat dan te bereiken door het volgen van opleidingen of het aannemen/inhuren van technische testers.

De juiste tooling is ook van belang. Er zijn verschillende tools verkrijgbaar, sommige betaald maar veelal ook open source. Welke tool het beste gebruikt kan worden is afhankelijk van verschillende factoren. Onder andere de kennis en ervaring binnen het team. Maar ook de te testen applicatie. Gaat het om een webapplicatie waar de focus ligt op de GUI, of wil je vooral berichtenverkeer testen tussen applicaties.

Veel tools zijn ook gebaseerd op Behaviour Driven Development. Waardoor testcases in begrijpelijke taal opgesteld kunnen worden. Bijvoorbeeld door bepaalde teststappen in een keyword op te nemen. Of door gebruik te maken van Gherkin (given… when… and… then…). Als de tests ook door niet technische testers gebouwd of onderhouden moeten worden. Of als de leesbaarheid van belang is. Dan zijn dit soort tools een goede optie.

Een testtool waarin geprogrammeerd wordt in dezelfde taal als de applicatie is ook aan te raden. Hierdoor kunnen de ontwikkelaars de testers ondersteunen. En kunnen zij ook makkelijker tests bouwen en onderhouden.

Om goede automatische tests te kunnen schrijven is goede functionele documentatie nodig. Documentatie met duidelijke acceptatiecriteria. Waarbij de testgevallen te traceren zijn naar de functionele behoefte. Dit maakt het makkelijker om de tests te onderhouden wanneer er functionele wijzigingen zijn.

Automate(?)

Ik hoorde het vrij recent nog bij een opdracht. Een collega die aangaf dat je alle tests die geautomatiseerd kunnen worden ook moet automatiseren. En ik kon het niet meer oneens zijn met die gedachte.

In dat team was de jarenlange tendens geweest om alles te automatiseren. Wat resulteerde in een testset van honderden tests die een paar uur duurde om te draaien. Niet heel erg efficiënt en al helemaal geen fast feedback dus. Tests die elkaar inhoudelijk overlappen omdat telkens dezelfde stappen werden uitgevoerd met als enige verschil de laatste teststap. Het onderhoud was dan ook een ramp, want 1 wijziging in de functionaliteit. Betekende het wijzigen van tientallen tests in de test-set.

Maar ook een vals gevoel van kwaliteit. Automatische tests, checken eigenlijk alleen wat je weet. Wat in de functionele documentatie staat. Of wat je door ervaring en kennis kan deduceren. Maar hetgeen dat je niet weet, wordt nooit gevonden. Dit kan alleen door exploratory tests uit te voeren. Ook het aantal tests zegt niets over de kwaliteit. Slechte tests voegen geen enkele waarde toe. Het draait niet om de aantallen, maar om een goed doordachte testdekking.

Om te voorkomen dat je als team straks met een automatische test-set zit die eigenlijk te groot is om nog efficiënt te zijn. Die niet of nauwelijks onderhoudbaar is waardoor er weinig  tijd overblijft voor exploratory testen. Is het van belang bij elke test af te wegen of deze van waarde is voor de automatische test.

Dit kan onder andere door een product-risico-analyse uit te voeren. Waarbij je besluit alleen de testscenario’s met een gemiddeld of hoog risico te automatiseren. Of door testautomatisering in te zetten als manier om snel testdata of een bepaalde pre-situatie klaar te zetten.

Er wordt nog wel eens vergeten hoe belangrijk het is om naast automatisch testen – waarbij we alleen valideren wat we weten – ook exploratief te testen, waarbij we juist de focus op het onbekende leggen. Tests automatiseren is noodzakelijk in de huidige markt. Maar de mate waarin je dat doet is afhankelijk van heel veel factoren.

 

Wil jij advies over de mogelijkheden die testautomatisering jouw organisatie kan bieden. Hoe dit een onderdeel kan worden van de bestaande teststrategie. Welke tooling gebruikt kan worden. Aarzel dan niet op contact met ons op te nemen.

 

Wil je ons nieuwste Paarsz magazine per post ontvangen? Laat dan je gegevens achter.

Ontwerp zonder titel (19)

Werken bij Bartosz?

Vincent Verhelst

Geïnteresseerd in Bartosz? Dan ga ik graag met jou in gesprek. We kunnen elkaar ontmoeten met een kop koffie bij ons op kantoor. Of tijdens ontbijt, lunch, borrel of diner op een plek die jou het beste uitkomt. Jij mag het zeggen.