SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
TDD/BDD Práctico 
para aplicaciones 
con dominio rico 
Barcelona Software Crafmanship 2014
@eferro
@nestorsalceda
Alea Soluciones
Contexto 
Tipo de aplicaciones 
Delivery mechanisms 
Sistemas de gestión de información 
Sistemas de 
monitorización/control/scada 
Sistemas de orquestación y configuración
Para desarrollo 
Bounded contexts 
DDD / OOP 
Sin acoplamiento al framework 
TDD a cascoporro
Pirámide de testing
TDD Mockist
Entrando por lógica de dominio 
Test unitarios con aislamiento por clase
Conclusiones 
Buena cobertura 
Granularidad en caso de error muy buena. 
A veces rompen en cascada. 
Poco coste mental una vez aprendido el 
proceso 
Coste alto de mantenimiento / refactor
TDD por 
funcionalidad
Test unitario con aislamiento por 
funcionalidad 
Outside In. Comenzando por lógica de 
negocio 
Negocio puro y duro
Conclusiones 
Terminologia de negocio 
Buena cobertura 
Granularidad en caso de error muy buena 
Coste bajo de mantenimiento 
Se disfruta refactorizando 
Menor tendencia a megaconstrucciones 
Valor de negocio más rápido 
Feedback mucho antes
Dificultades 
Necesitas arquitectura hexagonal o 
similar 
Cuesta identificar los puertos 
Requiere algo más de poder mental. Se 
pueden usar mocks como andamiaje
¿Cómo lo hacemos 
actualmente?
Flujo por 
funcionalidad 
Green Field
Análisis 
Identificar puertos 
Dobles para puertos 
Adaptadores (Repositorios, Servicios, 
SNMP …) 
– Tests de contrato 
– TDD con dobles para los wrappers de librerías
Flujo por 
funcionalidad 
Brown Field
Análisis / ¿Dónde impacta? 
“For each desired change, make the change 
easy (warning: this may be hard), then make 
the easy change” Kent Beck 
Dobles como puertos 
Adaptadores (Repositorios, Servicios, SNMP …) 
– Tests de contrato 
– TDD con dobles para los wrappers de librerías
¡Enséñame los 
tests!
Números
660 test unitarios de clase / 1 segundo 
180 test unitarios de funcionalidad / 0.6 
segundos 
180 tests de integración / 14 segundos 
– Unos 50 de contrato
¡Gracias!

Contenu connexe

En vedette

CV-EC-SDiscacciati-English - 2016
CV-EC-SDiscacciati-English - 2016CV-EC-SDiscacciati-English - 2016
CV-EC-SDiscacciati-English - 2016
Silvia Discacciati
 
Skipass dei parchi_presentazione
Skipass dei parchi_presentazioneSkipass dei parchi_presentazione
Skipass dei parchi_presentazione
alantino
 
Dan's Resume up 2
Dan's Resume up  2Dan's Resume up  2
Dan's Resume up 2
dan lessa
 
Les Olimpiades
Les OlimpiadesLes Olimpiades
Les Olimpiades
petit mon
 
Analytical Sandboxing: Data-Warehousing und Datenanalysen im Spannungsfeld zw...
Analytical Sandboxing: Data-Warehousing und Datenanalysen im Spannungsfeld zw...Analytical Sandboxing: Data-Warehousing und Datenanalysen im Spannungsfeld zw...
Analytical Sandboxing: Data-Warehousing und Datenanalysen im Spannungsfeld zw...
Business Intelligence Research
 
2013 Book of Mormon : Chapter 7 (Institute Lesson by hgellor)
2013 Book of Mormon : Chapter 7 (Institute Lesson by hgellor)2013 Book of Mormon : Chapter 7 (Institute Lesson by hgellor)
2013 Book of Mormon : Chapter 7 (Institute Lesson by hgellor)
Leah Gellor
 
Sensores de luz y movimiento (2)
Sensores de luz y movimiento (2)Sensores de luz y movimiento (2)
Sensores de luz y movimiento (2)
w3n211993
 

En vedette (19)

