Test-Driven Development
(Desarrollo dirigido por pruebas)
Martín Salías
¿Quién es este tipo?
Martín Salías
Arquitecto de Software
 Latinoamérica, USA, Canadá,
Australia y Escandinavia
 Microsoft MVP
 Universal Thread Magazine
Editor en Jefe
 Miembro de la Agile Alliance
 Orador y colaborador
de MSDN Cono Sur
2
Agenda
 ¿Qué es TDD?
–
–
–
–
El proceso
Refactorización
Beneficios
Herramientas
 FoxUnit
–
–
–
–
FoxUnit
FxuTestCase
Uso de FoxUnit
Extender y
colaborar
 Bibliografía
3
¿Qué es TDD?
 NO es un metodo de testing, sino de desarrollo
 NO reemplaza a las pruebas de performance,
rendimiento, ni usabilidad
 El objetivo es: “Código limpio que funciona”
 Escribir los tests antes que el código, y
refactorizar incrementalmente
4
Rojo, Verde, Refactorizar
1. Escribimos la prueba, y la dejamos fallar.
2. Código pecaminoso para pasar (¡progreso!).
3. Implementación completa, pasando la prueba.
4. Refactorizamos.

Las pruebas son nuestro cinturón de seguridad.
5
Codificar - Refactorizar
 Dos Sombreros:
 Dos Objetivos:
– Uno para
codificar
– Cuando codificamos,
agregamos nueva
funcionalidad
– Otro para
refactorizar
– Cuando refactorizamos,
sólo mejoramos el
diseño del código.
Cuando hacemos que la prueba pase, sólo codificamos.
6
Refactoring
 Mejorar el código existente
 Elevar la flexibilidad – tolerancia al cambio
 Código Spaghetti vs. código Raviol
 Entregar más rápido – menos depuración
7
Beneficios de TDD
 No hay código sin pruebas asociadas
 El código se origina y permanece sólido
 Las pruebas perduran
 Las pruebas son documentación
 Efecto psicológico
8
Herramientas
 xUnit Frameworks
–
–
–
–
–
jUnit para Java
nUnit/mbUnit para .NET
cppUnit para C++
vbUnit para VB 6
FoxUnit para Visual FoxPro
9
FoxUnit
 Framework de Unit Testing para VFP
 Implementación pragmática de xUnit
 Requiere VFP 8+; VFP 9 recomendado
 Gratuito - Fuente abierta
 Comunidad: http://www.foxunit.org
10
FxuTestCase
 Corazón de FoxUnit
 SuperClass de todas las clases de prueba
 Los métodos agregados son para pruebas
 Métodos con prefijo “Test” se ejecutan
(configurable).
11
FxuTestCase – Métodos principales
 Control
– Setup()
– TearDown()
 Aserciones
– AssertTrue()
– AssertEquals()
– AssertNotNull()
12
Usando FoxUnit
 Se instala en un único lugar (agregar path)
 Carpeta para pruebas en cada proyecto
 Aplicación independiente (Alt+Tab)
 Integrado a la IDE de VFP
13
Extender y colaborar
 Framework soportado por la comunidad
 Foros en http://www.foxunit.org
(incluyendo uno en español)
 Se extiende por medio de:
– FxuNewObject()
– fxuClassFactory.dbf
14
FoxUnit Team
 Autores (VisionPace):
–
–
–
–
Jim Erwin
Drew Speedie
Glenn Taylor
Dave Aring
 Esta presentación está
dedicada a la memoria de
Drew y Brent Speedie
 Documentación:
– Anthony Testi
– Martín Salías
– Andrew Mac Neill
15
Bibliografía
Kent Beck
David Astels
Martin Fowler
16
Preguntas
 [email protected]
 www.Salias.com.ar
 Universal Thread
www.UniversalThread.com
17
Descargar

SQL102005BA - tg-tatiana