Mutationstests beim Softwaretest: Mutant Score & Analysebeispiel

Inhaltsverzeichnis:

Anonim

Mutationstests

Mutationstests sind eine Art von Softwaretests, bei denen bestimmte Anweisungen des Quellcodes geändert / mutiert werden, um zu überprüfen, ob die Testfälle Fehler im Quellcode finden können. Das Ziel von Mutationstests ist es, die Qualität der Testfälle in Bezug auf die Robustheit sicherzustellen, dass der mutierte Quellcode fehlschlägt.

Die im Mutantenprogramm vorgenommenen Änderungen sollten so gering wie möglich gehalten werden, damit das Gesamtziel des Programms nicht beeinträchtigt wird. Mutationstests werden auch als fehlerbasierte Teststrategie bezeichnet, da sie das Erstellen eines Fehlers im Programm beinhalten und eine Art White-Box-Test sind, der hauptsächlich für Unit-Tests verwendet wird.

Die Mutation wurde ursprünglich 1971 vorgeschlagen, verlor jedoch aufgrund der hohen Kosten an Inbrunst. Jetzt hat es wieder Dampf bekommen und ist weit verbreitet für Sprachen wie Java und XML.

In diesem Tutorial lernen Sie:

  • Was ist Mutationstest?
  • Wie führe ich Mutationstests durch?
  • Wie erstelle ich Mutantenprogramme?
  • Was kann man in einem Mutantenprogramm ändern?
  • Arten von Mutationstests
  • Mutations-Score:
  • Vorteile von Mutationstests:
  • Nachteile von Mutationstests:

Wie führe ich Mutationstests durch?

Es folgen die Schritte zum Ausführen von Mutationstests (Mutationsanalyse):

Schritt 1 : Fehler werden in den Quellcode des Programms eingeführt, indem viele Versionen erstellt werden, die als Mutanten bezeichnet werden. Jede Mutante sollte einen einzelnen Fehler enthalten. Ziel ist es, dass die Mutantenversion fehlschlägt, was die Wirksamkeit der Testfälle demonstriert.

Schritt 2 : Testfälle werden auf das ursprüngliche Programm und auch auf das Mutantenprogramm angewendet. Ein Testfall sollte angemessen sein und wurde optimiert, um Fehler in einem Programm zu erkennen.

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

Schritt 4 : Wenn das ursprüngliche Programm und die Mutantenprogramme die unterschiedliche Ausgabe erzeugen, wird die Mutante durch den Testfall getötet. Daher ist der Testfall gut genug, um die Änderung zwischen dem ursprünglichen und dem mutierten Programm festzustellen.

Schritt 5 : Wenn das ursprüngliche Programm und das Mutantenprogramm dieselbe Ausgabe erzeugen, wird Mutant am Leben gehalten. In solchen Fällen müssen effektivere Testfälle erstellt werden, die alle Mutanten töten.

Wie erstelle ich Mutantenprogramme?

Eine Mutation ist nichts anderes als eine einzelne syntaktische Änderung, die an der Programmanweisung vorgenommen wird. Jedes Mutantenprogramm sollte sich durch eine Mutation vom Originalprogramm unterscheiden.

Originalprogramm Mutantenprogramm
Wenn (x> y)
"Hallo" drucken,
sonst
"Hallo" drucken
Wenn ( x )"Hallo" drucken,
sonst
"Hallo" drucken

Was kann man in einem Mutantenprogramm ändern?

Es gibt verschiedene Techniken, mit denen Mutantenprogramme generiert werden können. Schauen wir sie uns an

Operandenersatzoperatoren Ausdrucksänderungsoperatoren Anweisungsänderung Operatoren
Ersetzen Sie den Operanden durch einen anderen Operanden (x mit y oder y mit x) oder durch den konstanten Wert. Ersetzen Sie einen Operator oder fügen Sie neue Operatoren in eine Programmanweisung ein. Programmatische Anweisungen werden geändert, um mutierte Programme zu erstellen.
Beispiel -
Wenn (x> y) x- und y-Werte ersetzen
Wenn (5> y) x durch Konstante 5 ersetzen
Beispiel-
If (x == y)
Wir können == in> = ersetzen und das Mutantenprogramm als
If (x> = y) haben und ++ in die Anweisung
If (x == ++ y) einfügen.
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 der Beispielmutationsoperatoren:
  • GOTO Etikettenwechsel
  • Ersatz der Rückgabeanweisung
  • Löschen der Anweisung
  • Unäre Einfügung von Operatoren (Like - und ++)
  • Austausch des logischen Steckers
  • Vergleichbare Ersetzung von Arraynamen
  • Entfernen des else-Teils in der if-else-Anweisung
  • Hinzufügen oder Ersetzen von Operatoren
  • Ersetzen von Anweisungen durch Ändern der Daten
  • Datenänderung für die Variablen
  • Änderung der Datentypen im Programm

Automatisierung von Mutationstests:

Mutationstests sind extrem zeitaufwändig und kompliziert manuell durchzuführen. Um den Prozess zu beschleunigen, ist es ratsam, sich für Automatisierungstools zu entscheiden. Automatisierungstools reduzieren auch die Testkosten.

Liste der verfügbaren Tools -

  • Stryker
  • PIT-Tests

Arten von Mutationstests

In der Softwareentwicklung können Mutationstests grundsätzlich in drei Typen unterteilt werden: Anweisungsmutation, Entscheidungsmutation und Wertmutation.

  1. Anweisungsmutation - Entwickler schneidet einen Teil eines Codes aus und fügt ihn ein, dessen Ergebnis möglicherweise das Entfernen einiger Zeilen ist
  2. Wertemutation - Werte der Primärparameter werden geändert
  3. Entscheidungsmutation - Kontrollanweisungen sind zu ändern

Mutations-Score:

Der Mutationswert ist definiert als der Prozentsatz der getöteten Mutanten mit der Gesamtzahl der Mutanten.

  • Mutationswert = (Getötete Mutanten / Gesamtzahl der Mutanten) * 100

Testfälle sind mutationsgerecht, wenn der Score 100% beträgt. Experimentelle Ergebnisse haben gezeigt, dass Mutationstests ein wirksamer Ansatz zur Messung der Angemessenheit der Testfälle sind. Der Hauptnachteil besteht jedoch darin, dass die hohen Kosten für die Erzeugung der Mutanten und die Ausführung jedes Testfalls gegen dieses Mutantenprogramm hoch sind.

Vorteile von Mutationstests:

Im Folgenden sind die Vorteile von Mutationstests aufgeführt:

  • Es ist ein leistungsfähiger 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 kann alle Fehler im Programm erkennen.
  • Kunden profitieren von diesen Tests, indem sie ein äußerst zuverlässiges und stabiles System erhalten.

Nachteile von Mutationstests:

Auf der anderen Seite sind die folgenden Nachteile von Mutantentests:

  • Mutationstests sind äußerst kostspielig und zeitaufwändig, da viele Mutantenprogramme generiert werden müssen.
  • Da es zeitaufwändig ist, kann man mit Recht sagen, dass diese Tests nicht ohne ein Automatisierungstool durchgeführt werden können.
  • Jede Mutation hat die gleiche Anzahl von Testfällen wie das ursprüngliche Programm. Daher muss möglicherweise eine große Anzahl von Mutantenprogrammen gegen die ursprüngliche Testsuite getestet werden.
  • Da diese Methode Änderungen am Quellcode beinhaltet, ist sie für Black-Box-Tests überhaupt nicht anwendbar.

Fazit:

Möchten Sie Ihre Anwendung ausführlich testen? Die Antwort lautet Mutationstest. Es ist die umfassendste Technik, um ein Programm zu testen. Dies ist die Methode, die die Wirksamkeit und Genauigkeit eines Testprogramms überprüft, um die Fehler oder Irrtümer im System zu erkennen.