Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

17
Test-Driven Test-Driven Development Development (Desarrollo dirigido por pruebas) (Desarrollo dirigido por pruebas) Martín Salías

Transcript of Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

Page 1: 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

Page 2: Test-Driven Development (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?

Page 3: Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

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

Page 4: Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

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

Page 5: Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

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.

Page 6: Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

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.

Page 7: Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

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

Page 8: Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

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

Page 9: Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

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

Page 10: Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

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

Page 11: Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

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).

Page 12: Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

1212

FxuTestCase – Métodos principalesFxuTestCase – Métodos principales

ControlControl

– Setup()Setup()– TearDown()TearDown()

AsercionesAserciones

– AssertTrue()AssertTrue()– AssertEquals()AssertEquals()– AssertNotNull()AssertNotNull()

Page 13: Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

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

Page 14: Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

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

Page 15: Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

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

Page 16: Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

1616

BibliografíaBibliografía

Kent BeckKent Beck David AstelsDavid Astels Martin FowlerMartin Fowler

Page 17: Test-Driven Development (Desarrollo dirigido por pruebas) Martín Salías.

1717

PreguntasPreguntas

?? [email protected]@gmail.com

www.Salias.com.arwww.Salias.com.ar

Universal Thread Universal Thread www.UniversalThread.comwww.UniversalThread.com