Door: Gerben de la Rambelje
Auteur: Huib Schoots ● huib.schoots@gmail.com
Steeds meer bedrijven passen Agile werkwijzen toe en zij die het niet doen, zullen dat gaan doen. Het opschalen van Agile (Scaling Agile) zal een belangrijk aandachtspunt worden, omdat veel bedrijven die al aan Agile development doen, het nu willen opschalen naar grote projecten of het hele bedrijf. Ik hoop wel dat ze dat beter gaan doen, want ik zie helaas nog te veel slecht geïmplementeerde Agile werkwijzen of ‘Agile in name only’. Bovendien zullen steeds meer bedrijven beginnen met het invoeren van Continuous Integration en Continuous Delivery. Daarnaast zullen meer bedrijven proberen DevOps toe te passen. Dit betekent dat automatisering een steeds grotere rol gaat spelen en dat heeft een grote impact op testen. Het automatiseren lijkt een doel op zich te worden.
Geen testers meer nodig!
Een aantal bedrijven gaan wel erg ver in het automatiseren. Een paar jaar geleden hoorde ik al de eerste geluiden van een grote onderneming die geen testers meer nodig had. In de markt hoor ik die geluiden steeds vaker; bedrijven die denken dat ze geen testers meer nodig hebben en/of dat ze al het testen kunnen automatiseren. Veel testers konden na een reorganisatie op zoek naar een nieuwe baan. Ik denk dat organisaties dit doen omdat ze geen toegevoegde waarde zien in een bepaalde groep testers: de ‘old school functionele testers’. Testers die alleen kunnen werken wanneer er gedetailleerde requirements en specificaties zijn en die weinig tot geen technische affiniteit hebben. Wanneer ik de managers hoorde praten, gaven ze mij de indruk dat ze niet echt wisten wat testen is en dat ze dachten dat ontwikkelaars het testen er wel even bij konden doen.
Ik hoor vaker uitspraken van bedrijven die geen testers meer werven en de functie van tester ter discussie stellen. De reden waarom testers niet meer noodzakelijk zijn, is me niet helemaal duidelijk. In dit artikel probeer ik uit te leggen waarom het een goed idee is om te overwegen testers in dienst te hebben en te houden. En als je dan de functie van tester ter discussie stelt, het in ieder geval een goed idee is om mensen met testvaardigheden in dienst te hebben.
DevOps
In DevOps lijkt het allemaal te draaien om zoveel mogelijk te automatiseren om zo snel mogelijk te releasen. Maar is dat wel zo? Volgens mij is DevOps net als Agile, geen trucje of methode maar een mindset. Met Agile proberen we de muur tussen de business en IT te slechten. Met DevOps gaan we een stap verder en proberen we de muur tussen Software Development en IT Operations neer te halen[1]. Ze hebben ogenschijnlijk tegengestelde belangen. Software Development wil zo snel mogelijk het probleem van de klant oplossen, IT Operations wil 99,9% uptime en dus zo min mogelijk veranderen en zo goed mogelijk controleren. In DevOps maken we ze beiden verantwoordelijk door ze samen in een team te stoppen.
Een wereld zonder testers?
Software Development is Research & Development; een reeks experimenten die uiteindelijk leiden tot een passende oplossing. We hebben te maken met klanten die niet precies weten wat ze willen. Verder hebben we te maken met de complexiteit, verwarring, veranderingen, nieuwe inzichten en halve antwoorden. Dat vraagt om onderzoek. Met een team op zoek naar wat werkt en wat niet. Daarvoor is testen van groot belang! Testers helpen inzicht en overzicht te verschaffen. Ze schijnen hun licht op de werkelijke status van product en project. Door deze inzichten stellen ze anderen in staat betere producten te maken en slimmere besluiten te nemen.
Testers voegen waarde toe met een kritische blik en een risicogedreven mindset. Deze mindset is heel anders dan de probleemoplossende mindset van de rest van het team. Developers en analisten zijn vooral op zoek naar oplossingen, terwijl een tester weet dat dingen anders kunnen zijn en dus op zoek gaat naar mogelijke problemen en risico’s.
Maar developers kunnen dat toch ook?
Natuurlijk zijn er developers die prima kunnen testen. En gelukkig zijn dat er steeds meer! Maar als je in ogenschouw neemt dat testen een vak is en programmeren ook, is het alsof je iemand twee beroepen tegelijk laat uitoefenen. Daarnaast is testen voor veel developers niet leuk. Als je iets niet leuk vindt, ga je er ook nooit goed in worden. Bovendien is er nog het probleem van het schakelen tussen mindsets: het is niet gemakkelijk om van een oplossende naar een kritische mindset te schakelen. Dit nog even los van het feit dat waarschijnlijk slechts één van beide mindsets in je ‘DNA’ zit.
Alles automatiseren?
Het werk van een tester is slechts deels te automatiseren. Geautomatiseerde testen (checks) kunnen alleen controleren of vooraf gedefinieerde algoritmes (of business rules) werken. Geautomatiseerde checks geven slechts antwoord op een vraag waarvan je het antwoord al weet. Geautomatiseerde checks zorgen ervoor dat we ons geen zorgen hoeven te maken dat de oude functionaliteit omvalt. Dat het product nog steeds dezelfde waarde levert als voorheen.
Alleen testen kan zorgen voor inzicht in de nieuwe functionaliteit. En alleen mensen kunnen dit inzicht geven. Net zoals mensen alleen inzicht kunnen geven in subjectieve begrippen als performance, gebruikersvriendelijkheid of onverwacht gedrag van de software.
Geautomatiseerde testen leveren winst op omdat ze snel en herhaaldelijk uitgevoerd kunnen worden. Maar deze eigenschappen zijn alleen zinvol als de automatische testen de juiste dingen testen. De beoordeling over de toegevoegde waarde van een automatische test is een beoordeling die door een mens gemaakt moet worden. Succesvolle automatische testen komen dus voort uit testvaardigheden als kritisch denken, modelleren, experimenteren, het toepassen van heuristieken en waarnemen.
Testautomatisering guru Linda Hayes legt in het artikel ‘Why Automation Will Never Replace Manual Testing’ uit dat automatisering de tester nooit zal vervangen. Testers zijn experts in het vinden van onverwachte problemen. Ze stelt dat als we het verschil tussen testen en checken gaan snappen, de vrees voor automatisering zal oplossen. Hierdoor kan er een krachtige, productieve samenwerking ontstaan.
Testen staat stil?
In de afgelopen jaren hebben we gezien dat de oude methodieken, zoals ISTQB en TMap, niet in staat zijn om de hedendaagse problemen het hoofd te bieden. Context-driven testen, en Rapid Software Testen in het bijzonder, biedt deze mogelijkheid wel.
Context-driven testers zijn in staat de uitdagingen van testen in een software ontwikkeltraject te onderkennen en aan te pakken. De reden hiervoor is eenvoudig: context-driven testen brengt testers de vaardigheden bij die nodig zijn om het testwerk aan te laten sluiten bij het project. Door het ontwikkelen en inzetten van eerdergenoemde vaardigheden ondersteunt deze wijze van testen op een effectieve manier de softwareontwikkeling. Testers zijn sneller inzetbaar omdat ze minder afhankelijk zijn van documentatie. Ze werken sneller omdat ze geen onnodige documentatie produceren. Ze zijn beter in staat software te doorgronden en daardoor bij te dragen aan een goede oplossing. Ze voegen waarde toe aan een team.
Het testen van de toekomst…
Ik denk dat er nog wel meer bedrijven zullen proberen om zich te ontdoen van de testers. Ook zij zullen uiteindelijk ontdekken dat ze testvaardigheden nodig hebben in hun teams. Bij het bedrijf uit de inleiding zijn ze er inmiddels op terug gekomen. De realiteit leerde dat de software die ontwikkeld werd niet goed genoeg was. Men had even te snel gedacht dat ontwikkelaars het testen wel zouden automatiseren. Niet dat ze nu ineens weer veel testers hebben binnengehaald. Nee, ze trainen hun teams in testen en testvaardigheden.
IT kan helemaal niet zonder testers. Waarschijnlijk verdwijnt in de toekomst testen als functie. Misschien bestaat testen dan nog wel als rol of als specialisatie, maar in ieder geval als vaardigheid! Testvaardigheden zijn onontbeerlijk in een succesvol project. Het testvak verandert! Ik denk dat testers zich steeds meer zullen gaan bezighouden met het overzicht te bewaren en inzicht te geven in een wereld vol complexiteit, verwarring en halve antwoorden. Als het goed is groeien de rollen in een team steeds dichter naar elkaar toe. Developers zullen beter moeten leren testen en testers zullen zich in de techniek moeten gaan verdiepen. In organisaties als Atlassian en Pivotal Labs zien we nieuwe invullingen van de rol van testers: explorers en coaches die teams helpen beter te testen. Ook developers worden getraind en niet testen in een team is geen optie.
Veranderende vaardigheden
Door Agile en DevOps verandert de rol van de tester. Het profiel van testers zal veranderen: om anderen testvaardigheden bij te brengen is het van belang om zelf excellente testvaardigheden te hebben. Coaching is dan een belangrijke vaardigheid. Testers hoeven niet persé te kunnen programmeren, maar ze zullen veel technischer moeten worden.
Een tester die niet beschikt over al deze vaardigheden zal het in de toekomst moeilijk krijgen. Uiteraard zullen er nog plaatsen zijn waar niet DevOps of Agile gewerkt wordt. En die old-school functionele testers? Ik denk dat hun tijd om uit te sterven daar is. Een wereld zonder excellente testvaardigheden? Ik geloof er niks van.
[1] Zie ook: https://en.wikipedia.org/wiki/DevOps#Relationship_to_Agile_and_continuous_delivery
Hear, hear, de spijker op zijn kop, hoewel we als tester deze boodschap horen te kennen!!
In aanvulling hierop: Nicolas Carr (http://www.nicholascarr.com/?page_id=18) omschrijft het heel mooi wat de positie is van automatisering (dus ook test automatisering):
Mastery before automation!
Goed verhaal huib. Duidelijk en helder zoals jij ook bent. En de spijker op zijn kop!
Mee eens, met name “Maar developers kunnen dat toch ook?” beschrijft wat mij betreft de kern.
En die old-school functionele testers? Ik denk dat hun tijd om uit te sterven daar is.
Sorry Huib, maar niet alle bugs kunnen door testautomatisering gevonden worden.
Soms moeten dingen door een mens bekeken worden en dat zal altijd zo blijven.
Peter: het is ook duidelijk dat dit niet is waar Huib het over heeft, zo zegt hij namelijk ook
“Alleen testen kan zorgen voor inzicht in de nieuwe functionaliteit. En alleen mensen kunnen dit inzicht geven.”
Ik ben het met je eens dat het niet zo zwart-wit gesteld kan worden dat de tijd van de old-school functionele tester voorbij is. Er zijn voorlopig nog voldoende bedrijven waar je met een ‘old-school’ aanpak terecht kunt. Ik ben het wel degelijk met Huib eens dat om mee te kunnen in het vak de set van vaardigheden van een tester moet veranderen. Ga je niet mee met deze veranderingen, zullen er uiteindelijk maar heel weinig plekken zijn waar je nog terecht kunt.
Dank Jeroen, dat is exact mijn boodschap.
1) We hebben in de toekomst nog steeds testers (of teamleden met testskills nodig). Ik denk zeker niet dat al het testwerk te automatiseren is. In tegendeel.
2) Ik denk dat testers die alleen “old school” requirements om kunnen zetten in plannen en testcases in hoog tempo overbodig worden. Er zullen vast nog plekken zijn waar ze terecht kunnen. Maar die worden steeds schaarser. Daarbij denk ik dat ze uit de markt gedrukt gaan worden door de moderne testers. Er zullen minder testers nodig zijn en zij die zorgen dat ze bij blijven in hun vak, zullen de beste plekken krijgen. De old school testers mag de lege plekken vullen…