Mutationstests

Definition - Was bedeutet Mutationstest?

Mutationstests sind Methoden zum Testen von Software, bei denen Programm- oder Quellcode absichtlich manipuliert wird, gefolgt von einer Reihe von Tests gegen den mutierten Code. Die im Quellcode eingeführten Mutationen sollen häufige Programmierfehler imitieren. Eine gute Unit-Test-Suite erkennt normalerweise die Programmmutationen und schlägt automatisch fehl.

Mutationstests werden auf vielen verschiedenen Plattformen verwendet, einschließlich Java, C ++, C # und Ruby.

Technische.me erklärt Mutationstests

Mutationstests sind eine einfache, aber geniale Methode zur Validierung der Korrektheit des Quellcodes und des Testprozesses. Das Konzept wurde erstmals 1971 von Richard Lipton geprägt, und seitdem ist das Interesse gestiegen.

Der Arbeitsmechanismus von Mutationstests ist einfach und unkompliziert. Ein Quellcode, der alle Komponententests umfasst, wird ausgewählt. Nachdem alle positiven Tests für einen bestimmten Quellcode überprüft wurden, wird eine Mutation in das Programm eingeführt.

Der Grad der Mutation, der auf einen bestimmten Codeblock angewendet wird, kann variieren. Eine übliche Implementierung von Mutationstests besteht darin, einen logischen Operator durch seinen inversen zu ersetzen. Beispielsweise wird der Operator "! =" Anstelle von "= =" verwendet. In einigen Fällen umfasst die Mutation das Neuanordnen von Zeilen, um die Ausführungsreihenfolge zu ändern, oder sogar das Löschen einiger Codezeilen. Komplexe Mutationsteststufen können zu Kompilierungsfehlern führen.

Sobald ein Programm geändert wurde, wird eine Reihe von Komponententests für den mutierten Code ausgeführt. Der mutierte Code besteht den Komponententest je nach Testqualität oder besteht ihn nicht. Ein gut geschriebener Komponententest muss mutierte Codefehler erkennen, die zu Fehlern führen. Ein Komponententest, bei dem Codefehler nicht erkannt werden, muss möglicherweise neu geschrieben werden.

Mutationstests bieten folgende Vorteile:

  • Programmcode-Fehlererkennung
  • Effektive Testfallentwicklung
  • Erkennung von Lücken in Testdaten
  • Verbesserte Softwareprogrammqualität
  • Beseitigung von Code-Mehrdeutigkeiten

Nachteile von Mutationstests sind:

  • Schwierige Implementierung komplexer Mutationen
  • Teuer und zeitaufwändig
  • Benötigt qualifizierte Tester mit Programmierkenntnissen