Objetivo real del testing
- Detectar riesgos temprano, no “subir porcentaje”.
- Habilitar cambios seguros y frecuentes.
- Documentar comportamiento esperado del sistema.
Errores de enfoque comunes
- Medir éxito solo por cobertura de líneas.
- Depender de e2e para validar lógica de negocio.
- No tratar tests flaky como incidentes de calidad.
Regla práctica: cada bug en producción debería terminar en al menos una prueba nueva que impida su reaparición.
Más pruebas unitarias, menos e2e. Optimiza costo, velocidad y estabilidad del pipeline.
Validan reglas de negocio en aislamiento. Son la red más rápida para detectar regresiones.
Validan contratos entre módulos y adaptadores (BD, colas, HTTP), donde fallan muchas suposiciones.
EJEMPLO — TEST DE INTEGRACIÓN QUE SÍ APORTA (JAVA)
@Test
void shouldPersistOrderAndRecoverIt() {
OrderRepository repository = new JpaOrderRepository(entityManager);
Order order = Order.create(customerId, List.of(item("SKU-1", 2)));
repository.save(order);
Optional<Order> loaded = repository.findById(order.id());
assertTrue(loaded.isPresent());
assertEquals(order.total(), loaded.get().total());
}
Cada prueba debe fallar por una sola razón. Nombres explícitos ayudan a diagnosticar rápido.
Estructura predecible: prepara, ejecuta y verifica. Mejora legibilidad y mantenimiento del suite.
MAL
Test largo con múltiples asserts sobre cosas no relacionadas; cuando falla, no sabes qué rompió.
BIEN
Un comportamiento por test, nombre expresivo y datos mínimos para explicar el caso.
100% de líneas puede ocultar casos críticos no verificados. Mide riesgo cubierto, no solo porcentaje.
Prioriza tests que corren en segundos para mantener ritmo de desarrollo y evitar bypass de CI.
Un test inestable cuesta confianza. Aísla dependencias de tiempo, red y orden de ejecución.
La suite principal debe correr rápido para no desincentivar commits pequeños.
Un test inestable es deuda de calidad; se corrige o se desactiva temporalmente con ticket.
Prioriza reglas críticas de negocio, límites y contratos con sistemas externos.
Si cuesta entender una prueba, también costará mantenerla cuando cambie el sistema.