Core IntegrateEntrega continua
02 · Verificación · 12 min

Pruebas automáticas: qué merece la pena comprobar

Una prueba que falla a veces es peor que no tenerla: enseña al equipo a ignorar el color rojo.

Redacción de Core IntegrateCómo escribimos Actualizado el
Editor mostrando la ejecución de un conjunto de pruebas

La cobertura mide poco

El porcentaje de líneas de código ejecutadas por las pruebas es fácil de medir, y por eso se convierte en objetivo. Pero mide ejecución, no comprobación: una prueba que recorre una función sin verificar nada suma cobertura igual que una buena.

Fijar un umbral de cobertura produce, con notable fiabilidad, pruebas escritas para alcanzarlo.

Qué distingue una prueba útil

  • Comprueba comportamiento, no implementación. Si refactorizar rompe la prueba sin cambiar el comportamiento, la prueba estorba.
  • Falla por una sola razón. Cuando falla, se sabe qué mirar.
  • Es determinista. Mismo código, mismo resultado, siempre.
  • Es rápida, o vive fuera del flujo rápido.
  • Cubre un caso que puede ocurrir, no una combinación imposible.

Las pruebas intermitentes

Una prueba que falla una de cada veinte ejecuciones sin motivo aparente hace más daño que su ausencia: enseña al equipo que el rojo no significa nada. A partir de ahí, un fallo real pasa desapercibido.

Causas habituales de intermitencia
CausaSíntoma
Dependencia del tiempoFalla a medianoche o en otra zona horaria
Orden de ejecuciónFalla sólo al ejecutarse en paralelo
Estado compartidoFalla la segunda vez seguida
Espera fija en lugar de condiciónFalla cuando la máquina va lenta
Servicio externo realFalla cuando el otro sistema tiene un mal día
Datos aleatoriosFalla con un valor concreto, una vez al mes

Datos de prueba

La forma más rápida de tener datos realistas es copiar producción, y es también una fuente frecuente de incidentes de protección de datos: copias de datos personales en entornos con menos control y más gente con acceso.

Las alternativas —datos sintéticos, subconjuntos anonimizados— cuestan más de preparar y evitan un problema que es caro de explicar después.

Seguir

Los demás textos