Test Driven Development (TDD)
Behaviour Driven Development (BDD)
MP. Oscar Centeno
Diciembre, 2014
…Test early, test often…
Slide 2
Slide 2 text
Objetivos de la charla
• Exponer la necesidad
• Exponer principios
• Mostrar demostraciones con herramientas
Slide 3
Slide 3 text
¿Porque?
“Know why, not just how.”
www.Agileforall.com
Slide 4
Slide 4 text
Proceso tradicional de desarrollo
Slide 5
Slide 5 text
Un proceso TDD
¿Cómo crear un producto sin defectos?
Mejore el proceso como un todo.
Testing
Diseno /
Codificacion
Colaboracion Aceptacion Mantenimiento
TDD
Slide 6
Slide 6 text
Mejore todo el proceso
• Calidad desde el inicio
• Divide y vencerás
• Red de seguridad para el software
• Confianza
• ¿Ya terminé?
TDD
Slide 7
Slide 7 text
Calidad
Right code Code right
Slide 8
Slide 8 text
El código, correctamente
• “producimos código bien diseñado, bien
probado y bien factorizado, y lo hacemos en
pasos pequeños y verificables”
James Shore
Code Right
Slide 9
Slide 9 text
Prácticas para construir el codigo
correctamente
• Programe en pasos pequeños verificables
• Pruebas unitarias
• Automatice pruebas unitarias
• Aplique TDD a cada unidad: Test-First Design
Code Right
Código
unitario
Pruebas
Assert (esperado, obtenido)?
Slide 10
Slide 10 text
Test Driven Development
Code Right
Slide 11
Slide 11 text
Test Driven Development
• Demo: Fibonacci
Code right
Slide 12
Slide 12 text
Alcance de TDD
• Clases de aplicación
• Base de datos
• Integración de componentes
• Rendimiento
• Escenarios funcionales
Slide 13
Slide 13 text
¿Porqué funciona?
• TDD hace claro el criterio de aceptación
• Elimina incertidumbre en expectativas del
usuario
• Integra al Testing durante todo el proceso
• Feedback rápido y frecuente
• El software es más mantenible.
Code Right
Right Code
Slide 14
Slide 14 text
Calidad
Right code Code right
Slide 15
Slide 15 text
El código correcto
• “…si no es cuidadoso, es muy sencillo que un
desarrollador construya el producto
equivocado.”
www.agileforall.com
Right Code
Slide 16
Slide 16 text
Correct Code
• Exprese pruebas de aceptación con el usuario
antes de la programación.
• Exprese reglas complejas con ejemplos
concretos
• ¡No asuma! (ambigüedad ≈ 0)
Right Code
Slide 17
Slide 17 text
La Historia
Como
Pedro, el cliente
Quiero
Hacer un retiro de la cuenta
Con el fin de
tener efectivo.
Slide 18
Slide 18 text
Ejemplo
Dado
Una cuenta con saldo 100 dólares
Cuando
se hace un retiro de 55 dólares.
Entonces
el saldo restante es de 45 dólares.
Slide 19
Slide 19 text
Customer Tests / Specs
Demo SpecFlow
Right Code
Slide 20
Slide 20 text
En resumen
Test Driven Development
El código correctamente
El código correcto
Customer Tests /
Specs
Unit Tests
¿ Pruebas funcionales
de aceptación?
¿ Pruebas
de carga?
¿Pruebas de
integración? ¿ Pruebas de
rendimiento?
Slide 21
Slide 21 text
Objetivos de la charla
• Exponer la necesidad
• Exponer principios
• Mostrar demostraciones con herramientas