Waarom handmatig testen cruciaal is
De omgeving van de softwareontwikkeling is aanzienlijk verschoven in de afgelopen jaren met de komst van Agile en DevOps. Deze nieuwe focus op hogere snelheid en de verschuiving naar kleinere, meer frequente releases, heeft een grote invloed op het testen. In het afgelopen jaar is het gemiddelde percentage van de testautomatisering gestegen van 28 procent naar 45 procent, volgens deWorld Quality Report 2015-2016. Maar wat is testautomatisering eigenlijk? De heilige graal?
De testrobot
Maar wat is testautomatisering eigenlijk? Testautomatisering of ‘automatisch testen’ is een geautomatiseerd testproces waarbij voorgedefinieerd en vastgestelde waarden door een ‘robot’ worden gecontroleerd op een bepaald informatiesysteem of deelsysteem. Dit is natuurlijk niet echt een ‘robot’, maar een stukje software waarmee een ander stuk software wordt gecontroleerd. Voor de beeldvorming geeft de term ‘robot’ een mooie lading.
De testrobot heeft dus veel voordelen mits de instructies en datasets die aan de robot worden meegegeven correct zijn. Een robot is beter en sneller in staat fouten te vinden, kan miljoenen (conversiedata) regels vergelijken zonder daarbij behoefte te hebben aan een kopje koffie, kan op arbeidsintensieve processen onbeperkt regressie testen uitvoeren, kan snel technische installaties met elkaar vergelijken en zo kunnen we nog wel even doorgaan. Testautomatisering biedt dus voordelen.
Instructies en dataset
Maar deze robot heeft ook nadelen. Ten eerste moeten alle instructies die je aan de robot geeft, wel eerst heel concreet in kaart gebracht worden en vervolgens worden ‘uitgelegd’ aan die robot. Het in kaart brengen van wat er wordt getest en hoe er wordt getest is al een vak, laat staan dat je alle in-, door- en uitvoer variabelen en condities moet uitschrijven. En als deze instructies en condities dan zijn uitgedacht en uitgeschreven moet de robot nog ‘getraind’ worden om de juiste vergelijkingen te doen. Dit is mensenwerk. Het vakgebied van de kunstmatige intelligentie groeit enorm, maar zal zeker niet in de nabije toekomst deze activiteiten uit handen van de mens kunnen nemen. Testautomatisering is dus duur, waardoor je een goede kosten/ baten analyse moet maken met duidelijke afwegingen, welke onderdelen door de robot uitgevoerd zullen worden en welke handmatig door de mens.
‘Testautomatisering is dus perfect voor het vergelijken van variabelen en het liefst in grote hoeveelheden, maar zal de intuïtie en de impliciete waarneming van een mens vooralsnog niet overstijgen.’
Impliciete waarneming
Ten tweede kan de robot supersnel vergelijkingen maken, maar met handmatig testen wordt verder gekeken dan het testgeval dat moet worden uitgevoerd. Het menselijke perspectief is veel bewuster en intuïtiever en kijkt daardoor ‘automatisch’ verder dan alleen het testgeval. Denk hierbij aan verbanden tussen invoervelden, onlogische handelingen, spellingsfouten, e.d. De robot heeft helemaal geen intuïtie, doet niks meer en niks minder dan het vergelijken van variabelen en heeft daardoor geen impliciete waarneming. Juist door de impliciete waarneming kan een mens toevalligheden constateren. Waarbij een fout pas wordt ontdekt bij een specifieke combinatie van variabelen of met kennis van de dagelijkse operationele problematiek, welke ook nog kan wijzigen in de loop der tijd. Testautomatisering is dus perfect voor het vergelijken van variabelen en het liefst in grote hoeveelheden, maar zal de intuïtie en de impliciete waarneming van een mens vooralsnog niet overstijgen. Een voorbeeld is exploratief testen, wat erg waardevol is om snel fouten te vinden, maar wat een robot niet snel zal kunnen.
Onderhoudbaarheid
Ten derde wordt vaak vergeten dat bepaalde integrale processen helemaal niet te automatiseren zijn. Te denken valt aan financiële transacties die in batch moeten worden verwerkt door een andere instelling, alvorens deze definitief in je financiële systemen te kunnen boeken. Daarnaast is het onderhoud op de instructie- en dataset van de robot meer werk dan initieel wordt gedacht. Omdat de context (zowel werkprocessen als IT) van organisaties constant in beweging is, moet de robot telkens opnieuw getraind worden met nieuwe instructies en aangepaste data. Daarnaast verandert de software die automatisch getest wordt. Alle nieuwe functionaliteiten, nieuwe interfaces e.d., zullen eerst door een mens worden beoordeeld en getest op werking, maar ook in de omgeving van de eigen organisatie, alvorens deze nieuwe instructies aan de robot kunnen worden gegeven. Testautomatisering is ideaal voor stabiele situaties, waarbij de frequentie van wijzigingen beperkt is.
Gaat de testrobot software accepteren?
Ten vierde is ons vakgebied van gebruikers-/ acceptatietesten lastig uit te voeren door een robot. De definitie van acceptatietesten is vaststellen dat de organisatie gereed is voor het gebruik van de software. Hierbij wordt niet alleen bepaald of het werkt, maar ook of de gebruikers hiermee hun werk kunnen doen. Gaat de robot dan vaststellen dat de organisatie gereed is voor het gebruik? Daarnaast is het beoordelen en analyseren van de testresultaten mensenwerk. Op het moment dat 10 gebruikers 10 testgevallen beoordelen heb ik 100 testresultaten. Wat als 4 gebruikers zeggen dat het goed is en 6 zeggen dat het fout is, zal er dialoog moeten plaatsvinden over de interpretatie van de data en de context waarin de goed- of foutbevinding tot stand is gekomen. Dit kun je niet door een robot laten doen.
Onze visie is dat alle testresultaten vanuit één centrale plaats gemanaged moeten worden; de testresultaten van de mens, maar ook de testresultaten van de robot. Want ook de testresultaten van de robot moet je beoordelen en analyseren op waarheid en context. En van daaruit worden issues opgesteld richting alle stakeholders. Dit zijn dus niet alleen de softwareleveranciers, maar ook de eigen organisatie. Testautomatisering is dus een mooie toevoeging in het hele testspectrum, maar ook deze testresultaten zullen moeten worden beoordeeld door een mens.
Testautomatisering heeft dus veel voordelen in het kader van efficiëntie en effectiviteit in de uitvoering, maar heeft ook nadelen. Met de focus op Agile-achtige softwareontwikkelingen en –implementaties is testautomatisering onontbeerlijk om de kwaliteit en snelheid van de incrementen te managen. Echter: Testen is een vak en testen is denkwerk. Het is dus van cruciaal belang om handmatig testen met zijn intuïties, impliciete waarnemingen en het daadwerkelijk vaststellen dat de organisatie gereed is voor gebruik van de software in een gezonde balans te hebben met geautomatiseerd testen.