GuíaIntermedio
Guía de Testing en CI/CD
Aprende a correr tu suite de tests automáticamente en cada cambio con integración continua. Esta guía cubre qué es un pipeline, cómo escribir tu primer workflow de GitHub Actions que corre pytest en cada push, cómo reproducir localmente un fallo que solo aparece en CI (la brecha de entorno, dependencias pinneadas), la matriz de versiones de Python y sistemas operativos, cómo acelerar la suite con caché de dependencias y paralelismo (`pytest-xdist`), las puertas de calidad (umbrales de cobertura que rompen el build) y qué hacer con los tests flaky que solo fallan en CI. Cierra con un proyecto capstone: armar un pipeline de CI completo para Reservo con matriz de versiones, puerta de cobertura, caché y paralelismo, entregando el workflow YAML junto con el setup de paridad local.
- 64
- lecciones
- 8
- módulos
- Inglés · Español
- disponible en
- Sí
- certificado
- Gratis
- acceso
Resultados
Lo que vas a poder hacer
- Entender qué es un pipeline de CI y por qué "en mi máquina funciona" no es suficiente
- Escribir el primer workflow de GitHub Actions que corre pytest en cada push, y leer su log
- Reproducir localmente un fallo que solo ocurre en CI: dependencias pinneadas e instalaciones deterministas
- Configurar la matriz de versiones de Python y sistemas operativos, y decidir cuándo paga la pena
- Acelerar el pipeline con caché de dependencias (`actions/cache`) y paralelismo con `pytest-xdist`
- Configurar puertas de calidad: un umbral de cobertura que rompe el build (`--cov-fail-under`)
- Manejar tests flaky en CI: el debate del retry, la cuarentena y por qué erosionan la confianza en el pipeline
- Armar un pipeline de CI completo para Reservo con matriz, caché, paralelismo y puerta de cobertura como proyecto capstone
Antes de empezar
Qué necesitas traer
Es para ti si...
- Devs que ya tienen una suite de tests con pytest y quieren correrla automáticamente en cada push
- Equipos que sufren pipelines de CI lentos o inestables (flaky) y quieren un CI confiable
- Devs que quieren aprender GitHub Actions aplicado específicamente a testing automatizado
Requisitos y materiales
- Suite de tests con pytest ya existente (o Guía de Testing Fundamentals & TDD completada)
- Cuenta de GitHub y familiaridad básica con git
- Python 3.10+ y pip instalados localmente
Contenido
El temario, módulo por módulo
Abre cualquiera para ver sus lecciones.
- 1. Presentación del módulo: la suite que solo corría en tu máquina
- 2. "En mi máquina funciona"
- 3. Qué es la Integración Continua
- 4. El bucle de feedback y el costo del fallo tardío
- 5. Las etapas de un pipeline
- 6. Qué protege el CI: la rama principal siempre verde
- 7. CI vs CD: una primera mirada
- 8. Mini-proyecto: mapea tus pasos manuales a un pipeline
- 1. Presentación del módulo: de tu máquina al pipeline que corre pytest solo
- 2. Anatomía de un workflow de GitHub Actions
- 3. `on:` los disparadores: push y pull request
- 4. Los steps que preparan el terreno: checkout y setup-python
- 5. Instalar las dependencias en el runner
- 6. Correr pytest y el exit code que pinta el job
- 7. Leer el log de CI y el badge de estado
- 8. Mini-proyecto: el `tests.yml` que corre la suite de Reservo
- 1. Presentación del módulo: CI en rojo, tu máquina en verde
- 2. El síntoma: rojo aquí, verde allá (y sus causas)
- 3. La brecha de entorno, de cerca
- 4. Dependencias pinneadas contra rangos (`==` vs `>=`)
- 5. Un venv limpio que replica al de CI
- 6. Variables de entorno y otras diferencias ocultas
- 7. El método para reproducir
- 8. Mini-proyecto: reproduce y arregla un fallo por una dependencia sin pinnear
- 1. Presentación del módulo: la matriz
- 2. Por qué probar en varios entornos
- 3. `strategy.matrix` de versiones de Python
- 4. La matriz de sistemas operativos
- 5. `include`, `exclude` y `fail-fast`
- 6. Leer los N jobs de la matriz
- 7. Cuándo la matriz paga y cuándo es ruido
- 8. Mini-proyecto: una matriz de 3 versiones para Reservo
- 1. Presentación del módulo: rápido y en paralelo
- 2. Por qué un CI lento se ignora
- 3. Cachear dependencias con `actions/cache`
- 4. Paralelizar con `pytest-xdist` y `-n auto`
- 5. Dividir la suite: rápida y lenta
- 6. El aislamiento: requisito para paralelizar
- 7. El trade-off velocidad/costo
- 8. Mini-proyecto: un CI rápido para Reservo
- 1. Presentación del módulo: puertas de calidad
- 2. Qué es una puerta de calidad
- 3. `--cov-fail-under` y el exit code
- 4. Fallar en una caída de cobertura
- 5. Puertas por marcador y tests smoke
- 6. Cuándo la puerta ayuda (y cuándo estorba)
- 7. El 100% como fetiche que empuja tautologías
- 8. Mini-proyecto: una puerta de cobertura para el CI de Reservo
- 1. Presentación del módulo: el flaky en CI
- 2. Por qué el flaky es tóxico en CI
- 3. El debate del retry: `--reruns`
- 4. La cuarentena: marcar y aislar
- 5. El fallo que solo ocurre en CI
- 6. Reproducir un CI-only en tu máquina
- 7. Arreglar el determinismo, no reintentar
- 8. Mini-proyecto: un flaky bloquea el CI de Reservo
Dudas frecuentes
Lo que suele preguntarse
Sin límite. Es una guía gratuita: entras cuando quieras, las veces que quieras.
No. Los módulos están ordenados de menos a más, pero puedes saltar al que necesites. Tu progreso se guarda por lección.
Lo que haga falta está en «Qué necesitas traer», arriba. Si no aparece nada ahí, puedes empezar desde cero.
En el grupo de WhatsApp del Club, y cada quince días hay un live con un instructor donde se resuelven dudas en vivo.
Sí. Al terminar todas las lecciones se emite automáticamente, con un código verificable que puedes compartir en LinkedIn.
Empieza cuando quieras
Lo que dicen los estudiantes
Estas reseñas son de estudiantes inscritos que completaron al menos el 50% del curso. Moderamos las reseñas solo por motivos de contenido (spam, lenguaje ofensivo, datos personales), nunca por ser críticas o negativas.
Aún no hay reseñas aprobadas.
¡Sé el primero en compartir tu experiencia!