Frage zu Test-Driven Development (TDD)

Zrebna

Bekanntes Mitglied
Hi!

Eine Frage zu Test-Driven Development:

Ist dieser Ansatz nur auf neuen Code anwendbar?
Das heißt, bevor ich eine Klasse erstelle, schreibe ich den Test = TDD.

Oder kann man TDD auch bei Bugfixes anwenden - Beispiel:
Eine Klasse mit Code existiert schon. Es tretet in dieser Klasse ein Fehler auf.

Bevor man den Fehler an einer kleinen Stelle behebt (vielleicht ist nur eine Codezeile betroffen), schreibt man erst den Test, der den Fehler reproduziert und macht erst danach die Fehlerbehebung.

Spricht man hier semantisch ebenfalls von TDD?

Lg
Zrebna
 
Du kannst TDD immer anwenden, wenn Du erst einen Test schreiben kannst.

Das war für mich bei legacy Code immer sehr hinfreich, denn es gibt nichts schlimmeres, als wenn Du einen Fehler ausbaust und dann kommt es - auf Grund fehlender Tests - irgendwann erneut zu diesem Fehler.

Ich habe also aktiv Test geschrieben, den den Fehler nachstellen um dann den Fehler zu beheben. In dem Legacy Code war das aber dann kein Unit Test, da der Code nicht einfach nur in Units zu testen war.

Aus meiner Sicht ist das TDD sogar naheliegend, denn bei einem Fehler will man diesen ja erst nachstellen...
 
100 % agree!

Ich denke auch, dass es z.B. bei Bugfixes erstmal Sinn macht noch vor der Fehlerbehebung (TDD) den Fehler durch einen gut geschriebenen Test zu reproduzieren -> Testlauf soll 'failen'.
Dadurch kann man sich sicher sein, dass der Fehler auch gut behoben worden ist, sobald der Testlauf erfolgreich durchläuft und ich glaube auch, dass durch das nachträgliche Schreiben der Fehlerbehebung der Bugfix selber an Qualität gewinnen könnte.

Bin mir nur nicht sicher gewesen, ob der die Bezeichnung 'TDD' hier semantisch korrekt ist. Also wusste nicht, ob TDD (wie es Kent Beck definiert hat) nur auf Unit-Tests bezogen ist, oder für alle Testarten (z.B. Integrationstests) ebenso gilt und ob es auch bei Bugfixes zutrifft, also wenn schon Code existiert.

Danke für die Klärung 🙂

Kurz dazu noch:
In dem Legacy Code war das aber dann kein Unit Test, da der Code nicht einfach nur in Units zu testen war.

Wie nennst du dann semantisch diese Testart von der Begrifflichkeit her? Das sind dann Integrationstests, wenns keine Unit-Tests waren, weil ja vermutlich mehrere Units/Komponenten im Zusammenwirken getestet werden mussten, oder?
 

Zurück
Oben