Was ist Modultest? Definition, Beispiele
โก Intelligente Zusammenfassung
Beim Modultest werden einzelne Unterprogramme, Unterroutinen, Klassen und Prozeduren geprรผft, anstatt des gesamten Programms. Dadurch treten Fehler in einem kleinen, gut verstรคndlichen Codeblock zutage, wo sie kostengรผnstig zu finden und zu beheben sind.
Was ist Modultest?
Modulprรผfung Modultests sind eine Art von Softwaretests, die einzelne Unterprogramme, Unterroutinen, Klassen oder Prozeduren eines Programms รผberprรผfen. Anstatt das gesamte Softwareprogramm auf einmal zu testen, empfiehlt der Modultest, die kleineren Bausteine โโdes Programms zu prรผfen.
Modultests sind grรถรtenteils White-Box-orientiert. Ziel von Modultests ist nicht der Nachweis der korrekten Funktion des Moduls, sondern das Aufdecken eines Fehlers. Diese Umkehrung ist wichtig: Ein Testlauf, der nichts findet, hat wenig bestรคtigt, wohingegen ein Testlauf, der einen Fehler aufdeckt, seinen Zweck erfรผllt hat.
Durch das Testen auf Modulebene wird auch die Parallelisierung des Testprozesses ermรถglicht, da so die Mรถglichkeit geschaffen wird, mehrere Module gleichzeitig zu testen, anstatt auf einen vollstรคndigen Build zu warten.
Warum Modultests durchfรผhren?
Modultests werden empfohlen, da sie die Wirtschaftlichkeit der Fehlererkennung verรคndern.
- Die Wahrscheinlichkeit, Fehler oder Bugs in kleineren Programmteilen zu identifizieren, steigt.
- Mehrere Module kรถnnen gleichzeitig getestet werden, daher unterstรผtzt der Ansatz parallele Tests.
- Die Komplexitรคt der Tests lรคsst sich leicht bewรคltigen, da jedes Modul fรผr sich betrachtet wird.
- Ein Defekt, der in einem Modul gefunden wurde, ist tracEs ist auf eine kleine Menge Code beschrรคnkt, wodurch sich die Debugging-Zeit drastisch reduziert.
Wie fรผhrt man Modultests durch?
Designing a Testfall ist ein wichtiger Bestandteil des Modultests. Beim Entwurf von Testfรคllen fรผr einen Modultest muss der Tester zwei Dinge berรผcksichtigen.
- Spezifikation fรผr das Modul
- Der Quellcode des Moduls
Analysieren Sie die Logik des Moduls mithilfe einer oder mehrerer der folgenden Methoden: weiรe Kiste Methoden anwenden und diese Testfรคlle anschlieรend durch die Anwendung ergรคnzen. Flugschreiber Methoden zur Modulspezifikation. Realistische Werte sind ebenso wichtig wie die gewรคhlten Pfade, also bereiten Sie die Testdaten parallel zu den Fรคllen und nicht im Nachhinein.
Sobald die Testfรคlle entworfen sind, besteht der nรคchste Schritt darin, die Module fรผr die Tests zu kombinieren. Die verwendete Methode ist entweder eine inkremental oder die nicht-inkrementell Methode.
- Nichtinkrementelles Verfahren โ Alle Module werden einzeln getestet. Zuerst werden alle Module kombiniert und dann das gesamte Programm getestet.
- Inkrementelle Methode โ Jedes Modul wird zunรคchst getestet und dann schrittweise der Testsammlung hinzugefรผgt. Es wird ein schrittweiser Wiederholungstest durchgefรผhrt.
- Beim inkrementellen Testen gibt es zwei Ansรคtze. von oben nach unten und von unten nach oben Testen.
- Um das Modul mit den ausgewรคhlten Daten auszufรผhren, wird ein Treiber benรถtigt, der die Testdaten bereitstellt, die Ausfรผhrung รผberwacht und die Ergebnisse erfasst.
Die Wahl zwischen den beiden Methoden ist ein Kompromiss zwischen Einrichtungsaufwand und Diagnostizierbarkeit.
| Aspekt | Inkrementelle Methode | Nichtinkrementelles Verfahren |
| Kombination | Ein Modul nach dem anderen, hinzugefรผgt zu einer getesteten Sammlung | Alle Module kombiniert und anschlieรend gemeinsam getestet |
| Gerรผst erforderlich | Mehr Fahrer und Stubs, schrittweise geschrieben | Weniger Test-Doubles, da reale Module vorhanden sind |
| Fehleranalyse | Stark โ ein Fehlerpunkt liegt an dem gerade hinzugefรผgten Modul. | Schwach โ ein Fehler kann รผberall auftreten |
| am besten geeignet fรผr | Groรe Systeme mit vielen interagierenden Modulen | Kleine Programme mit wenigen Modulen und geringer Kopplung |
Treiber und Stubs im Modultest
Der oben erwรคhnte Treiber ist die eine Hรคlfte eines Paares. Da sich ein zu testendes Modul selten am Anfang oder Ende der Aufrufkette befindet, ersetzen Tester fehlenden Code auf beiden Seiten durch Dummy-Code.
- LED Treiber โ ersetzt das aufrufende Modul รผber dem zu testenden Modul. Es liefert die Testdaten, ruft das Modul auf, รผberwacht die Ausfรผhrung und erfasst die Ergebnisse. Bottom-up-Tests sind von Treibern abhรคngig, da die unteren Module vor den hรถheren bereit sind.
- Stummel โ ersetzt ein aufgerufenes Modul unterhalb des zu testenden Moduls. Es nimmt den Aufruf entgegen und gibt eine festgelegte, bekannte Antwort zurรผck, damit das zu testende Modul seinen Ablauf abschlieรen kann. Top-Down-Tests sind auf Stubs angewiesen, da die รผbergeordneten Module zuerst bereit sind.
Ein ausgearbeitetes Beispiel verdeutlicht die Zuordnung. Wenn ein Modul zur Zahlungsberechnung fertig ist, die zugehรถrige Checkout-Seite aber noch nicht, รผbergibt ein Treiber dem Modul die Bestellsummen und protokolliert die Rรผckgabewerte. Ist der vom Modul aufgerufene Steuerabfragedienst ebenfalls noch nicht fertig, gibt ein Stub einen festen Steuersatz zurรผck, damit die Berechnung trotzdem ausgefรผhrt werden kann. Beide Gerรผstbausteine โโwerden nicht mitgeliefert; sie werden verworfen, sobald die eigentlichen Module verfรผgbar sind. Daher wird das Missverstรคndnis von Test-Doubles spรคter als wiederkehrende Herausforderung aufgefรผhrt.
Beispieltipps fรผr Modultests
Hier sind ein paar Tipps, die Sie vor dem Testen von Modulen beachten sollten.
- RevSehen Sie sich die Testfรคlle an, bevor Sie sie verwenden.
- Vermeiden Sie Verwirrung รผber die Ursache von Abweichungen.
- Nutzen Sie automatisierte Testwerkzeuge.
- Untersuchen Sie die Variablen, die unverรคndert bleiben sollten.
- Um Selbsttests zu vermeiden, sollten die Module zwischen den Testern getauscht werden.
- Die Testfรคlle wiederverwenden.
Der fรผnfte Tipp ist wichtiger, als seine Kรผrze vermuten lรคsst. Ein Entwickler, der nur das gerade geschriebene Modul testet, wiederholt dieselben Annahmen, die den Fehler verursacht haben. Daher ist der Austausch von Modulen zwischen verschiedenen Personen eine der kostengรผnstigsten Mรถglichkeiten zur Qualitรคtsverbesserung.
Unit-Tests vs. Modultests
Die beiden Begriffe werden in vielen Teams synonym verwendet, doch Urheberschaft und Geltungsbereich unterscheiden sich.
| Modultests | Unit Tests |
| Modultests sind eine Sammlung von Tests, die von einem Tester geschrieben werden, nachdem ein Entwickler Code geschrieben hat | Unit-Tests sind eine Sammlung von Tests, die von einem Entwickler wรคhrend des Softwareentwicklungsprozesses geschrieben wurden. |
| Modultests kรถnnen die Kombination der Unit-Tests umfassen. | Komponententests kรถnnen Komponenten isoliert testen |
Modultests vs. Komponententests vs. Integrationstests
Die Modulprรผfung liegt zudem neben zwei benachbarten Ebenen, die leicht mit ihr verwechselt werden kรถnnen. Die Tabelle unterscheidet sie danach, was geprรผft wird und wer die Prรผfung รผblicherweise durchfรผhrt.
| Aspekt | Modulprรผfung | Bauteilprรผfung | Integrationstests |
| Im Test | Ein Unterprogramm, eine Klasse oder ein Verfahren | Eine in sich geschlossene Komponente mit ihren unmittelbaren Abhรคngigkeiten | Die Schnittstellen zwischen kombinierten Modulen |
| รblicher Eigentรผmer | Tester, nachdem der Code geschrieben wurde | Tester | Integrationstester |
| Gerรผst | Treiber und Stubs | Platzhalter fรผr externe Abhรคngigkeiten | Immer weniger Testdoubles |
| Defekt aufgedeckt | Logikfehler im Modul | Verhaltensfehler in der Komponente | Schnittstellen- und Datenรผbergabefehler |
Im alltรคglichen Gebrauch Komponententests und Modultests werden hรคufig als ein und dieselbe Aktivitรคt behandelt, Integrationstests beginnt erst, wenn jedes einzelne Modul nacheinander erfolgreich abgeschlossen wurde.
Herausforderungen beim Modultesten
Dies sind die Herausforderungen, denen Teams am hรคufigsten begegnen, wenn Modultests eingefรผhrt werden.
- Nicht-inkrementelle Tests erfordern mehr Arbeit โ Wenn man zuerst alles kombiniert, bedeutet das, dass ein einziger Fehler dazu fรผhren kann, dass die Tester das gesamte Programm erneut durchlaufen mรผssen.
- Missverstรคndnisse beim Test verdoppeln โ Ein Stub, der einen unrealistischen Wert zurรผckgibt, erzeugt einen grรผnen Lauf, der nichts beweist.
- Debugging-Tests oft โ Gerรผstcode birgt seine eigenen Mรคngel, und Zeit, die mit der Behebung eines Treiberfehlers verbracht wird, ist Zeit, die nicht mit dem Testen des Moduls verbracht werden kann.
- Muss den Code verstehen โ Die Ausrichtung nach dem White-Box-Prinzip bedeutet, dass ein Tester, der das Modul nicht lesen kann, auch keine sinnvollen Testfรคlle dafรผr entwerfen kann.
