Una integración puede superar los tests unitarios y aun así fallar cuando el proveedor cambia un campo, revoca una credencial o responde de otra manera en su sandbox. Una buena estrategia combina comprobaciones locales deterministas, contratos explícitos y una pequeña cantidad de evidencia real bajo control. Ninguna capa demuestra por sí sola todo lo que hace falta saber.
Publicado el 1 de octubre de 202614 min de lecturaContratos, sandbox y confianza operativa
Dedica más pruebas a las zonas inciertas
Separa el código que controlas del comportamiento que pertenece a otra organización. Conviene que predominen los tests unitarios: tú decides el mapeo, la validación, los reintentos y la idempotencia. Las pruebas de contrato hacen explícitos los supuestos entre consumidor y proveedor. Después vienen las comprobaciones más amplias en un entorno sandbox y, al final, una sonda pequeña de producción para descubrir problemas de credenciales, rutas o configuración que los entornos de prueba no reproducen.
Una cartera por capas: muchas comprobaciones rápidas y pocas pruebas costosas
Muy pocas / sondas de producciónSeñales sintéticas, de solo lectura y limitadas; nunca uses datos reales de clientes.
Algunas / proveedor y sandboxAutenticación, flujos representativos, estados del proveedor y límites documentados.
Más / contratos del consumidorRegistra los campos y las interacciones de las que realmente depende el cliente.
Muchas / unitarias y de componentesMapeo, validación, reintentos, deduplicación, paginación, errores y casos límite deterministas.
Haz que el contrato exprese las necesidades del cliente
Un contrato no es una copia de todo el esquema del proveedor. Describe las interacciones que utiliza el consumidor: método, ruta, campos relevantes de la petición, estado y estructura mínima de respuesta. Las herramientas de contratos impulsados por el consumidor pueden generar esas expectativas desde sus pruebas y permitir que el proveedor las verifique contra su implementación. Elige reglas de coincidencia con intención: ejemplos exactos sirven para identificadores y enums; reglas flexibles pueden encajar con fechas o IDs generados.
El contrato no demuestra semántica de negocio, disponibilidad ni las necesidades de todos los consumidores. Comprueba compatibilidad con supuestos declarados. Trata sus cambios como cambios de API, publica versión y entorno, y exige que el proveedor verifique la versión antes del despliegue.
No confundas el sandbox con producción
Capa
Buena evidencia de
No demuestra
Unitaria
Transformaciones locales, reintentos y casos límite
Compatibilidad en la red o comportamiento remoto
Contrato
Compatibilidad de supuestos del cliente con un proveedor verificado
Disponibilidad, latencia o configuración real de la cuenta
Sandbox
Credenciales y peticiones representativas de extremo a extremo
Datos, límites, integraciones o comportamiento idénticos a producción
Sonda de producción
Alcance actual y una transacción segura y acotada
Todos los flujos, corrección a escala o ausencia de fallos ocultos
Los sandboxes pueden omitir funciones, usar datos sintéticos o responder de otro modo a los límites de tráfico. Documenta esas diferencias y cubre localmente lo que puedas. Un resultado positivo en sandbox no justifica afirmar sin matices que “la integración está probada”. Registra el entorno, el alcance de las credenciales, los escenarios y las exclusiones conocidas.
Prueba también el comportamiento ante fallos
En APIs externas, prueba timeouts, conexiones interrumpidas, límites de solicitudes, credenciales vencidas, payloads malformados, duplicados, bucles de paginación y éxitos parciales. Asegúrate de que las personas puedan observar el resultado adecuado: reintentos acotados, escrituras idempotentes, errores útiles y preservación de los datos originales. Los relojes y adaptadores de transporte inyectables vuelven estos escenarios deterministas.
Usa fixtures realistas sin información personal. Elimina tokens, identificadores y datos sensibles de los ejemplos versionados. Mantén los contratos lo bastante pequeños para que quien revisa entienda el compromiso.
Controla los releases sin hacer que la CI dependa de Internet
Ejecuta pruebas unitarias y de contrato en cada cambio. Programa las suites de sandbox o ejecútalas antes del release cuando el entorno sea estable, en vez de bloquear cada pull request por una caída externa. Las comprobaciones controladas en producción deberían ser de solo lectura cuando sea posible, usar una cuenta dedicada de bajo privilegio y alertar por fallos sostenidos, no por un único timeout.
Distingue entre un test fallido y una dependencia externa no disponible. Informa claramente de las comprobaciones bloqueadas u omitidas, guarda secretos en el almacén de CI, limita su alcance y evita imprimir cabeceras o cuerpos en los logs.
Construye una cartera útil de pruebas
Un equipo pequeño puede comenzar con pruebas de mapeo e idempotencia, añadir contratos para consumidores críticos, documentar el checklist de sandbox y monitorizar una lectura sintética importante en producción. Sigue la antigüedad de la verificación de contratos, el éxito del sandbox, la disponibilidad de la sonda y los incidentes causados por cambios de esquema. Son señales de confianza y operación, no una calificación universal.
La pirámide de pruebas de integración representa responsabilidades e incertidumbre. Mantén la mayoría de pruebas rápidas y deterministas, usa contratos para verificar compatibilidad, considera el sandbox como evidencia parcial y reserva producción para señales seguras y acotadas. No hace falta simular todo Internet en CI: hay que saber qué fallo puede detectar cada capa antes que el cliente.