Cobertura de Código
Medir la cobertura de código utiliza herramientas para identificar las líneas de código que son y no son ejecutadas por las pruebas. Las estadísticas de cobertura de código pueden darnos una idea de cuánto de un contrato está realmente probado por sus pruebas.
Las pruebas de mutación son otra forma de pruebas de cobertura. Ver Pruebas de Mutación.
En proyectos de Rust, la herramienta cargo-llvm-cov
se puede utilizar para generar estadísticas de cobertura, informes en HTML y archivos lcov que los IDE cargarán para mostrar la cobertura en el editor de código.
Instala cargo-llvm-cov
antes de proceder con los otros comandos.
cargo install cargo-llvm-cov
Cómo Obtener Estadísticas de Cobertura
Ejecuta el subcomando de prueba que ejecutará las pruebas y mostrará las estadísticas por archivo.
cargo llvm-cov test
Cómo Generar un Informe de Cobertura con Código
Ejecuta el subcomando de prueba que ejecutará las pruebas y generará un conjunto de archivos HTML que mostrarán qué líneas de código están cubiertas.
cargo llvm-cov test --html --open
La salida del comando indicará dónde se ha escrito el archivo HTML. Abre el archivo en un navegador.
Cómo Generar un Archivo LCOV para IDEs
Ejecuta el subcomando de prueba que ejecutará las pruebas y generará un único archivo lcov.info
.
cargo llvm-cov test --lcov --output-path=lcov.info
Carga el archivo lcov.info
en tu IDE utilizando su función de cobertura. En VSCode, esto se puede hacer instalando la extensión [Coverage Gutters] y ejecutando el comando Coverage Gutters: Watch
.
Medir la cobertura de código en pruebas de fuzz requiere herramientas diferentes. Ver Fuzzing.
Guías en esta categoría:
📄️ Pruebas Unitarias
Las pruebas unitarias son pruebas pequeñas que prueban contratos inteligentes.
📄️ Simulación
Simular contratos de dependencia en pruebas.
📄️ Prueba de Autorización
Escribe pruebas que verifiquen la autorización del contrato.
📄️ Eventos de Prueba
Escribe pruebas que verifiquen los eventos de contrato.
📄️ Pruebas de Integración
Las pruebas de integración utilizan contratos de dependencia en lugar de simulaciones.
📄️ Pruebas de Integración con Datos de Mainnet
Las pruebas de integración utilizan contratos de dependencia en lugar de simulaciones.
📄️ Fuzzing
Fuzzing y pruebas de propiedades para encontrar comportamientos inesperados.
📄️ Pruebas Diferenciales
Las pruebas diferenciales detectan cambios no intencionados.
📄️ Pruebas Diferenciales con Imágenes de Prueba
Prueba diferencial utilizando imágenes de prueba automáticas.
📄️ Cobertura de Código
Las herramientas de cobertura de código encuentran código no probado.
📄️ Pruebas de Mutación
La prueba de mutación encuentra código no probado.