CV-EC-SDiscacciati-English - 2016
CV-EC-SDiscacciati-English - 2016CV-EC-SDiscacciati-English - 2016
CV-EC-SDiscacciati-English - 2016
 
C.o.l.o.m.b.i.a (2)
C.o.l.o.m.b.i.a (2)C.o.l.o.m.b.i.a (2)
C.o.l.o.m.b.i.a (2)
 
Casa Rural La Granja
Casa Rural La GranjaCasa Rural La Granja
Casa Rural La Granja
 
Skipass dei parchi_presentazione
Skipass dei parchi_presentazioneSkipass dei parchi_presentazione
Skipass dei parchi_presentazione
 
Dan's Resume up 2
Dan's Resume up  2Dan's Resume up  2
Dan's Resume up 2
 
Les Olimpiades
Les OlimpiadesLes Olimpiades
Les Olimpiades
 
Analytical Sandboxing: Data-Warehousing und Datenanalysen im Spannungsfeld zw...
Analytical Sandboxing: Data-Warehousing und Datenanalysen im Spannungsfeld zw...Analytical Sandboxing: Data-Warehousing und Datenanalysen im Spannungsfeld zw...
Analytical Sandboxing: Data-Warehousing und Datenanalysen im Spannungsfeld zw...
 
TCILatinAmerica15 ¿Clústers, Rutas Competitivas, Cadenas de Valor globales,…?...
TCILatinAmerica15 ¿Clústers, Rutas Competitivas, Cadenas de Valor globales,…?...TCILatinAmerica15 ¿Clústers, Rutas Competitivas, Cadenas de Valor globales,…?...
TCILatinAmerica15 ¿Clústers, Rutas Competitivas, Cadenas de Valor globales,…?...
 
Jddt catalogue
Jddt catalogueJddt catalogue
Jddt catalogue
 
Controlling the Greenhouse Environment in Fairbanks, Alaska
Controlling the Greenhouse Environment in Fairbanks, Alaska Controlling the Greenhouse Environment in Fairbanks, Alaska
Controlling the Greenhouse Environment in Fairbanks, Alaska
 
Floorplanner Sponsor Presentation at the Property Portal Watch Conference - A...
Floorplanner Sponsor Presentation at the Property Portal Watch Conference - A...Floorplanner Sponsor Presentation at the Property Portal Watch Conference - A...
Floorplanner Sponsor Presentation at the Property Portal Watch Conference - A...
 
Publicación Evoluticvos
Publicación EvoluticvosPublicación Evoluticvos
Publicación Evoluticvos
 
Separatas psicologia
Separatas psicologiaSeparatas psicologia
Separatas psicologia
 
Haz tu propio suavizante de ropa
Haz tu propio suavizante de ropaHaz tu propio suavizante de ropa
Haz tu propio suavizante de ropa
 
2013 Book of Mormon : Chapter 7 (Institute Lesson by hgellor)
2013 Book of Mormon : Chapter 7 (Institute Lesson by hgellor)2013 Book of Mormon : Chapter 7 (Institute Lesson by hgellor)
2013 Book of Mormon : Chapter 7 (Institute Lesson by hgellor)
 
Sensores de luz y movimiento (2)
Sensores de luz y movimiento (2)Sensores de luz y movimiento (2)
Sensores de luz y movimiento (2)
 
Elecnor deimos LBS eng
Elecnor deimos LBS engElecnor deimos LBS eng
Elecnor deimos LBS eng
 
La Torino di domani: commercio, artigianato, PMI, lavoro
La Torino di domani: commercio, artigianato, PMI, lavoroLa Torino di domani: commercio, artigianato, PMI, lavoro
La Torino di domani: commercio, artigianato, PMI, lavoro
 
Students Quality Circle
Students Quality CircleStudents Quality Circle
Students Quality Circle
 

Similaire à Tdd bdd-practico-dominio-rico

Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xpCas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
Agile Spain
 
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationCas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Agile Spain
 
20120926 web perf-dns_v1
20120926 web perf-dns_v120120926 web perf-dns_v1
20120926 web perf-dns_v1
Sergim
 
