The Art of Unit Testing
Kommentare

Unit Testing wird in zahlreichen Projekten als wesentliches Hilfsmittel der Softwareentwicklung genutzt. In vielen anderen Projekten wiederum ist die große Bedeutung von Tests zwar bekannt, doch erfolgen

Unit Testing wird in zahlreichen Projekten als wesentliches Hilfsmittel der Softwareentwicklung genutzt. In vielen anderen Projekten wiederum ist die große Bedeutung von Tests zwar bekannt, doch erfolgen diese oft nicht zum Entwicklungszeitpunkt, sondern erst nachgelagert. Für bestimmte Testarten ist dies richtig und auch gar nicht anders möglich – man denke hier beispielsweise an Integrations- oder Abnahmetests. Doch sollte auf technischer Ebene bereits seitens des Entwicklers möglichst viel getestet, oder gar testgetrieben entwickelt werden. Dafür eignen sich Unit Tests. Diese sind technisch einfach einsetzbar, muss doch „nur“ für das zu testende Stück Code ein Test erstellt werden. Dennoch tut sich so mancher Entwickler schwer mit dem Thema und setzt Unit Tests wider besseren Wissens nur unzureichend oder gar nicht ein. Denn einen guten Unit Test zu schreiben und ihn richtig im Rahmen der Entwicklung einzusetzen, ist oft schwerer als gedacht.

Genau an dieser Stelle setzt das vorliegende Buch an. Hier geht es nicht darum, ein Testframework zu erläutern und all dessen Möglichkeiten zu beschreiben, wie in anderen Büchern der Fall. Vielmehr geht es darum, den Leser für Unit Tests zu sensibilisieren und zu zeigen, wie und wo sie eingesetzt werden. Insbesondere gehört dazu, einen Test nicht nur zu schreiben, sondern die produktive Software so zu gestalten, dass diese testbar wird – ein Grundlagenthema, unabhängig von der genutzten Programmiersprache. Obwohl Roy Osherove seine Bespiele in C# erstellt, ist dies Buch dennoch auch Personen zu empfehlen, die in anderen Sprachen beheimatet sind. Wenn es um konkrete Werkzeuge geht, nennt der Autor zwar meist solche aus der .NET-Welt, verlässt diese aber auch hier und da.

So erläutert Osherove das Wesen von Unit Tests und Kerntechniken. Dabei geht es häufig darum, den zu testenden Code zu isolieren. Welche Vorbereitungen erforderlich sind und wie dann konkrete Objekte durch Fakes (Stubs, Mocks) ersetzt werden, zeigt der Autor anhand kurzer Codebeispiele. Erst nachdem er dem Leser die grundsätzlichen Techniken anhand eigenen Codes demonstriert hat, geht er auf Frameworks ein, die dem Entwickler eine solche Funktionalität liefern. Eine seiner Aussagen lautet: Lieber auch mal ein Objekt durch eigenen Fake-Code ersetzen als allzu oft und gedankenlos ein Mock-Framework einzusetzen. Diese haben sehr wohl ihre Daseinsberechtigung, aber bitte nicht um ihrer selbst willen.

Der Autor stellt verschiedene Test- und Mock-Frameworks vor, um dem Leser eine Auswahl und Übersicht zu bieten, konzentriert sich mit seinen Beispielen aber auf wenige. Schließlich geht es um die Grundlagen. Und zu denen gehört nicht nur les- und testbarer Produktivcode, sondern auch lesbarer Testcode. Deshalb widmet sich Osherove genauso ausführlich dem Design von Testcode und der Einführung von Unit Testing im Unternehmen. Dabei muss es nicht immer gleich Test-driven Development (TDD) sein. Auch wenn der Autor dies grundsätzlich befürwortet, ist für ihn ein Test, der unmittelbar nach Programmierung des Produktivcodes erstellt wird, ähnlich wertvoll. Und wenn es gar um eine bestehende Codebasis geht, muss jeglicher Unit Test im Rahmen der Wartung lange nach der Softwareentwicklung erstellt werden. Hierfür zeigt der Autor Entwicklungspfade auf.

Die Fülle der Themen kann an dieser Stelle nur kurz angerissen werden. Dem Autor ist es gelungen, die Grundlagen des Unit Testings in ausreichender Breite darzustellen und zu zeigen, wie diese eingesetzt werden. Damit sollte so manch zögerlichem Entwickler der Weg in dieses wichtige Thema gebahnt werden.

Wenn auch der Autor seine Beispiele im Wesentlichen auf C# mit NUnit als Testframework beschränkt, teilweise zuzüglich Stubs und Mocks, gibt die kurze Beschreibung diverser Frameworks dem Leser dennoch einen Startpunkt zur Auswahl des geeigneten Tools an die Hand – für.NET ausführlicher als für Java oder sonstige Programmiersprachen.

Insgesamt ist „The Art of Unit Testing“ ein lohnendes Buch für jeden, der Unit Testing einsetzen möchte, sich aber noch ein wenig schwer mit der Umsetzung tut. Für Entwickler, die Unit Testing bereits einsetzen, ist dieses Buch wiederum eine Reflektion über den Sinn und Unsinn des Testens.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -