27. Introducción a métricas de testing y cobertura

27.1 Introducción

Las métricas de testing ayudan a observar el avance, los riesgos y ciertos aspectos de la calidad del proceso de pruebas. Permiten responder preguntas como: cuántos casos se ejecutaron, cuántos fallaron, qué defectos siguen abiertos o qué requisitos tienen pruebas asociadas.

Sin embargo, una métrica mal interpretada puede generar conclusiones incorrectas. Por ejemplo, tener muchos casos ejecutados no significa necesariamente haber probado lo importante. Tener alta cobertura de código tampoco garantiza ausencia de defectos.

En este tema veremos métricas básicas de testing y cobertura, junto con sus límites y buenas prácticas.

27.2 ¿Qué es una métrica?

Una métrica es una medida que aporta información sobre un aspecto del proceso o producto. En testing, las métricas pueden referirse a ejecución de pruebas, defectos, cobertura, tiempo, estabilidad o riesgo.

Ejemplos simples:

  • Cantidad de casos ejecutados.
  • Porcentaje de casos aprobados.
  • Cantidad de defectos abiertos.
  • Defectos por severidad.
  • Requisitos cubiertos por pruebas.
  • Porcentaje de código ejecutado por pruebas automatizadas.

Una métrica no reemplaza el análisis. Es una señal que necesita contexto.

27.3 ¿Para qué sirven las métricas de testing?

Las métricas pueden servir para:

  • Comunicar avance de ejecución.
  • Identificar riesgos pendientes.
  • Detectar zonas con muchos defectos.
  • Apoyar decisiones de publicación.
  • Medir estabilidad de una versión.
  • Evaluar si los requisitos tienen pruebas asociadas.
  • Observar tendencias entre versiones.
  • Mejorar el proceso de testing.

El objetivo no es juntar números por costumbre, sino obtener información útil para decidir.

27.4 Métricas de ejecución

Las métricas de ejecución muestran el estado de los casos de prueba durante una ronda de testing.

Ejemplos:

  • Total de casos planificados.
  • Casos ejecutados.
  • Casos aprobados.
  • Casos fallidos.
  • Casos bloqueados.
  • Casos no ejecutados.
  • Porcentaje de avance.

Estas métricas ayudan a saber cuánto se ejecutó, pero no indican por sí solas si se cubrieron los riesgos más importantes.

27.5 Ejemplo de métricas de ejecución

Estado Cantidad Interpretación inicial
Aprobados 70 Casos ejecutados sin diferencias observadas.
Fallidos 10 Casos con diferencias entre esperado y obtenido.
Bloqueados 5 No pudieron ejecutarse por ambiente, datos u otra dependencia.
No ejecutados 15 Pendientes de ejecución.

Si los 15 casos no ejecutados son de bajo riesgo, la situación es distinta a si incluyen pagos o seguridad. Por eso hace falta contexto.

27.6 Métricas de defectos

Las métricas de defectos ayudan a analizar problemas encontrados.

Ejemplos:

  • Total de defectos abiertos.
  • Defectos por severidad.
  • Defectos por prioridad.
  • Defectos por módulo.
  • Defectos nuevos por versión.
  • Defectos corregidos.
  • Defectos reabiertos.
  • Tiempo promedio de resolución.

Estas métricas ayudan a detectar áreas problemáticas y entender si la versión está estabilizándose.

27.7 Defectos por severidad

Una métrica útil es la distribución de defectos por severidad.

Severidad Cantidad Riesgo
Crítica 1 Puede bloquear publicación.
Alta 4 Requiere análisis y corrección prioritaria.
Media 8 Puede planificarse según impacto.
Baja 12 Impacto menor, pero debe gestionarse.

No es lo mismo tener 25 defectos menores que tener 2 defectos críticos. La severidad cambia la interpretación.

27.8 Defectos por módulo

Analizar defectos por módulo puede revelar zonas de riesgo.

Ejemplo:

  • Login: 2 defectos.
  • Compras: 12 defectos.
  • Pagos: 9 defectos.
  • Reportes: 3 defectos.