Documentacion netdot
Documentacion netdotDocumentacion netdot
Documentacion netdot
Moni_TR
 

Similaire à Tdd bdd-practico-dominio-rico (20)

BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
 
Datos en la nube: colas, caché, topics y otras yerbas (Code Camp Argentina 2011)
Datos en la nube: colas, caché, topics y otras yerbas (Code Camp Argentina 2011)Datos en la nube: colas, caché, topics y otras yerbas (Code Camp Argentina 2011)
Datos en la nube: colas, caché, topics y otras yerbas (Code Camp Argentina 2011)
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2
 
Replicaciones masivas y escenarios desconectados | SolidQ Summit 2014
Replicaciones masivas y escenarios desconectados | SolidQ Summit 2014Replicaciones masivas y escenarios desconectados | SolidQ Summit 2014
Replicaciones masivas y escenarios desconectados | SolidQ Summit 2014
 
Softonic Labs - Web Escalable
Softonic Labs - Web EscalableSoftonic Labs - Web Escalable
Softonic Labs - Web Escalable
 
SOA multiplataforma con rabbitmq y websockets
SOA multiplataforma con rabbitmq y websocketsSOA multiplataforma con rabbitmq y websockets
SOA multiplataforma con rabbitmq y websockets
 
Business Logic 2012
Business Logic 2012Business Logic 2012
Business Logic 2012
 
DevOps: una breve introducción
DevOps: una breve introducciónDevOps: una breve introducción
DevOps: una breve introducción
 
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por PruebasTDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
 
Ponencia siemon
Ponencia siemonPonencia siemon
Ponencia siemon
 
Qué debemos tener en cuenta sobre la Infraestructura de nuestro proveedor de ...
Qué debemos tener en cuenta sobre la Infraestructura de nuestro proveedor de ...Qué debemos tener en cuenta sobre la Infraestructura de nuestro proveedor de ...
Qué debemos tener en cuenta sobre la Infraestructura de nuestro proveedor de ...
 
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xpCas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
 
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationCas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
 
Mejores prácticas para SQL Server en ambientes virtualizados
Mejores prácticas para SQL Server en ambientes virtualizadosMejores prácticas para SQL Server en ambientes virtualizados
Mejores prácticas para SQL Server en ambientes virtualizados
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?
 
Presentación de Arquitectura en la Nube
Presentación de Arquitectura en la NubePresentación de Arquitectura en la Nube
Presentación de Arquitectura en la Nube
 
20120926 web perf-dns_v1
20120926 web perf-dns_v120120926 web perf-dns_v1
20120926 web perf-dns_v1
 
Documentacion netdot
Documentacion netdotDocumentacion netdot
Documentacion netdot
 
Panel Magmaconf
Panel MagmaconfPanel Magmaconf
Panel Magmaconf
 
Charla evento TestingUY 2016 - Test Driven Development en la Plataforma Sales...
Charla evento TestingUY 2016 - Test Driven Development en la Plataforma Sales...Charla evento TestingUY 2016 - Test Driven Development en la Plataforma Sales...
Charla evento TestingUY 2016 - Test Driven Development en la Plataforma Sales...
 

Plus de Eduardo Ferro Aldama

CAS2016 El Arte del patadon pa'lante / Posponer decisiones
CAS2016 El Arte del patadon pa'lante / Posponer decisionesCAS2016 El Arte del patadon pa'lante / Posponer decisiones
CAS2016 El Arte del patadon pa'lante / Posponer decisiones
Eduardo Ferro Aldama
 

Plus de Eduardo Ferro Aldama (19)

Product discovery engineering point of view
Product discovery   engineering point of viewProduct discovery   engineering point of view
Product discovery engineering point of view
 
Scalability, basics, application to systems, teams and processes
Scalability, basics, application to systems, teams and processesScalability, basics, application to systems, teams and processes
Scalability, basics, application to systems, teams and processes
 
