GuíaBásico

Guía de Diagnóstico de Fallos de Test

Aprende a diagnosticar por qué falla un test — la habilidad que ninguna guía de "cómo escribir tests" cubre. Un test rojo es información, no un enemigo: esta guía te enseña el método científico del debugging (hipótesis → experimento) aplicado a fallos de pytest, empezando por leer un reporte de fallo sin ahogarte (el traceback, el assert-rewriting, `--showlocals`, `--tb=short/long/line`) y aislar el fallo hasta su reproducción mínima. Después entras al depurador interactivo con `pytest --pdb` y los comandos básicos de `pdb`, aprendes a diagnosticar tests flaky (que a veces pasan y a veces no) y tests con dependencia de orden o estado compartido, y cierras con la búsqueda binaria: usar `git bisect` para encontrar exactamente qué commit rompió un test. Todo el material práctico son suites de Reservo con fallos plantados a propósito, de distinto tipo, que aprendes a diagnosticar uno por uno. El proyecto final te entrega una suite rota con varios fallos de tipos distintos y te pide un log completo de diagnóstico — síntoma, hipótesis, experimento, causa y fix — por cada uno.

64
lecciones
8
módulos
Inglés · Español
disponible en
certificado
Gratis
acceso
NIEVA

Resultados

Lo que vas a poder hacer

  • Adoptar la mentalidad correcta frente a un fallo: un test rojo es información, no un fracaso, y aplicar el método científico (hipótesis → experimento) al debugging
  • Leer un reporte de fallo de pytest de punta a punta: el assert-rewriting, el traceback de abajo hacia arriba, `--showlocals`, `--tb=short/long/line`, y distinguir dónde ESTÁ el fallo de dónde se REPORTA
  • Aislar y reproducir un fallo mínimamente: correr solo el test que falla (`-k`, nodeid), `--lf`/`--ff`, y reducir el ruido hasta la reproducción mínima
  • Usar el depurador interactivo: `pytest --pdb` (post-mortem), `breakpoint()`/`--trace`, y los comandos básicos de `pdb` (`p`, `pp`, `l`, `w`, `n`, `s`, `c`) para inspeccionar el estado en el punto exacto del fallo
  • Diagnosticar tests flaky (no deterministas): sus causas típicas (reloj, aleatoriedad, recursos externos, orden) y cómo reproducirlos de forma confiable
  • Detectar dependencia de orden y estado compartido entre tests, incluyendo el uso de `pytest-randomly` para exponerlo
  • Bisecar un problema con búsqueda binaria: usar `git bisect` para encontrar qué commit rompió un test, o bisecar a mano una suite grande hasta el test culpable
  • Diagnosticar y arreglar una suite con varios fallos plantados de tipos distintos, entregando un log completo de diagnóstico por cada uno

Antes de empezar

Qué necesitas traer

Es para ti si...

  • Devs que ya escriben tests pero se quedan atascados frente a un fallo que no entienden, sin un método para avanzar
  • Equipos hartos de tests flaky que a veces pasan y a veces no, y no saben por dónde empezar a diagnosticarlos
  • Devs que evitan el depurador y depuran a punta de `print()`, perdiendo tiempo en fallos que `pdb` resolvería en minutos
  • Cualquiera que haya recibido un "se rompió en algún commit de la última semana" y necesite encontrar cuál

Requisitos y materiales

  • Guía de Fundamentos de Testing y TDD completada (o equivalente: escribir y correr tests con pytest)
  • Conocimientos básicos de git (commits, log) para el módulo de bisección
  • Python 3.14 y pytest 9.1.1 instalados localmente (`pdb` es de la librería estándar)

Contenido

El temario, módulo por módulo

Abre cualquiera para ver sus lecciones.

Dudas frecuentes

Lo que suele preguntarse

Empieza cuando quieras

Reseñas

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!