Generación de Reporte de Cobertura con Pruebas End to End

Clase 8 de 25Curso de End to End Testing para APIs REST con Node.js

Resumen

¿Qué es un reporte de cobertura de pruebas y por qué es importante?

Lanzar un reporte de cobertura en tus proyectos de desarrollo es crucial para asegurarte de cuántas pruebas se están ejecutando y qué partes de tu código están siendo cubiertas. Estos reportes te guían en determinar qué flujos o endpoints aún no están cubiertos en tus pruebas actuales. La cobertura no mide la calidad de las pruebas; simplemente indica qué partes del código han sido "tocadas" durante las pruebas.

¿Cómo agregar tareas para generar un reporte de cobertura?

Para generar un reporte de cobertura, es necesario añadir configuraciones específicas en tu archivo package.json. A menudo se separan estas configuraciones para no sobrecargar un solo comando. Aquí te mostramos cómo puedes hacerlo:

  1. Añadiendo un comando en package.json:

    • Añade una nueva tarea que incluya una bandera para cobertura:
    {
      "scripts": {
        "test:e2e": "jest --coverage"
      }
    }
    
  2. Ejecutando el comando:

    • Usa el terminal para correr las pruebas:
    npm run test:e2e
    
    • Este comando generará un reporte que se mostrará en la terminal y también creará una carpeta coverage que contiene el reporte.

¿Cómo visualizar el reporte de cobertura gráficamente?

Visual Studio Code facilita encontrar este reporte. Dentro de tu proyecto, al ejecutar las pruebas, se crea automáticamente una carpeta llamada coverage.

  1. Localiza la carpeta:

    • Por defecto, esta carpeta es ignorada en Git, asegurando que los reportes de cobertura no se suban al repositorio.
  2. Abre el reporte en un navegador:

    • Dentro de coverage, busca index.html que puedes abrir con cualquier navegador web.
    • Este archivo te mostrará gráficamente qué partes de tu código fueron ejecutadas durante las pruebas.

¿Cómo asegurar una cobertura completa en tus servicios?

A menudo, al ejecutar pruebas de extremo a extremo (e2e), cubres múltiples líneas de código simplemente al lanzar la aplicación. Sin embargo, para asegurar una cobertura más detallada:

  • Asegúrate de crear pruebas que interactúen con todos los endpoints importantes de tus servicios.
  • Verifica que, al menos, los servicios cruciales de tu aplicación están siendo testeados adecuadamente.

Por ejemplo, asegúrate de que los routers, el proceso de autenticación y otros endpoints importantes tengan cobertura en las pruebas. Desarrolla pruebas específicas para endpoints no cubiertos, como el de inicio de sesión o la verificación de datos.

¿Cómo evitar colisiones de reportes de cobertura?

Es común que al integrar diferentes tipos de pruebas, como unit testing y end-to-end, los reportes de cobertura se entrelacen. Para prevenir esto:

  • Configura correctamente el directorio de cobertura en el archivo de configuración, como jest.config.js:

    module.exports = {
      coverageDirectory: 'coverage/e2e'
    };
    
  • Ignora las carpetas de cobertura en Git: Añade estas nuevas carpetas a tu archivo .gitignore para evitar que dichos reportes se registren en el control de versiones.

  • Ejecuta y verifica: Al correr nuevamente el comando npm run test:e2e, asegúrate de que tus pruebas estén generando reportes únicamente para el tipo de prueba especificado.

Esta metódica separación te ayudará a mantener un orden adecuado al manejar diferentes tipos de pruebas, asegurando que cada reporte es claro y útil para futuras revisiones y mejoras en el código. ¡Sigue adelante y continúa explorando cómo mejorar tu capacidad de testing!