Buch-Review: Testgetriebene Entwicklung mit JUnit und FIT (Westphal)

Note: Most articles on this blog are in English, but I review books in the language they are written in. I read the german edition of this book, so this article is in German.

Book details
Title: Testgetriebene Entwicklung mit JUnit und FIT
Authors: Westphal, F.
Publisher: dpunkt
Year: 2006
Pages: 331

Meine Beschreibung

Das Buch gibt eine Einführung in Unit Tests und Testgetriebene Entwicklung (Test-driven Development, TDD). Dabei gibt es Kapitel zu den Grundsätzen von TDD, wie Testgetriebene Programmierung, Refactoring und Häufige Integration. Es folgen Praxistipps zum Schreiben von Unit Tests in Java/Junit, auch für einige schwierig erscheinende Fälle wie Systemgrenzen. Auch isoliertes Testen mit Stubs und Mocks wird behandlet, ganz am Ende folgt noch eine kurze Einführung in Akzeptanztests mit FIT. Das Buch ist gut lesbar geschrieben, und die Codebeispiele machen Sinn. Der Autor versucht öfter, durch Dialoge zwischen 2 gemeinsam programmierenden Entwicklern in Kombination mit ihren Codelisting die Evolution von Code und Ideen und das iterative Vorgehen bei TDD zu veranschaulichen. Die Code-Beispiele orientieren sich dabei an einer Anwendung zum Management einer Leihvideothek, die aber nicht komplett entwickelt wird, sondern eher den Rahmen darstellt.

… und mein persönlicher Eindruck

Das Buch schafft es, den Sinn von Unit Tests zu demonstrieren und auch genug Praxis zu zeigen, als das man sich wirklich traut, es an eigenem Code zu versuchen. Es wird auch auf Testbarkeit von Code eingegangen, und wie man diese erreicht und verbessert. Das Buch versucht nicht zu erklären, wie man Software modular baut, und auch wenn beim Thema Refactoring Themen wie die SOLID-Prinzipien, Dependency Injection oder ein Design Pattern am Rande erwähnt werden, sollte man hierzu doch etwas Vorwissen mitbringen oder es anders nacharbeiten, sonst bleibt die “Einfache Form”, in den der Code laut Buch zu refaktorisieren sei, doch recht schwammig. Im Text wird suggeriert, durch TDD komme der Code schon automatisch in Richtung gutes Design, da man ja den Test zuerst schreibt und sich dabei ein tolles Interface ausdenkt. Das ist natürlich Quark, wenn man von Interface-Design keine Ahnung hat. Der Teil zu Akzeptanztests am Ende ist recht knapp, hat mich aber erstmal auch nicht so interessiert. Wegen den Informationen zu FIT sollte man das Buch aber nicht kaufen. Einige Grundprinzipien werden an unterschiedlichen Stellen im Buch immer wieder wiederholt, aber alles in allem ist der Grad an Redundanz ok (ich habe das Buch von vorne bis hinten durchgelesen). Alles in allem wird das Thema Unittests und TDD praxisnah und verständlich erklärt, und das Buch hat meine Erwartungen erfüllt. Die Teile über Praxistipps und Mocks (Kapitel 7-9) fand ich sehr gut. TDD geht in sehr kleinen Schritten iterativ vor. Mein Eindruck ist allerdings, dass durch TDD allein das große Ganze nicht gefasst werden kann. Das Thema GUI wird nur sehr kurz erwähnt, und auch nur in Bezug auf Weboberflächen, sowas wie Swing komplett ignoriert.

Was ich draus gelernt habe

  • Unit tests geben einem Sicherheit bei der Entwicklung und Änderung (Refactoring) von Software
  • TDD folgt den Prinzipien test-first, refactor, integrate often. Dabei wird iterativ in kleinen Schritten vorgegangen.
  • Die Tests sind auch ein Client (und Tests schreiben für Code, der noch nicht da ist, ist im Prinzip Interface Design), und daher führt gute Testbarkeit auch (mit Einschränkungen, s.o.) zu guten Schnittstellen
Advertisements

About dfspspirit

PhD student in bioinformatics, interested in photography, level design, digital image manipulation, architecture and, of course, bioinformatics.
This entry was posted in IT and computers, Reviews, Software Design and tagged , , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s