Si compras y pagos concentran la mayoría de defectos, conviene investigar si hay problemas de requisitos, diseño, integración o cobertura de pruebas en esas áreas.

27.9 Defectos reabiertos

Un defecto reabierto es un defecto que se marcó como corregido, pero volvió a fallar en retest o reapareció después.

Una cantidad alta de defectos reabiertos puede indicar:

  • Correcciones incompletas.
  • Mala comprensión del defecto.
  • Falta de retest adecuado.
  • Ambientes inconsistentes.
  • Regresión en zonas relacionadas.

No debe usarse para culpar personas, sino para mejorar análisis, comunicación y verificación de correcciones.

27.10 ¿Qué es cobertura?

La cobertura indica qué parte de algo fue alcanzada por las pruebas. Ese "algo" puede ser requisitos, funcionalidades, casos de uso, riesgos, código o combinaciones de datos.

Ejemplos:

  • Cobertura de requisitos.
  • Cobertura funcional.
  • Cobertura de casos de prueba.
  • Cobertura de riesgos.
  • Cobertura de código.
  • Cobertura de navegadores o dispositivos.

La cobertura ayuda a saber qué se revisó y qué puede haber quedado fuera.

27.11 Cobertura de requisitos

La cobertura de requisitos indica qué requisitos tienen pruebas asociadas.

Ejemplo:

Requisito Casos asociados Estado
R-LOGIN-01 CP-LOGIN-001, CP-LOGIN-002 Cubierto
R-PAGO-01 CP-PAGO-001, CP-PAGO-002, CP-PAGO-003 Cubierto
R-REPORTE-04 Sin casos asociados No cubierto

Que un requisito tenga casos asociados no garantiza que esté bien probado, pero ayuda a detectar requisitos sin pruebas.

27.12 Cobertura funcional

La cobertura funcional analiza qué funcionalidades o flujos fueron probados.

Ejemplo para una tienda en línea:

  • Registro: cubierto.
  • Login: cubierto.
  • Búsqueda: cubierto parcialmente.
  • Carrito: cubierto.
  • Pago: cubierto parcialmente.
  • Devoluciones: no cubierto.

Esta información ayuda a comunicar zonas no probadas o cubiertas de forma limitada.

27.13 Cobertura de código

La cobertura de código indica qué porcentaje del código fue ejecutado por pruebas automatizadas. Puede medirse por líneas, sentencias, ramas, funciones o condiciones.

Ejemplos:

  • 80% de líneas cubiertas.
  • 65% de ramas cubiertas.
  • 90% de funciones ejecutadas.

La cobertura de código es útil, pero debe interpretarse con cuidado. Un porcentaje alto no garantiza que las pruebas verifiquen correctamente los resultados.

27.14 El límite de la cobertura de código

Una prueba puede ejecutar una línea de código y aun así no verificar si el resultado es correcto. Por eso la cobertura mide ejecución, no calidad de las aserciones.

Ejemplo conceptual:

Una prueba puede llamar a una función de descuento y aumentar cobertura, pero si no comprueba el descuento esperado, podría no detectar un cálculo incorrecto.

La cobertura de código responde "qué código fue ejecutado", no "qué comportamiento fue validado correctamente".

27.15 Cobertura de riesgos

La cobertura de riesgos analiza si los riesgos principales tienen pruebas asociadas.

Ejemplo:

  • Riesgo: pagos duplicados. Pruebas asociadas: sí.
  • Riesgo: usuarios sin permiso acceden a administración. Pruebas asociadas: sí.
  • Riesgo: pérdida de datos al importar archivos. Pruebas asociadas: parcial.
  • Riesgo: caída del servicio externo de correo. Pruebas asociadas: no.

Esta cobertura suele ser más útil para decisiones que una simple cantidad de casos ejecutados.

27.16 Métricas de tiempo

También pueden medirse tiempos relacionados con testing y defectos:

  • Tiempo de ejecución de una suite.
  • Tiempo promedio de corrección de defectos.
  • Tiempo promedio de retest.
  • Tiempo entre detección y cierre.
  • Tiempo invertido en pruebas bloqueadas.

