SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
TDD en el mundo real
Mi manera de trabajar
@edusanchezcon
Sobre mí
Eduardo Sánchez
@edusanchezcon
github.com/EduSanchezCon
Consultor tecnológico en
@edusanchezcon
Sobre
Development support
Product design and UX
Agile facilitation
Customized software
Development audit
Training
También estamos hiring
@edusanchezcon
Test Fails
Test PassesRefactor
Ciclo TDD
¿Para qué?
@edusanchezcon
@Test
public void givenACashOutOf5EurosThenAccountShouldHave5EurosLess(){
}
@edusanchezcon
Antes del primer test
Configurar nuestro entorno de desarrollo
Maven, Gradle, Webpack…
Framework (hola mundo)
Diseñar la arquitectura
Tests: separación UT/IT, Testing continuo
BD de test (en memoria, docker, compartida…)
@edusanchezcon
De fuera a dentro - Siguiendo el flujo
?
?
@edusanchezcon
De fuera a dentro - Siguiendo el flujo
?
?
@edusanchezcon
De fuera a dentro - Siguiendo el flujo
Teniendo clara la responsabilidad de cada clase y delegando el resto
Eligiendo los nombres adecuados
Me desentiendo de una unidad cuando paso a la siguiente
Ventajas:
¿Cómo lo aplico?
Evito el exceso de programación defensiva
@edusanchezcon
Test Fails
Test PassesRefactor
Ciclo TDD
@edusanchezcon
Test Fails
Test Passes
Refactor Ciclo TDD
@edusanchezcon
Test Fails
Hablemos de los tests
Prueban sólo una cosa, pero a fondo
Assert vs Verify
Unit Test vs Integration Test
Test primero vs Test al final
@edusanchezcon
Refactor
Hablemos de la refactorización
Qué NO es refactorizar
Hasta cuándo refactorizar
¿Se repite? Extraer superclase
¿Se repite? Extraer método
Qué es refactorizar
Patrones de diseño
DRYPSF
@edusanchezcon
Refactor
Hablemos de la refactorización
DRY también en los tests
ObjectMother pattern Template Method pattern
Creación de POJOs
Generadores aleatorios
Tests de integración con BD
Arrange, Act, Assert, Clean
@edusanchezcon
Ya están todos los tests
¿Significa que la aplicación no falla?
Puede fallar
Inyección de dependencias
. Casi seguro que falla
Configuración
“Ven, que habrá código”
me dijeron
@edusanchezcon
Superhéroes Nano
Si lo vales, me vales
También estamos hiring
@edusanchezcon
Heroes
id
name
private_name
weakness
UUID
varchar
varchar
varchar
Powers
id
hero_id
name
description
UUID
UUID
varchar
varchar
0..N
CRUDCRUD
No transaccional (Acción - Compensación)
DO TDD
RIGHT

Más contenido relacionado

Similar a TDD en el mundo real

Webquest 11 03 aplicacion proyecto tecnologico
Webquest 11 03 aplicacion proyecto tecnologicoWebquest 11 03 aplicacion proyecto tecnologico
Webquest 11 03 aplicacion proyecto tecnologicobraidare
 
Devsecooops Los Caso de no éxito en DevSecOps
Devsecooops Los Caso de no éxito en DevSecOpsDevsecooops Los Caso de no éxito en DevSecOps
Devsecooops Los Caso de no éxito en DevSecOpsLuciano Moreira da Cruz
 
Devops meetup 10 diciembre 2014
Devops meetup 10 diciembre 2014 Devops meetup 10 diciembre 2014
Devops meetup 10 diciembre 2014 Eduardo Diaz
 
Como ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicacionesComo ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicacionesMicael Gallego
 
Azure Dev(Sec)Ops EPIDATA completa
Azure Dev(Sec)Ops EPIDATA completaAzure Dev(Sec)Ops EPIDATA completa
Azure Dev(Sec)Ops EPIDATA completaTravis Alford
 
Workshop azure devsecops Microsoft Argentina
Workshop azure devsecops Microsoft ArgentinaWorkshop azure devsecops Microsoft Argentina
Workshop azure devsecops Microsoft ArgentinaLuciano Moreira da Cruz
 
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)Avanet
 
