Je ne suis pas sûr à 100% si l'explication ci-dessous est historiquement exacte. Si ce n'est pas le cas, n'hésitez pas à modifier ou supprimer.
Le test de mutation a été inventé par Lipton. Les tests de mutation peuvent être considérés comme un moyen de mesurer la qualité ou l'efficacité d'une suite de tests. L'idée clé est d'injecter des défauts dans le programme à tester (c'est-à-dire de muter le programme), de préférence les types de défauts qu'un programmeur humain est susceptible de faire, et de voir si la suite de tests trouve les défauts introduits. Un exemple typique du type de test de mutation de défaut introduit pourrait être de remplacer x> 0 par x <0, ou de remplacer x par x + 1 ou x-1. La fraction des défauts détectés par la suite de tests est le "score d'adéquation de mutation" d'une suite de tests. En termes très lâches, on peut penser à cela comme une méthode de Monte-Carlo pour calculer le score d'adéquation de la mutation.
Plus abstraitement, on pourrait dire que le test de mutation met en évidence une symétrie ou une dualité entre un programme et ses suites de tests: non seulement la suite de tests peut être utilisée pour devenir plus confiante quant à l'exactitude d'un programme, mais à l'inverse, un programme peut être utilisé pour gagner en confiance sur la qualité d'une suite de tests.
À la lumière de cette dualité, le test de mutation est également conceptuellement proche de l' injection de fautes . Les deux sont techniquement similaires mais ont des objectifs différents. Les tests de mutation visent à mesurer la qualité de la suite de tests, tandis que l'injection de fautes vise à établir la qualité du programme, généralement la qualité de sa gestion des erreurs.
Récemment, des idées issues de tests de mutation ont été utilisées pour tester (formaliser des) théories logiques. Pour paraphraser l'abrégé de (4): Lors du développement de formalisations non triviales dans un prouveur de théorème, un temps considérable est consacré au «débogage» des spéci fi cations et des théorèmes. En général, des spéci fi cations ou des théorèmes incorrects sont découverts lors d'échecs de tentatives de preuve. Il s'agit d'une forme coûteuse de débogage. Il est donc souvent utile de tester des conjectures avant de se lancer dans une preuve. Une façon possible de procéder consiste à attribuer des valeurs aléatoires aux variables libres de la conjecture, puis à l'évaluer. (4) utilise des mutations pour tester la qualité des générateurs de cas de test utilisés.
Histoire . Extrait de (1): L'histoire des tests de mutation remonte à 1971 dans un article d'étudiant de Richard Lipton [...] La naissance du champ peut également être identifiée dans d'autres articles publiés à la fin des années 1970 par Lipton et al. (2) ainsi que Hamlet (3).
Référentiel de tests de mutation: Théorie des tests de mutation .
RA DeMillo, RJ Lipton, FG Sayward, Conseils sur la sélection des données de test: Aide pour le programmeur en exercice .
RG Hamlet, Test de programmes à l'aide d'un compilateur .
S. Berghofer, T. Nipkow, Tests aléatoires dans Isabelle / HOL. .