Agile, en que te hemos convertido v2
Agile, en que te hemos convertido v2Agile, en que te hemos convertido v2
Agile, en que te hemos convertido v2
 
Entrega continua tomandonos la agilidad en serio
Entrega continua   tomandonos la agilidad en serioEntrega continua   tomandonos la agilidad en serio
Entrega continua tomandonos la agilidad en serio
 
Madrid devops forward devops is not what you think
Madrid devops forward devops is not what you thinkMadrid devops forward devops is not what you think
Madrid devops forward devops is not what you think
 
Bilbostack19 devops is not what you think
Bilbostack19 devops is not what you thinkBilbostack19 devops is not what you think
Bilbostack19 devops is not what you think
 
Continuous delivery practices and real experiences
Continuous delivery   practices and real experiencesContinuous delivery   practices and real experiences
Continuous delivery practices and real experiences
 
Cas18 sobreviviendo en producción / Gestión de Incidencias y aprendizajes
Cas18 sobreviviendo en producción / Gestión de Incidencias y aprendizajesCas18 sobreviviendo en producción / Gestión de Incidencias y aprendizajes
Cas18 sobreviviendo en producción / Gestión de Incidencias y aprendizajes
 
CODE ContinuousDelivery. germinando una cultura agile moderna
CODE  ContinuousDelivery. germinando una cultura agile modernaCODE  ContinuousDelivery. germinando una cultura agile moderna
CODE ContinuousDelivery. germinando una cultura agile moderna
 
CAS2017 Agilidad. Hacia la entrega continua ¿Qué te lo impide?
CAS2017 Agilidad. Hacia la entrega continua ¿Qué te lo impide?CAS2017 Agilidad. Hacia la entrega continua ¿Qué te lo impide?
CAS2017 Agilidad. Hacia la entrega continua ¿Qué te lo impide?
 
Acelerando la cultura DevOps mediante Entrega Continua
Acelerando la cultura DevOps mediante Entrega ContinuaAcelerando la cultura DevOps mediante Entrega Continua
Acelerando la cultura DevOps mediante Entrega Continua
 
SCPNA2017 El arte del patadon pa'lante / libro de recetas
SCPNA2017 El arte del patadon pa'lante / libro de recetasSCPNA2017 El arte del patadon pa'lante / libro de recetas
SCPNA2017 El arte del patadon pa'lante / libro de recetas
 
CAS2016 El Arte del patadon pa'lante / Posponer decisiones
CAS2016 El Arte del patadon pa'lante / Posponer decisionesCAS2016 El Arte del patadon pa'lante / Posponer decisiones
CAS2016 El Arte del patadon pa'lante / Posponer decisiones
 
Golang design4concurrency
Golang design4concurrencyGolang design4concurrency
Golang design4concurrency
 
Python Herencia vs Composición (Luke soy tu padre)
Python Herencia vs Composición (Luke soy tu padre)Python Herencia vs Composición (Luke soy tu padre)
Python Herencia vs Composición (Luke soy tu padre)
 
Python SOLID
Python SOLIDPython SOLID
Python SOLID
 
Mejor framework-pythonoo-solid
Mejor framework-pythonoo-solidMejor framework-pythonoo-solid
Mejor framework-pythonoo-solid
 
Python Madrid empaquetamiento deb aplicaciones Python
Python Madrid empaquetamiento deb aplicaciones PythonPython Madrid empaquetamiento deb aplicaciones Python
Python Madrid empaquetamiento deb aplicaciones Python
 
Madrid devops empaquetamientodeb_i
Madrid devops empaquetamientodeb_iMadrid devops empaquetamientodeb_i
Madrid devops empaquetamientodeb_i
 

Dernier

UC Fundamentos de tuberías en equipos de refrigeración m.pdf
UC Fundamentos de tuberías en equipos de refrigeración m.pdfUC Fundamentos de tuberías en equipos de refrigeración m.pdf
UC Fundamentos de tuberías en equipos de refrigeración m.pdf
refrielectriccarlyz
 

Dernier (20)