Estas métricas ayudan a detectar cuellos de botella. Por ejemplo, si muchos casos quedan bloqueados por datos, quizá el problema no sea la ejecución sino la preparación del ambiente.

27.17 Métricas engañosas

Algunas métricas pueden generar conclusiones equivocadas si se usan sin contexto.

Métrica Riesgo de mala interpretación
Cantidad de casos de prueba Más casos no siempre significa mejor cobertura o mayor calidad.
Porcentaje de casos aprobados Puede ser alto aunque no se hayan probado riesgos críticos.
Cantidad de defectos encontrados Más defectos puede indicar mala calidad, pero también testing más profundo.
Cobertura de código Alta cobertura no garantiza buenas verificaciones.

Las métricas deben interpretarse junto con contexto, riesgo y criterio técnico.

27.18 Buenas métricas para decidir

Una buena métrica ayuda a tomar decisiones. Por ejemplo:

  • Defectos críticos abiertos antes de publicar.
  • Casos críticos no ejecutados.
  • Pruebas bloqueadas por ambiente.
  • Requisitos sin casos asociados.
  • Riesgos altos sin cobertura.
  • Defectos reabiertos en la versión.
  • Tiempo de ejecución de regresión automatizada.

Estas métricas no solo describen actividad; ayudan a decidir qué hacer.

27.19 Ejemplo de informe breve

Suite ejecutada Regresión crítica versión 2.4.0
Casos ejecutados 45 de 50
Aprobados 40
Fallidos 3
Bloqueados 2
Defectos críticos abiertos 0
Riesgo pendiente No se ejecutaron dos casos de pago por indisponibilidad del sandbox.

El informe incluye números y contexto. Eso lo vuelve más útil para decidir.

27.20 Errores comunes

Al usar métricas de testing, algunos errores frecuentes son:

  • Medir por medir, sin pregunta de negocio o calidad.
  • Usar cantidad de casos como indicador principal de calidad.
  • Ignorar severidad de defectos.
  • No separar casos bloqueados de fallidos.
  • Celebrar alta cobertura de código sin revisar calidad de pruebas.
  • No comunicar riesgos pendientes.
  • Comparar equipos solo por cantidad de defectos encontrados.
  • No revisar tendencias entre versiones.

27.21 Buenas prácticas

Para usar métricas de forma útil conviene:

  • Definir qué decisión ayudará a tomar cada métrica.
  • Combinar métricas cuantitativas con análisis cualitativo.
  • Incluir contexto y riesgos pendientes.
  • Diferenciar defectos por severidad y prioridad.
  • Medir cobertura de requisitos, riesgos y funcionalidades, no solo código.
  • Revisar tendencias, no solo valores aislados.
  • Evitar usar métricas para culpar personas.
  • Actualizar métricas cuando cambian objetivos del proyecto.

27.22 Qué debes recordar de este tema

  • Las métricas de testing aportan información, pero necesitan contexto.
  • Las métricas de ejecución muestran avance y estado de casos.
  • Las métricas de defectos ayudan a entender impacto y concentración de problemas.
  • La cobertura indica qué parte de algo fue alcanzada por pruebas.
  • La cobertura de código mide ejecución de código, no ausencia de defectos.
  • La cobertura de requisitos y riesgos puede ser muy útil para decidir.
  • Más casos o más cobertura no siempre significan mejor calidad.
  • Una buena métrica debe ayudar a tomar una decisión concreta.

27.23 Conclusión

Las métricas y la cobertura ayudan a entender el estado del testing, pero no reemplazan el criterio profesional. Un número aislado puede ser engañoso si no se acompaña de contexto, riesgos y análisis.

Las mejores métricas son las que ayudan a decidir: qué falta probar, qué defectos bloquean, qué riesgos siguen abiertos y dónde conviene enfocar el esfuerzo.

En el próximo tema estudiaremos trazabilidad entre requisitos, pruebas y defectos, una práctica que permite conectar lo que se pidió, lo que se probó y lo que falló.