Testen

Leckere Tapas und lästige Tests

Tapas kennen wir. Das sind die köstlichen, mundgerechten Häppchen aus der spanischen Küche. Tapas sind viel mehr als nur kleingeschnittenes Obst oder eine nussige Knabberei. Sie bestehen aus mehreren, oft aufwendig zubereiteten Zutaten, die gemeinsam eine interessante Gesamtkomposition ergeben. Und was hat das mit IT-Tests zu tun? Kommt gleich!

Tests kennen wir auch. TDD (Test Driven Development) und BDD (Behaviour Driven Development) haben den Umgang mit automatischen Software-Tests bekannt gemacht. Test-First heißt das zugrunde liegende Schlagwort. Es steht für das Motto: Entwickle keinen Produktionscode, zu dem du nicht vorher mindestens einen Test geschrieben hast. In manchen Fällen ist diese Vorgehensweise Straight Forward. Beispiel: Ein unstrukturierter Text muss auf spezielle Weise zerlegt werden. Dafür braucht es eine neue StringUtil-Methode im Produktionscode. Bevor wir diese schreiben, erzeugen wir in der StringUtilTest-Klasse mindestens eine neue Testmethode. Zunächst kompilieren die nicht. Das ändert sich, wenn wir eine leere Methode in der StringUtil-Methode erzeugen. Jetzt sind die Tests ausführbar und natürlich alle rot. Die Arbeit am Produktionscode kann jetzt beginnen. Die Test-First-Vorgehensweise haben wir damit erfolgreich angewandt.

Manchmal ist das Umsetzen dieser Vorgehensweise nicht so Straight Forward. Beispiel: In einer IT-Landschaft geht ein neuer Adress-Service online. In dem von uns betreuten Softwaresystem sollen Service-Adressen abgerufen und verarbeitet werden. Wir müssen eine neue Client-Schnittstelle aufsetzen. Wie sieht hier Test-First aus? Das hängt ein Stück weit von der verwendeten Technologie ab. Außerdem ist zu klären, ob wir unseren Schnittstellentest als Unit-Test aufsetzen oder besser als Integrations- oder Systemtest. Das Testen ist an dieser Stelle sehr lästig, denn als erstes interessiert sich der Entwickler für den sogenannten "technischen Durchstich", d.h. kann ich überhaupt den neuen Service erreichen und sinnvolle Daten abrufen. Häufig ist erst dann der Kopf frei für die Frage: „Und wie kann ich das jetzt automatisch testen?“

Bei einem Life-Coding erlebte ich, wie „Uncle Bob“ (Robert C. Martin) den Test-First-Ansatz eindrucksvoll demonstrierte und dafür mit großer Begeisterung schwärmte. Bei einem BDD-Workshop mit dem BDD-Begründer Dan North begriff ich, wie wichtig automatische Tests für die Softwareentwicklung sind. Obwohl ich – z.B. beim Schreiben von Utility-Methoden – hier und dort
Test-First anwende, ist das konsequente Anwenden dieser Methode nie richtig in meinem Alltag angekommen. Ich weiß von einigen Entwicklern, dass es Ihnen damit nicht anders geht.

Ich fürchte, dass das strenge dogmatische Auftreten von Test-First-Evangelisten dem Schreiben von automatischen Softwaretests vielleicht sogar im Wege steht. Meiner Meinung nach ist das Nach-vorne-Ziehen von Tests auch gar nicht entscheidend dafür, dass Tests die Softwareentwicklung treiben.

Meiner Erfahrung nach ist das Motto "Write Tapas" genauso geeignet, die Softwareentwicklung durch Tests zu gestalten. Und das auf sympathischere, weniger dogmatische Art. Das Wort „Tapas“ ist hier als Akronym und als Metapher zu verstehen:

Write

T est code

a nd

p roduction code

a lways

s imulataneously

Simultaneous, also gleichzeitig, ist im übertragenen Sinn gemeint. Wenn ich neuen Produktionscode von der Fachseite testen lasse, ohne speziellen Testcode dafür zu haben, dann habe ich jedenfalls keine Tapas. Testcode und Produktionscode sind wie aufwendig zubereitete Zutaten für eine Tapa. Zusammen ergeben sie eine kleine raffinierte Gesamtkomposition, bei der die einzelnen Zutaten bewusst aufeinander abgestimmt wurden. Dennoch bilden sie kleine, mundgerechte Häppchen. Welche Zutat dabei zuerst in die Hände genommen und bearbeitet wird, spielt keine wesentliche Rolle. Wenn in meiner Entwicklungsumgebung zuerst der Produktionscode läuft und ich im direkten Anschluss meine Tests dazu schreibe, wird manche Unzulänglichkeit im Produktionscode deutlich. Dann findet ein Refactoring statt (oder auch mehrere). Auch auf diese Weise können Tests die Softwareentwicklung gestalten. Vielleicht ist "treiben" dann nicht mehr der richtige Ausdruck. Das klingt mir sowieso zu anstrengend und dämpft eher meine Kreativität. Mit den Tapas bin ich offen für verschiedene Vorgehensweisen beim Programmieren. Hauptsache ist, dass am Ende kleine Häppchen aus gut aufeinander abgestimmten Test- und Produktionscode entstehen. Tapas eben.

Der spanische Ausdruck für "Guten Appetit" bedeutet wörtlich "Guter Nutzen". In diesem Sinn: ¡Buen provecho!

Jetzt teilen: