Introducción a Test Driven Development

Un desarrollador profesional necesita usar métodos y herramientas profesionales. TDD es un método de desarrollo que produce código de calidad y excelentes baterías de pruebas automáticas cuando se practica correctamente.

TDD es una práctica del método XP (eXtremeProgramming). Las prácticas no tienen sentido si no se entienden los valores y principios que promueven. Por eso en realidad este es un curso de Introducción a XP. Además de practicar TDD, practicamos PairProgramming e incluso CollectiveCodeOwnership.

OBJETIVOS

La forma de impartir el curso es programando prácticamente todo el tiempo con la supervisión y la guía del experto. La diferencia con leer libros o ver vídeos es que hay a tu lado un experto para corregir tus errores y acelerar el proceso de aprendizaje, minimizando riesgos a la hora de luego poner en práctica el método en el día a día.


Dirigido a

Este es un curso para personas que sepan programar. Fundamentalmente programadores pero también testers que quieran conocer más sobre calidad de código y pruebas automáticas. Lo que hace falta es venir con ganas y la mente abierta. Si nunca has probado TDD antes, te sorprenderá.

Cada alumno debe asistir al curso con su portátil y las herramientas de desarrollo que use habitualmente, ya instaladas. A ser posible que también tenga instalado Git o Mercurial o ambas.

Se trabaja en pares con lo cual es buena idea crear un usuario nuevo para el curso, como para poder rotar de unas máquinas a otras sin estar preocupados por privacidad de la cuenta.

Temario del curso

CAPÍTULO 1 INTRODUCCIÓN

  • Introducción a XP: Valores, Principios y Prácticas
  • Introducción a los tests unitarios
  • Refactoring
  • Naming and duplication
  • Less Surprise Principle y SOLID design principles
  • DesignPatterns
  • Introducción a TDD Agil, etc.

CAPÍTULO 2 MÉTRICAS DEL SOFTWARE

  • Practicando TDD con state-based validation
  • Diseño emergente y arquitectura
  • Integration tests
  • Mock objects, test stubs, test spies
  • Practicando TDD con interaction-based tests
  • Test doubles frameworks
  • End-to-end tests
  • Conclusiones