CI/CD y Testing
Continuous Integration y Continuous Delivery, conocidos como CI/CD, conforman la base técnica para desplegar software de forma rápida y segura. Testing es un atributo central de calidad en CI/CD. Una pipeline bien diseñada ejecuta pruebas automatizadas en el orden correcto y garantiza que solo código verificado llegue a producción.
De un vistazo
- CI/CD automatiza construcción, pruebas y despliegue.
- Las pruebas se ejecutan en etapas, desde las más rápidas hasta las más lentas.
- Continuous Integration se enfoca en fusionar código y probarlo regularmente.
- Continuous Delivery y Deployment permiten releases frecuentes.
- Una pipeline estable requiere pruebas rápidas, etapas claras y entornos confiables.
Descripción técnica comprimida
CI/CD describe procesos donde los cambios de código se construyen, prueban y entregan automáticamente. Continuous Integration significa hacer check-in regularmente y probar de forma automática. Continuous Delivery prepara los releases automáticamente, pero requiere un paso de aprobación manual. Continuous Deployment ejecuta releases sin intervención humana.
Etapas típicas de la pipeline
- Checkout: Obtener código fuente.
- Build: Compilar e instalar dependencias.
- Static Analysis: Linting y formateo.
- Unit Tests: Pruebas rápidas para lógica aislada.
- Integration Tests: Verificar la interacción entre componentes.
- E2E Tests: Flujos de usuario críticos.
- Performance Tests: Comportamiento en tiempo de ejecución.
- Security Tests: Encontrar vulnerabilidades.
- Deploy to Staging: Despliegue en entorno de prueba.
- Deploy to Production: Liberación del software.
Estrategias de despliegue
- Blue-Green: Dos entornos paralelos permiten rollback rápido.
- Canary: Despliegue gradual para una pequeña parte de usuarios.
- Feature Flags: Activar o desactivar funciones en tiempo de ejecución.
Ejemplo práctico
Pipeline:
1. Checkout
2. npm install
3. npm run lint
4. npm run test:unit
5. npm run test:integration
6. npm run build
7. npm run test:e2e
8. Deploy to staging
9. Manual approval
10. Deploy to production
Ventajas y desventajas
Ventajas
- Feedback rápido después de cada commit.
- Releases frecuentes con bajo riesgo.
- Builds reproducibles.
- Menos errores manuales.
- Mayor calidad de software.
Desventajas
- Esfuerzo inicial de configuración.
- Complejidad en entornos y gestión de secretos.
- Tests inestables que rompen la pipeline.
- Requisitos de seguridad para credenciales.
Puntos relevantes para examen
- Diferencia entre CI, Continuous Delivery y Continuous Deployment.
- Etapas típicas de la pipeline.
- Estrategias de despliegue.
- Importancia de la automatización de pruebas.
- Ventajas y riesgos.
Preguntas típicas de examen (con respuesta breve)
-
¿Qué significa CI/CD? Procesos automatizados para construir, probar y entregar.
-
¿Por qué los Unit Tests se ejecutan primero? Son rápidos y proporcionan feedback inmediato.
-
¿Qué es un Canary Release? Despliegue gradual para una pequeña parte de usuarios.
-
¿Qué es un Feature Flag? Interruptor en tiempo de ejecución para activar o desactivar funciones.
-
¿Cuál es una ventaja de Blue-Green? Rollback rápido en caso de problemas.
Fuentes más importantes
- https://martinfowler.com/articles/continuousIntegration.html
- https://www.atlassian.com/continuous-delivery
- https://en.wikipedia.org/wiki/CI/CD
Preguntas frecuentes
¿Qué es CI/CD?
Procesos automatizados para construir, probar y entregar.
¿Cuál es la diferencia entre Delivery y Deployment?
Delivery prepara el release, Deployment se ejecuta automáticamente.
¿Qué pruebas se ejecutan primero?
Análisis estático, linting y unit tests.
¿Qué es un Canary Release?
Despliegue gradual para pocos usuarios.
¿Qué es Blue-Green Deployment?
Dos entornos paralelos para rollback rápido.
¿Qué es un Feature Flag?
Interruptor en tiempo de ejecución.
¿Cómo se protegen los secretos?
Guardarlos cifrados e inyectarlos a través de variables de entorno.
¿Qué es un Nightly Build?
Build nocturno con pruebas más exhaustivas.
¿Qué es un Quality Gate?
Condición de calidad antes del siguiente paso.
¿Por qué son problemáticos los tests inestables?
Los fallos impredecibles socavan la confianza.
¿Qué es un Rolling Deployment?
Actualizar instancias gradualmente una tras otra.
¿Qué es un Build Artifact?
Resultado de un build.
¿Qué rol juega Testing en DevOps?
Un rol central para feedback rápido.
¿Qué es un Staging Environment?
Entorno preproducción para pruebas realistas.
¿Qué es un paso de aprobación manual?
Autorización explícita antes del release.
Continúa en la ruta de aprendizaje de Software Testing
El siguiente artículo en la ruta de aprendizaje de Software Testing trata sobre Regressionstests, cómo las pruebas de regresión garantizan que los cambios nuevos no rompan la funcionalidad existente.



