Auf den Punkt gebracht

Testgetriebene Entwicklung (Test Driven Development) - Traum und Wirklichkeit

Raoul Naujoks, 19.9.2013

Eine klare und genaue Spezifikation und Software die diese perfekt erfüllt. Das wünschen wir uns alle. Entwicklungsmethoden, die versprechen unsere Wünsche zu erfüllen, oder zumindest den Anschein erwecken, machen daher schnell auf sich aufmerksam.

Testgetriebene Entwicklung bedeutet auf der Ebene kleiner Einheiten (Units), zunächst die Tests und erst dann die zu testende Einheit zu programmieren.

Nüchtern betrachtet haben wir am Ende jeweils die Einheit und die zugehörigen Tests. Programmieren wir die Tests zuerst, so haben wir den Vorteil, während der Programmierung der Einheit bereits Tests laufen lassen zu können. Wir sollten jedoch darauf achten, während oder nach der Implementierung der Einheit ergänzende Tests für implementierungsspezifische kritische Fälle bereitzustellen.

Man könnte auf die Idee kommen, die Tests einer Einheit gleich als deren Spezifikation zu verwenden. Die Vorstellung, eine Spezifikation ist mit einer Testimplementierung gleichzusetzen ist jedoch absolut naiv. Das hat folgende Gründe:

Tests vor den zu testenden Einheiten zu programmieren setzt voraus, dass wir genau spezifiziert haben was wir wollen. Dies ist nicht immer gegeben. So ist bei grafischen Oberflächen oftmals die Entwicklung von Prototypen notwendig. Mit ihnen können wir prüfen, ob unsere Vorstellung auch in der realen Umsetzung ergonomisch ist und vom Design überzeugt. Für solche Prototypen zuvor Testfälle zu programmieren ist allenfalls für die Testfälle sinnvoll, die in jedem Fall erfüllt werden müssen. Prototypen zum Ausprobieren können auch in anderen Fällen komplexerer Anforderungen sinnvoll sein. Beispielsweise bei Textformatierern.

Mein Fazit

Wir sollten die Kirche im Dorf lassen. Testfälle sind keine Spezifikation. Tests sind keine Programmverifikation. Wichtige Testfälle können implementierungsabhängig sein. Bei klarer Spezifikation kann es jedoch sinnvoll sein, Testfälle vor der zu testenden Einheit zu implementieren. Wichtig ist die Reihenfolge nicht, wenn am Ende der Entwicklung einer Einheit, die weder verifiziert noch ein Prototyp ist, auch die Testprozeduren vorliegen. Viel wichtiger ist, dass es die richtigen, teilweise implementierungsabhängigen Testprozeduren sind.



Dieser Text unterliegt dem Urheberrecht. Die Weiterverbreitung, sowie die Übernahme von Passagen die über Zitate hinausgehen, ist untersagt. Der Autor gestattet es ihnen, Kopien für den persönlichen privaten und persönlichen kommerziellen Gebrauch zu speichern und zu drucken.

Dieser Text wird nicht notwendig dauerhaft gespeichert und ist somit nicht zitatfähig.


   Startseite http://www.naujoks-informatik.de        Impressum        Autor und Copyright 2013: Raoul Naujoks, Braunschweig    Stand 19.9.2013