Ich bin nicht zu 100% sicher, ob die folgende Erklärung historisch korrekt ist. Ist dies nicht der Fall, können Sie sie jederzeit bearbeiten oder entfernen.
Mutationstests wurden von Lipton erfunden. Mutationstests können als ein Weg gesehen werden, die Qualität oder Wirksamkeit einer Testsuite zu messen. Die Schlüsselidee besteht darin, Fehler in das zu testende Programm einzufügen (dh das Programm zu mutieren), vorzugsweise die Arten von Fehlern, die ein menschlicher Programmierer wahrscheinlich macht, und zu prüfen, ob die Testsuite die eingeführten Fehler findet. Ein typisches Beispiel für die Art der Fehlermutationstests könnte darin bestehen, x> 0 durch x <0 oder x durch x + 1 oder x-1 zu ersetzen. Der Bruchteil der von der Testsuite festgestellten Fehler ist der "Mutations-Angemessenheits-Score" einer Testsuite. Man kann sich dies, wenn man sehr locker spricht, als Monte-Carlo-Methode zur Berechnung des Mutations-Angemessenheits-Scores vorstellen.
Abstrakter könnte man sagen, dass Mutationstests eine Symmetrie oder Dualität zwischen einem Programm und seinen Testsuiten in den Vordergrund stellen: Die Testsuite kann nicht nur verwendet werden, um mehr Vertrauen in die Korrektheit eines Programms zu gewinnen, sondern auch umgekehrt verwendet, um Vertrauen in die Qualität einer Testsuite zu gewinnen.
Angesichts dieser Dualität stehen Mutationstests auch konzeptionell kurz vor der Fehlerinjektion . Beide sind technisch ähnlich, haben aber unterschiedliche Zwecke. Beim Mutationstest wird versucht, die Qualität der Testsuite zu messen, während bei der Fehlerinjektion die Qualität des Programms ermittelt werden soll, normalerweise die Qualität der Fehlerbehandlung.
Vor kurzem wurden Ideen aus Mutationstests verwendet, um logische Theorien zu testen (zu formalisieren). Um die Zusammenfassung von (4) zu paraphrasieren: Bei der Entwicklung nicht-trivialer Formalisierungen in einem Theorembeweiser wird viel Zeit für das „Debuggen“ von Spezifikationen und Theoremen aufgewendet. In der Regel werden bei fehlgeschlagenen Beweisversuchen falsche Angaben oder Sätze entdeckt. Dies ist eine teure Form des Debuggens. Daher ist es oft nützlich, Vermutungen zu testen, bevor Sie sich auf einen Beweis einlassen. Eine Möglichkeit besteht darin, den freien Variablen der Vermutung Zufallswerte zuzuweisen und diese auszuwerten. (4) verwendet Mutationen, um die Qualität der verwendeten Testfallgeneratoren zu testen.
Geschichte . Zu (1): Die Geschichte des Mutationstests lässt sich in einer Arbeit von Richard Lipton aus dem Jahr 1971 nachvollziehen. [...] Die Geburt des Feldes lässt sich auch in anderen Arbeiten nachweisen, die Ende der 1970er Jahre von Lipton et al. Veröffentlicht wurden. (2) sowie Hamlet (3).
Repository für Mutationstests: Theorie der Mutationstests .
RA DeMillo, RJ Lipton, FG Sayward, Hinweise zur Auswahl der Testdaten: Hilfe für den übenden Programmierer .
RG Hamlet, Testen von Programmen mit Hilfe eines Compilers .
S. Berghofer, T. Nipkow, Stichproben in Isabelle / HOL. .