• 2012/11/01
  • ALbert Mietus
  • Nederlands
  • Narrative, Geïntegreerd Agile
  • Pathways

Waarom testautomatisering?

In Geïntegreerd Agile is testautomatisering belangrijk, essentieel zelfs. Zoals andere blogs laten zien, kan het invoeren echter lastig zijn; zeker als het niet direct vanaf de start opgepakt is. Immers, de kosten gaan voor de baten uit. Ook wordt het doel van testautomatisering (te) vaak verkeerd begrepen

Testautomatisering gaat namelijk niet over testen, maar over goedkoper ontwikkelen!

Testen: werk en doel

Globaal zijn er twee soort testtaken: voorbereiding en uitvoering. Tijdens de voorbereiding wordt bedacht hoe en wat getest moet worden. Dit denkwerk leidt uiteindelijk tot een aantal testscripts; traditioneel in de vorm van een Word-document. Elk testscript geeft stap voor stap aan hoe een test uitgevoerd moet worden. Die uitvoering kan natuurlijk pas slagen nadat de ontwikkeling gereed is. Maar de voorbereiding kan gelijktijdig met het ontwikkelen. Ook kan, door deze splitsing, het testen eerder beginnen.

Met testautomatisering kan de testuitvoering geautomatiseerd worden. Dat wordt vaak (onjuist!) beschouwd als het doel: goedkoper testen. Dat is belangrijk, zeker in een iteratief process. Al is beter testen is minimaal zo belangrijk.
Echter, ...

Testen is helemaal geen doel als we een product ontwikkelen. Het is slechts een essentiële stap om zo goedkoop en zo goed mogelijk alle features die de ProductOwner vraagt te realiseren. En dus moet ook testautomatisering gezien worden in dit grotere geheel. De vraag is dus: “Hoe kunnen we testautomatisering inzetten om features efficiënter te ontwikkelen?

Testexpertise effectief gebruiken

Soms blijkt pas in de testfase dat de specificaties onvolledig zijn. Testers zijn namelijk getraind om dit soort ‘omissies’ te vinden. “Het is niet testbaar”, zeggen ze dan, als niet alle details helemaal duidelijk zijn. Ontwikkelaars kijken heel anders; die zien diverse mogelijke oplossingen. En vullen alle details zelf en creatief in; dat is hun vak.

Als de specificaties niet helemaal correct cq volledig zijn, zullen programmeurs dat vaak niet zien. En dus gaan ze enthousiast aan de slag om net het verkeerde te bouwen. En al zal dat hersteld worden zodra de testers aan de slag gaan, het is niet Lean.
Daarom moeten de testers direct aan de slag; vanaf dag-nul. Het doel is, door vroegtijdig testscripts te schrijven, die omissies te vinden voordat de verkeerde code geschreven wordt.

Door elk testscript direct te schrijven als een Automatisch TestScript (ATS) is het exact duidelijk wat de test inhoudt. En dus ook wat de ontwikkelaar op moet leveren. Het is dus niet nodig om eerst “papieren” scripts op te leveren. De meeste testen zijn niet heel complex, een ervaren tester kan die direct opschrijven als ATS; in minder dan een half-A4tje. Door deze directe aanpak besparen we tijd. En voorkomen we dat de programmeurs de fouten maken.

Een vangnet geeft zekerheid

Het uitvoeren van die ATS-test is goedkoop en kan dagelijks gebeuren. De feature is klaar, als alle testen slagen. En niet later! Er is dus een duidelijke signaal of het ontwikkelwerk gereed is. Dat kan helpen om te mooie, te luxe, features te voorkomen.

Maar belangrijker nog, het voorkomt ook dat bestaande features omvallen! Doordat de code elke nacht automatisch gecontroleerd wordt, heeft de programmeur de zekerheid dat hij niet iets per ongelijk kapot maakt. Daardoor kan hij zich concentreren op de taak die hij voor zich heeft en net iets meer snelheid maken.

En maakt hij een keer een verkeerde keuze, dan is dat binnen 24 uur bekend. Niet alleen kan hij de fout dan snel herstellen, hij kan het ook effectief! Door heel snel feedback te krijgen, weet hij nog waar hij mee bezig was; die twijfel van gisteren is dan nog bekend.
Vergelijk dat eens met een klassieke aanpak: als er dan een foutje is gemaakt, komt dat pas tijden later aan het licht. Niemands kan zich dan nog al zijn wijzigingen herinneren. “Het zal we de fout van een ander zijn”, is dan een menselijke reactie. En al word de fout uiteindelijk opgelost, het kost altijd veel tijd.

Snel, sneller, snelst

Testautomatisering heeft dus drie voordelen:

  1. Het is snel bekend wat de feature exact moet doen.
  2. Het vastleggen van de test (en het onderhouden) gaat sneller.
  3. Op deze manier programmeren gaat het snelst.

Disqus

Aardige feedback is altijd welkom, evenals alternative meningen; zolang ze relevant zijn voor alle lezers. Hiervoor gebruik ik momenteel ‘Disqus’.

comments powered by Disqus