Modultest

Veröffentlicht auf 12. Mai 2011

Der Test von einzelnen Klassen oder Methoden während der Entwicklungsphase wird als Modultest, Komponententest oder auch Unit Test bezeichnet. Er kann in Folge der Designphase stattfinden (Test-Driven Development) oder erst nach der jeweiligen Entwicklung des eigentlichen Codes.

Der Modultest wird in der Regel vom Entwickler des Codes selbst als Blackbox-Test durchgeführt. Dies hat natürlich den Nachteil, dass der Entwickler die genaue Funktionsweise des Moduls kennt und eventuell gegenüber seiner eigenen Arbeit blind ist, wodurch ein Modultest durch dritte bevorzugt werden sollte. Die Tests können sich an den Äquivalenzklassen der Schnittstelle orientieren, dabei sollten negative Ergebnisse genauso geprüft werden wie positive.

In der Regel werden die Tests automatisiert, da sie manuell zu aufwändig wären und automatisiert zudem immer wieder durchgeführt werden können. Werden die automatisierten Tests ständig durchgeführt, spricht man auch von Kontinuierliche Integration (Continuous Integration).
Sind Objekte, die für den Test benötigt werden, noch nicht entwickelt, werden sogenannte Mock-Objekte oder Stubs erstellt. Diese einfachen Dummy-Objekte simulieren das Verhalten der noch nicht fertig gestellten Komponenten für den Test und werden später gegebenenfalls ersetzt.

Werden neue Fehler gefunden, die durch die bisherigen Tests nicht gefunden wurden, wird ein neuer Modultest erstellt. Der Modultest kann somit als Quality Gate für nachfolgende Tests dienen. Allgemein kann es durchaus passieren, dass die Anzahl der Zeilen des Testcodes die Anzahl der Zeilen des produktiven Codes deutlich überschreiten.

Je nach verwendeten Unit Test Framework sind bessere statistische Testauswertung möglich, oder es können parallel Code-Metriken, die Codeabdeckung oder allgemeine Schwächen im Programmcode erfasst werden.

Zusätzlich können Modultests bei der Verbesserung der Objektstruktur, der Schnittstellendefinitionen, zur Verringerung der Komplexität der Module und einer höheren Wartbarkeit führen. Modultests ersetzen aber keine weiteren Tests, da sie nur im Kleinen testen und Grenzen haben (GUI, Performanz, Test von Bibliotheken, unterschiedliche Konfiguration).

Bekannte Unit Test Frameworks: CUnit, Tessy, CppUnit, JUnit, NUnit, CsUnit, PHPUnit, Test::Unit, Unittest

Übersichtslisten:
http://de.wikipedia.org/wiki/Liste_von_Modultest-Software
http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks

Geschrieben von Robert Bullinger

Veröffentlicht in #Softwareentwicklung

Kommentiere diesen Post