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.

La prueba de mutación es similar a medir cobertura de código. Su objetivo es identificar código no cubierto por las pruebas, o posiblemente que parece estar cubierto por pruebas porque las líneas de código se están ejecutando durante una prueba, pero los resultados mismos, como el valor de retorno de una función de contrato o los eventos publicados, no están siendo probados.

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.