¿Qué son las pruebas de mutación? (Ejemplo)
¿Qué son las pruebas de mutación?
Prueba de mutación es un tipo de prueba de software en el que ciertas declaraciones del código fuente se cambian/mutan para verificar si los casos de prueba pueden encontrar errores en el código fuente. El objetivo de las pruebas de mutación es garantizar la calidad de los casos de prueba en términos de solidez para que no superen el código fuente mutado.
Los cambios realizados en el programa mutante deben mantenerse extremadamente pequeños para que no afecten el objetivo general del programa. La prueba de mutación también se denomina estrategia de prueba basada en fallas, ya que implica crear una falla en el programa y es un tipo de Blanco Box Pruebas que se utiliza principalmente para Examen de la unidad.
La mutación se propuso originalmente en 1971, pero perdió fervor debido a los altos costos que implicaba. Ahora, nuevamente ha cobrado fuerza y se usa ampliamente para idiomas como Java y XML.
¿Cómo ejecutar las pruebas de mutación?
Los siguientes son los pasos para ejecutar pruebas de mutación (análisis de mutaciones):
Paso 1: Los fallos se introducen en el código fuente del programa creando muchas versiones llamadas mutantes. Cada mutante debe contener una única falla y el objetivo es hacer que la versión mutante falle, lo que demuestra la efectividad de los casos de prueba.
Paso 2: Los casos de prueba se aplican al programa original y también al programa mutante. A Caso de prueba debe ser adecuado y se modifica para detectar fallas en un programa.
Paso 3: Compara los resultados de un programa original y mutante.
Paso 4: Si el programa original y los programas mutantes generan resultados diferentes, entonces el caso de prueba elimina el mutante. Por lo tanto, el caso de prueba es lo suficientemente bueno para detectar el cambio entre el programa original y el mutante.
Paso 5: Si el programa original y el programa mutante generan el mismo resultado, Mutant se mantiene vivo. En tales casos, es necesario crear casos de prueba más eficaces que eliminen a todos los mutantes.
¿Cómo crear programas mutantes?
Una mutación no es más que un único cambio sintáctico que se realiza en la declaración del programa. Cada programa mutante debe diferir del programa original en una mutación.
programa original | Programa mutante |
---|---|
Si (x>y)
Imprimir "Hola" otro Imprimir "Hola" |
Si(x <y)
Imprimir "Hola" otro Imprimir "Hola" |
¿Qué cambiar en un Programa Mutante?
Existen varias técnicas que podrían usarse para generar programas mutantes. Miremoslos
Operaoperadores de reemplazo nd | Modificación de expresión Operatoros | Modificación de declaración Operatoros |
---|---|---|
Reemplace el operando con otro operando (x con y o y con x) o con el valor constante. | Reemplazar un operador o insertar nuevos operadores en una declaración de programa. | Las declaraciones programáticas se modifican para crear programas mutantes. |
Ejemplo-
Si (x>y) reemplaza los valores x e y Si(5>y) reemplaza x por la constante 5 |
Ejemplo-
Si(x==y) Podemos reemplazar == en >= y tener un programa mutante como If(x>=y) e insertando ++ en la declaración Si(x==++y) |
Ejemplo-
Eliminar la parte else en una declaración if-else Elimine toda la declaración if-else para comprobar cómo se comporta un programa Algunos operadores de mutación de muestra:
|
Automatización de pruebas de mutaciones
Las pruebas de mutación requieren mucho tiempo y son complicadas de ejecutar manualmente. Para acelerar el proceso, es recomendable optar por herramientas de automatización. Las herramientas de automatización también reducen el costo de las pruebas.
Lista de herramientas disponibles-
Tipos de pruebas de mutación
In Ingeniería de SoftwareLas pruebas de mutación podrían clasificarse fundamentalmente en tres tipos: mutación de declaración, mutación de decisión y mutación de valor.
- Mutación de declaración – el desarrollador corta y pega una parte de un código cuyo resultado puede ser la eliminación de algunas líneas
- Mutación de valor– se modifican los valores de los parámetros primarios
- Mutación de decisión– las declaraciones de control deben cambiarse
Puntuación de mutación
La puntuación de mutación se define como el porcentaje de mutantes muertos con respecto al número total de mutantes.
- Puntuación de mutación = (Mutantes asesinados / Número total de mutantes) * 100
Los casos de prueba son mutaciones adecuadas si la puntuación es del 100%. Los resultados experimentales han demostrado que las pruebas de mutaciones son un enfoque eficaz para medir la idoneidad de los casos de prueba. Pero el principal inconveniente es el alto costo de generar los mutantes y ejecutar cada caso de prueba contra ese programa mutante.
Ventajas de las pruebas de mutación
Las siguientes son las ventajas de las pruebas de mutación:
- Es un enfoque poderoso para lograr una alta cobertura del programa fuente.
- Esta prueba es capaz de probar exhaustivamente el programa mutante.
- Las pruebas de mutaciones aportan un buen nivel de detección de errores al desarrollador de software.
- Este método descubre ambigüedades en el código fuente y tiene la capacidad de detectar todas las fallas del programa.
- Los clientes se benefician de estas pruebas al obtener un sistema más confiable y estable.
Desventajas de las pruebas de mutación
Por otro lado, las siguientes son las desventajas de las pruebas mutantes:
- Las pruebas de mutaciones son extremadamente costosas y requieren mucho tiempo, ya que es necesario generar muchos programas mutantes.
- Dado que lleva mucho tiempo, es justo decir que esta prueba no se puede realizar sin una herramienta de automatización.
- Cada mutación tendrá la misma cantidad de casos de prueba que la del programa original. Por lo tanto, es posible que sea necesario probar una gran cantidad de programas mutantes con el conjunto de pruebas original.
- Como este método implica cambios en el código fuente, no es aplicable en absoluto para Black Box Pruebas .
Conclusión
¿Quieres pruebas exhaustivas de tu aplicación? La respuesta es la prueba de mutación. Es la técnica más completa para probar un programa. Este es el método que verifica la efectividad y precisión de un programa de prueba para detectar fallas o errores en el sistema.