Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.
-
Upload
emilio-vidrio -
Category
Documents
-
view
25 -
download
4
Transcript of Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.
Test-Driven Test-Driven DevelopmentDevelopment
(Desarrollo dirigido por pruebas)(Desarrollo dirigido por pruebas)
Martín Salías
22
Martín SalíasMartín SalíasArquitecto de SoftwareArquitecto de Software Latinoamérica, USA, Canadá, Latinoamérica, USA, Canadá,
Australia y EscandinaviaAustralia y Escandinavia
Microsoft MVPMicrosoft MVP Universal Thread MagazineUniversal Thread Magazine
Editor en JefeEditor en Jefe Miembro de la Agile AllianceMiembro de la Agile Alliance Orador y colaborador Orador y colaborador
de MSDN Cono Surde MSDN Cono Sur
¿Quién es este tipo?¿Quién es este tipo?
33
AgendaAgenda
¿Qué es TDD?¿Qué es TDD?– El procesoEl proceso– RefactorizaciónRefactorización– BeneficiosBeneficios– HerramientasHerramientas
FoxUnitFoxUnit– FoxUnitFoxUnit– FxuTestCaseFxuTestCase– Uso de FoxUnitUso de FoxUnit– Extender y Extender y
colaborarcolaborar
BibliografíaBibliografía
44
¿Qué es TDD?¿Qué es TDD?
NONO es un metodo de es un metodo de testingtesting, sino de , sino de desarrollodesarrollo
NO NO reemplaza a las pruebas de performance, reemplaza a las pruebas de performance, rendimiento, ni usabilidadrendimiento, ni usabilidad
El objetivo es: El objetivo es: “Código limpio que funciona”“Código limpio que funciona”
Escribir los tests Escribir los tests antesantes que el código, y que el código, y refactorizarrefactorizar incrementalmente incrementalmente
55
Rojo, Verde, RefactorizarRojo, Verde, Refactorizar
1.1. Escribimos la prueba, y la dejamos Escribimos la prueba, y la dejamos fallarfallar..
2.2. Código pecaminoso para Código pecaminoso para pasarpasar (¡progreso!). (¡progreso!).
3.3. Implementación completa, Implementación completa, pasando pasando la prueba.la prueba.
4.4. Refactorizamos.Refactorizamos.
Las pruebas son nuestro cinturón de seguridad.Las pruebas son nuestro cinturón de seguridad.
66
Codificar - RefactorizarCodificar - Refactorizar
Dos Sombreros:Dos Sombreros:
– Uno para Uno para codificarcodificar
– Otro para Otro para refactorizarrefactorizar
Dos Objetivos:Dos Objetivos:
– Cuando codificamos, Cuando codificamos, agregamos nueva agregamos nueva funcionalidadfuncionalidad
– Cuando Cuando refactorizamos, sólo refactorizamos, sólo mejoramos el diseño mejoramos el diseño del código.del código.
Cuando hacemos que la prueba pase, Cuando hacemos que la prueba pase, sólosólo codificamos.codificamos.
77
RefactoringRefactoring
Mejorar el código existenteMejorar el código existente
Elevar la flexibilidad – tolerancia al Elevar la flexibilidad – tolerancia al cambiocambio
Código Spaghetti vs. código RaviolCódigo Spaghetti vs. código Raviol
Entregar más rápido – menos depuraciónEntregar más rápido – menos depuración
88
Beneficios de TDDBeneficios de TDD
No hay código sin pruebas asociadasNo hay código sin pruebas asociadas
El código se origina y permanece sólidoEl código se origina y permanece sólido
Las pruebas perduranLas pruebas perduran
Las pruebas son documentaciónLas pruebas son documentación
Efecto psicológicoEfecto psicológico
99
HerramientasHerramientas
xUnit FrameworksxUnit Frameworks– jUnitjUnit para Java para Java– nUnit/mbUnitnUnit/mbUnit para .NET para .NET– cppUnitcppUnit para C++ para C++– vbUnitvbUnit para VB 6 para VB 6– FoxUnitFoxUnit para Visual FoxPro para Visual FoxPro
1010
FoxUnitFoxUnit
Framework de Unit Testing para VFPFramework de Unit Testing para VFP
Implementación pragmática de xUnitImplementación pragmática de xUnit
Requiere VFP 8+; VFP 9 recomendadoRequiere VFP 8+; VFP 9 recomendado
Gratuito - Fuente abiertaGratuito - Fuente abierta
Comunidad: Comunidad: httphttp://://www.foxunit.orgwww.foxunit.org
1111
FxuTestCaseFxuTestCase
Corazón de FoxUnitCorazón de FoxUnit
SuperClass de todas las clases de pruebaSuperClass de todas las clases de prueba
Los métodos agregados son para pruebasLos métodos agregados son para pruebas
Métodos con prefijo “Test” se ejecutanMétodos con prefijo “Test” se ejecutan(configurable).(configurable).
1212
FxuTestCase – Métodos principalesFxuTestCase – Métodos principales
ControlControl
– Setup()Setup()– TearDown()TearDown()
AsercionesAserciones
– AssertTrue()AssertTrue()– AssertEquals()AssertEquals()– AssertNotNull()AssertNotNull()
1313
Usando FoxUnitUsando FoxUnit
Se instala en un único lugar (agregar Se instala en un único lugar (agregar path)path)
Carpeta para pruebas en cada proyectoCarpeta para pruebas en cada proyecto
Aplicación independiente (Alt+Tab)Aplicación independiente (Alt+Tab)
Integrado a la IDE de VFPIntegrado a la IDE de VFP
1414
Extender y colaborarExtender y colaborar
Framework soportado por la Framework soportado por la comunidadcomunidad
Foros en Foros en http://http://www.foxunit.orgwww.foxunit.org (incluyendo uno en español)(incluyendo uno en español)
Se extiende por medio de:Se extiende por medio de:– FxuNewObject() FxuNewObject() – fxuClassFactory.dbffxuClassFactory.dbf
1515
FoxUnit TeamFoxUnit Team
Autores Autores (VisionPace):(VisionPace):– Jim ErwinJim Erwin– Drew SpeedieDrew Speedie– Glenn TaylorGlenn Taylor– Dave AringDave Aring
Documentación:Documentación:– Anthony TestiAnthony Testi– Martín SalíasMartín Salías– Andrew Mac NeillAndrew Mac Neill
Esta presentación está Esta presentación está dedicada a la memoria dedicada a la memoria de Drew y Brent de Drew y Brent SpeedieSpeedie
1616
BibliografíaBibliografía
Kent BeckKent Beck David AstelsDavid Astels Martin FowlerMartin Fowler
1717
PreguntasPreguntas
?? [email protected]@gmail.com
www.Salias.com.arwww.Salias.com.ar
Universal Thread Universal Thread www.UniversalThread.comwww.UniversalThread.com