|
Testing por Mutación
¿En qué consiste el testing por mutación?
Partiendo de un sistema S que se desea probar, la mutación genera un conjunto M={M1, M2, … Mn} de mutantes de S. Cada mutante contiene uno o más cambios sintácticos, la mayoría de los cuales pueden considerarse fallos. La idea original de la mutación consiste en construir un conjunto de casos de prueba (test suite) que detecte todos los fallos inyectados en los mutantes. Cada cambio sintáctico se introduce en el mutante por medio de un “operador de mutación”:
El caso de prueba correspondiente a los datos de prueba (1, 1) produce salidas diferentes en el programa original (cuya salida es correcta) y en el mutante 1: así, este caso de prueba ha encontrado el fallo introducido en el mutante, diciéndose que el mutante está muerto. Por otro lado, ya que todos los casos de prueba ofrecen la misma salida en el programa original y en el mutante 4, se dice que el mutante está vivo. Además, este mutante es un mutante “funcionalmente equivalente”, ya que nunca podrá ser muerto por ningún caso de prueba. Los mutantes funcionalmente equivalentes se pueden considerar como ruido al analizar los resultados, ya que realmente entorpecen el conocimiento de la calidad del test suite: contienen un cambio sintáctico cuya detección, sin embargo, es imposible para los casos de prueba.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||

