Inicio Productos BACTERIO
BACTERIO Mutation Test System
logo_bacterio_2

BACTERIO Mutation Test System es una herramienta de pruebas para Java basada en la técnica de mutación. La mutación es un técnica de pruebas que se basa en la capacidad de los casos de prueba para encontrar fallos en el sistema que se está probando. La mutación es una técnica desarrollada durante las últimas décadas en el ámbito de la investigación cuya transferencia al entorno industrial se está realizando con éxito durante los últimos años.

 
¿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”:

  • La tabla a) muestra el código fuente del programa original y de algunos mutantes.
  • La tabla b) presenta los resultados obtenidos al ejecutar algunos casos de prueba, con los datos indicados, sobre cada una de las versiones del programa (original y mutantes).

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.

Versión

Código

Original

int sum(int a, int b) {
return a + b;
}

Mutante 1

int sum(int a, int b) {
return a - b;
}

Mutante 2

int sum(int a, int b) {
return a * b;
}

Mutante 3

int sum(int a, int b) {
return a / b;
}

Mutante 4

int sum(int a, int b) {
return a + b++;
}

a) Código de algunos mutantes

Datos de prueba (a,b)

(1, 1)

(0, 0)

(-1, 0)

(-1, -1)

Versiones del prorgama

Original

2

0

-1

-2

Mutante 1

0

0

-1

0

Mutante 2

1

0

0

1

Mutante 3

1

Error

Error

1

Mutante 4

2

0

-1

-2

b) Resultados con algunos datos de prueba
 
¿Qué es BACTERIO Mutation Test System?

BACTERIO Mutation Test System es una herramienta para probar aplicaciones Java completas. Genera copias de la aplicación e introduce en cada una, a criterio del usuario, uno o más fallos. A partir de este momento, permite ejecutar un test suite compuesto de casos JUnit o UISPec contra la versión original y contra los mutantes: cuando un test suite no encuentra fallos en la aplicación original y, sin embargo, sí que encuentra los que se han sembrado en los mutantes, puede decirse que la prueba de la aplicación ha sido satisfactoria, ya que se dispone de un test suite muy completo que no encuentra fallos en la versión original y elimina un alto porcentaje de mutantes.

El proceso de testing basado en mutación con la herramienta BACTERIO Mutation Test System queda resumido en la siguiente figura:

 

Proceso de preubas con BACTERIO

 

El proceso de pruebas con BACTERIO Mutation Test System se puede resumir en los siguientes pasos:

 

1. Generación de mutantes

En este primer paso, BACTERIO Mutation Test System genera versiones defectuosas (mutantes) de las clases que componen la aplicación que se va a probar. Para ello, proporciona varios operadores de mutación: reemplazo de operadores aritméticos, intercambio de parámetros, incrementador y decrementador de operandos, etc.

 

Generación de Mutantes


2. Combinación de mutantes

En el segundo paso, BACTERIO Mutation Test System proporciona tres algoritmos (un mutante por versión, usar cada mutante al menos una vez, y usar todos los pares de mutantes) para combinar los mutantes y producir versiones defectuosas.

 

Combianación de mutantes


3. Ejecución de los casos de prueba

En este último paso, BACTERIO Mutation Test System permite ejecutar los casos de prueba sobre las distintas versiones defectuosas generadas, obteniendo el porcentaje de mutantes eliminados, y por tanto la cobertura alcanzada con el test suite diseñado.

 

Ejecución de los casos de preuba

 
Versión Demo de BACTERIO Mutation Test System

 

Obtener demo