1 of 17

MUTATION TESTING

Ing° Alan David López

2 of 17

MUTATION TESTING

LAS PRUEBAS DE MUTACIÓN SON UNA FORMA DE PRUEBA DE CAJA BLANCA EN DONDE SE CAMBIAN COMPONENTES ESPECÍFICOS DEL CÓDIGO DE UNA APLICACIÓN, ARTEFACTO O SOFTWARE PARA GARANTIZAR QUE EL SET DE PRUEBAS IMPLEMENTADO DETECTE LOS CAMBIOS.

MUTATION TESTING Ing° Alan David López

3 of 17

TÉRMINOS

  • GROUND STRING:

EL SEGMENTO DE CÓDIGO QUE SERÁ MODIFICADO

  • MUTATION OPERATOR:

UNA REGLA QUE ESPECIFICA LA VARIACIÓN SINTÁCTICA DEL SEGMENTO DE CÓDIGO

  • MUTANT:

EL RESULTADO DE UNA APLICACIÓN DE UN OPERADOR DE MUTACIÓN

MUTATION TESTING Ing° Alan David López

4 of 17

EJEMPLO (Función esPar)

MUTATION TESTING Ing° Alan David López

5 of 17

EJEMPLO (dos conjuntos de test para esPar() )

  • DOS TEST SETS:
    • T1 = {6, 12, 24} 🡪 OK
    • T2 = {1, 7, 11} 🡪 NOT OK

MUTATION TESTING Ing° Alan David López

6 of 17

EJEMPLO (El test de mutación cambia esPar() )

MUTATION TESTING Ing° Alan David López

7 of 17

EJEMPLO (Nuevo resultado de los tests)

  • DOS TEST SETS:
    • T1 = {6, 12, 24} 🡪 OK
    • T2 = {1, 7, 11} 🡪 NOT OK

MUTATION TESTING Ing° Alan David López

8 of 17

EJEMPLO (Objetivo: que los test fallen)

  • DOS TEST SETS:
    • T1 = {6, 12, 24, 2} 🡪 OK
    • T2 = {1, 7, 11, 9} 🡪 NOT OK

MUTATION TESTING Ing° Alan David López

9 of 17

Entonces qué son las pruebas de mutación?

  • Es una técnica utilizada para evaluar la efectividad de los casos de prueba en la detección de errores en el código.
  • La idea es simular cambios aleatorios en el código fuente (mutaciones) y ejecutar los casos de prueba existentes en cada mutación.
  • Si los casos de prueba fallan en alguna mutación, se considera que el caso de prueba es efectivo, ya que ha detectado una mutación que representa un posible error en el código.

MUTATION TESTING Ing° Alan David López

10 of 17

Plugins y herramientas

  • PITtest
  • Javalanche
  • uJava
  • Jester
  • uClipse
  • JavaMut

MUTATION TESTING Ing° Alan David López

11 of 17

PITtest informe

  • clean install pitest:mutationCoverage pitest:report-aggregate-module -DskipITs

MUTATION TESTING Ing° Alan David López

12 of 17

PITtest informe

MUTATION TESTING Ing° Alan David López

13 of 17

PITtest informe

MUTATION TESTING Ing° Alan David López

14 of 17

PITtest informe

MUTATION TESTING Ing° Alan David López

15 of 17

PITtest Operadores de mutación

  • https://pitest.org/quickstart/mutators/

MUTATION TESTING Ing° Alan David López

Conditionals Boundary

Increments

Invert Negatives

Math

Negate Conditionals

Return Values

Void Method Calls

Empty returns

False Returns

True returns

Null returns

Primitive returns

Remove Conditionals

Experimental Switch

Inline Constant

Constructor Calls

Non Void Method Calls

Remove Increments

Experimental Argument Propagation

Experimental Big Integer

Experimental Member Variable

Experimental Naked Receiver

Negation

Arithmetic Operator Replacement

Arithmetic Operator Deletion

Constant Replacement

Bitwise Operator

Relational Operator Replacement

Unary Operator Insertion

16 of 17

PITtest Operadores de mutación

MUTATION TESTING Ing° Alan David López

17 of 17

MUCHAS�GRACIAS

Ing° Alan David López