Test- und Qualitätssicherung

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

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

Funktionsschema: Ablauf des Mutationstests mit dem Werkzeug Tessy. Beim Mutationstest wird die Software verändert. Danach wird geprüft, ob die Mutation von den vorhandenen Testfällen aufgedeckt wird.
Funktionsschema: Ablauf des Mutationstests mit dem Werkzeug Tessy. Beim Mutationstest wird die Software verändert. Danach wird geprüft, ob die Mutation von den vorhandenen Testfällen aufgedeckt wird. (Bild:Hitex Development Tools)

Softwareentwickler und Tester, die von Zweifeln hinsichtlich der Qualität ihrer Tests beschlichen werden, können ihre Bedenken vielleicht mit einem Mutationstest ausräumen.

Bei einem Mutationstest wird die Software (beziehungsweise das Testobjekt) verändert („mutiert“). Danach wird geprüft, ob die vorhandenen Testfälle diese Mutation aufdecken. Im Fachjargon heißt dies: Der Mutant wird durch den Testfall „getötet“. Ein Testfall, der einen Mutanten erkennt, heißt adäquat. Für eine Mutation sind der Phantasie keine Grenzen gesetzt, jedoch muss das Testobjekt syntaktisch korrekt, also kompilierbar, bleiben. Für unseren Zweck sollten die Mutationen jedoch ziemlich subtil sein.

Ergänzendes zum Thema
 
Erläuterung von Fachbegriffen

Typische Mutationen bei C-Programmen (das Fehlermodell) sind die Verfälschung von logischen Ausdrücken (beispielsweise das Ersetzen eines logischen UND durch ein logisches ODER), die Verfälschung von arithmetischen Ausdrücken (etwa die Addition eines konstanten Werts in einer Berechnung), die Manipulation von Variablen (beispielsweise Vertauschung von zwei Variablen), die Verfälschung von relationalen Operatoren (beispielsweise ‚<’ durch ‚>’ ersetzen) oder die Manipulation von Anweisungen (beispielsweise das Entfernen eines else-Zweigs oder das Einfügen einer return-Anweisung).

Die Mutanten, die wir im Folgenden betrachten, enthalten genau eine Mutation. Dem liegt die empirisch bestätigte Annahme [6] zugrunde, dass wenn ein Testfall einen Mutanten mit genau einer (subtilen) Abweichung erkennt, dieser Testfall auch Mutanten mit komplexeren Abweichungen töten würde (Kopplungseffekt). Außerdem reduzieren wir dadurch den Aufwand, der notwendig ist, um zu entscheiden, ob durch die Mutation ein Mutant entstanden ist, der nicht getötet werden kann. In diesem Fall unterscheidet sich das nach außen sichtbare Programmverhalten nicht. Original und Mutant sind funktional äquivalent. In der Praxis muss ein Mensch entscheiden, ob Original und Mutant funktional äquivalent sind.

Vorhandene Testfälle auf die Mutanten anwenden

Um einen Mutationstest vorzunehmen, muss man zwei Dinge tun: Man muss einen Mutanten erzeugen und man die vorhandenen Testfälle auf diesen Mutanten anwenden. Weil wir nur wenige stichprobenartige Mutanten erzeugen wollen, benötigen wir hierzu kein Werkzeug. Wir können dies leicht manuell erledigen. Aufwendiger ist die Testdurchführung. Wenn wir von 20 Testfällen und 10 Mutanten ausgehen, müssen 200 Testfälle ausgeführt werden. Das macht die Automatisierung der Testausführung in der Praxis notwendig. In unserem Fall verwenden wir das Unit-Testwerkzeug Tessy [7]. Als erstes Beispiel betrachten wir die kleine Funktion shiftC().

Der Testreport von Tessy: Zwei Testfälle liefern das erwartete Ergebnis.
Der Testreport von Tessy: Zwei Testfälle liefern das erwartete Ergebnis. (Bild: Hitex Development Tools)

Die Tabelle zeigt das Testergebnis für zwei Testfälle, die mit Tessy auf dem Original-Quellcode von shiftC() ausgeführt wurden. Beide Testfälle liefern das richtige (erwartete) Ergebnis, und Tessy ermittelt für diese beiden Testfälle zusammen eine Zweigüberdeckung von 100%. Das heißt: Sowohl der then-Zweig als auch der else-Zweig der if-Anweisung werden ausgeführt. Und da unsere beiden Testfälle nicht trivial sind, sollten wir eigentlich fertig sein.

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? Infos finden Sie unter www.mycontentfactory.de (ID: 33431280 / Software-Test & -Betrieb)