Tdd bdd-practico-dominio-rico

25
TDD/BDD Práctico para aplicaciones con dominio rico Barcelona Software Crafmanship 2014

description

Resumen del flujo de desarrollo usando TDD que hacemos Alea Soluciones y la evolución que ha tenido el proceso. Software Craftsmanship Barcelona 2014

Transcript of Tdd bdd-practico-dominio-rico

Page 1: Tdd bdd-practico-dominio-rico

TDD/BDD Práctico para aplicaciones con dominio rico

Barcelona Software Crafmanship 2014

Page 2: Tdd bdd-practico-dominio-rico

@eferro

Page 3: Tdd bdd-practico-dominio-rico

@nestorsalceda

Page 4: Tdd bdd-practico-dominio-rico

Alea Soluciones

Page 5: Tdd bdd-practico-dominio-rico

ContextoTipo de aplicaciones

Delivery mechanisms

Sistemas de gestión de información

Sistemas de monitorización/control/scada

Sistemas de orquestación y configuración

Page 6: Tdd bdd-practico-dominio-rico

Para desarrolloBounded contexts

DDD / OOP

Sin acoplamiento al framework

TDD a cascoporro

Page 7: Tdd bdd-practico-dominio-rico

Pirámide de testing

Page 8: Tdd bdd-practico-dominio-rico
Page 9: Tdd bdd-practico-dominio-rico

TDD Mockist

Page 10: Tdd bdd-practico-dominio-rico

Entrando por lógica de dominio

Test unitarios con aislamiento por clase

Page 11: Tdd bdd-practico-dominio-rico

ConclusionesBuena 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

Page 12: Tdd bdd-practico-dominio-rico

TDD por funcionalidad

Page 13: Tdd bdd-practico-dominio-rico

Test unitario con aislamiento por funcionalidad

Outside In. Comenzando por lógica de negocio

Negocio puro y duro

Page 14: Tdd bdd-practico-dominio-rico

ConclusionesTerminologia 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

Page 15: Tdd bdd-practico-dominio-rico

Dificultades

Necesitas arquitectura hexagonal o similar

Cuesta identificar los puertos

Requiere algo más de poder mental. Se pueden usar mocks como andamiaje

Page 16: Tdd bdd-practico-dominio-rico

¿Cómo lo hacemos actualmente?

Page 17: Tdd bdd-practico-dominio-rico

Flujo por funcionalidad

Green Field

Page 18: Tdd bdd-practico-dominio-rico

Análisis

Identificar puertos

Dobles para puertos

Adaptadores (Repositorios, Servicios, SNMP …)– Tests de contrato

– TDD con dobles para los wrappers de librerías

Page 19: Tdd bdd-practico-dominio-rico

Flujo por funcionalidad

Brown Field

Page 20: Tdd bdd-practico-dominio-rico

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

Page 21: Tdd bdd-practico-dominio-rico
Page 22: Tdd bdd-practico-dominio-rico

¡Enséñame los tests!

Page 23: Tdd bdd-practico-dominio-rico

Números

Page 24: Tdd bdd-practico-dominio-rico

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

Page 25: Tdd bdd-practico-dominio-rico

¡Gracias!