Pruebas de mutación en pruebas de software: Mutant Score & Ejemplo de análisis

Tabla de contenido:

Anonim

Prueba de mutación

La prueba de mutación es un tipo de prueba de software en la 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 robustez para que fallen 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 la creación de una falla en el programa y es un tipo de prueba de caja blanca que se utiliza principalmente para pruebas unitarias.

La mutación se propuso originalmente en 1971, pero perdió fervor debido a los altos costos involucrados. Ahora, una vez más, ha elegido vapor y se usa ampliamente para lenguajes como Java y XML.

En este tutorial, aprenderá:

  • ¿Qué es la prueba de mutación?
  • ¿Cómo ejecutar la prueba de mutaciones?
  • ¿Cómo crear programas mutantes?
  • ¿Qué cambiar en un programa mutante?
  • Tipos de pruebas de mutación
  • Puntuación de mutación:
  • Ventajas de las pruebas de mutación:
  • Desventajas de las pruebas de mutación:

¿Cómo ejecutar la prueba de mutaciones?

Los siguientes son los pasos para ejecutar la prueba de mutación (análisis de mutación):

Paso 1 : Las fallas se introducen en el código fuente del programa creando muchas versiones llamadas mutantes. Cada mutante debe contener una sola 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. Un caso de prueba debe ser adecuado y está ajustado para detectar fallas en un programa.

Paso 3 : Compare los resultados de un programa original y mutante.

Paso 4 : Si el programa original y los programas mutantes generan una salida diferente, entonces el caso de prueba mata al 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 la misma salida, Mutant se mantiene vivo. En tales casos, es necesario crear casos de prueba más efectivos 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)
Imprime "Hola"
Else
Imprime "Hola"
Si ( x )Imprime "Hola"
Else
Imprime "Hola"

¿Qué cambiar en un programa mutante?

Existen varias técnicas que podrían usarse para generar programas mutantes. Vamos a mirarlos

Operadores de reemplazo de operandos Operadores de modificación de expresión Operadores de modificación de declaraciones
Reemplace el operando con otro operando (x con yo y con x) o con el valor constante. Reemplazar un operador o la inserción de 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 de xey
Si (5> y) reemplaza x por la constante 5
Ejemplo:
If (x == y)
Podemos reemplazar == en> = y tener un programa mutante como
If (x> = y) e insertar ++ en la declaración
If (x == ++ y)
Ejemplo: elimine
la parte else en una instrucción if-else
Elimine toda la instrucción if-else para comprobar cómo se comporta un programa
Algunos de los operadores de mutación de muestra:
  • Reemplazo de etiqueta GOTO
  • Reemplazo de declaración de devolución
  • Eliminación de declaración
  • Inserción de operador unario (Like - y ++)
  • Reemplazo del conector lógico
  • Reemplazo de nombre de matriz comparable
  • Eliminación de la parte else en la declaración if-else
  • Agregar o reemplazar operadores
  • Reemplazo de estados de cuenta cambiando los datos
  • Modificación de datos para las variables
  • Modificación de tipos de datos en el programa.

Automatización de las pruebas de mutación:

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 -

  • Stryker
  • Pruebas PIT

Tipos de pruebas de mutación

En Ingeniería de Software, las pruebas de mutación podrían clasificarse fundamentalmente en 3 tipos: mutación de declaración, mutación de decisión y mutación de valor.

  1. 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.
  2. Mutación de valor : se modifican los valores de los parámetros primarios
  3. 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 el número total de mutantes.

  • Puntuación de mutación = (mutantes muertos / número total de mutantes) * 100

Los casos de prueba son adecuados para la mutación si la puntuación es del 100%. Los resultados experimentales han demostrado que las pruebas de mutación 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 mutación brindan 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 en el programa.
  • Los clientes se benefician de esta prueba 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 hay muchos programas mutantes que deben generarse.
  • 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á el mismo número de casos de prueba que el del programa original. Por lo tanto, es posible que sea necesario probar una gran cantidad de programas mutantes con el conjunto de pruebas original.
  • Dado que este método implica cambios en el código fuente, no se aplica en absoluto a las pruebas de caja negra.

Conclusión:

¿Quiere una prueba exhaustiva de su 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.