Test- und Qualitätssicherung

Mutationstest – ein Plädoyer für eine vernachlässigte Testtechnik

| Autor / Redakteur: Frank Büchner * / Franz Graser

Mutationen schaffen Gewissheit

Der Testreport von Tessy: Zwei Testfälle liefern das erwartete Ergebnis.
Der Testreport von Tessy: Zwei Testfälle liefern das erwartete Ergebnis.

Um uns zu vergewissern, können wir unser Testobjekt mutieren. Viele der möglichen Mutationen würden durch unsere beiden Testfälle aufgedeckt, so etwa, wenn die Entscheidung „(A && B)“ zu „(C && B)“ verändert wird. Hier schlägt der erste Testfall fehl. Ebenso würde erkannt, wenn in der Entscheidung das logische UND durch ein logisches ODER ersetzt wird.

Wird jedoch in der Entscheidung die Variable B durch C ersetzt, so wird diese Mutation nicht erkannt:

Wird in der Entscheidung das logische UND (&&) durch ein bitweises UND (&) ersetzt, wird diese Mutation ebenfalls nicht erkannt:

Beide nicht erkannten Mutationen sind subtil, verändern jedoch das Verhalten des Testobjekts signifikant und können durch einen Denk- oder auch einen Flüchtigkeitsfehler relativ leicht entstehen.

Um den zweiten Mutanten zu töten, reicht es aus, die Werte eines der beiden bestehenden Testfälle zu ändern. Zum Beispiel könnte man im zweiten Testfall den Wert 2 für B verwenden (aber nicht 5).

Das Programm Tessy zeigt die Codeüberdeckung nach der MC/DC-Definition des Standards DO-178 B an.
Das Programm Tessy zeigt die Codeüberdeckung nach der MC/DC-Definition des Standards DO-178 B an. (Bild: Hitex Development Tools)

Um beide Mutanten nachhaltig zu töten (das heißt, ohne dass unmittelbar spiegelbildliche Mutationen möglich werden, die nicht getötet würden), benötigt man einen dritten Testfall, in dem die Variable B den Wert 0 annimmt. Die Tabelle 2 im Kasten links zeigt die Resultate. Mit den drei Testfällen in der Tabelle 2 werden beide Mutanten erkannt. Durch die Verwendung von drei Testfällen wird überdies der Code-Überdeckungsgrad von 100% Zweigüberdeckung auf 100% MC/DC (Modified Condition/Decision Coverage, ein Kriterium des Standards DO-178B) erhöht.

Mit Hilfe eines Mutationstests kann man auch Testfallmengen bewerten. Eine Testfallmenge heißt adäquat, wenn sie alle Mutanten aufdeckt. Von zwei adäquaten Testfallmengen ist natürlich diejenige mit weniger Testfällen vorzuziehen. Dies ermöglicht auch den Vergleich von Testfallkonstruktionsverfahren. Man kann die Idee des Mutationstests zur Reduzierung der normalerweise großen Zahl von automatisch generierten Testfällen verwenden [5]: Ein Testfall muss mindestens einen Mutanten töten, der bisher noch von keinem anderen Testfall getötet wurde, um nicht verworfen zu werden.

Mutationstests aus Sicht der Norm IEC 61508

Die Norm IEC 61508 bezeichnet den Mutationstest als „Durchführung von Testfällen nach Fehlereinpflanzung“ und empfiehlt dies für Safety Integrity Level (SIL) 2 bis 4.

Die IEC 61508 führt auch aus, dass man aus der Anzahl der Fehler, die eine Testsuite in einem originalen Testobjekt entdeckt, und der Zahl der Mutationen, die diese Testsuite ermittelt, eine Abschätzung für die Gesamtzahl der im Testobjekt vorhandenen Fehler finden kann (prädizierend). Das Verhältnis der erkannten Mutanten zur Gesamtzahl der Mutanten ist gleich den Verhältnis der gefundenen Fehler im originalen Testobjekt zu der Gesamtzahl der Fehler im originalen Testobjekt. Diese Abschätzung setzt natürlich die gleiche statistische Verteilung von Arten und Positionen der Mutationen und der tatsächlichen Fehler voraus. Wenn beispielsweise die tatsächlichen Fehler fehlerhafte Berechnungen sind, jedoch keine arithmetischen Mutationen verwendet werden, wird die Abschätzung kaum zutreffen.

Obwohl sich das äußere Programmverhalten des Mutanten gegenüber dem Original nicht ändert, kann es sein, dass ein Testfall im Innern des Mutanten einen anderen Programmablauf erzeugt als im Original. In diesem Fall spricht man von schwachem Mutationstest.

Die Mutation von ‘<’ zu ‘<=’ wird nach außen nicht sichtbar.

Inhalt des Artikels:

Kommentar zu diesem Artikel abgeben
In der ISO 26262 ist als Beispiel für Fehler auch das Einführen von Codemutation aufgeführt....  lesen
posted am 10.10.2015 um 18:01 von Unregistriert


Mitdiskutieren
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 33431280 / Software-Test & -Betrieb)