Is agile-testen vloeken in de kerk?
Principal Technology Officer
Expert van Computable voor de topics: Development, Internet en SOA
MeerAl sinds jaar en dag houd ik mij bezig met het begrip agile, mijn team en ik schreven bijvoorbeeld de eerste versie van de agile-methodiek Smart al in 1998. In het afgelopen decennium heb ik dan ook talrijke agile-projecten meegemaakt, uitgevoerd door wederom uiteenlopende organisaties, van universiteiten en softwarehuizen, tot overheidsinstellingen, grote banken en verzekeraars.
In de eerste jaren was het vooral zaak het agile-gedachtengoed te evangeliseren, maar op dit moment verlaten meer en meer organisaties hun klassieke aanpakken voor een agile-aanpak, op dit moment meestal Scrum. Daardoor kan ik mijn pijlen inmiddels richten op agile anti-patterns; dingen die misgaan in agile-projecten. Ook erg leuk, want er gaat ook in agile-projecten meer dan genoeg mis. Ook agile is geen silver bullet.
Voorbeelden? Alhoewel je steeds meer mensen hoort zeggen dat ze DE agile-methodiek gebruiken, bestaat er helemaal niet zoiets als DE agile-methodiek. Wel zijn er een heleboel agile-werkwijzen, zoals Scrum, XP, Smart, FDD of Kanban. Elk met hun eigen voorgangers, discipelen en volgelingen, om in de evangelisatie-metafoor te blijven.
Helaas constateer ik dat de agile-comminity toch langzaam wat dogmatischer wordt. Calvinistischer. Populariteit verstart nu eenmaal. Al meerdere malen heb ik discussies meegemaakt dat ik geen smart use cases mag gebruiken in agile-projecten of dat een stand-up meeting geen facilitator mag hebben. Zeggen dat er in de diverse agile-werkwijzen zaken ontbreken die broodnodig zijn in projecten, is dan ook vloeken in de kerk.
De meeste agile-processen focussen namelijk maar op een klein deel van wat er in systeemontwikkelprojecten allemaal gebeurt. Er is tereecht heel veel aandacht voor het schrijven van code, maar er is veel minder aandacht voor analyse, ontwerp en zeker voor testen. Alhoewel de meeste agile-werkwijzen wel over unit testing spreken, onderscheiden ze geen aparte rol voor testers. En unit testing is met name een techniek voor ontwikkelaars, waarbij kort gezegd testcode wordt geschreven voor de eigenlijke code.
Wanneer we echter grote agile-projecten doen voor grote organisaties speelt in mijn optiek de tester een cruciale rol. Er is namelijk veel meer tussen hemel en aarde dan unit testing. Zo coachte ik recent een complex servicegeorienteerd agile-SAP-project. Een unieke aangelegenheid, waarschijnlijk het eerste in zijn soort in Nederland, maar zeker niet het laatste als het aan de projectleden ligt. In dit project speelden onze testers een cruciale rol. Omdat we in korte iteraties software analyseren, ontwerpen, bouwen, testen en opleveren, maken de testers vanaf dag één deel uit van het project. Dat biedt perspectieven.
De unieke kijk op de wereld die testers namelijk aan de dag leggen, onderscheidt ze sterk van ontwikkelaars. Ontwikkelaars bemerken vaak niet of niet snel genoeg de uitzonderingen die testers als het ware vanzelfsprekend wel opmerken. In complexe projecten maken we graag en dankbaar gebruik van dit godgegeven talent. Onze testers zijn dan met de ontwikkelaars medeverantwoordelijk voor het ontwerp van de software. Op deze manier voorkomen we veel fouten in het schrijven van de software nog voordat we ze maken. Eigenlijk is dit een functionele vorm van unit testing.
Helaas focussen veel agile-werkwijzen en -projecten zich (voorlopig) vooral op het schrijven van de juiste code en is er, mede door het ontbreken van de rol tester in de meeste werkwijzen, nog onvoldoende aandacht van de positieve rol die testers in projecten kunnen spelen. En dat is, om in de evangelisatie-metafoor te blijven: zonde. Amen.
Overigens, in onze agile-projecten is er uiteraard niet zoiets als "we maken eerst een FO, dan een TO en dan gaan we bouwen, en daarna testen."
Werken in korte iteraties betekent echter: we pakken 1 smart use case bij de horens, en ontwerpen, bouwen, testen en opleveren we precies die ene. Dat is nogal anders dan veel testers (en in minder mate developers, projectmanagers, archtitecten, analisten) op dit moment veelal gewend zijn.
Belangrijkste winst die ik zie is dat er voor enkel achteraf (goed) testen en oplossen in een agile benadering geen tijd meer is. Dat redt je nooit in sprints van 4 weken of minder.
Verder lijken organisaties het moeilijk te vinden om het testen in agile projecten goed op de rit te krijgen. Bij Sogeti krijgen we regelmatig vragen om advies op dit gebied. Met ons pas herziene testproces verbeteringsmodel (TPI NEXT, lancering op 17 november 2009) kunnen we hier gelukkig goed antwoord op geven.
Wat betreft het dogmatisme: er zijn altijd mensen die alle regeltjes willen volgen zonder naar de context te kijken. Welk model of welke methode je ook gebruikt, je moet ze altijd doelgericht en doeltreffend toepassen.
Op het artikel valt niks af te dingen, goed geschreven.
Maar het geeft te denken over de volwassenheid van een deel van onze nationale it-community.
In aanvulling van eerdere opmerkingen (geen aandacht voor de technisch schrijver en onderhoudbaarheid) kan ik ook nog noemen: geen aandacht voor configuration management, geen aandacht voor product lifecycle management
Een systeem maken is meer dan alleen wat code kloppen en unit testen, dat wordt nogal eens vergeten geloof ik.
Als dat werkelijk zo is, dan vraag ik me af hoe dat komt. Binnen het agile manifesto staat nergens iets over unit test dan wel functioneel testen genoemd maar noemt werkende software als maatstaf van voortgang. Ik was mij er niet van bewust dat er mensen zijn die dit anders interpreteren dan dat er een functionele test heeft plaatsgevonden i.t.t. alleen een unit test. Ik heb XP op wikipedia er op nageslagen en die spreekt alleen van unit test en acceptance test, misschien is dat de verwarring? In SCRUM is het volgens mij zeker niet de bedoeling om de functionele test over te slaan binnen de definitie van Done voor "werkende software".
Wat de agile teams vergeten is dat unit tests slechts een beperkt aantal type fouten kan constateren. Ja, inputwaarden kunnen gevalideerd en veldlengtes, CRUD, cursorpositie etc. Maar wat doet een agile team met de GUI? Autorisatie? Sorteringen? Ergonomie? Kortom: er blijven HEEL VEEL bugs in je systeem zitten als je alleen maar een unittest uitvoert!
08-02 Reseller verliest slag om het groene huishouden
08-02 Hadoop lijkt een alleskunner
07-02 Hou zicht op de informatie bij HNW
07-02 Eigen werknemer kan ook een vijand zijn
06-02 Krachtenbundeling NGI en TestNet is goede zaak
03-02 SAN-storage is het fundament van je ICT
03-02 De kracht van 'niet moeten, maar willen'
02-02 Sturen op minimale foutmarge
02-02 Beveiliging videoconferencing vaak een stiefkindje
01-02 Kwaliteitscontroleur is nog geen testprofessional
08-02 Nokia verplaatst smartphoneproductie naar India
08-02 'Nieuwe cookiewet is eenvoudig te omzeilen'
08-02 'ICT-afdeling is te traag voor ontwikkeling apps'
06-02 Banometer: Topstart vacaturemarkt krijgt vervolg
06-02 Duitse PMCS.helpLine neemt Leidse MCH+ over
03-02 Siemens PLM Software introduceert Jack 7.1
03-02 Itemis betreedt Nederlandse markt via Warmer IT
01-02 Microsoft-partner Asapnet zet IT-University op
01-02 Kwaliteitscontroleur is nog geen testprofessional
01-02 Software AG noteert vlakke resultaten voor 2011
|
|
Gemeenten en ICT besparingen
Sommige gemeenten wijzigen hun autonome ICT omgeving in een samenwerkingsverband met als doel het verlagen van ICT......


Testen is in mijn ogen per definitie objectief werk, waarbij je het liefst geen projectpet op hebt - en dan meestal veel gebreken ontdekt.
Aanhaken van testers in een zo vroeg mogelijk stadium verdient zeker aanbeveling, het liefst op het moment van design. Want alhoewel ontwikkelaars soms wat ik noem "doelgericht coderen" geldt dat ook voor ontwerpers.
Idealiter biedt een FO ruimte voor alle regels en uitzonderingen op het functionele vlak, en een TO doet dat op het technische vlak. Waarbij de unieke kijk op de wereld en een positief-kritische aanpak een waardevolle bijdrage zullen leveren
Overigens merk ik het calvinisme ook als je het onderwerp "onderhouden van door Agile-projecten opgeleverde code" aansnijdt ...