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

Post on 03-Jan-2015

25 views 4 download

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

?? msalias@gmail.commsalias@gmail.com

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

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