Autor
Andreas Havenstein
- LinkedIn:andreas-havenstein-3b4044181
Über Unit-Tests
Unit-Tests (=Komponententests) überprüfen, ob die von den Entwicklern geschriebenen Komponenten so arbeiten, wie diese es beabsichtigen. In agilen Methoden wird zur Qualitätssicherung eine sehr häufige Ausführung der Komponententests angestrebt. Das lässt sich nur erreichen, wenn die Tests vollständig automatisiert vorliegen, sie also selbst ein Programm sind, dessen Ausführung nicht mehr Aufwand als einen Knopfdruck erfordert.
Dabei ist es üblich (aber nicht zwingend notwendig), dass der Test in der gleichen Sprache wie das Testobjekt geschrieben wird. In der agilen Softwareentwicklung wird im Rahmen der testgetriebenen Entwicklung und des Refactorings massiver Gebrauch von Komponententests gemacht.
Der schnelle Überblick
Oft werden sie in derselben Programmiersprache wie das zu testende Objekt verfasst. Unit-Tests unterstützen Praktiken wie testgetriebene Entwicklung (TDD) und Refactoring, indem sie das Design der Software steuern und unbeabsichtigte Änderungen frühzeitig aufdecken. Sie dienen nicht nur der Fehlererkennung, sondern auch der Dokumentation des Systems, indem sie beabsichtigte Verwendungen und Reaktionen des Testobjekts aufzeigen.
Die Rolle, die Unit-Tests in agiler Softwareentwicklung spielen, unterscheidet sich maßgeblich von der Rolle, die sie in klassischen Vorgehensweisen spielen. So dienen sie zum Zeitpunkt ihrer Erstellung im Rahmen der testgetriebenen Entwicklung eher dazu, das Design der Software zu steuern, als Defekte zu finden. Im Rahmen des inkrementellen Entwurfs sind sie unverzichtbar, um auch langfristig änderbaren Code zu behalten. So bilden sie eine wichtige Voraussetzung für Refactorings. Dank der Tests werden versehentliche Änderungen des Verhaltens auf Knopfdruck aufgedeckt. Auch wenn ein bestehendes System um neue Features erweitert werden, helfen Unit-Tests: So decken sie unbeabsichtigte Fernwirkungen der neuen Funktionen auf bereits bestehende Systemteile auf. Darüber hinaus helfen sie auch, das System zu dokumentieren, indem sie beabsichtigte Verwendungen und Reaktionen des Testobjekts deutlich aufzeigen.
Kent Beck, der Vater von XP, schlug (damals noch für Smalltalk) ein kleines Framework vor, das das Erstellen solcher automatisierten Tests unterstützt. Mittlerweile kann dieses SUnit-Framework als der Vater einer ganzen Familie von Testframeworks für unterschiedliche Programmiersprachen angesehen werden. Den Vertreter dieser Familie für Java stellt das JUnit-Framework dar, an dessen Entwicklung neben Kent Beck auch Erich Gamma beteiligt war.
Das folgende Beispiel zeigt einen einfachen Test. Es soll überprüft werden, dass die Vergleichsoperation für eine Euro-Klasse korrekt implementiert ist.
In schwergewichtigen Methoden gibt es häufig ein eigenes Team, welches für die Qualitätssicherung zuständig ist und den Code des Entwicklungsteams testet. In agilen Vorgehensweisen ist eine solche Trennung nicht vorgesehen: Insbesondere im Rahmen testgetriebener Entwicklung werden Unit-Tests immer von denselben Entwicklern geschrieben, die auch die zu testende Komponente entwickeln.
Gute Tests...
Natürlich gibt es zahlreiche weitere Kriterien für gute Tests. Diese finden Sie in der Literatur, die am Ende dieser Seite aufgeführt ist.
Interesse geweckt?
Software Crafting Techniken sind ergänzend zu gutem Software-Engineering nötig, um in einem agilen Team entwickeln zu können. Es geht darum, in kurzen Zyklen Wert zu schaffen und diesen möglichst schnell produktiv zu stellen, um Feedback von Endkunden einzuholen. Werden Sie ein exzellenter SW Craftman mit unseren Trainings:
Darüber hinaus bieten wir Unterstützung durch testerfahrenen agilen Entwickler:innen (mehr) und helfen Ihren eigenen Entwickler:innen dabei, Tests Gewinn bringender einzusetzen (mehr).
Literaturempfehlungen:
Über den Autor
Andreas Havenstein ist Trainer, Architekt und Softwareentwickler bei der it-agile GmbH in Hamburg. Seit vielen Jahren begeistert er sich für agile Methoden, testgetriebene Entwicklung und modulare, flexible Architekturen. Er hat eine Cloud-Migration begleitet und beobachtet gespannt, wie sich die Welt in Richtung Serverless bewegt.
Veröffentlichungen (u. a.):
Kennen Sie eigentlich schon it-agile?
Kund:innen wollen begeistert werden. Mit innovativen Produkten, durch Schnelligkeit, Transparenz und auch Verlässlichkeit. Unsere erfahrenen Agile Coaches sorgen gemeinsam mit Ihren Teams und Führungskräften dafür, auch in komplexer Umgebung Ihre Ziele nicht aus dem Auge zu verlieren und implementieren die richtigen agilen Methoden für nachhaltige Veränderung.