Testautomatisering

In de huidige wereld van het Agile werken en DevOps is testautomatisering essentieel in software-ontwikkeltrajecten. Handmatige tests kunnen weliswaar snel feedback geven, maar dienen vaak herhaald te worden vanwege meerdere opleveringen van software. Het kan dan voor de lange termijn slimmer zijn om deze tests te automatiseren. Testautomatisering vraagt wel een goede, doordachte aanpak, wil het een succes worden. Het gebeurt helaas nog te vaak dat er wordt gedacht dat met het automatiseren van testen alle problemen in één klap zijn opgelost, maar de praktijk laat zien dat dit niet altijd het geval is.

In deze blog beschrijf ik 5 pijlers die de basis vormen voor succesvolle testautomatisering.

1.      Er is een valide business case

Er ontstaat regelmatig de behoefte om testautomatisering in een organisatie te introduceren met in het achterhoofd de Return On Investment (ROI). Als de handmatig uitgevoerde regressietesten geautomatiseerd kunnen worden, dan scheelt dat in de doorlooptijd van het testen en dus in de kosten.

In een Agile ontwikkeltraject moet niet zozeer de ROI, maar juist het snel kunnen aantonen van de kwaliteit van het hele systeem een drijfveer zijn om te willen automatiseren. Feedback in een vroeg stadium over de kwaliteit/robuustheid van het product is erg waardevol. Vroeg in het ontwikkeltraject bugs constateren, betekent immers relatief lage kosten en inspanning om deze op te lossen. Handmatig testen kan snel feedback geven op een nieuw stuk software, maar voor de herhaalbaarheid van de tests over het hele systeem kan testautomatisering een uitkomst bieden.

2.      Er is een heldere scope en doel

De organisatie moet duidelijk hebben welke testen er geautomatiseerd moeten worden en vooral ook met welk doel. Moet er focus zijn op het testen van input vanuit andere systemen, of moet de performance van een systeem getest worden? En waarom moeten deze tests geautomatiseerd worden?

Het is ook van belang dat de verschillende tests een goede aansluiting met elkaar vinden, maar geen overlap hebben. Tests die bijvoorbeeld in een Unit test worden uitgevoerd, hoeven niet nogmaals in een Systeemtest of Acceptatietest te worden herhaald. Het is dan ook essentieel dat het opzetten en onderhouden van de geautomatiseerde test set door het hele team wordt ondersteund.

"Niet alleen de tester krijgt te maken met een veranderende werkwijze. In Agile teams zal elk teamlid in staat moeten zijn om tests te ontwerpen, te monitoren en eventueel ook te programmeren."

3.      De organisatie is er klaar voor

Er moet binnen de organisatie voldoende kennis aanwezig zijn om een testautomatisering raamwerk op te kunnen zetten. Tests automatiseren betekent een verandering in de rol van de tester die eerst zijn werk handmatig uitvoerde. Nu wordt er van een tester veel meer technische kennis gevraagd. Niet alleen de tester krijgt te maken met een veranderende werkwijze. In Agile teams zal elk teamlid in staat moeten zijn om tests te ontwerpen, te monitoren en eventueel ook te programmeren. Er moet dan ook draagvlak gecreëerd worden voor deze veranderingen binnen de organisatie.

4.      De juiste tooling is geselecteerd

Het is van groot belang om de juiste testtooling te kiezen voor de automatisering. Wat de tool moet kunnen, is afhankelijk van de scope en het doel van de testautomatisering. Populaire tools hebben vaak een grote community, waarin veel bruikbare informatie wordt verdeeld. Een aantal (test)tools op de markt zijn gebaseerd op Behaviour Driven Development (BDD), waardoor je testcases in ‘begrijpelijke’ taal kan opstellen. Met deze aanpak is het ook voor niet-technische teamleden mogelijk om testcases te begrijpen en eventueel zelf te schrijven.

Het loont ook om een testtool te kiezen die in dezelfde programmeertaal is geschreven als de applicatie die getest moet worden. Ontwikkelaars kunnen dan ondersteuning bieden aan andere teamleden als deze hulp nodig hebben bij het automatiseren van de tests. Bouw je een applicatie in Java, kies dan ook voor een testtool die gebaseerd is op Java.

5.      Er is grip op de test set

Een goed raamwerk opzetten om tests te kunnen automatiseren is belangrijk, maar het onderhouden van deze tests en testdata is net zo belangrijk. Organisaties die testautomatisering toepassen, onderschatten vaak de inspanning die nodig is om de regressietest-set te onderhouden. Door bijvoorbeeld wetswijzigingen of veranderende behoeften vanuit de stakeholders, is het zaak om tests bij te blijven werken en weer actueel te maken. Herleidbaarheid van testgevallen naar een gebruikersbehoefte is daarin essentieel.  Dit vergemakkelijkt het onderhoud aan de opgebouwde regressietest-set aanzienlijk.

Maak ook inzichtelijk en openbaar wat de status is van de testgevallen in de regressietest-set, dit vergroot de betrokkenheid en beleving binnen ontwikkelteams en bij stakeholders.

 

De volgende stap: Continuous Integration/delivery

Als de organisatie eenmaal succesvol testautomatisering heeft toegepast, dan is het tijd voor de volgende efficiency-slag: het toepassen van Continuous Integration/Continuous delivery (CI/CD).

CI/CD is het automatiseren van diverse handelingen in een ontwikkeltraject, die ervoor zorgen dat code snel en veilig gezet kan worden naar een (productie-like) omgeving. In deze handelingen zitten dan vaak ook de geautomatiseerde tests. Als de ontwikkelaar klaar is met het schrijven van code dan kan hij deze inchecken. Er wordt vervolgens een ‘pakketje aan software’ gemaakt. Op dit pakket worden een aantal Unit tests gedaan. Als deze Unit tests succesvol zijn, dan wordt de software naar een (test)omgeving uitgerold en worden er geautomatiseerde tests op gedaan. Deze stappen van uitrol en test kunnen zich herhalen totdat software succesvol naar productie is gezet, zonder dat daar handmatige acties tussen hebben gezeten.

De herhaalbaarheid van stappen maakt het mogelijk om kleine vernieuwingen live te brengen zonder dat er een lange doorlooptijd is van een handmatige regressietest over het gehele systeem. Via deze CI/CD-aanpak is het dus mogelijk om snel, maar gecontroleerd, nieuwe software naar productie op te leveren en snel feedback op de kwaliteit te krijgen. Ontwikkelaars zijn blij omdat ze maar kleine stukjes hoeven te bouwen en testen, en opdrachtgevers zijn blij omdat de time-to-market aanzienlijk korter is.

Schrijf je in voor
de nieuwsbrief

werkenbij overall

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.

Mijn Paarsz