Was ist Mutationstest?
Wenn das Wort "mutieren" im Allgemeinen "Veränderung" bedeutet, bedeutet dies auch das Testen der Mutation. Mutationstests sind die Art von Softwaretests, die durch Ändern oder Mutieren des Codeteils durchgeführt werden, um zu überprüfen, ob die Testfälle in der Lage sind, die Fehler zu finden. Mutationstests fallen unter die White-Box-Tests und werden im Grunde genommen während der Unit-Tests eines bestimmten Moduls einer Anwendung durchgeführt. Die am Quellcode / Hauptcode vorgenommenen Änderungen werden in geringem Umfang vorgenommen, damit das Gesamtziel davon nicht beeinträchtigt wird. Dies wird auch als Fehlererkennungstechnik bezeichnet, da hierdurch die Schwäche von Testfällen durch Erstellen eines Fehlers im Originalcode ermittelt werden soll.
Bevor Sie Tests durchführen, ist es sehr wichtig, das dahinter stehende Ziel zu verstehen. Das Hauptziel von Mutationstests ist es, die Wirksamkeit der entwickelten Testfälle zu ermitteln, die in der Lage sein sollten, selbst kleine Änderungen im Code zu erkennen. Dies geschieht, um die Probleme in der Testsuite und die Testdaten zu ermitteln, die beim Testen einer Softwareanwendung verwendet werden. Es werden mehrere Mutanten oder Versionen des ursprünglichen Codes erstellt, und jeder von ihnen wird mit den ursprünglichen Testfällen verglichen. Wenn die Ergebnisse der Testfälle mit denen des Originalcodes übereinstimmen, werden sowohl der Code als auch die Testfälle erneut überprüft, da entweder der Code nicht ausgeführt wurde oder die Testsuite nicht in der Lage ist, den mutierten Code zu finden.
Arten von Mutationstests
Grundsätzlich gibt es drei Arten von Mutationstests, mit denen Mutanten des ursprünglichen Codes erstellt werden:
1. Wertmutation
Wie der Name schon sagt, werden bei der Wertmutation die Werte von Konstanten, die in den Methoden übergebenen Parameter und die in Schleifen verwendeten Werte geändert, um ein mutiertes Programm zu erstellen. Entweder wird der große Wert in einen kleineren Wert geändert oder umgekehrt. Grundsätzlich werden die Werte, die bereits im Programm definiert sind, geändert, um eine Wertmutation durchzuführen.
Ursprünglicher Code:
int a = 75636737;
int b = 3454;
int mult = a * b;
print(mult);
Mutantencode:
int a = 75;
int b = 345466465;
int mult = a * b;
print(mult);
2. Entscheidungsmutation
Bei der Entscheidungsmutation werden die im Programm verwendeten logischen und arithmetischen Operatoren geändert, wodurch sich die Gesamtentscheidung im Programm und die entsprechenden Ergebnisse ändern. Beispielsweise wird eine bestimmte if-Anweisung nur ausgeführt, wenn (a> b). Im mutierten Code wird dieser Operator in (a <b) geändert, wodurch die Gesamtentscheidung im Code geändert wird.
Ursprünglicher Code:
if (a>b || b>c)
(
print(“yes”);
)
else
(
print (“No”);
)
Mutantencode:
if (a (
print(“yes”);
)
else
(
print (“No”);
)
3. Statement Mutation
Bei der Anweisungsmutation werden Änderungen an den vollständigen Code-Anweisungen vorgenommen, um ein mutiertes Programm zu erstellen. Änderungen an der Anweisung können darin bestehen, die gesamte Anweisung zu löschen, die Reihenfolge der Anweisungen im Code zu ändern, die Anweisungen an einer anderen Stelle im Code zu kopieren und einzufügen und die wenigen Anweisungen im Originalcode zu wiederholen oder zu duplizieren.
Ursprünglicher Code:
if (a > b)
(
print(“a is greater”);
)
else
(
print(“b is greater”);
)
Mutantencode:
if(a > b)
(
// removing the statement
)
else
(
print(“b is greater”);
)
Vor- und Nachteile von Mutationstests
Vor- und Nachteile von Mutationstests sind nachstehend aufgeführt:
Vorteile
Einige der Vorteile von Mutationstests sind nachfolgend aufgeführt:
- Einer der größten Vorteile von Mutationstests besteht darin, dass verborgene Fehler und eine maximale Codeabdeckung gefunden werden können, um den Teil des Codes zu identifizieren, der von den ursprünglichen Testfällen nicht gründlich getestet wurde.
- Mutationstests helfen dabei, die Qualität der Testfälle zu ermitteln, die zum Testen der Software verwendet werden, und geben den Testern ein echtes Feedback zum Testprozess und zur Testqualität.
- Es hilft, die qualitativ hochwertigen Fehler zu finden, die durch normale Tests nicht leicht zu finden sind.
- Mutationstests decken manchmal die verborgenen Mängel wie Code-Ambiguität, falsche Werte von Variablen usw. im Code in den frühen Stadien des Software-Tests auf, was sehr vorteilhaft ist.
- Manchmal sind sowohl der Code als auch der Testfall korrekt, aber das Problem ist auf Testdaten zurückzuführen. Mutationstests helfen dabei, die Probleme in den Testdaten herauszufinden.
Nachteile
Nachfolgend sind einige der Nachteile von Mutationstests aufgeführt:
- Beim Mutationstest werden verschiedene Mutanten des Codes erstellt und gegen die ursprüngliche Testsuite getestet. Daher nimmt er viel Zeit in Anspruch, während nur der Unit-Test eines einzelnen Features / Moduls einer Anwendung ausgeführt wird.
- Wie oben erwähnt, werden alle Mutanten gegen die Originalsuite getestet, sodass eine große Anzahl von Testfällen ausgeführt werden müsste. Daher kann dies nicht ohne ein Automatisierungstool durchgeführt werden, das teuer ist und das Projektbudget beeinträchtigen kann.
- Komplexe Mutanten, die aus dem Originalcode erstellt wurden, können zu Verwirrung und Fehlern im Originalcode führen.
Fazit
Die obige Erklärung definiert klar, was Mutationstests sind und welche Bedeutung sie für das Testen einer Anwendung haben. Wenn wir eine Anwendung mit den Testszenarien maximaler Codeabdeckung durch- und vollständig testen möchten, spielen Mutationstests eine entscheidende Rolle.
Empfohlene Artikel
Dies ist ein Leitfaden für Mutationstests. Hier diskutieren wir, was Mutationstests sind. und die Arten von Mutationstests zusammen mit Vor- und Nachteilen. Sie können auch unsere anderen Artikelvorschläge durchgehen, um mehr zu erfahren
- Was ist Reagieren?
- Negative Prüfung
- Testen der mobilen Anwendung
- fortgeschrittener Verschlüsselungsstandard
- Code Coverage vs Test Coverage | Top 4 Unterschiede zu lernen
- Tools zur Codeabdeckung | Top 6 Code-Coverage-Tools