Testen en agile
Agile gaat ook over het leveren van kwaliteit. Om dat te toetsen zal een agile team goed moeten testen. Veel gebruikte testvormen zijn bijvoorbeeld test driven development (TDD) en A/B testen. TDD is een instrument van de ontwikkelaar en toetst de correctheid van een functie. Bij A/B testen staat de eindgebruiker centraal en toetst het gebruikersgemak van een functie.
Test driven development (TDD)
TDD, ontwikkeld door Kent Beck, is een hulpmiddel voor ontwikkelaars om goed geschreven modules te ontwikkelen die een reeks bewerkingen correct uitvoeren. Waar bij bekende module en systeemtesten het team eerst de software en dan gaat testen, is dat bij TDD andersom. Het agile team zet de eisen om in testgevallen voordat het de software ontwikkelt. Vervolgens past het team de software net zo lang aan totdat de software goed werkt. Werken met TDD vereist een omgeving waarbinnen testen het team testen geautomatiseerd kan uitvoeren. Overigens is TDD ook bekend onder de naam test first development (TFD) zoals beschreven binnen Xtreme Programming (XP).
TDD- ontwikkelcyclus
In het boek Test-Driven Development by Example beschrijft Kent Beck de TDD-ontwikkelcyclus uitgebreid. In de volgende tabel vind je een korte samenvatting.
STAP | Naam | Omschrijving |
---|---|---|
1 | Een test toevoegen | Het toevoegen van een nieuwe functie begint met het schrijven van een test die slaagt als aan de specificaties van de functie voldoet. |
2 | Alle testen uitvoeren | De nieuwe test moet falen om verwachte redenen Dit toont aan dat nieuwe code nodig is voor de gewenste functie. Het valideert dat de tests correct werken. Het sluit uit dat de nieuwe test gebreken vertoont en altijd zal slagen. |
3 | De eenvoudigste code schrijven | Onelegante of harde code is aanvaardbaar, zolang het de test maar doorstaat. Het team zal de code zal hoe dan ook aanscherpen in stap 5. Niemand mag code toevoegen die verder gaat dan de geteste functionaliteit. |
4 | Alle tests moeten nu slagen | Als er tests mislukken, moet de nieuwe code worden herzien tot ze wel slagen. Dit zorgt ervoor dat de nieuwe code aan de testvereisten voldoet en geen bestaande functies afbreekt. |
5 | Refactor indien nodig | Refactor met behulp van tests na elke refactor om ervoor te zorgen dat de functionaliteit behouden blijft. De code wordt geherformuleerd met het oog op leesbaarheid en onderhoudbaarheid. |
6 | Herhaal | Het team herhaalt de bovenstaande cyclus voor elk nieuw stuk functionaliteit. Tests moeten klein en incrementeel zijn. |
TDD en acceptatietest gestuurde ontwikkeling
TDD is verwant aan, maar verschilt van acceptatietest gestuurde ontwikkeling, oftewel ATDD. ATDD is een communicatiemiddel tussen klant, ontwikkelaar en tester om ervoor te zorgen dat de eisen goed gedefinieerd zijn. Tests die bij TDD worden gebruikt kunnen vaak worden afgeleid van ATDD-tests, omdat de ontwikkelde modules een deel van een eis implementeren. Deze ATDD-tests moeten leesbaar zijn voor de klant. Bij TDD-tests is dat geen vereiste.
A/B testen
A/B-testen is een onderzoeksmethode voor gebruikerservaring en bestaan uit een gerandomiseerd experiment dat gewoonlijk twee varianten (A en B) omvat. Het omvat de toepassing van statistische hypothese tests of “two-sample hypothesis testing” zoals gebruikt in de statistiek. A/B-testen is een manier om meerdere versies van een enkele variabele te vergelijken, bijvoorbeeld door de reactie van een proefpersoon op variant A te testen tegen variant B, en te bepalen welke van de varianten effectiever is. Een negatief aspect van A/B testen is de extra programmering.
Een voorbeeld van A/B-tests op een website
Door bezoekers willekeurig twee versies van een website voor te schotelen die alleen verschillen in het ontwerp van een enkel knopelement, kan de relatieve doeltreffendheid van de twee ontwerpen worden gemeten. Bezoekers die situatie A voorgeschoteld krijgen drukken bijvoorbeeld in 17% van de bezoeken op de knop. Bezoekers die situatie B voorgespiegeld krijgen, drukken in 25% van de bezoeken op de knop. De gekozen oplossing weergeven door situatie B is succesvoller. Dit wordt ook wel aangeduid met de omzettingskoers of ‘conversion rate’.
Conclusie
Naast de al bekende testen zoals unit-, systeem- en integratietesten zijn door de agile ontwikkeling nieuwe bruikbare testen zoals TDD en A/B testen opgekomen, die agile teams veelvuldig gebruiken.
Wil je meer weten over bijvoorbeeld agile transformaties, dan is onze blog Naar een meer agile organisatie een goed startpunt. Liever live sparren met Henny Portman of collega over Agile?
Henny Portman is blogger, recensent, auteur, internationaal spreker, trainer en consultant portfoliomanagement en P3M3 Maturity.