Der Begriff Test-Driven-Development, auch Test-First-Ansatz, wurde durch Kent Beck in den späten 1990er Jahren geprägt. TDD ist eine Vorgehensweise, die sich in der Softwaretechnik vor allem im Bereich der agilen Vorgehensmodelle, insbesondere im Extreme-Programming, herausgebildet und später auch als wichtiger Bestandteil des Behaviour-Driven-Development-Ansatzes (BDD) etabliert hat.
Red-Green-Refactoring, die drei Phasen eines TDD-Zyklus
Im Test-Driven-Development wird konsequent der „Test-First Ansatz“ verfolgt, bei dem zunächst ein vollständig automatisierter Testfall entwickelt wird, der scheitern soll, weil noch keine Implementierung der Funktionalität vorliegt. Dies ist die sogenannte „Rot-Phase“.
Darauf folgt die „Grün-Phase“. Hier erfolgt die Entwicklung des Production-Codes um den Testfall vollständig zu erfüllen, jedoch rein Problemorientiert, ohne weitere Optimierungen des Codes.
Der letzte Schritt besteht darin, den Code noch einmal einer Restrukturierung zu unterziehen, um die Implementierung zu optimieren. Dies wird dann auch als „Refactoring-Phase“ bezeichnet.
In der Refactoring-Phase sollte man sich mit den folgenden Fragestellungen beschäftigen:
- Ist es möglich Wiederholungen im Code reduzieren, sind die Clean-Richtlinien, der Team-Styleguide erfüllt?
- Wäre eine effizientere Implementierung möglich und ist die gewünschte Funktionalität vollständig erfüllt?
- Ist meine Testsuite aussagekräftig?
- Liefert meine Testsuite valides Feedback?
- Sind die Tests isoliert?
… dies sollte, bei konsequenter Umsetzung zu einer verlässlicheren und vollständigen Software von hoher Qualität führen.
Zusammenfassend handelt es sich also um drei einfache Schritte, die iterativ wiederholt werden:
- Schreiben eines Tests für eine Funktionalität, die als nächstes implementiert werden soll
- Implementierung der Funktionalität, bis der Test erfolgreich durchläuft
- Sinnvolle Restrukturierung des Codes
Fazit
Letzten Endes lässt sich das Test Driven Development auf die oben beschriebenen drei einfachen Phasen herunterbrechen, was in der Praxis auch in sehr schnellen Entwicklungszyklen resultiert und bei effektiver Umsetzung zu einer hohen Softwarequalität, sowohl hinsichtlich des Grades der Erfüllung der Anforderungen, als auch hinsichtlich der Reduktion der Bug-Rate, führt. Vor diesem Hintergrund hat sich später dann auch der Begriff des „RED-GREEN-REFACTORING“-Frameworks etabliert.
Verwandte Begriffe