Automatisch testen is exit testers?
Is er nog plaats voor ons?
Automatisch testen is hét buzzword als je het over Agile-testing hebt. Maar wat houdt automatisch testen eigenlijk in? Welke rol speelt automatisch testen binnen het proces? En maakt het ons als testers overbodig?
Testen in een Agile-team
Agile is voor softwareontwikkelaars een belangrijke methodiek. Het houdt in dat je in sprints een product oplevert. Aan het einde van elke sprint geldt klaar is klaar en het product kan zonder verdere controles of tests naar productie. Maar waar is testen dan gebleven in het proces? Binnen Agile zijn alle teamleden ‘developer’. Er zitten dus geen testers in het team. Bovendien, zoveel tijd is er nou ook weer niet voor testen…
Automatisch testen is het antwoord?
Vraag een softwareontwikkelaar om dezelfde handeling twee keer uit te voeren, en hij vindt wel een manier om die handeling te automatiseren. Dat scheelt tijd en frustratie. Het automatiseren van testen lijkt dan ook voor de hand te liggen. Want testen - met name regressietesten - is vaak een tijdrovend klusje met veel repetitieve handelingen en controles.
En werk je in sprints van een of twee weken, dan is er vaak niet de tijd of gelegenheid om op die manier een test uit te voeren. Vooral bij Agile-teams - en zeker ook in DevOps-omgevingen - wordt daarom vaak gekozen voor automatisch testen. Automatisch testen is het automatisch laten uitvoeren van tests. Hiervoor gebruik je speciale software die specifiek voor testen is. Automatiseren kan voor alle soorten tests, maar naarmate je verder in het proces komt, moet je meer handmatig werken. Unittesten en integratietesten zijn vaak automatisch, maar complexe systeem- en acceptatietesten vergen meer handwerk. En dat geldt zeker voor gebruikersacceptatietesten!
Verschillende automatische testtools
Je kunt testen automatiseren op verschillende manieren. En vrijwel alle testen zijn geheel of deels te automatiseren, zoals het uitvoeren van calculaties, het sturen van berichten of het invullen van een webformulier. Er zijn tools die werken door het opnemen van handelingen, zodat deze later weer afgespeeld kunnen worden (onder andere Selenium en Microsoft Test Manager kunnen op die manier werken). Er zijn ook tools die werken op basis van visuele identificatie van elementen (Sikuli). Daarnaast is het mogelijk om functionele acties (het klikken op een knopje op een website of het openen van een app op een telefoon) helemaal in code te automatiseren (Selenium, Espresso, Cucumber, Calabash).
Dit zijn allemaal variaties binnen automatisch testen. De initiële investering (van tijd) is vaak groter dan bij handmatig testen, maar doordat herhalingen minder tijd kosten, is er over langere tijd winst te behalen. Die winst is niet alleen uit te drukken in tijd, maar ook in vertrouwen van de klant (product owner en / of stakeholders) in de applicatie, omdat deze in productie waarschijnlijk minder fouten / regressie bevat. En ja, dat klinkt allemaal erg positief. En wat ook positief is: ontwikkelaars kunnen het automatisch testen zelf in gang zetten, omdat het vooral software en code behelst. Dus waarom zouden we eigenlijk überhaupt nog een tester in het team opnemen? Is een softwareontwikkelaar die goed code kan schrijven en wat testtechnieken heeft geleerd niet voldoende?
De tester blijft onmisbaar
…Nou nee. Automatisch testen is niet testen. Het is een methodiek en daarmee een van de onderdelen binnen het kwaliteitsproces. Het is het automatisch controleren van de resultaten van een set aan handelingen, nadat de software is opgeleverd. Het is code, een extra product, en daarmee een extra point of failure in de oplevering die weer zijn eigen bugs en problemen kan bevatten. De tests moeten goed doordacht zijn, voordat ze geschreven worden.
En dat is juist de kracht van de tester. Testers zijn bij het hele ontwikkelproces betrokken, vanaf de specificatie tot de oplevering. De tester kan vanuit zijn eigen kwaliteiten, kennis en ervaring kritisch kijken naar iedere fase van het project, en daar tests voor schrijven. Het testproces wordt daardoor niet uit het oog verloren. De tester zorgt er samen met het ontwikkelteam voor dat de opdrachtgever krijgt wat hij nodig heeft. Juist de andere manier van kijken van de tester maakt hem / haar een waardevol lid van het team. En (dus) waardevol voor de opdrachtgever.