Der Modultest, auch als Unit-Test bekannt, stellt eine der grundlegendsten und wichtigsten Stufen im Softwaretestprozess dar. Es handelt sich hierbei um die Überprüfung einzelner Softwarekomponenten – wie Klassen, Module oder Skripte – auf ihre Funktionalität und Konformität mit den vorgegebenen Spezifikationen. Diese Tests sind entscheidend für die frühe Identifikation von Fehlern innerhalb einer Komponente, bevor diese in eine größere Systemumgebung integriert wird.
Modultests sind darauf ausgerichtet, jede einzelne Komponente isoliert von anderen zu testen, um ihre korrekte Funktionsweise sicherzustellen. Dies schließt funktionale und nichtfunktionale Aspekte ein, wobei insbesondere die Fehlerbehandlung und die Reaktion auf Grenzwerte oder unerwartete Eingaben von besonderer Bedeutung sind. Durch die Fokussierung auf einzelne Module können Entwickler Fehler effizient korrigieren, ohne die Risiken von Seiteneffekten in anderen Teilen des Systems.
Ein Modultest wird häufig auch als Komponenten Test bezeichnet. Unter dem Begriff Komponente ist also der Test einer einzelnen Komponente (Modul) in einer komplexen - aus mehreren Komponenten bestehenden – Software zu verstehen.
Der Komponententest ist das Testen einer (einzelnen) Komponente, also der kleinste Softwareeinheit, die für sich getestet werden kann [= erste Teststufe des V-Modells nach ISTQB (International Software Testing Qualifications Board)]. |
Unter Metriken versteht man die Messskala sowie das genutzte Messverfahren |
Es kann sich dabei handeln um: |
» Steuerprogramme (Online / Batch) |
» Klassen (SAP-Objects, C#-Klassen, .net-Komponenten, etc.) |
» Makros |
» Module/ Views, die der Datenversorgung dienen (Datenbankschnittstellen) |
» Module, die fachliche oder technische Funktionen ausführen |
» Masken/ Listen oder Datenobjekte wie z.B. DB-Tabellen, Schnittstellen etc. |
Schaubild Kriterien für die Risikobewertung im Modultest
Einzelkriterium |
Komplexität des Einzelkriteriums |
||
Hohe Ausfall- wahrscheinlichkeit |
Mittlere Ausfall- wahrscheinlichkeit |
Geringe Ausfall- wahrscheinlichkeit |
|
Anzahl der aufrufende Objekte |
|
Viele |
Wenige |
Aufrufende Objekte |
Viele |
Mehr als Durchschnitt |
Wenige bis Durchschnitt |
Objektart |
Neu |
Merklich geändert |
Gering verändert |
Geänderte Codelänge |
Mehr als 80% des Ursprungcodes |
Mehr als 60% des Ursprungcodes |
Restliche Änderungen |
Risiko |
Hohes betriebs- wirtschaftliches Risiko |
Mittleres betriebs- wirtschaftliches Risiko |
Geringes betriebs- wirtschaftliches Risiko |
Kriterien zur Bewertung der Komplexität können sein: |
» Gesamtzahl der Attribute |
» Anzahl der Objekttypen |
» Anzahl der Klassenattribute |
» Anzahl der Methoden |
» Anzahl der codierten Zeilen |
» Anzahl der Übergabeparameter |
» Anzahl der Rückgabeparameter |
» Anzahl der Datenzugriffe |
» Zyklomatische Komplexität |
Komplexität |
Bewertungsregel |
1 |
Mindestens 2 Kriterien mit hoher Komplexität führen zu dieser Gesamtkomplexität |
2 |
Ein Kriterium mit hoher und mindestens ein Kriterium mit mittlerer oder mindestens zwei mit mittlerer Bedeutung führen zu dieser Gesamtkomplexität |
3 |
Sonstige Kombinationen führen zu dieser Gesamtkomplexität |
Beispiel:
Einzelkriterium |
Risikoklasse des Einzelkriteriums |
||
A = hohes Risiko |
B = mittleres Risiko |
C = geringes Risiko |
|
Häufigkeit der Verwendung |
Täglich |
Monatlich |
Jährlich |
Umfang der durchgeführten Änderungen |
Neu |
Merklich geändert |
Gering verändert |
Auswirkung im Fehlerfall (z.B. Kosten, Betrieb) |
Groß |
Mittel |
keine |
Gesamtrisikoklasse |
Bewertungsregel |
|
A |
hoch |
Mindestens 1 Einzelkriterium hat den Wert hoch |
B |
mittel |
mindestens 1 Einzelkriterium hat den Wert mittel und kein |
C |
gering |
Einzelkriterium hat den Wert hoch |
Bei statischen Tests wird eine Untersuchung des Testobjektes vorgenommen, ohne dass die Software zur Ausführung gebracht wird. Für Code-Analysen sind häufig Hilfsmittel sinnvoll einsetzbar (programmiersprachenabhängig).
Folgende Testmethoden lassen sich für den Modultest sinnvoll verwenden: |
» Code Review |
» Walkthrough |
» Inspektion |
Es könnten hierbei folgende Fehler aufgedeckt werden: |
» Abweichungen von Standards |
» Fehler in Anforderungen oder Design |
» Unzureichende Wartbarkeit |
» Falsche Implementierung der Schnittstelle (Abweichung von der Spezifikation) |
Folgende Testmethoden lassen sich für den Modultest sinnvoll verwenden: |
» Entscheidungstabellentest |
» Klassifikationsbaum-Methode |
» Error-Guessing |
Die Prozeduren können helfen bei: |
» Bereitstellung von Testdaten in der Testumgebung |
» Testausführung Online und Batch |
» Sicherung der Testergebnisse |
» Aufbereitung von Testergebnissen für die Auswertung |
» Vergleich von Soll und Ist Ergebnissen |
Hierbei kann man nach verschiedenen Ergebnistypen unterscheiden, z.B: |
» Ablaufprotokolle |
» Auskunft- und Anzeigemasken |
» Druckoutputs |
» Schnittstelleninhalte/-protokolle |
» Datenbankinhalte |
Die Testende Kriterien sind in Abstimmung mit Entwicklung und Fachbereich abzustimmen. Zusätzlich zu den allgemeinen Kriterien sollten weitere Kriterien für die Beendigung des Modultests berücksichtigt werden:
Testmodell |
Testende Kriterien |
Kontrollflusstestmodell |
» Alle Zweige werden mindestens einmal ausgeführt |
» Alle Bedingungen werden mindestens einmal ausgeführt |
|
» Alle Bedingungskombinationen werden mind. einmal ausgeführt |
|
Datenflusstestmodell |
» Alle defuse Pfade werden mindestens einmal ausgeführt |
» Alle berechnende Zugriffe werden mind. einmalausgeführt |
|
» Alle prädikativen Zugriffe werden mind. einmal ausgeführt |
|
» Alle Definitionen werden mindestens einmal ausgeführt |
|
Funktionstestmodell |
» Alle Funktionen werden mindestens einmal ausgeführt |
» Alle Operationen werden mindestens einmal ausgeführt |
|
Zustandsübergangstest-modell |
» Alle Zustandsübergänge werden mindestens einmal ausgeführt |
» Alle nicht spezifizierten Zustandsübergänge werden mindestens einmal ausgeführt |
|
Ausnahmetestmodell |
» Alle spezifizierten Ausnahmen werden überdeckt |
» Alle nicht spezifizierten Ausnahmen werden überdeckt (Überdeckung spezifizierter Fehlerklassen) |
Beim Regressionstest sind bevorzugt die Module zu testen, die die wichtigsten und kritischsten Verarbeitungsschritte durchführen. Für den Modultest sollte die Ausführung von Regressionstests möglichst automatisiert sein.
Ein Regressionstest wird durchgeführt, wenn eine Software oder deren Umgebung verändert wurde. Es ist also ein erneutes Testen einer bereits getesteten Software oder deren (Teil-) Funktionalität nach einer Modifikation, um nachzuweisen, dass durch vorgenommene Hard- oder Softwareänderungen in der Folgewirkung keine (auch übergreifenden) Fehlerzustände freigelegt wurden. |