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
Agenda ¿Qué es TDD? FoxUnit Bibliografía El proceso Refactorización Beneficios Herramientas FoxUnit FxuTestCase Uso de FoxUnit Extender y colaborar Bibliografía
¿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
Rojo, Verde, Refactorizar Escribimos la prueba, y la dejamos fallar. Código pecaminoso para pasar (¡progreso!). Implementación completa, pasando la prueba. Refactorizamos. Las pruebas son nuestro cinturón de seguridad.
Codificar - Refactorizar Dos Sombreros: Uno para codificar Otro para refactorizar Dos Objetivos: Cuando codificamos, agregamos nueva funcionalidad Cuando refactorizamos, sólo mejoramos el diseño del código. Cuando hacemos que la prueba pase, sólo codificamos.
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
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
Herramientas xUnit Frameworks jUnit para Java nUnit/mbUnit para .NET cppUnit para C++ vbUnit para VB 6 FoxUnit para Visual FoxPro
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
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).
FxuTestCase – Métodos principales Control Setup() TearDown() Aserciones AssertTrue() AssertEquals() AssertNotNull()
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
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
FoxUnit Team Autores (VisionPace): Documentación: Jim Erwin Drew Speedie Glenn Taylor Dave Aring Documentación: Anthony Testi Martín Salías Andrew Mac Neill Esta presentación está dedicada a la memoria de Drew y Brent Speedie
Bibliografía Kent Beck David Astels Martin Fowler
? Preguntas Universal Thread www.UniversalThread.com msalias@gmail.com www.Salias.com.ar Universal Thread www.UniversalThread.com