Post on 19-Jun-2015
description
Las claves del Desarrollo Dirigido
por Pruebas (o TDD)
javierj@us.es / @IWT2_Javier
¿Quién soy yo? - Blogs
Blogs: Proyectos:
JGraphT
HootboardGame
¿Quién soy yo? - Proyectos
Congresos: Katas:
Índice
¿Por qué utilizar TDD?
¿Cómo aplicar TDD?
TDD’s Darkside
Índice
¿Por qué utilizar TDD?
¿Cómo aplicar TDD?
TDD Jam
• Sin pruebas
• No veía fácilmente el diseño
• Fallaba por sorpresa sin saber por qué
• Cambiaba por cambiar.
• Apechugar con las malas decisiones.
• No avanzaba.
• Presionado por fecha límite.
• Me sentía mal.
• Un cuadro típico de necesito TDD.
¿Por qué TDD?
Todo el software mienteCambia
• Todos nos equivocamos
“No fracasé, sólo descubrí 999 maneras de como no
hacer una bombilla.”
Todo el software mienteCambia
¿Por qué TDD?
NO
Probar los actores
¿Qué es TDD?
¿Qué es TDD?
¿Qué es TDD?
¿Qué es TDD?
1. You are not allowed to write any production code unless it is to make a failing unit test pass.
2. You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures.
3. You are not allowed to write any more production code than is sufficient to pass the one failing unit test.
TDD no es probar
Desarrollador TDD Tester
Escribo una prueba con un observador Vale
Escribo una prueba con dos observadores Es lo mismo !!!!
Índice
¿Por qué utilizar TDD?
¿Cómo aplicar TDD?
TDD Jam
2. El Proceso TDD
El proceso de TDD
2. El Proceso TDD
¿Por qué?
Sobre escribir pruebas
• Assert first• Pruebas
extremadamente sencillas
• Prueba una única cosa• Valores de entrada
concreto• DRY: Don’r Repeat
Yourself
Sobre refactorizar
• Elimina el código duplicado.
• Aumenta la expresividad de tu código.
• Sustituye especificaciones por detalles.
• Elimina malos olores.
Dirigir TDD
¿A dónde me lleva TDD?
• Técnica Presentator-first, comienza .• Domain-driven development / arquitectura
hexagonal / puertos y adaptadores• No empieces por la base de datos.• Objetos humildes que huyen de tu framework.• Refactorizar a patrones de diseño• GUIs anoréxicas.
TDD Roadmap
Continous integration
Herramientas
25
TDD the Dark-Side
TDD en las trincheras
Every unit test you write is not production code solving someone's problem.
TDD’s Darside
• ¿Y si no sabes lo que quieres?• Resultados parciales• Double-fest• Ir poco a poco.• Indirección.• Constelación de clases.• Desperdicio de pruebas• TDD es más lento.
TDD is hot…. now
Índice
¿Por qué utilizar TDD?
¿Cómo aplicar TDD?
TDD Jam
Para terminar
Conclusiones
Pruébalo y elige
Te necesitamos
Extra
10.000 líneas de código C#... Comprobado…. 124 assemblies .NET generados…. Comprobado…. 52 scripts de construcción… comprobado
Ahora que mis pruebas unitarias están escritas puedo empezar a construir mis componentes.
33
Enlaces
• Blog: http://iwt2-javierj.tumblr.com/• Libro:
http://www.iwt2.org/web/opencms/IWT2/comunidad/LibroTDD/?locale=es
• GameUS: http://www.gameus.es/• IWT2 DojoUS:
http://www.iwt2.org/web/opencms/IWT2/comunidad/dojous/?locale=es
• Twitter: @IWT2_Javier/ @GameUsSev / @TDDPractico Fin