Boost Academy
FormaciónEvaluacionesPerfil
Volver
  • En directo

TDD — Avanzado

8h de clase en directo·HACK A BOSS·Español

Skills que aprenderás

  • tdd

Convocatorias

Necesitas un plan activo

Para acceder a los cursos en directo necesitas un plan activo. Estamos trabajando para que los planes estén disponibles pronto — ¡mantente atento!

No hay convocatorias abiertas ahora mismo, pero no te pierdas la oportunidad: guarda este curso y te avisamos en cuanto se abra una convocatoria.

Descripción

Objetivos

Temario

Requisitos técnicos

Conocimientos previos

Detalles de la convocatoria

Recursos

No hay recursos disponibles todavía para esta convocatoria

Dirigido a profesionales con experiencia sólida en TDD que quieren operar al nivel de diseño arquitectónico y toma de decisiones estratégicas sobre la calidad del software. A lo largo de las ocho horas del curso se aborda cómo guiar el diseño de módulos y bounded contexts enteros escribiendo los tests antes que el código, cómo evaluar críticamente suites existentes en busca de smells y deuda técnica oculta, y cómo razonar sobre los trade-offs entre las escuelas clásica y mockista de TDD en función del contexto arquitectónico. El participante también aprenderá a estructurar una pirámide de tests que maximice la confianza del sistema minimizando el coste de mantenimiento, a aplicar patrones avanzados que elevan la legibilidad y sostenibilidad de las suites, y a automatizar el pipeline TDD completo —incluyendo mutation testing— en un entorno CI/CD reproducible. Al terminar, el participante será capaz de liderar decisiones de diseño orientadas a tests en proyectos de complejidad real y de articular con argumentos sólidos cuándo, por qué y cómo aplicar cada estrategia.

Al finalizar el curso, el participante será capaz de:

  1. Explicar los fundamentos que diferencian la escuela clásica (Chicago) de la mockista (London) y los principios que sustentan una pirámide de tests robusta, justificando su impacto en la arquitectura del software.
  2. Evaluar críticamente una suite de tests existente identificando smells, falsos negativos y zonas de alta deuda técnica mediante métricas y herramientas de análisis estático.
  3. Seleccionar el enfoque TDD adecuado —clásico o mockista— argumentando los trade-offs en función de un contexto arquitectónico concreto.
  4. Diseñar la estrategia de testing en múltiples capas que maximice la confianza del sistema al menor coste de mantenimiento a largo plazo.
  5. Arquitecturar un módulo o bounded context completo guiándose exclusivamente por tests previos al código de producción y respetando principios SOLID.
  6. Optimizar suites degradadas aplicando paralelización, segmentación por capas, eliminación de dependencias externas y patrones avanzados de construcción de datos de prueba.
  7. Automatizar el pipeline TDD completo —test unitario, integración y mutation testing— en un entorno CI/CD reproducible, integrando todas las decisiones anteriores en un flujo de entrega continua.

Bloque 1 — Escuelas de TDD y fundamentos de diseño arquitectónico (≈ 1,5 h) Se revisan en profundidad las dos grandes corrientes del TDD: la escuela clásica de Chicago, que posterga el uso de dobles de prueba y enfatiza el comportamiento observable del sistema, y la escuela mockista de Londres, centrada en la colaboración entre objetos e intensiva en mocks. El bloque analiza los supuestos de diseño que cada escuela incorpora, los contextos arquitectónicos en que cada una produce mejores resultados —sistemas con lógica de dominio rico versus sistemas orientados a interacciones entre servicios— y los criterios de decisión que permiten elegir con criterio, evitando el dogmatismo. Se introduce además el concepto de deuda técnica latente y cómo el enfoque TDD la hace emerger antes de que el código de producción exista, convirtiendo los tests en una herramienta de anticipación de riesgo.

Bloque 2 — Evaluación y diagnóstico de suites existentes (≈ 1,5 h) Este bloque equipa al participante con un marco analítico para auditar suites de tests heredadas. Se estudian los smells más frecuentes —tests frágiles, acoplamiento excesivo a la implementación, falsos negativos silenciosos, explosión de mocks— y se trabaja con métricas cuantitativas y herramientas de análisis estático que permiten objetivar el diagnóstico. Se practica la identificación de zonas de riesgo en un proyecto real de complejidad media y se establecen criterios de priorización para decidir qué refactorizar primero.

Bloque 3 — Pirámide de tests y arquitectura de la estrategia de calidad (≈ 1,5 h) Se formaliza el modelo de pirámide de tests como herramienta de diseño estratégico: qué tipos de tests viven en cada capa, cómo se reparte la cobertura, qué coste de mantenimiento asume cada nivel y cómo se conecta la estrategia de tests con la arquitectura del sistema. Se trabaja la tensión entre confianza y velocidad de feedback, y se diseña una estrategia multicapa para un bounded context completo, justificando cada decisión con argumentos económicos y técnicos.

Bloque 4 — Arquitectura guiada por tests y patrones avanzados de suites (≈ 2 h) El núcleo del curso: cómo arquitecturar un módulo o bounded context escribiendo tests antes que cualquier código de producción, respetando SOLID y dejando que la presión del test guíe las decisiones de acoplamiento e interfaces. Se introduce la técnica de outside-in TDD para abordar funcionalidades completas desde el borde externo hacia el interior. En paralelo se estudian los patrones avanzados que elevan la legibilidad y mantenibilidad de las suites —Object Mother, Test Data Builder y Specification Pattern—, aplicándolos sobre el mismo proyecto para que el participante experimente su impacto directo en la expresividad del código de prueba.

Bloque 5 — Optimización de rendimiento y automatización del pipeline CI/CD (≈ 1,5 h) Se aborda el problema de suites lentas o inestables como obstáculo para la adopción sostenida de TDD, aplicando estrategias de paralelización, segmentación por capas y eliminación de dependencias externas. A continuación se construye el pipeline TDD completo en un entorno CI/CD: integración de los tests unitarios, de integración y de mutation testing como etapas diferenciadas, configuración de umbrales de calidad y gestión de informes. El bloque cierra con una reflexión sobre cómo sostener el ciclo TDD a escala de equipo y de organización.

  • Entorno de desarrollo local con el lenguaje de programación habitual del participante configurado y funcional.
  • Framework de testing del ecosistema correspondiente (JUnit 5, pytest, Jest, NUnit o equivalente) instalado y verificado.
  • Herramienta de mutation testing compatible con el lenguaje (PIT/Pitest, mutmut, Stryker o equivalente).
  • Acceso a una plataforma CI/CD (GitHub Actions, GitLab CI o Jenkins) con permisos suficientes para crear y ejecutar pipelines.
  • Herramienta de análisis estático y cobertura de código (JaCoCo, Coverage.py, Istanbul o equivalente).
  • Repositorio Git personal o de equipo con acceso de escritura donde realizar los ejercicios prácticos.
  • Conexión a internet estable para la descarga de dependencias y el acceso a la plataforma CI/CD.

Para aprovechar este curso el participante debe dominar el ciclo Red-Green-Refactor con soltura, saber utilizar dobles de prueba (mocks, stubs, fakes) con propiedad y tener experiencia en al menos un proyecto real en el que haya aplicado TDD de forma continuada. Se asume familiaridad con principios SOLID y con patrones de diseño fundamentales. Estos contenidos son cubiertos por TDD02.