No estoy 100% seguro de si la explicación a continuación es históricamente precisa. Si no es así, no dude en editar o eliminar.
Las pruebas de mutación fueron inventadas por Lipton. Las pruebas de mutación pueden verse como una forma de medir la calidad o efectividad de un conjunto de pruebas. La idea clave es inyectar fallas en el programa que se va a probar (es decir, mutar el programa), preferiblemente los tipos de fallas que un programador humano puede cometer, y ver si el conjunto de pruebas encuentra las fallas introducidas. Un ejemplo típico del tipo de prueba de mutación de falla que podría introducirse sería reemplazar x> 0 por x <0, o reemplazar x por x + 1 o x-1. La fracción de fallas detectadas por el conjunto de pruebas es el "puntaje de adecuación de mutación" de un conjunto de pruebas. Hablando muy libremente, uno puede pensar en esto como un método de Monte-Carlo para calcular el puntaje de adecuación de la mutación.
De manera más abstracta, se podría decir que las pruebas de mutación ponen de manifiesto una simetría o dualidad entre un programa y sus conjuntos de pruebas: no solo se puede usar el conjunto de pruebas para tener más confianza en la exactitud de un programa, sino que, a la inversa, un programa puede solía ganar confianza sobre la calidad de un conjunto de pruebas.
A la luz de esta dualidad, las pruebas de mutación también están conceptualmente cerca de la inyección de falla . Ambos son técnicamente similares pero tienen diferentes propósitos. Las pruebas de mutación buscan medir la calidad del conjunto de pruebas, mientras que la inyección de fallas busca establecer la calidad del programa, generalmente la calidad de su manejo de errores.
Recientemente, las ideas de las pruebas de mutación se han utilizado para probar (formalizaciones de) teorías lógicas. Parafraseando el resumen de (4): Al desarrollar formalizaciones no triviales en un probador de teoremas, se dedica una cantidad considerable de tiempo a "depurar" las especificaciones y teoremas. Por lo general, se descubren especificaciones o teoremas incorrectos durante los intentos de prueba fallidos. Esta es una forma costosa de depuración. Por lo tanto, a menudo es útil probar conjeturas antes de embarcarse en una prueba. Una posible forma de hacerlo es asignar valores aleatorios a las variables libres de la conjetura y luego evaluarla. (4) utiliza mutaciones para evaluar la calidad de los generadores de casos de prueba utilizados.
Historia . De (1): La historia de las pruebas de mutación se remonta a 1971 en un artículo estudiantil de Richard Lipton [...] El nacimiento del campo también se puede identificar en otros documentos publicados a finales de la década de 1970 por Lipton et al. (2) así como Hamlet (3).
Repositorio de prueba de mutación: Teoría de prueba de mutación .
RA DeMillo, RJ Lipton, FG Sayward, Consejos sobre la selección de datos de prueba: Ayuda para el programador practicante .
RG Hamlet, Programas de prueba con la ayuda de un compilador .
S. Berghofer, T. Nipkow, Pruebas aleatorias en Isabelle / HOL. .