Kurz erklärt
Bei TDD schreibt man zuerst einen fehlschlagenden Test, dann gerade so viel Code, dass er besteht, und räumt danach auf. Dieser Zyklus heißt Red – Green – Refactor.
Genauer
TDD zwingt dazu, vor dem Programmieren zu überlegen, was der Code leisten soll. Die Tests dokumentieren das Verhalten, jede Funktion ist testbar entworfen (Dependency Injection hilft), und das spätere Refactoring ist abgesichert.