Acceptance tests en staging evitan desastres
Clase 14 de 21 • Curso Profesional de DevOps
Contenido del curso
Containers y ambientes de desarrollo
Pruebas
Integración Continua
Despliegue Continuo
Reliability
Cierre del curso
Validar con acceptance test en staging es la forma más directa de asegurar que cada despliegue sea un candidato real a producción. Con un test mínimo usando curl y grep, puedes frenar el pipeline cuando el comportamiento no coincide con lo esperado y evitar sorpresas fuera de la infraestructura de pruebas.
¿Por qué acceptance test en staging valida el camino a producción?
En staging se usa una infraestructura similar a producción, por eso el objetivo no es si el despliegue es manual o parte de continuous deployments o continuous delivery, sino comprobar que el artefacto que llegó a staging es correcto y viable para producción. Si esta validación falla, todo el pipeline se detiene; es la señal inequívoca de que no debe seguir avanzando.
- Lo crítico es probar que el deploy a staging es correcto.
- El candidato viene de master con unit e integración ya verdes.
- Si el test no pasa, se apaga el pipeline en ese punto.
¿Cómo añadir un test con curl y grep al pipeline?
Se edita el job de “deploy web app staging” y se agrega una línea simple: obtener la URL del despliegue, invocar el endpoint y verificar el resultado. Se guarda la URL en una variable (por ejemplo, result_url) y se usa curl contra la ruta conocida: “add” es la única ruta y se espera que “tres más cuatro” sea 7. Si grep no encuentra “7”, falla el build.
# Obtiene la URL del deployment y la guarda en una variable.
result_url=$(now -t "$NOW_TOKEN" ...)
# Invoca la ruta 'add' y valida que el resultado contenga 7.
curl "$result_url/add" | grep 7
- La variable result_url concentra la URL devuelta por now.
- La ruta add es el objetivo del test.
- Se verifica la salida esperada con grep 7.
- Si no aparece “7”, el comando sale con error y falla el build.
Para ver el fallo de forma intencional, basta cambiar la expectativa a algo que no coincide (por ejemplo, “34” en lugar de “7”) y volver a ejecutar el mismo deploy; verás un failure claro y el indicador visual en rojo.
# Ejemplo de validación que forzará el fallo.
curl "$result_url/add" | grep 34
¿Qué estrategias aceleran la validación en el pipeline?
Para no repetir trabajo, puedes reusar un tag existente al invocar now: si pasas un tag que ya está asociado, now devuelve la URL ya registrada para ese deployment. Así evitas un despliegue completo y haces la verificación al instante con curl + grep.
- Reusar un tag existente acelera la comprobación.
- curl consulta el endpoint y grep confirma el valor esperado.
- Éxito: “success” y todo sigue adelante.
- Falla: “failure”, la “bolita” en rojo y flujo detenido.
¿Tú cómo validarías tus rutas críticas en staging antes de producción? Comparte tu enfoque y ejemplos en los comentarios.