Begriff

TDD

Info

Ursprünglich auf Französisch verfasst. Von KI übersetzt — der Sinn wurde bewahrt, nicht der Stil.

Kurzdefinition

Test Driven Development — Entwicklungsdisziplin, bei der der Test, der das erwartete Verhalten beschreibt, vor dem Code geschrieben wird, der es implementiert.

Ausführliche Definition

Im etablierten technischen Sinn bezeichnet TDD einen kurzen, wiederholten Zyklus: einen fehlschlagenden Test schreiben, den minimalen Code schreiben, der ihn bestehen lässt, den Code umbauen, ohne den Test zu brechen. Es ist ebenso eine Praxis des Codeentwurfs wie eine Testpraxis.

In den Artikeln dieses Blogs wird der Begriff in einem engeren Sinn verwendet: Der dem Code vorausgehende Test interessiert als Spezifikationsartefakt. Er trägt das Was — das erwartete Verhalten, das, was wahr bleiben muss —, während der Code das Wie trägt. Als solcher betrifft er das Produkt ebenso wie die Entwicklung: Er hält eine Einigung über ein Verhalten in einer Form fest, die die Maschine auswertet und die daher nicht stillschweigend von der Implementierung abweichen kann.

Gebrauch im Feld

Diskussionen über die Verringerung der Zahl erzeugter Defekte, Festlegung einer Qualitätspolitik, Abwägung über die Kosten von Tests, Formalisierung der Abnahmekriterien eines Features.

Synonyme und Varianten

Test Driven Development · testgetriebene Entwicklung · Test-First.

Nicht zu verwechseln mit

  • Automatisierte Tests — von einer Maschine ausgeführte Tests, ohne Angabe darüber, wann sie geschrieben wurden; nach dem Code geschrieben, stellen sie fest, was er tut.
  • BDD (Behaviour Driven Development) — Formulierung der erwarteten Verhaltensweisen in einer für Nicht-Entwickler lesbaren Sprache, ausgerichtet auf das Gespräch mit dem Fachbereich.
  • Regressionstests — Testsatz, der erneut ausgeführt wird, um zu prüfen, dass ein bestehendes Verhalten nicht gebrochen wurde, unabhängig davon, ob er vor dem Code entstanden ist.
  • QA — Funktion, die Qualitätskriterien festlegt und prüft; TDD ist eine Praxis, die die Entwickler selbst tragen.

Beispiele

„Der Test beschreibt das Was. Der Code implementiert das Wie.“

Ein erwartetes Verhalten, das vor der Implementierung durch einen Test festgehalten wurde, bleibt auch nach mehreren Umbauten des Codes überprüfbar, während die Prosa, die es beschrieb, längst niemand mehr liest.

Mehrdeutigkeiten / Debatten

Das Kürzel wird oft für jede Praxis automatisierter Tests verwendet, was das Einzige verwischt, das es kennzeichnet: dass der Test vor dem Code entsteht.

Sein Wert bleibt umstritten — Entwurfspraxis für die einen, zusätzlicher Schreibaufwand für die anderen —, und die Debatte dreht sich selten um denselben Gegenstand, je nachdem, ob man vom vollständigen Zyklus oder nur von Test-First spricht.