Agile-projecten vereisen testautomatisering en testautomatiseringsprojecten moeten Agile opgezet worden.
In Agile-projecten worden iedere iteratie nieuwe werkende onderdelen opgeleverd. Bij iedere volgende iteratie moeten de reeds geteste onderdelen goed blijven werken. Regressietesten is noodzakelijk. Direct bij aanvang automatiseren van de regressietest bespaart kosten. Iedere volgende iteratie kan met een minimale inspanning de testset opnieuw uitgevoerd worden, waardoor fouten die geïntroduceerd worden in de reeds gerealiseerde onderdelen opgespoord worden. Enige valkuil hierbij is dat vermeden moet worden alle testsituaties te automatiseren. Een afgewogen keuze voor het in een tool invoeren van de belangrijkste testgevallen is voor het regressietest aspect van belang.
Bij beheer van bestaande systemen kan het lonend zijn om testautomatisering in te voeren. Goede momenten zijn situaties als op voorhand zeker is dat er een groot aantal releases op stapel staan en/of als er grote migraties gepland zijn, waardoor er meerdere testcycli voor dezelfde onderdelen uitgevoerd moeten worden. Er zijn een aantal traditionele methodieken in omloop voor testautomatiseringsprojecten. Deze methodieken zijn gebaseerd op een watervalachtige aanpak.
Testautomatisering voor bestaande systemen kan echter ook Agile aangepakt worden. Zeker voor testautomatiseringsprojecten geldt dat een Agile-aanpak voordeel kan hebben, per iteratie wordt een werkend increment opgeleverd. Ook bij testautomatisering geldt dat gaandeweg het project zaken duidelijk worden waar vooraf nooit op gerekend was. Kortom, de requirements voor testautomatisering veranderen tijdens de rit. Met een Agile-aanpak kan hier goed op ingespeeld worden.
Deze meneer raadt aan om dat waar je bestaande systemen test, ook te gaan automatiseren, waarbij je de ontwikkelmethode van een test-automatiseringsproject dan ook agile zou moeten zijn. Agile ontwikkelen leidt tot betere kwaliteit van het product (wordt gezegd), dus dit geldt dan ook voor testautomatiserings producten.
Tenminste dat begrijp ik er uit. Wat dat betreft vind ik wel dat we moeten waken dat we niet alles `agile´ gaan noemen en er een hype-gevoel aan gaan geven. Dit doet afbreuk aan de professionaliteit van de IT en in dit geval het test vakgebied.
Testautomatisering lukt ons testers overigens ook niet echt goed. Misschien omdat wij testers eigenlijk geen programmeurs zijn? Binnen een agile project heeft het meer kans van slagen, omdat dan er wat beter wordt samengewerkt tussen de disciplines, waardoor eerder de kans ontstaat dat testscripts geautomatiseerd worden door de programmeurs. Laat iedereen het werk doen waar hij/zij goed in is.
Weliswaar ben ik het er niet mee eens dat agile ontwikkelen testautomatisering vereist. Ik denk dat binnen agile teveel wordt gefocussed op de technische kant van het testen, terwijl we voor de gebruiker bezig zijn en in zijn ‘mindset’ moeten zitten.
Agile ontwikkelen kan prima zonder testautomatisering lijkt mij. Een goede regressie-test strategie, gebaseerd op risico’s, waarbij je niet alle testgevallen opnieuw uitvoert, kan het herhalen van testgevallen tot het noodzakelijke beperken.
Verder leidt het opnieuw uitvoeren van een test door een mens ertoe dat tests niet elke keer precies hetzelfde uitgevoerd worden, waardoor er meer kans is dat er nieuwe problemen worden gevonden.
In mijn ervaring en naar mijn mening is dit in de meeste gevallen efficiënter en effectiever dan testautomatisering.
Wat hier bedoeld wordt is dat je bij bestaande niet-agile-opgezette projecten wel agile kan automatiseren.
Het voordeel hiervan noemt Rob ook al, testers zijn meestal geen programmeurs en door deze werkwijze heeft testautomatiseren een grotere kans van slagen.
Daarnaast is het mogelijk door de Agile-werkwijze om snel in te spelen op wijzigende omstandigheden en voortschreidend inzicht.
Wat ik hierbij duidelijk mis is dat in agile projecten er bijzonder veel geautomatiseerd getest wordt ONDER de GUI. Dus op unit- en integratietest niveau en op systeemtestniveau (bijv. met de tool Fitnesse, zie http://fitnesse.org). Juist het vermijden van de veel aan verandering onderhevige GUI is een belangrijke succesfactor van automatiseren in agile omgevingen!
Het toepassen van de “Agile-werkwijze” op testautomatisering kan voordelen bieden,
maar geen enkele werkwijze lost de fundamentele problemen binnen een project op.
Om testautomatisering goed uit te kunnen voeren zal er iemand moeten gaan progameren, ongeacht de werkwijze zal die skill beschikbaar moeten komen.
Als er binnen de groep die belast is met testautomatisering geen kandidaat is om te programmeren, zal de toepassing van een Agile-werkwijze deze ook niet leveren.
Immers de rest van de organisatie veranderd niet.
De voordelen om een Agile-werkwijze toe te passen is de kort cyclische deel opleveringen en het beter omgaan met wijzigingen tijdens het project.