Webquest 11 03 aplicacion proyecto tecnologico
Webquest 11 03 aplicacion proyecto tecnologicoWebquest 11 03 aplicacion proyecto tecnologico
Webquest 11 03 aplicacion proyecto tecnologicobraidare
 
¿Qué es Moodle? ¿Qué alternativas libres existen para eLearning?
¿Qué es Moodle? ¿Qué alternativas libres existen para eLearning?¿Qué es Moodle? ¿Qué alternativas libres existen para eLearning?
¿Qué es Moodle? ¿Qué alternativas libres existen para eLearning?CRISEL BY AEFOL
 
Java desde 0
Java desde 0Java desde 0
Java desde 0Saviotec
 
El equipo de integracion de Moodle HQ es tu muy mejor amigo
El equipo de integracion de Moodle HQ es tu muy mejor amigoEl equipo de integracion de Moodle HQ es tu muy mejor amigo
El equipo de integracion de Moodle HQ es tu muy mejor amigoDavid Monllaó
 
Presentacion final
Presentacion finalPresentacion final
Presentacion finalESTIVALIZVGS
 
DevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas RotasDevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas RotasRicard Clau
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Alfredo Chavez
 

Similar a TDD en el mundo real (20)

Webquest 11 03 aplicacion proyecto tecnologico
Webquest 11 03 aplicacion proyecto tecnologicoWebquest 11 03 aplicacion proyecto tecnologico
Webquest 11 03 aplicacion proyecto tecnologico
 
Devsecooops Los Caso de no éxito en DevSecOps
Devsecooops Los Caso de no éxito en DevSecOpsDevsecooops Los Caso de no éxito en DevSecOps
Devsecooops Los Caso de no éxito en DevSecOps
 
Devops meetup 10 diciembre 2014
Devops meetup 10 diciembre 2014 Devops meetup 10 diciembre 2014
Devops meetup 10 diciembre 2014
 
Como ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicacionesComo ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicaciones
 
Open mooc
Open moocOpen mooc
Open mooc
 
JAVA3.0
JAVA3.0JAVA3.0
JAVA3.0
 
Azure Dev(Sec)Ops EPIDATA completa
Azure Dev(Sec)Ops EPIDATA completaAzure Dev(Sec)Ops EPIDATA completa
Azure Dev(Sec)Ops EPIDATA completa
 
Workshop azure devsecops Microsoft Argentina
Workshop azure devsecops Microsoft ArgentinaWorkshop azure devsecops Microsoft Argentina
Workshop azure devsecops Microsoft Argentina
 
Buenasprcticas
BuenasprcticasBuenasprcticas
Buenasprcticas
 
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 1)
 
Webquest 11 03 aplicacion proyecto tecnologico
Webquest 11 03 aplicacion proyecto tecnologicoWebquest 11 03 aplicacion proyecto tecnologico
Webquest 11 03 aplicacion proyecto tecnologico
 
¿Qué es Moodle? ¿Qué alternativas libres existen para eLearning?
¿Qué es Moodle? ¿Qué alternativas libres existen para eLearning?¿Qué es Moodle? ¿Qué alternativas libres existen para eLearning?
¿Qué es Moodle? ¿Qué alternativas libres existen para eLearning?
 
Java desde 0
Java desde 0Java desde 0
Java desde 0
 
El equipo de integracion de Moodle HQ es tu muy mejor amigo
El equipo de integracion de Moodle HQ es tu muy mejor amigoEl equipo de integracion de Moodle HQ es tu muy mejor amigo
El equipo de integracion de Moodle HQ es tu muy mejor amigo
 
Introducción a las Aplicaciones Visuales
Introducción a las Aplicaciones VisualesIntroducción a las Aplicaciones Visuales
Introducción a las Aplicaciones Visuales
 
Herramientas Tecnológicas.pdf
Herramientas Tecnológicas.pdfHerramientas Tecnológicas.pdf
Herramientas Tecnológicas.pdf
 
Practicas virtuales
Practicas virtualesPracticas virtuales
Practicas virtuales
 
Presentacion final
Presentacion finalPresentacion final
Presentacion final
 
DevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas RotasDevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas Rotas
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
 

TDD en el mundo real