asegurando la calidad en desarrollo de software con bdd · •"behavior-driven development is...
TRANSCRIPT
Asegurando la calidad en desarrollo de software con BDD
• Jorge Gamba
• Consultor en Arquitectura y Desarrollo de Software• @jorgegamba
• Http://jorgegamba.com
Proceso de desarrollotradicional• Planeación
•Análisis
•Diseño
•Codificación
•Pruebas• Despliegue
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
¿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”
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)
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
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
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
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
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
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
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
Demostración• Visual Studio 2010
• SpecFlow
Nivel de Unidad de BDD• Plantilla Contexto / Especificación
• MSpec
Esto se vé mejor en código …
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
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)
Preguntas?Q&A