Was ist ein Mutationstest? (Beispiel)

Was ist ein Mutationstest?

Mutationstests ist eine Art Softwaretest, bei dem bestimmte Aussagen des Quellcodes geändert/mutiert werden, um zu überprüfen, ob die Testfälle in der Lage sind, Fehler im Quellcode zu finden. Das Ziel des Mutationstests besteht darin, die Qualität von Testfällen im Hinblick auf die Robustheit sicherzustellen, sodass der mutierte Quellcode fehlschlägt.

Die im Mutantenprogramm vorgenommenen Änderungen sollten so gering gehalten werden, dass sie das Gesamtziel des Programms nicht beeinträchtigen. Mutationstests werden auch als fehlerbasierte Teststrategien bezeichnet, da sie die Erstellung eines Fehlers im Programm beinhalten und eine Art von Mutationstests sind Weiß Box Testen welches hauptsächlich für verwendet wird Unit Tests.

Die Mutation wurde ursprünglich 1971 vorgeschlagen, verlor jedoch aufgrund der damit verbundenen hohen Kosten an Begeisterung. Jetzt hat es wieder an Fahrt gewonnen und wird häufig für Sprachen wie verwendet Java und XML.

Wie führt man einen Mutationstest durch?

Führen Sie einen Mutationstest durch

Im Folgenden sind die Schritte zum Ausführen eines Mutationstests (Mutationsanalyse) aufgeführt:

Schritt 1: Fehler werden in den Quellcode des Programms eingeführt, indem viele Versionen, sogenannte Mutanten, erstellt werden. Jeder Mutant sollte einen einzelnen Fehler enthalten, und das Ziel besteht darin, die Mutantenversion zum Scheitern zu bringen, was die Wirksamkeit der Testfälle demonstriert.

Schritt 2: Testfälle werden auf das Originalprogramm und auch auf das Mutantenprogramm angewendet. A Testfall sollte ausreichend sein und ist darauf ausgelegt, Fehler in einem Programm zu erkennen.

Schritt 3: Vergleichen Sie die Ergebnisse eines ursprünglichen und eines mutierten Programms.

Schritt 4: Wenn das Originalprogramm und die Mutantenprogramme unterschiedliche Ausgaben erzeugen, wird der Mutant durch den Testfall getötet. Daher ist der Testfall gut genug, um die Änderung zwischen dem ursprünglichen und dem mutierten Programm zu erkennen.

Schritt 5: Wenn das Originalprogramm und das Mutant-Programm die gleiche Ausgabe erzeugen, bleibt Mutant am Leben. In solchen Fällen müssen effektivere Testfälle erstellt werden, die alle Mutanten töten.

Wie erstellt man Mutantenprogramme?

Erstellen Sie Mutantenprogramme

Eine Mutation ist nichts anderes als eine einzelne syntaktische Änderung, die an der Programmanweisung vorgenommen wird. Jedes mutierte Programm sollte sich um eine Mutation vom ursprünglichen Programm unterscheiden.

Ursprüngliches Programm Mutantenprogramm
Wenn (x>y)

Drucken Sie „Hallo“

sonst

Drucken Sie „Hallo“

Wenn(x<y)

Drucken Sie „Hallo“

sonst

Drucken Sie „Hallo“

Was muss in einem Mutantenprogramm geändert werden?

Es gibt verschiedene Techniken, die zur Generierung mutierter Programme eingesetzt werden könnten. Schauen wir sie uns an

Operaund Ersatzbetreiber Ausdrucksänderung Operatoren Änderung der Anweisung Operatoren
Ersetzen Sie den Operanden durch einen anderen Operanden (x durch y oder y durch x) oder durch den konstanten Wert. Ersetzen eines Operators oder Einfügen neuer Operatoren in einer Programm-Anweisung. Programmatische Anweisungen werden geändert, um mutierte Programme zu erstellen.
Beispiel-

Wenn(x>y) ersetzen Sie die x- und y-Werte

Wenn(5>y) ersetze x durch die Konstante 5

Beispiel-

Wenn(x==y)

Wir können == durch >= ersetzen und ein mutiertes Programm als haben

If(x>=y) und Einfügen von ++ in die Anweisung

Wenn(x==++y)

Beispiel-

