Saltar al contenido principal

Pruebas de Mutación

La prueba de mutación consiste en hacer cambios a un programa, ya sea manual o automáticamente, para identificar cambios que se pueden realizar y que no son detectados por las pruebas.

Las pruebas de mutación son similares a medir la cobertura de código, compartiendo el mismo objetivo de identificar el código no cubierto por las pruebas. Pero mientras que la cobertura de código se enfoca en verificar si una línea de código se ejecuta durante una prueba, las pruebas de mutación realmente comprueban que una prueba falle cuando esa línea es modificada. Una línea de código puede parecer cubierta por las pruebas, pero los resultados y efectos secundarios pueden no ser validados en dichas pruebas.

Cómo realizar Pruebas de Mutación

La herramienta cargo-mutants se puede utilizar para modificar automáticamente e iterativamente el código de Rust, y volver a ejecutar las pruebas después de cada mutación, para identificar código no probado.

  1. Instalar cargo-mutants:

    cargo install --locked cargo-mutants
  2. Ejecuta el comando cargo mutants dentro del directorio del crate de tu contrato.

    $ cargo mutants
    Found 4 mutants to test
    ok Unmutated baseline in 19.0s build + 0.6s test
    INFO Auto-set test timeout to 20s
    MISSED src/lib.rs:14:9: replace IncrementContract::increment -> u32 with 1 in 0.4s build + 0.4s test
    4 mutants tested in 23s: 1 missed, 3 caught

    El código que se identifica como no cubierto por una prueba será mostrado como una línea MISSED en la salida.

    Las diferencias de cada cambio que se intentó pueden encontrarse en el directorio mutants.out/diff.