Presentación de Redes de alcantarillado y agua potable
Presentación de Redes de alcantarillado y agua potablePresentación de Redes de alcantarillado y agua potable
Presentación de Redes de alcantarillado y agua potable
 
Sistema de alumbrado.pptx fjhhgghrhgghhuughuh
Sistema de alumbrado.pptx fjhhgghrhgghhuughuhSistema de alumbrado.pptx fjhhgghrhgghhuughuh
Sistema de alumbrado.pptx fjhhgghrhgghhuughuh
 
TECNOLOGIA DE CONCRETO 2024 estudiante.pdf
TECNOLOGIA DE CONCRETO 2024 estudiante.pdfTECNOLOGIA DE CONCRETO 2024 estudiante.pdf
TECNOLOGIA DE CONCRETO 2024 estudiante.pdf
 
entropia y neguentropia en la teoria general de sistemas
entropia y neguentropia en la teoria general de sistemasentropia y neguentropia en la teoria general de sistemas
entropia y neguentropia en la teoria general de sistemas
 
Matrices Matemáticos universitario pptx
Matrices  Matemáticos universitario pptxMatrices  Matemáticos universitario pptx
Matrices Matemáticos universitario pptx
 
UC Fundamentos de tuberías en equipos de refrigeración m.pdf
UC Fundamentos de tuberías en equipos de refrigeración m.pdfUC Fundamentos de tuberías en equipos de refrigeración m.pdf
UC Fundamentos de tuberías en equipos de refrigeración m.pdf
 
dokumen.tips_311-determinacion-del-espacio-estatico.pptx
dokumen.tips_311-determinacion-del-espacio-estatico.pptxdokumen.tips_311-determinacion-del-espacio-estatico.pptx
dokumen.tips_311-determinacion-del-espacio-estatico.pptx
 
Cereales tecnología de los alimentos. Cereales
Cereales tecnología de los alimentos. CerealesCereales tecnología de los alimentos. Cereales
Cereales tecnología de los alimentos. Cereales
 
ATS-FORMATOa.pdf PARA MANTENIMIENTO MECANICO
ATS-FORMATOa.pdf PARA MANTENIMIENTO MECANICOATS-FORMATOa.pdf PARA MANTENIMIENTO MECANICO
ATS-FORMATOa.pdf PARA MANTENIMIENTO MECANICO
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt
 
Manual deresolucion de ecuaciones por fracciones parciales.pdf
Manual deresolucion de ecuaciones por fracciones parciales.pdfManual deresolucion de ecuaciones por fracciones parciales.pdf
Manual deresolucion de ecuaciones por fracciones parciales.pdf
 
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptTippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
 
5. MATERIALES petreos para concreto.pdf.
5. MATERIALES petreos para concreto.pdf.5. MATERIALES petreos para concreto.pdf.
5. MATERIALES petreos para concreto.pdf.
 
1. Equipos Primarios de una Subestaciones electricas
1. Equipos Primarios de una Subestaciones electricas1. Equipos Primarios de una Subestaciones electricas
1. Equipos Primarios de una Subestaciones electricas
 
metodos de fitomejoramiento en la aolicacion de plantas
metodos de fitomejoramiento en la aolicacion de plantasmetodos de fitomejoramiento en la aolicacion de plantas
metodos de fitomejoramiento en la aolicacion de plantas
 
Mecatronica Automotriz .pdf
Mecatronica Automotriz              .pdfMecatronica Automotriz              .pdf
Mecatronica Automotriz .pdf
 
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf  PARA TRABAJO SEGUROATS-FORMATO cara.pdf  PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
 
GUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdf
GUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdfGUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdf
GUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdf
 
Balance materia y energia procesos de Secado
Balance materia y energia procesos de SecadoBalance materia y energia procesos de Secado
Balance materia y energia procesos de Secado
 
Video sustentación GA2- 240201528-AA3-EV01.pptx
Video sustentación GA2- 240201528-AA3-EV01.pptxVideo sustentación GA2- 240201528-AA3-EV01.pptx
Video sustentación GA2- 240201528-AA3-EV01.pptx
 

Tdd bdd-practico-dominio-rico