Löschen Sie den else-Teil in einer if-else-Anweisung

Löschen Sie die gesamte if-else-Anweisung, um zu überprüfen, wie sich ein Programm verhält

Einige Beispiele für Mutationsoperatoren:

  • GOTO-Label-Ersatz
  • Ersatz der Rückgabeerklärung
  • Löschung der Anweisung
  • Einfügung unärer Operatoren (wie – und ++)
  • Austausch des logischen Connectors
  • Vergleichbarer Array-Namensersatz
  • Entfernen des else-Teils in der if-else-Anweisung
  • Hinzufügen oder Ersetzen von Operatoren
  • Anweisungsersetzung durch Änderung der Daten
  • Datenänderung für die Variablen
  • Änderung von Datentypen im Programm

Automatisierung von Mutationstests

Mutationstests sind äußerst zeitaufwändig und schwierig manuell durchzuführen. Um den Prozess zu beschleunigen, empfiehlt sich der Einsatz von Automatisierungstools. Automatisierungstools reduzieren auch die Testkosten.

Liste der verfügbaren Tools-

Arten von Mutationstests

In Software EngineeringMutationstests können grundsätzlich in drei Typen eingeteilt werden: Aussagemutation, Entscheidungsmutation und Wertmutation.

  1. Aussagemutation – Der Entwickler schneidet einen Teil eines Codes aus und fügt ihn ein, wobei möglicherweise einige Zeilen entfernt werden
  2. Wertmutation– Werte der Primärparameter werden geändert
  3. Entscheidungsmutation– Steueranweisungen sollen geändert werden

Mutations-Score

Der Mutationsscore ist definiert als der prozentuale Anteil der getöteten Mutanten an der Gesamtzahl der Mutanten.

  • Mutationspunktzahl = (getötete Mutanten / Gesamtzahl der Mutanten) * 100

Mutations-Score

Testfälle sind mutationsadäquat, wenn die Punktzahl 100 % beträgt. Experimentelle Ergebnisse haben gezeigt, dass Mutationstests ein wirksamer Ansatz zur Messung der Angemessenheit der Testfälle sind. Der Hauptnachteil besteht jedoch in den hohen Kosten für die Generierung der Mutanten und die Ausführung jedes Testfalls für dieses Mutantenprogramm.

Vorteile von Mutationstests

Im Folgenden sind die Vorteile von Mutationstests aufgeführt:

  • Es handelt sich um einen leistungsstarken Ansatz, um eine hohe Abdeckung des Quellprogramms zu erreichen.
  • Dieser Test ist in der Lage, das Mutantenprogramm umfassend zu testen.
  • Mutationstests bieten dem Softwareentwickler ein gutes Maß an Fehlererkennung.
  • Diese Methode deckt Unklarheiten im Quellcode auf und ist in der Lage, alle Fehler im Programm zu erkennen.
  • Kunden profitieren von diesen Tests, indem sie ein äußerst zuverlässiges und stabiles System erhalten.

Nachteile von Mutationstests

Auf der anderen Seite gibt es folgende Nachteile beim Mutant-Test:

  • Mutationstests sind äußerst kostspielig und zeitaufwändig, da viele Mutantenprogramme erstellt werden müssen.
  • Da dieser Test zeitaufwändig ist, kann man mit Recht sagen, dass er nicht ohne ein Automatisierungstool durchgeführt werden kann.
  • Jede Mutation verfügt über die gleiche Anzahl an Testfällen wie das ursprüngliche Programm. Daher muss möglicherweise eine große Anzahl mutierter Programme mit der ursprünglichen Testsuite getestet werden.
  • Da diese Methode Quellcodeänderungen beinhaltet, ist sie überhaupt nicht anwendbar Schwarz Box Testen.

Fazit

Möchten Sie Ihre Anwendung umfassend testen? Die Antwort ist Mutationstests. Es handelt sich um die umfassendste Technik zum Testen eines Programms. Dies ist die Methode, mit der die Wirksamkeit und Genauigkeit eines Testprogramms überprüft wird, um Fehler im System zu erkennen.

Täglicher Guru99-Newsletter

Beginnen Sie Ihren Tag mit den neuesten und wichtigsten KI-Nachrichten, die jetzt geliefert werden.