jueves, 10 de junio de 2010

Tres libros fundamentales sobre Test Driven Development

TDD es una de las prácticas ágiles que más interés generan. En este post presentamos tres libros fundamentales sobre el tema, cada uno apuntando a un aspecto distinto de la técnica. Test-Driven Development By Example - Kent Beck

tdd_by_example

Este es el primer (y el mejor) libro sobre la mecánica de TDD. Kent Beck nos presenta los principios básicos de la práctica y luego los ilustra mediante el desarrollo de dos proyectos reales: una biblioteca Java para manejar dinero con monedas heterogenas y un port de xUnit a Python.

Lo más interesante de este libro es ver a un gran programador como Beck en acción, lo que nos permite aprender sus técnicas y ver hasta que extremo lleva TDD. Es especialmente educativo ver como combate la duplicación de código.

Además el libro contiene una serie muy útil de patterns de TDD y Refactoring.

xUnit Test Patterns - Gerard Meszaros

xunit_test_patterns

Cuando los que escribimos este blog empezamos a hacer TDD (hace ya más de 5 años!), pensábamos que la calidad del código de los tests no era tan importante como la del código de producción. Muy pronto aprendimos que esto era un error y que descuidar el código de los tests nos llevaba a que costara más el mantenimiento de los tests que el del código de producción.

Este libro es una colección de patterns que permiten escribir tests más rápidos,más mantenibles, más claros y más sólidos. También contiene una serie de smells, es decir de síntomas que nos permiten detectar problemas en nuestros tests aun antes de que estos problemas se hagan evidentes. Si están por introducir tests de unidad en un proyecto, sería una gran idea leer este libro antes.

Working Effectively with Legacy Code - Michael C. Feathers

legacy_code

Cuando hacemos presentaciones sobre TDD, una de las dudas que más frecuentemente surgen es ¿Cómo puedo usar esto cuando tengo mucho código desarrollado? Este libro es la respuesta. Michael Feathers presenta patterns, técnicas y herramientas para introducir gradualmente tests de unidad en aplicaciones que no los tengan.

Es interesante su definición de aplicacion legacy: una aplicación sin tests de unidad. Es decir que si uno está desarrollando una aplicación nueva sin tests, está generando una aplicación legacy aun antes de pasar a producción!

No hay comentarios:

Publicar un comentario