TDD - Test Driven Development
Test Driven Development (TDD) ist eine Methode der Softwareentwicklung, bei der man mit einem Test beginnt und dann das Feature implementiert.
Was ist ein "Test"?
Als "Test" bezeichnen wir ein kurzes Stück Code, welches überprüft, ob ein bestimmter Teil der Applikation richtig arbeitet - d.h. wir schreiben Code um Code zu testen.
Zum Beispiel kann ein Unittest prüfen, ob eine Funktion die erwarteten Ergebnisse liefert oder nicht. In diesem Beitrag geht es ausdrücklich nicht um das manuelle Testen einer Programmierung oder Webseite indem man sie manuell benutzt und "sich durchklickt".
Test Driven Development (TDD) ist ein Ansatz zur Entwicklung von Software, bei dem Tests vor dem eigentlichen Code geschrieben werden.
Anstatt den Code zuerst zu erstellen und dann zu testen, werden die Tests zuerst geschrieben und der Code anschließend entwickelt, um diese Tests zu bestehen. TDD zielt darauf ab, qualitativ hochwertigen Code zu produzieren, der zuverlässig funktioniert und leicht gewartet werden kann.
Der TDD-Prozess besteht aus drei Schritten: Schreiben eines Tests, Ausführen des Tests und Refaktorisieren des Codes.
Ein Beispiel für Test Driven Development
Angenommen, wir möchten eine Funktion zur Addition zweier Zahlen entwickeln. Dann beginnen wir damit, den Test zu schreiben der prüft, ob die Funktion die richtige Summe zurückgibt. Zu diesem Zeitpunkt würde der Test fehlschlagen, da der Code für die Addition noch nicht vorhanden ist.
Nun entwickeln wir den Code für die Addition, um den Test zum Bestehen zu bringen. Der Test wird erneut ausgeführt und sollte nun erfolgreich sein.
Dieser Zyklus wird wiederholt, indem neue Tests hinzugefügt werden, um neue Funktionen zu überprüfen oder vorhandene Funktionen zu verbessern. Dadurch entsteht ein umfangreiches Testset, das sicherstellt, dass der Code zuverlässig funktioniert - auch wenn an der Applikation mal etwas geändert wird.
Was sind die Vorteile von TDD?
Frühzeitige Fehlererkennung: Durch das Schreiben von Tests zu Beginn der Entwicklung können potenzielle Fehler frühzeitig erkannt und behoben werden.
Verbesserte Codequalität: Der Fokus auf das Schreiben von Tests führt zu einem besser strukturierten und gut getesteten Code.
Einfache Wartung: Durch den umfangreichen Testbestand ist es einfacher, den Code zu warten und Änderungen vorzunehmen, ohne versehentlich bestehende Funktionalitäten zu beeinträchtigen.
Vertrauen in den Code: Durch die umfassenden Tests wird das Vertrauen in den Code gestärkt, da die Funktionen ordnungsgemäß überprüft wurden.