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.

STAPNaamOmschrijving
1Een test toevoegenHet toevoegen van een nieuwe functie begint met het schrijven van een test die slaagt als aan de specificaties van de functie voldoet.
2Alle testen uitvoerenDe 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.
3De eenvoudigste code schrijvenOnelegante 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.
4Alle tests moeten nu slagenAls 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.
5Refactor indien nodigRefactor 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.
6HerhaalHet 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.

Test-driven_development

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.

A/B_testing

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? 


Contact opnemen


Henny Portman is blogger, recensent, auteur, internationaal spreker, trainer en consultant portfoliomanagement en P3M3 Maturity.