Mutation Testing: El arte de la detección de mutantes

Mutation Testing: El arte de la detección de mutantes

Una de las grandes falencias que presentan las pruebas unitarias es que de alguna manera es factible manipularlas y orientarlas en pro de cumplir un cierto porcentaje de cobertura deseado, pero perdiendo el foco de lo realmente importante: la calidad. Es decir, buscamos asegurar que estamos cumpliendo con el umbral definido por el negocio y no certificamos la calidad de la pieza de código que estamos presentando a las instancias posteriores del ciclo de desarrollo de #software.

Tampoco es necesario preocuparse de sobre manera en esta mala práctica, ya que para resolver este sesgo han aparecido las pruebas de mutación #MutationTesting, que básicamente es una técnica que se utiliza para analizar la capacidad de una suite de pruebas para reaccionar ante cambios no deseados del comportamiento del sistema. Este modelo de trabajo es una forma de prueba de caja blanca en la que los evaluadores cambian componentes específicos del código fuente de una aplicación para garantizar que un conjunto de pruebas de software pueda detectar los cambios de manera activa.

#CodeQuality

Esta técnica consiste en modificar de una forma deliberada, específica y localizada el código de una aplicación (por ejemplo: cambios de operadores lógicos/ aritméticos, retorno de los métodos, modificación de límites, etc.) y ejecutar la suite de pruebas para comprobar si es sensible al cambio introducido y falla alguna de las pruebas definidas. A una versión alterada del código la llamamos mutante y es muy importante entender que se debe aplicar un cambio en una sola línea de todo el código cada vez, para evitar que dos mutaciones que tengan un efecto opuesto se lleguen a anular mutuamente.

Las posibles salidas que puede este proceso son:

· KILLED. El código modificado ha hecho que la prueba falle.

· SURVIVED. La prueba ha sobrevivido a la modificación. Test poco efectivo.

· NOT COVERAGE. El código no está cubierto por ninguna prueba.

Se deben analizar los resultados para evaluar la capacidad de las pruebas para identificar y eliminar los mutantes. Si un mutante no es detectado, es un indicador de una debilidad en las pruebas existentes. Se debe repetir el proceso con diferentes mutantes y ajustar la suite de pruebas en consecuencia para mejorar su robustez.
#PruebasDeSoftware

Para medir la efectividad de nuestras pruebas de mutación podemos utilizar la siguiente métrica:

Puntuación de Mutation = (N° de Mutantes Muertos/N° Total de Mutantes Muertos o Sobrevivientes) x 100

Una puntuación de mutación del 100% significa que la prueba fue adecuada. Cuando se trabaja con pruebas de mutación, hay muchas herramientas disponibles según el lenguaje de programación y el marco de pruebas utilizado.

Y tú, ¿ya utilizas Mutation Testing en tus proyectos? Cuéntanos cómo ha mejorado tus procesos de #QualityAssurance o qué retos has enfrentado.

Artículo escrito por: Gustavo Inzunza Rojas


Verity Consulting | #AcademiaVerity


Carlos Ariel González Canales

Analista QA, Funcional, No Funcional, Automatizador

2 meses

Muy buena información.

Inicia sesión para ver o añadir un comentario.

Más artículos de VERITY CONSULTING

Otros usuarios han visto

Ver temas