Buch-Rezension zu „Test-Driven Development“

Test-Driven Development By Example“ von Kent Beck erschien 2002 bei Addison-Wesley. Kent Beck erklärt die testgetriebene Entwicklung von Software anhand von 2 Beispielen. Gewissermassen eine Pair-Programming Lektion in Buchform.

 
Zum Inhalt
Der erste Teil des Buches widmet sich dem Money-Beispiel in Java. Die zu erstellende Klasse soll verschiedene Geldbeträge in unterschiedlichen Währungen verrechnen können. Die Problemstellung des Beispiels ist für jeden verständlich und dennoch genügend komplex, um den Vorteil von TDD aufzeigen zu können.

Im zweiten Teil erstellt Kent Beck ein xUnit Testrunner in Python. So wird testgetrieben ein Programm zum automatischen ausführen von Tests geschrieben. Man wird am Ende nicht wirklich viel von Python verstehen, aber es liefert einen interessanten Einblick in die Funktionsweise eines xUnit-Tools.

Der dritte Teil behandelt Patterns für Test-Driven Development. Hier wird aufgezeigt, wie sich TDD mit anderen Themen integrieren lässt. Seien dies Mocks, Fakes, Commits die sauber und kompilierbar sein müssen bis hin zur Erinnerung an Auftraggeber, das Programmierer auch Menschen sind und man vielleicht ein wenig Geld für bequeme Stühle ausgeben könnte…

 
Stärken
Kent Beck gelingt es sehr gut die Grundprinzipien von TDD zu zeigen. Wie geht man vor? Was bedeutet zuerst testen nun konkret? Beck erstellt sich zuerst eine Liste mit Aufgaben und arbeitet diese ab. Taucht etwas wichtiges auf, das aber nicht gleich angegangen werden kann, wird es aufgenommen. Diese sehr einfache Methode hilft beim zielgerichteten vorgehen und liefert einem einen guten Überblick über den Fortschritt.

Es gelingt ebenfalls gut zu zeigen wie man vorgehen kann, wenn nicht alle Anforderungen zu Beginn des Projekts klar sind. Schrittweise zu verfeinern ist die einzige Alternative zum warten bis alles klar ist. Sind die Tests gut und möglichst frei von Redundanzen, hat man ein brauchbares Fundament für die nächsten Schritte.

Ich konnte viel bei der Schrittgrösse lernen. Wenn klarer ist, wo man hin muss, kann man schneller gehen und mehr mit einer Iteration machen. Ist die Anforderung unklar, geht es halt nur in Babysteps vorwärts. Dieses dynamische variieren gab mir einige weitere Inputs die mir zur Komplettierung meines Verständnis von TDD noch fehlten.

Ebenfalls gut war der Hinweis, dass man den eingeschlagenen Weg abbrechen soll, wenn man erkennt, dass dieser nicht dorthin führt, wo man hin will. Nicht lange darüber nachdenken und auch nicht krampfhaft versuchen, es doch noch hin zu bekommen. Ein sauberer Schnitt und man kann hinter die richtige Lösung.

 
Schwächen
Der Code wird Teil für Teil erzeugt, doch fehlt am Ende leider ein Abdruck wo all die Teile zusammen abgebildet werden. Wie die einzelnen Klassen am Ende aussehen wird man nur herausfinden wenn man die Beispiele 1 zu 1 nachprogrammiert. Fürs Verständnis wär es hilfreich gewesen, nicht nur die Code Metriken aufzulisten, sondern die 91 Zeilen Code abzudrucken. Diese 2 zusätzlichen Seiten hätten sehr viel gebracht.

Einige der gezeigten Beispiele verursachen Magenschmerzen. Bei Pluggable Selector wird versucht, zahlreiche Subklassen zu vereinen, die sich nur im Ausgabeformat der Methode print() unterscheiden. Die erste Alternative erinnert einem sehr stark an das Beispiel, das die Anti-IF Campaign benutzt. Hier ist es zwar ein Switch-Statement, aber genauso problematisch.
Das 2. Beispiel nutzt Reflection, was es auf 2 Zeilen reduziert. Nun ist es zwar kurz, aber keiner versteht mehr was gemacht wird – ausser man beschäftigt sich länger mit der Methode, was sicher nicht der Sinn der Sache sein kann. Von all den Seiteneffekten ganz zu schweigen. Ein solch unnötiges und schlechtes Beispiel verwirrt nur und hätte weggelassen werden können.

Der Wechsel von Java zu Python und im Anhang wieder auf Java hätte man meiner Meinung nach auch sein lassen können. Der ungewohnte Syntax von Python stört beim Verständnis der Beispiele mehr als er nutzt. Ohne weiteres hätte man das Beispiel zu xUnit auch in Java machen können.

 
Fazit
TDD by Example behandelt die Arbeitsweise der testgetriebenen Entwicklung. Das Buch ist sehr gut um zu zeigen, wie am Ende alles zusammenpasst. Allerdings fehlt zu viel von den technischen Grundlagen um mehr zu machen als einfache Beispiele. Dazu sind Test Driven und The Art of Unit Testing deutlich besser geeignet. Die 3 Bücher ergänzen sich von dem her recht gut.

Ist das Buch ein Must-Read? Das ist schwer zu sagen. Ich fand es gut um einige offenen Fragen zu beantworten. Diese finden sich sicher auch in den anderen beiden Büchern, wenn auch nicht so gut wie hier. Mir gefiel aber der Stil von Kent Beck und so habe ich davon profitieren können.

Am besten wirft man vor dem Kauf einen Blick ins Buch. Gefällt einem der Stil und die Beispiele, sollte man es sich kaufen. Andernfalls verpasst man nicht wirklich viel.

 
Zum Buch
Test-Driven Development By Example“ von Kent Beck, 2002 Addison-Wesley, ISBN 978-0-321-14653-3, 240 Seiten

Ein Gedanke zu „Buch-Rezension zu „Test-Driven Development““

Kommentare sind geschlossen.