Test Driven Development
Test Driven Development kunnen we definiëren als een ontwikkelmethode waarbij ontwikkelaars alleen nieuwe code schrijven op basis van een mislukte geautomatiseerde test. Hiermee wordt met name duplicatie van code te voorkomen. De afkorting van Test Driven Development is TDD. Het primaire doel van TDD is om de code duidelijker, eenvoudiger en bovendien bug-vrij te maken.
Test Driven Development begint al met het ontwerpen en ontwikkelen van geautomatiseerde, herhaalbare testen voor iedere kleine functionaliteit van een applicatie. In de Test Driven Development methode wordt eerst de test ontwikkeld die specificeert en valideert wat de code moet doen.
In het normale ontwikkelproces programmeren we eerst de programmacode en die we vervolgens testen. Bij TDD beginnen we met testen die vervolgens fout lopen omdat we ze al vóór de ontwikkeling uitvoeren. Om de test te halen, moet het ontwikkelingsteam dus de code ontwikkelen en telkens uitbreiden.
Het eenvoudige concept van Test Driven Development is testen te ontwerpen en uit te voeren voordat nieuwe code wordt geschreven. Het schrijven van dubbele code voorkomen we hiermee. Dit komt omdat we slechts de kleinste hoeveelheid programmacode schrijven, die genoeg is om een test te doen slagen. Als de kleine test geslaagd is loopt het testproces op de volgende foutmelding waarvoor we dan weer code moeten schrijven. Deze cyclus gaat dus door totdat de test foutloos wordt doorlopen. Feitelijk zijn de tests niets anders dan de requirements van de applicatie waarvan we moeten vaststellen of er aan is voldaan.
Test-driven ontwikkeling is een proces van het ontwikkelen en uitvoeren van geautomatiseerde tests voor de daadwerkelijke ontwikkeling van de applicatie.
Test Driven Development is dus een iteratief ontwikkelingsproces dat tot de Agile familie van methodes behoord. TDD komt dan ook meestal tegen in een Agile omgeving. Iedere iteratie begint met een reeks testen die zijn geschreven voor een nieuw stuk functionaliteit. Al in de eerste fase vinden de testen plaats. In de volgende fase van de iteratie schrijven we de toepassingscode met de bedoeling alle testen van de iteratie foutloos te doorlopen. Zodra de toepassingscode gereed is, voeren we testen uit.
Eventuele fouten in de testrun worden vastgelegd en er wordt meer programmacode geschreven en opnieuw verwerkt om de testen wel te laten slagen.
Als je TDD als ontwikkelmethode omschrijft zijn de volgende fasen te onderkennen:
In fase 1 verzamelen we de applicatie requirements en leggen die vast.
TDD begint met het definiëren van requirements in termen van testcases. De requirements leggen we gedetailleerd vast.
Deze lijst met tests werken we voor iedere requirement uit. Vervolgens worden in fase 1 de testcases voor alle requirements geschreven.
Bij de eerste test is er helemaal nog geen code aanwezig, wat een compilatiefout opleverd. Dat is het enige doel van het schrijven van de eerste test. Dit dwingt de ontwikkelaar om alleen die code toe te voegen die nodig is.
In deze fase proberen we gewoon om de testen uitvoeren.
Als een test voor de eerste keer wordt uitgevoerd, krijgen we een foutmelding. Deze fout geeft duidelijk aan dat de code voor deze functionaliteit niet aanwezig is.
Na het mislukken van de test in fase 2, zal de ontwikkelaar een logische stap ondernemen en de gewenste code toevoegen.
Met deze wijziging gaan we terug naar fase 2 waarin de testen opnieuw worden uitvoert. Benieuwd naar het testresultaat dat we deze keer krijgen.
Deze test loopt waarschijnlijk fout omdat er een fout in de programmacode zit. Op basis van deze testfout past de ontwikkelaar de code net genoeg aan om de test goed te doorlopen. Ondertussen zijn we alweer in fase 3 teruggekeerd. Nu kunnen we de testen van fase 2 weer uitvoeren. De testresultaten na deze verandering moeten aantonen of de code nu wel werkt. Zodra alle testen zijn geslaagd is de conclusie dat de iteratie is voltooid.
Als er meer functies zijn die we in de applicatie moeten implementeren, zal de applicatie dezelfde fasen opnieuw doorlopen. Deze keer met nieuwe functies en nieuwe testen. Het toevoegen van nieuwe functies kan echter tot gevolg hebben dat we eerder goed geteste code moeten aanpassen. De applicatie gaat zich namelijk anders gedragen. Dit betekent in TDD dat we eerst testgevallen maken om het nieuwe wenselijke gedrag vast te stellen. Als dit niet het geval is wijzigen we de code en testen we opnieuw.
Mogelijk is dit een vertaling van Google Translate en kan fouten bevatten. Klik hier om mee te helpen met het verbeteren van vertalingen.