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-cov para 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ápsulaTemaQué aprenderás
02pytest-cov y coverage reportsInstalar, configurar, ejecutar pytest-cov. Leer reportes de line, branch, function coverage
03Interpretar coverageQué significan los números. Líneas no cubiertas. Branch coverage vs line coverage. El 100% como trampa
04Edge cases con Claude CodePrompts para descubrir edge cases. Categorías sistemáticas. Claude Code como amplificador de pensamiento
05Boundary value analysis y property testingTesting de valores límite. Property-based testing con hypothesis. El complemento de prompts
06Proyecto: Suite con 90%+ coverageRecibir 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:

  1. Medir coverage actual (probablemente 0% o <30%)
  2. Identificar los gaps más críticos
  3. Usar Claude Code para generar tests que cierren los gaps
  4. Descubrir edge cases con prompts específicos
  5. Usar hypothesis para property-based testing
  6. 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 --cov y 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

  1. pytest-cov Documentation - Documentación oficial de pytest-cov
  2. Coverage.py - La herramienta subyacente de medición
  3. Hypothesis Documentation - Property-based testing para Python
  4. Martin Fowler: Test Coverage - Perspectiva sobre coverage
  5. OWASP Testing Guide - Edge cases en seguridad

Módulo 5 — Testing with Claude Code Guide Descubriendo los tests que no escribiste