SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Introducción a TDD
Test Driven Development

@JuanmaGomeR
¿Qué es TDD?

Es una técnica que consiste,
básicamente, en apoyarnos en un test
automatizado existente para
desarrollar nuestra lógica de negocio

@JuanmaGomeR
¿Un test existente?

Sí. Pero no reutilizado, sino uno nuevo
que escribamos nosotros

@JuanmaGomeR
El ciclo de TDD

RED

REFACTO
R

GREEN

@JuanmaGomeR
RED
Escribimos un test automático que,
cuando lo ejecutemos, falle (sale en
rojo)

RED

@JuanmaGomeR
GREEN
Escribimos el MÍNIMO código que haga
pasar el test automático que hemos
escrito (sale en verde)

GREEN

@JuanmaGomeR
REFACTOR
Modificamos la apariencia de nuestro
código, pero nunca su
comportamiento. Aplicamos patrones
de diseño, DRY, SOLID...
REFACTO
R

@JuanmaGomeR
¿Cómo TDDear?

Cada test representa un estado de mi
sistema

@JuanmaGomeR
¿Cómo TDDear?

El SUT entra en el sistema y modifica
su estado

@JuanmaGomeR
¿Cómo TDDear?

Por tanto, definimos estado inicial,
estado que esperamos, y obtenemos el
estado final

@JuanmaGomeR
¿Cómo TDDear?

Comparamos estado esperado con
estado final (creado por el SUT)

@JuanmaGomeR
Baby Steps

El primer test será el que ejemplifique
el caso más sencillo. Cuando lo
pasemos, habremos dado soporte a
una primera casuística

@JuanmaGomeR
Baby Steps

En el siguiente test, daremos un pasito
adelante, planteando una casuística un
pelín más compleja, el siguiente paso
natural

@JuanmaGomeR
Baby Steps

Y así seguiremos avanzando, de forma
que consigamos abarcar la mayor
cantidad de casuísticas posibles

@JuanmaGomeR
Triangulación

Llegará un momento en que
triangulemos para encontrar un patrón
de comportamiento

@JuanmaGomeR
Triangulación

Este patrón nos llevará al diseño
definitivo del algotirmo que buscamos

@JuanmaGomeR
Tras cada refactor

Es esencial pasar de nuevo los tests
tras cada refactor para ver que nada
ha dejado de funcionar

@JuanmaGomeR
Si otro día modifico lógica de negocio

Compruebo primero los tests

@JuanmaGomeR
Si otro día modifico lógica de negocio

Modificar los tests afectados por los
nuevos requerimientos (si fuera
necesario)

@JuanmaGomeR
Si otro día modifico lógica de negocio

Una vez definidos los nuevos tests,
escribir la nueva lógica de negocio

@JuanmaGomeR

Más contenido relacionado

Similar a Introducción a TDD

Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
Alfredo Chavez
 

Similar a Introducción a TDD (20)

TDD en java script
TDD en java scriptTDD en java script
TDD en java script
 
Cómo hacer Test Driven Development
Cómo hacer Test Driven DevelopmentCómo hacer Test Driven Development
Cómo hacer Test Driven Development
 
7iSF-4 test driver development
7iSF-4   test driver development7iSF-4   test driver development
7iSF-4 test driver development
 
Si no testeo no me lo creo
Si no testeo no me lo creoSi no testeo no me lo creo
Si no testeo no me lo creo
 
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & CucumberAutomatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
 
Como hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intentoComo hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intento
 
Artalde Tdd intro
Artalde Tdd introArtalde Tdd intro
Artalde Tdd intro
 
Working effectively with legacy code
Working effectively with legacy codeWorking effectively with legacy code
Working effectively with legacy code
 
TDD talk
TDD talkTDD talk
TDD talk
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
 
Como escribir buenos tests al hacer TDD
Como escribir buenos tests al hacer TDDComo escribir buenos tests al hacer TDD
Como escribir buenos tests al hacer TDD
 
Joseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozJoseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñoz
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
 
Introducción a tdd
Introducción a tddIntroducción a tdd
Introducción a tdd
 
Artesanía de software y desarrollo dirigido por pruebas (tdd)
Artesanía de software y desarrollo dirigido por pruebas (tdd)Artesanía de software y desarrollo dirigido por pruebas (tdd)
Artesanía de software y desarrollo dirigido por pruebas (tdd)
 
Seminario de Test Development Driven
Seminario de Test Development DrivenSeminario de Test Development Driven
Seminario de Test Development Driven
 
Lima agile day tdd con visual studio 2010
Lima agile day   tdd con visual studio 2010Lima agile day   tdd con visual studio 2010
Lima agile day tdd con visual studio 2010
 
Tdd - Primeros Pasos
Tdd - Primeros PasosTdd - Primeros Pasos
Tdd - Primeros Pasos
 
Informacion algorit descript_16julio
Informacion algorit descript_16julioInformacion algorit descript_16julio
Informacion algorit descript_16julio
 
Scrum y craftsmanship
Scrum y craftsmanshipScrum y craftsmanship
Scrum y craftsmanship
 

Más de Juanma Gómez

Más de Juanma Gómez (8)

Cas 2015 Visual Management para facilitar tu trabajo
Cas 2015 Visual Management para facilitar tu trabajoCas 2015 Visual Management para facilitar tu trabajo
Cas 2015 Visual Management para facilitar tu trabajo
 
Mejora tus retrospectivas (codemotion 2014)
Mejora tus retrospectivas (codemotion 2014)Mejora tus retrospectivas (codemotion 2014)
Mejora tus retrospectivas (codemotion 2014)
 
Scrum bad smells (codemotion 2014)
Scrum bad smells (codemotion 2014)Scrum bad smells (codemotion 2014)
Scrum bad smells (codemotion 2014)
 
Mejora tus retrospectivas
Mejora tus retrospectivasMejora tus retrospectivas
Mejora tus retrospectivas
 
Introducción a Scrum (basado en hechos reales)
Introducción a Scrum (basado en hechos reales)Introducción a Scrum (basado en hechos reales)
Introducción a Scrum (basado en hechos reales)
 
Introducción al testing unitario
Introducción al testing unitarioIntroducción al testing unitario
Introducción al testing unitario
 
Clean code tips
Clean code tipsClean code tips
Clean code tips
 
Introducción a JUnit 4
Introducción a JUnit 4Introducción a JUnit 4
Introducción a JUnit 4
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (11)

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 

Introducción a TDD