TDD, of voluit Test Driven Development, is een aanpak van ontwikkeling waarbij we vertrekken van het schrijven van tests.
Alvorens we de code schrijven voor een bepaalde functionaliteit, bedenken we welk resultaat we precies verwachten bij het triggeren van een bepaalde actie en zetten we dit alvast klaar in een test.
Een voorbeeld hiervan is een date mapper functionaliteit. Wanneer je bepaalde input aan de mapper doorgeeft, verwacht je dat die er in een ander formaat uitkomt.
$mappedDate = DateMapper:AmericanDatetoDefaultDate('05/27/2005');
self::assertEquals('2005-05-27', $mappedDate);
Wanneer we deze test laten lopen, zal deze uiteraard falen en dat is ook de bedoeling.
De volgende stap is om een minimum aan code te schrijven om de test de doen slagen. Daarna voeren we de test opnieuw uit en dit proces herhalen we tot alle assertions succesvol zijn en er dus aan alle verwachtingen voldaan werd. Zodra de test succesvol gelopen heeft, kijken we na hoe we de code kunnen optimaliseren of vereenvoudigen. Is de test succesvol met een minimum aan code, dan schrijven we de volgende unit test uit.
Dit continue proces kan als volgt weergegeven worden: