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 Tests 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โ€œ

Else

Drucken Sie โ€žHalloโ€œ

Wenn(x<y)

Drucken Sie โ€žHalloโ€œ

Else

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 Tests.

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.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: