Als testgetriebene Entwicklung (auch testgesteuerte Programmierung, engl. test first development oder test-driven development, Abkürzung TDD, manchmal auch scherzhaft Extreme Testing) bezeichnet man eine Agile Methode zur Entwicklung eines Computerprogramms, bei der die Programmierer Software-Tests vor den zu testenden Komponenten entwickeln. Unit-Tests der testgetriebenen Entwicklung sind Grey-Box-Tests statt White-Box-Tests. Die wohl bekannteste Agile Methode ist die des Extreme Programming.
Klassischerweise werden Tests nach oder parallel unabhängig zum zu testenden System entwickelt. Dies kann unter Umständen dazu führen, dass nicht die gewünschte bzw. erforderliche Testabdeckung erzielt wird. Mögliche Gründe dafür sind unter anderem:
Die testgetriebene Entwicklung ist ein Ansatz, den Gründen für eine nicht ausreichende Testabdeckung und einigen Nachteilen der White-Box-Tests entgegenzuwirken.
Bei Unit-Tests werden Test-Gerüst und Unit-Gerüst parallel entwickelt. Die eigentliche Programmierung erfolgt in kleinen Mikroiterationen. Eine solche Iteration, die nur wenige Minuten dauern sollte, besteht aus drei Hauptschritten:
Diese Schritte werden solange wiederholt, bis dem Entwickler keine sinnvollen Tests mehr einfallen, die fehlschlagen würden und damit die Unit für den Augenblick fertig ist. Die konsequente Umsetzung dieses Vorgehens führt zu evolutionärem Design, einem Entwurfsstil, der die ständige Weiterentwicklung eines Systems in den Vordergrund rückt.
Weil der einzelne Unit Test sowohl Eigenschaften eines White-Box-Tests als auch eines Black-Box-Tests aufweist, wird er als Grey-Box-Test bezeichnet.
Bei System-Tests werden die System-Tests vor dem eigentlichen System entwickelt oder zumindest spezifiziert. Aufgabe des Systems ist bei testgetriebener Entwicklung nicht mehr, schriftlich formulierte Anforderungen, sondern spezifizierte System-Tests zu erfüllen.
In beiden Fällen wird großer Wert auf eine möglichst vollständige Testautomatisierung gelegt. Für testgetriebene Entwicklung ist es erforderlich, dass sämtliche Tests einfach ("per Knopfdruck") und möglichst schnell ausgeführt werden können. Für Unit-Tests bedeutet das wenige Sekunden, für Systemtests meist maximal einige Minuten.
Neben dem Entgegenwirken einiger Nachteile des klassischen "Hinterher"-Testens besitzt die testgetriebene Entwicklung noch einige weitere Vorteile.
Nennenswerte Vorteile sind:
Bei der Entwicklung komplexer Systeme in denen mehrere Komponenten zusammenarbeiten müssen, die unabhängig voneinander entwickelt werden z.B. die Entwicklung einer Geschäftsanwendung die eine Datenbank als Persistenzmedium verwendet, werden Mock-Objekte verwendet, um einzelne Komponenten wie z. B. die Datenbankzugriffe ohne die notwendige Existenz einer Datenbank testen zu können. Das Mock Objekt simuliert in dem Fall das Verhalten einer Datenbank mit einer festgelegten Verhaltensweise.
Die testgetriebene Umsetzung von Akzeptanztests und Systemtests wird beispielsweise durch FIT (Framework for Integrated Tests)] möglich. Eine populäre FIT-Variante stellt Fitnesse dar, ein Wiki-Server mit integrierter Testerstellung- und Testausführungsumgebung.
Vorgehensmodell (Software) | Testen (Software) | Programmierparadigma
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Testgetriebene Entwicklung".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world