Mithilfe von Mo­dul­tests, oft auch Unit-Tests oder Kom­po­nen­ten­tests genannt, testet man einzelne Kom­po­nen­ten von Com­pu­ter­pro­gram­men. Man un­ter­sucht dabei die Ein­zel­tei­le auf ihre korrekte Funk­tio­na­li­tät, bevor sie ihren Platz im Ge­samt­kon­zept einer Software einnehmen. Mithilfe dieser Tests kann man relativ schnell und un­kom­pli­ziert prüfen, ob die Kom­po­nen­ten so arbeiten wie vom Ent­wick­ler vor­ge­se­hen. Mo­dul­tests zählen zu den ef­fek­tivs­ten Wegen, möglichst viele Fehler im Code schon früh­zei­tig auf­zu­de­cken.

Mo­dul­tests spielen eine wichtige Rolle bei der Qua­li­täts­si­che­rung von Software. Vor allem in der agilen Software-Ent­wick­lung setzt man verstärkt auf diese Methode, meist strebt man eine sehr häufige Aus­füh­rung von Kom­po­nen­ten­tests an. Auch deshalb werden sie au­to­ma­ti­siert durch­ge­führt. Ent­spre­chen­de Programme führen auf Knopf­druck beliebig viele Mo­dul­tests aus. Üb­li­cher­wei­se ist das ver­wen­de­te Test­pro­gramm in der gleichen Sprache wie das Test­ob­jekt selbst ge­schrie­ben.

Wofür nutzt man Mo­dul­tests?

Man spricht häufig auch von Unit-Tests, da man die kleinsten Einheiten (engl. „units“) der Software überprüft. Und die kleinsten sinnvoll zu testenden Sys­tem­tei­le sind die Module.

Es empfiehlt sich, diese schon im frühen Ent­wick­lungs­pro­zess zu über­prü­fen, denn in der Mo­dul­test­pha­se lassen sich Fehler relativ schnell und kos­ten­güns­tig kor­ri­gie­ren. In späteren Phasen sind diese Prozesse mit höheren Kosten verbunden. Mo­dul­tests be­schäf­ti­gen sich vorrangig mit funk­tio­na­len Ei­gen­schaf­ten. Ty­pi­scher­wei­se führt der Ent­wick­ler die Tests selbst durch. Er stellt mit ihnen die Kor­rekt­heit von Funk­tio­na­li­tä­ten sicher.

Test­um­ge­bung bei Mo­dul­tests

Eine wichtige Ei­gen­schaft von Mo­dul­tests ist ihre Iso­liert­heit. Der Test führt nur eine konkrete Funktion aus, während man alle äußeren Einflüsse wie die Kom­mu­ni­ka­ti­on mit anderen Systemen zunächst außen vor lässt. Wech­sel­wir­kun­gen mit anderen Kom­po­nen­ten sind aus­ge­schlos­sen. So ist es möglich, auf­tre­ten­de Fehler eindeutig auf den isoliert ge­tes­te­ten Baustein zu­rück­zu­füh­ren.

Man testet in einer so­ge­nann­ten Stand-Alone-Umgebung. Diese spezielle Test­um­ge­bung muss man zunächst schaffen – was sich als relativ komplex und sehr zeit­auf­wän­dig erweist, möchte man dies manuell umsetzen. Da ein Modul kein selbst­stän­dig aus­führ­ba­res Teil ist, benötigt man zum Testen einen so­ge­nann­ten Test-Harnisch (engl. „test harness“). Erst zusammen mit diesem Test-Harnisch bildet das Test­ob­jekt ein aus­führ­ba­res Programm. Um eine rea­lis­ti­sche Test­um­ge­bung zu schaffen, setzt man Hilfs­ob­jek­te (Stubs) ein, die als Platz­hal­ter dienen, wenn das zu testende Modul andere Kom­po­nen­ten zur In­ter­ak­ti­on benötigt.

Test-Frame­works für Mo­dul­tests

Das Ziel von Mo­dul­tests ist es, Fehler innerhalb einzelner Kom­po­nen­ten nach­zu­wei­sen. Will man die Kor­rekt­heit des Codes über den gesamten Ent­wick­lungs­zeit­raum si­cher­stel­len, wird man Unit-Tests ständig ausführen. Daher ist Au­to­ma­ti­sie­rung hier ein wichtiges Stichwort. Es gibt spezielle Software-Test-Frame­works (auch Mo­dul­test­soft­ware genannt - engl. Unit test frame­works), die der Durch­füh­rung von Mo­dul­tests dienen. Für fast alle Pro­gram­mier­spra­chen steht eine passende Modultest-Software zur Verfügung. Diese liest den Quelltext aus und überprüft ihn auf Fehler. Die oben be­schrie­be­ne Test­um­ge­bung stellen die Tools au­to­ma­tisch her. Der Ent­wick­ler kon­zen­triert sich auf das De­fi­nie­ren von Test­fäl­len. Der Name der Modultest-Software ori­en­tiert sich meist an der Form „Pro­gram­mier­spra­cheU­nit“. So gibt es bei­spiels­wei­se JUnit für die Pro­gram­mier­spra­che Java, CUnit für die Pro­gram­mier­spra­che C oder JSUnit für die Pro­gram­mier­spra­che Ja­va­Script. In manchen Pro­gram­mier­spra­chen ist das Test­frame­work schon fester Be­stand­teil der Standard-Bi­blio­thek, wie bei­spiels­wei­se Unittest in Python.   Eine aus­führ­li­che Liste mit ver­füg­ba­ren Test-Frame­works für einzelne Pro­gram­mier­spra­chen finden Sie hier.

Video: Modultest Beispiel in der Praxis

Im nach­fol­gen­den eng­lisch­spra­chi­gen Video wird noch einmal zu­sam­men­fas­send erklärt, was Unit Testing ist und wann man dieses einsetzt. Darüber hinaus wird anhand einer App ein Modultest Beispiel anhand eines Code-Ab­schnit­tes erklärt. Das Beispiel zeigt, wie man mit einem Unit Test ein Testfall erstellt und so gezielt einen Fehler aufspüren kann.

Zum Hauptmenü