Das Test Driven Development orientiert sich an den Ergebnissen der von Ihnen bestimmten Testfälle. Die zyklische Verfahrensweise stellt sicher, dass der Code erst ins Produktivsystem übertragen wird, wenn alle Anforderungen an die Software erfüllt sind. Das heißt, dass Sie die Codebestandteile so oft refaktorisieren und neu testen, bis der Test nicht mehr als fehlerhaft angezeigt wird. Durch diese Methode reichern Sie die Software schrittweise mit neuen Funktionen an, da Sie nach jedem bestandenen Test einen neuen Quellcode verfassen. Aus diesem Grund zählt TDD auch zu den inkrementellen Vorgehensmodellen in der Software-Entwicklung.
Einzelne Testfälle durchlaufen den Zyklus in der Regel nicht länger als ein paar Sekunden oder Minuten. So machen sich die Resultate schnell im Produktivcode bemerkbar. Damit die Iteration ohne zusätzlichen Aufwand geschieht, brauchen Sie ein TDD-Werkzeug und -Framework. Typischerweise verwenden Entwickler ein Tool zur Build-Automatisierung wie CruiseControl oder Jenkins. Diese erlauben die kontinuierliche und fehlerfreie Integration von Komponenten in den Quellcode. Beliebt bei der Java-Entwicklung sind auch JUnit, Maven oder Ant. Generell gilt: Die Tests werden immer in der gleichen Sprache wie der Funktionscode geschrieben. Für PHP gibt es u. a. die Werkzeuge Ceedling oder CMock.
Aber wie läuft das Testverfahren genau ab? Der Zyklus, dem Programmierer im Test Driven Development folgen, wird auch Red-Green-Refactor-Zyklus genannt. Dieser beschreibt die einzelnen Phasen, die Sie für maximale Effizienz durchlaufen:
- Rote Phase: In dieser Phase denken Sie sich in die Rolle des Nutzers hinein. Dieser möchte den Code auf einfache Weise verwenden. Sie schreiben also einen Test, der Komponenten enthält, die noch nicht implementiert wurden. So müssen Sie eine Entscheidung darüber treffen, welche Elemente für das Funktionieren eines Codes wirklich notwendig sind.
- Grüne Phase: Angenommen, der Test schlägt fehl und wird rot markiert.Nun nehmen Sie die Rolle eines Programmierers ein, der versucht, eine simple Lösung zu finden. Wichtig: Sie schreiben nur so viel Code wie nötig. Diesen integrieren Sie in den Produktivcode, sodass der Test mit grün markiert wird.
- Refactoring: In diesem Schritt wird der Produktivcode regelrecht „aufgeräumt“ und in seiner Struktur perfektioniert. Das heißt, Sie sollten ihn ergänzen und so umstrukturieren, dass er aus Entwicklersicht elegant und verständlich ist. Entfernen Sie z. B. Code-Duplizierungen und bringen Sie ihn so auf ein professionelles Niveau.
Achten Sie darauf, dass sich die einzelnen Aktivitäten nicht überschneiden. Das heißt, dass Sie keine Tests in Phase 2 oder 3 und keinen Produktivcode in Phase 1 und 3 schreiben. Im folgenden Video sehen Sie, wie die testgetriebene Entwicklung in der Praxis funktioniert: