Módulo 5: Coverage y Edge Cases
Módulo 5: Coverage y Edge Cases
Módulo 5: Coverage y Edge Cases
Descripción de la cápsula
Tus tests pasan. Tu feature funciona. El ciclo TDD fue exitoso. Pero hay una pregunta incómoda que no has respondido: ¿qué tests NO escribiste?
Los tests que escribes son los escenarios que imaginas. Y los humanos somos sistemáticamente malos para imaginar edge cases. El input vacío, el None inesperado, el integer en MAX_INT, el string Unicode de 4 emojis concatenados — esos son los escenarios que causan bugs en producción, y son exactamente los que tu mente descarta como "eso nunca pasa."
Este módulo ataca ese blind spot con dos herramientas: coverage te dice cuantitativamente qué código no se está ejecutando durante tus tests (el mapa), y edge case discovery con Claude Code te ayuda cualitativamente a encontrar los escenarios que nunca imaginaste (el territorio). Claude Code no tiene los mismos cognitive biases — puede generar 15 edge cases donde tú habrías pensado en 3.
Contexto del Módulo
¿Dónde estamos?
Este es el Módulo 5 — segundo de Phase 2 (Workflows de Testing).
Lo que ya sabes:
- ✅ Spec-first methodology y TDD con AI (Phase 1)
- ✅ Unit tests, integration tests, E2E tests (Phase 1)
- ✅ TDD workflow completo: red-green-refactor (Módulo 4)
Lo que falta: Medir la calidad de tu test suite y descubrir lo que no estás testeando.
¿Hacia dónde vamos?
Phase 1: Fundamentos TDD con AI ✅
├── Módulo 1-3: ✅ Completados
Phase 2: Workflows de Testing
├── Módulo 4: ✅ TDD workflow completo
├── Módulo 5: ← ESTÁS AQUÍ — Coverage y edge cases
└── Módulo 6: → Mocking, fixtures, validation loops
Phase 3: Proyecto Final
├── Módulo 7: → Estrategia de testing profesional
└── Módulo 8: → Proyecto integrador (target: ≥90% coverage)
Este módulo te prepara directamente para el proyecto final, donde el target es ≥90% coverage para toda la aplicación.
Objetivo Profesional
Medir, interpretar y mejorar la cobertura de tests, y usar Claude Code para descubrir edge cases que nunca habrías encontrado solo.
Al final de este módulo podrás:
- ✅ Usar
pytest-covpara generar reportes de coverage (line, branch, function) - ✅ Interpretar un reporte: qué significa una línea no cubierta y si importa
- ✅ Identificar gaps de coverage y generar tests con Claude Code para cerrarlos
- ✅ Usar prompts específicos para edge case discovery (null, boundary, types, unicode)
- ✅ Aplicar boundary testing: valores límite en inputs numéricos, strings, listas
- ✅ Testear error paths: exceptions, fallbacks, error messages
- ✅ Usar property-based testing con hypothesis para descubrir inputs problemáticos
- ✅ Lograr coverage ≥90% en un módulo existente
Progresión del Módulo
Mapa del Módulo
| Cápsula | Tema | Qué aprenderás |
|---|---|---|
| 02 | pytest-cov y coverage reports | Instalar, configurar, ejecutar pytest-cov. Leer reportes de line, branch, function coverage |
| 03 | Interpretar coverage | Qué significan los números. Líneas no cubiertas. Branch coverage vs line coverage. El 100% como trampa |
| 04 | Edge cases con Claude Code | Prompts para descubrir edge cases. Categorías sistemáticas. Claude Code como amplificador de pensamiento |
| 05 | Boundary value analysis y property testing | Testing de valores límite. Property-based testing con hypothesis. El complemento de prompts |
| 06 | Proyecto: Suite con 90%+ coverage | Recibir código existente → medir → identificar gaps → generar tests → lograr ≥90% |
Flujo de aprendizaje
Primero dominarás la herramienta (cápsula 02): pytest-cov para medir coverage. Saber medir es el primer paso para mejorar.
Luego entenderás qué significan los números (cápsula 03): interpretar reportes, entender la diferencia entre line y branch coverage, y por qué 100% coverage no significa código libre de bugs.
Después aprenderás edge case discovery (cápsula 04): usar Claude Code con prompts específicos para encontrar los escenarios que no imaginaste. Esto es donde AI brilla — puede analizar una función y generar categorías completas de edge cases.
La cápsula 05 introduce boundary testing y property-based testing: valores límite y hypothesis como complemento. Donde tus prompts cubren lo conocido, hypothesis descubre lo desconocido.
En el proyecto (cápsula 06) aplicarás todo: medir, identificar, generar, medir de nuevo. Un loop iterativo hasta lograr ≥90% coverage.
Conexión con Proyecto
Proyecto de este módulo: Suite con 90%+ coverage
Recibirás código existente (un módulo de procesamiento de datos) sin tests o con tests mínimos. Tu trabajo:
- Medir coverage actual (probablemente 0% o <30%)
- Identificar los gaps más críticos
- Usar Claude Code para generar tests que cierren los gaps
- Descubrir edge cases con prompts específicos
- Usar hypothesis para property-based testing
- Iterar hasta lograr ≥90% coverage
Conexión con proyecto final (Módulo 8)
El proyecto final requiere ≥90% coverage para toda la aplicación. Lo que aprendes aquí — el workflow iterativo de coverage — es exactamente lo que replicarás a mayor escala. Si dominas el ciclo medir→generar→medir aquí, el proyecto final es el mismo proceso repetido.
Límites: Qué NO Se Hará en Este Módulo
- ❌ Mocking — Se cubre en Módulo 6. Aquí trabajamos con código testeable directamente
- ❌ Mutation testing con herramientas — Mencionamos el concepto pero no usamos mutmut/cosmic-ray
- ❌ Coverage como métrica de CI/CD — El foco es aprender a usar coverage, no integrarlo en pipelines
- ❌ Performance profiling — Coverage mide ejecución de tests, no rendimiento
Evidencia de Éxito
Al terminar este módulo, sabrás que tuviste éxito si:
- ✅ Puedes ejecutar
pytest --covy leer el reporte resultante - ✅ Puedes explicar qué significa "85% line coverage, 72% branch coverage"
- ✅ Puedes usar Claude Code para generar tests que cubran gaps específicos
- ✅ Puedes enumerar al menos 8 categorías de edge cases
- ✅ Completaste el proyecto: módulo con ≥90% coverage
Resumen
- ✅ Coverage es el mapa: muestra qué código se ejecuta durante tests
- ✅ Edge cases son el territorio: los escenarios que causan bugs reales
- ✅ Claude Code amplifica tu capacidad de descubrir edge cases
- ✅ El workflow es iterativo: medir → identificar → generar → medir de nuevo
- ✅ Property-based testing con hypothesis complementa los prompts
- ✅ El target de ≥90% coverage se logra con estrategia, no con fuerza bruta
Próxima cápsula: pytest-cov y coverage reports — la herramienta para medir tu test suite.
Recursos Adicionales
- pytest-cov Documentation - Documentación oficial de pytest-cov
- Coverage.py - La herramienta subyacente de medición
- Hypothesis Documentation - Property-based testing para Python
- Martin Fowler: Test Coverage - Perspectiva sobre coverage
- OWASP Testing Guide - Edge cases en seguridad
Módulo 5 — Testing with Claude Code Guide Descubriendo los tests que no escribiste