Je ziet en hoort het tegenwoordig overal waar je komt. Je kan geen functieprofiel meer bekijken waarin niet wordt gevraagd naar dat ene woord: “Agile”. Wat betekent agile nou eigenlijk en wat wordt er gevraagd van een agile (functioneel) tester?
Met de (snelle) opkomst van verschillende agile ontwikkelmethoden, rijst ook de vraag naar agile testmethoden. Testen in een agile ontwikkelteam vergt niet alleen een aanpassing in test-technieken, maar vereist ook een andere mindset van de tester. In een meer traditionele ontwikkelorganisatie, kan het nog wel eens voorkomen dat het testen een vertragende factor speelt in de software release cycle. Ontwikkelaars en testers komen soms lijnrecht tegenover elkaar te staan aan het einde van de ontwikkelperiode, veelal een doorn in het oog van de lijdende business.
(Functioneel) Testen in een agile omgeving
De agile ontwikkelmethode brengt testers en ontwikkelaars dichter bij elkaar, sterker nog; beide werken zij aan zij met als resultaat een snelle oplevering van werkende software. Zowel voor ontwikkelaar als tester vergt dit enige aanpassing in de manier van werken. Aangezien het testen een continu proces is geworden gedurende de software-ontwikkel-periode, is er weinig tijd over voor het schrijven van uitgebreide testscripts. Exploratory testing is dan ook een voor de hand liggende en veel gebruikte testtechniek binnen de agile werkwijze.
Hoeft een tester dan niks meer te documenteren, vraag je je af? Jawel, het team is verantwoordelijk voor de kwaliteit van de software en de tester speelt hierin een belangrijke rol. Niet alleen controleert hij of de software voldoet aan de acceptatie criteria van de business, de tester is met zijn expertise grotendeels verantwoordelijk voor het goedkeuren van de opgeleverde software. Met andere woorden; de tester bepaalt of de software kan worden opgeleverd naar de business/klanten. Complexere software vraagt daarom vaak om complexere testtechnieken en in deze gevallen doet de tester er verstandig aan toch tijd te reserveren voor het uitschrijven van test scenario’s.
Het schrijven van testscripts kan in sommige gevallen nog een voordeel hebben. In een Agile team werken vaak meerdere ontwikkelaars in verhouding tot 1 tester. De agile mindset vraagt om een snelle software release cycle en dit kan alleen worden gerealiseerd wanneer alle software daadwerkelijk getest is. In een agile ontwikkelteam betekent dit dat ontwikkelaars soms moeten bijspringen in het testproces. Door het schrijven van leesbare testscripts waarborg je als tester de kwaliteit van het testwerk. De tester heeft tenslotte de testscripts geschreven en een ontwikkelaar kan het testscript vervolgens indien nodig uitvoeren.
Testautomatisering
In een ontwikkelomgeving waarin releases elkaar kort opvolgen, kan je tegenwoordig niet meer om testautomatisering heen. Testautomatisering wordt steeds toegankelijker en kan, indien goed toegepast, ook een nuttige houvast zijn voor de business. In een omgeving waarin om de week software naar productie wordt gebracht, is het van essentieel belang een volledig geautomatiseerde regressietest te hebben opgebouwd.
Als tester is het belangrijk om draagvlak te creëren voor testautomatisering binnen het team. Hoe houd je als tester anders tijd over voor het schrijven van testscripts, het uitvoeren van testen, het automatiseren van testscripts en het bijhouden van de volledig geautomatiseerde regressietest? Door zowel de business als de ontwikkelaars te betrekken bij het automatisering proces, krijgt men meer inzicht in het nut van geautomatiseerde testscripts.
Het schrijven van tenminste 1 geautomatiseerde test voor elke user story, zou mijns inziens in elke agile ontwikkelmethode onderdeel moeten zijn van de “ Definition of Done”. Als tester draag je zorg voor het onderhouden van reeds geschreven testautomatisering-scripts, ontwikkelaars zijn mede verantwoordelijk voor het schrijven van de initiële testscripts.
Complexe software waarvan de releases elkaar in rap tempo opvolgen, zorgen er vaak voor dat reeds bestaande testscripts omvallen of niet meer valide zijn. Het onderhoud van testautomatisering wordt hierdoor vaak als een last gezien. Door ook de business te betrekken bij testautomatisering, en ook hun gebruik te laten maken van geautomatiseerde regressietests, creëert men draagvlak en kan er tijd worden vrijgemaakt voor het onderhouden van testscripts. De business kan nuttig gebruik maken van geautomatiseerde testscripts, gedurende de acceptatiefase van de release-cycle. Dit neemt niet alleen veel handmatig testwerk bij de business uit handen, maar zorgt tevens voor een kortere release-cycle van de software.
Conclusie
Het Engelse woord agile betekent: behendig, lenig. Als tester in een agile omgeving is dit precies wat men van je verwacht. Een degelijke agile tester is een manusje van alles. Door korte lijnen te houden met ontwikkelaars zorgt hij ervoor dat fouten of bugs in een vroeg stadium ontdekt worden. Door nauw contact met de business te onderhouden zorgt een tester ervoor dat de software die wordt opgeleverd, ook daadwerkelijk voldoet aan de eisen die vooraf gesteld zijn.
Als spil binnen het ontwikkelteam dient een agile tester er voor te zorgen dat hij het ontwikkelproces ondersteunt en niet stagneert. Het durven nemen van beslissingen en het snel kunnen handelen zijn een agile tester niet vreemd. De rol van tester zal binnen de Agile werkwijze de komende jaren steeds meer worden verspreid over verschillende functies. Als agile tester is het van essentieel belang een vinger aan de pols te houden gedurende alle fases van de softwareontwikkeling, alleen dan kan een tester de kwaliteit van de software waarborgen.