asegurando la calidad en desarrollo de software con bdd · •"behavior-driven development is...

17
Asegurando la calidad en desarrollo de software con BDD Jorge Gamba Consultor en Arquitectura y Desarrollo de Software @jorgegamba [email protected] Http://jorgegamba.com

Upload: others

Post on 20-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

Asegurando la calidad en desarrollo de software con BDD

• Jorge Gamba

• Consultor en Arquitectura y Desarrollo de Software• @jorgegamba

[email protected]

• Http://jorgegamba.com

Page 2: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

Proceso de desarrollotradicional• Planeación

•Análisis

•Diseño

•Codificación

•Pruebas• Despliegue

Page 3: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

Proceso de desarrollo ágil• Iteración 1: Análisis -> Diseño -> Codificación – Pruebas

• Iteración 2: Análisis -> Diseño -> Codificación - Pruebas

• Iteración 3: Análisis -> Diseño -> Codificación - Pruebas

• Iteración 4: Análisis -> Diseño -> Codificación - Pruebas

• ….

• Osea…• El cambio es bienvenido

• Ciclos cortos para tomar retroalimentación pronto

Page 4: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

¿Qué es BDD?

Dan North

• “BDD as a full stack Agile methodology”

• "Behavior-driven development is about implementing an application by describing its behavior from the perspective of its stakeholders“

• “BDD is about communication and creating understanding. The technical implementation follows from there”

Page 5: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

Características de BDD• Convierte requerimientos en especificaciones ejecutables

• Toma los beneficios de:• ATDD (Acceptance Test Driven Development)

• TDD (Test Driven Development)

• DDD (Domain Driven Design)

• Specification by Example

• Outside-In Development

• User Stories

• Definición de “Done”

• DSL (Domain Specific Language)

Page 6: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

Nivel de Escenario de BDDObjetivo de negocios:

Apoyar a los funcionarios en la toma de decisiones para el estudio, aprobación y gestión de créditos financieros

Visión:

Una aplicación confiable reconocida en el negocio de créditos financieros por su eficiencia y practicidad

Page 7: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

Nivel de Escenario de BDDMMF (Minimal Marketable Features) - Feature Sets

Para evitar que entren al sistema clientes que no tienen capacidad de endeudamiento

Yo quiero someterlos a un proceso de estudio previo que analice su estado financiero

Para decidir acertadamente la aprobación de créditos

Yo quiero disponer de toda la información necesaria para tomar la decisión

Page 8: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

Nivel de Escenario de BDDHistorias de usuario (el ‘Cuando …' de la Característica)

Para evitar que entren al sistema clientes que no tienen capacidad de endeudamiento

Como un asesor comercial

Yo quiero evaluar si el cliente tiene capacidad de endeudamiento

Para aprovechar la información producto del análisis

Como un asesor comercial

Yo quiero registrar los resultados

Page 9: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

Nivel de Escenario de BDDCriterios de aceptación

El sistema no debería aprobar a clientes que tengan una mala calificación financiera

El sistema debería advertir cuando la cuota solicitada sea mayor a la mitad de la diferencia entre ingresos y gastos

El sistema debería aprobar a clientes que cumplan con las políticas de la entidad para iniciar un estudio de crédito

Page 10: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

Nivel de Escenario de BDDEscenarios (Dado que …)

El cliente tiene una mala calificación financiera

El cliente solicita más de lo que puede pagar

El cliente cumple con todos los requisitos

Page 11: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

Nivel de Escenario de BDDEspecificaciones (“Entonces …” - resultados esperados)

Característica: Evaluación de capacidad de endeudamiento

Para evitar que entren clientes que no tienen capacidad de endeudamiento

Como un asesor comercial

Yo quiero evaluar si el cliente tiene capacidad de endeudamiento

Escenario: El cliente tiene una mala calificación financiera

Dado que el usuario está en la página de Estudio Previo

Y el cliente tiene una mala calificación financiera

Y el cliente proporciona información de crédito válida:

Cuando se solicite evaluar si tiene capacidad de endeudamiento

Entonces Debería mostrar una página diciendo que no fue aprobado

Y Debería indicar que la razón es una mala calificación financiera

Page 12: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

Nivel de Escenario de BDDEspecificaciones (“Entonces …” - resultados esperados)Escenario: El cliente solicita más de lo que puede pagar

Dado que el usuario está en la página de Estudio Previo

Y el cliente tiene una buena calificación financiera

Y el cliente proporciona información de crédito inválida:

Cuando se solicite evaluar si tiene capacidad de endeudamiento

Entonces Debería mostrar una página diciendo que no fue aprobado

Y Debería indicar que la razón es por información de crédito inválida

Escenario: El cliente cumple con todos los requisitos

Dado que el usuario está en la página de Estudio Previo

Y el cliente tiene una buena calificación financiera

Y el cliente proporciona información de crédito válida:

Cuando se solicite evaluar si tiene capacidad de endeudamiento

Entonces Debería mostrar una página diciendo que fue aprobado

Page 13: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

Demostración• Visual Studio 2010

• SpecFlow

Page 14: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

Nivel de Unidad de BDD• Plantilla Contexto / Especificación

• MSpec

Esto se vé mejor en código …

Page 15: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

Algunos beneficios• Las especificaciones ejecutables son la documentación

• Estructura de navegación facilmente navegable en VS2010

• Pruebas de regresión

• Reducción de los ciclos para obtener retroalimentación

• Mayor colaboración y comunicación en el proyecto

Page 16: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

Referencias• http://en.wikipedia.org/wiki/Behavior_Driven_Development BDD en

Wikipedia

• http://dannorth.net/introducing-bdd/ Introducing BDD (Dan North)

• http://dannorth.net/whats-in-a-story/ What’s in a story (Dan North)

• http://www.infoq.com/articles/pulling-power Pulling Power: A New Software Lifespan (Elizabeth Keogh)

• http://www.jorgegamba.com/blog/archive/tag/bdd/ (Jorge Gamba)

Page 17: Asegurando la calidad en desarrollo de software con BDD · •"Behavior-driven development is about implementing an application by describing its behavior from the perspective of

Preguntas?Q&A