es una herramienta de BDD para .NET
que permite escribir especificaciones en lenguaje
natural y ejecutarlas como pruebas automatizadas.
Cucumber: es una herramienta de BDD multi-
lenguaje que permite escribir especificaciones en
lenguaje natural y ejecutarlas como pruebas
automatizadas.
(Behavior driven development (bdd ) [sólo lectura])
1. Behavior Driven
Development
(BDD)
Desarrollo Dirigido por Comportamiento
Gestión de Sistemas Informatizados. Prof. Daniel Molina Cabrera
Escuela Superior de Ingeniería - Universidad de Cádiz
Raquel García García
Inmaculada García Romero
Virginia Serrano García
3. 1. Introducción
• Nace en 2003 de manos de Dan North como una
evolución del pensamiento tras el Test Driven
Development (TDD) y también tomando
conceptos del Domain Driven Design (DDD).
• Uniendo ambas ideas en un todo integrado que
hace más evidente la relación entre estos dos
caminos de desarrollo de software.
4. 1. Introducción
El desarrollo dirigido por comportamiento, o
Behavior Driven Development (BDD) es una
técnica de Desarrollo Agil De Software, esto es,
una técnica de programación que cuestiona el
comportamiento de una aplicación antes y
durante el proceso de desarrollo.
De esta forma, se fomenta la colaboración entre
desarrolladores, testers, analistas y personas del
negocio en un proyecto de software.
5. 1. Introducción
Mediante preguntas tales como:
“¿Qué debería hacer esta aplicación?”
o
“¿Qué debería hacer esta parte?” ,
los desarrolladores pueden identificar brechas en
la comprensión del problema del dominio y hablar
con sus pares o expertos del dominio para
encontrar las respuestas.
6. 1. Introducción
Los desarrolladores guiados por comportamiento
usan su lenguaje nativo en combinación con el
lenguaje ubicuo de DDD para describir el propósito
y beneficios de su código.
Esto les permite enfocarse en por qué el código
debe ser creado, antes que en los detalles
técnicos, y minimiza la traducción entre el
lenguaje técnico en el cuál se escribe el código y el
lenguaje de dominio hablado por las personas del
negocio, usuarios, interesados, gerentes de
proyecto, etc.
7. 1. Introducción
Objetivo:
Contribuir a que el desarrollo de software se
centre en la construcción de elementos,
siguiendo una prioridad, que tengan un valor
verificable para el negocio.
BDD permite un entendimiento más global del
sistema a crear, un entendimiento común de
todos los involucrados y ayuda a eliminar malos
entendidos sobre lo que el sistema debe hacer.
8. 2. Principios fundamentales
Suficiente es Suficiente: La planificación por adelantado,
el análisis y el diseño tienen un rendimiento decreciente.
No debemos hacer menos de lo que se necesita para
empezar, pero más que eso es un esfuerzo inútil.
Entregar valor a nuestros “stakeholders”: Si te
encuentras haciendo algo que no entrega valor o
incrementa tu habilidad/posibilidad de entregar valor, deja
de hacerlo y haz algo distinto.
Todo es comportamiento: Ya sea a nivel de código, de
aplicación o más allá, podemos usar el mismo pensamiento
y la misma lingüística para describir comportamiento a
cualquier nivel de granularidad.
9. 3. Ciclo de desarrollo BDD
1. Discusión. Desarrolladores, testers, expertos de dominio y
el dueño de producto se juntan y discuten la historia,
gradualmente descomponiendo y destilando el
comportamiento en un conjunto de especificaciones simples.
2. Decisión. El dueño de producto decide cuando la
especificación cumple suficientemente el comportamiento
esperado y está de acuerdo con los casos de ejemplo y
demostración de la historia y cierra el alcance de la misma.
3. Desarrollo. Los testers refinan los ejemplos de la
especificación y los desarrolladores instrumentan las
especificaciones creando primero pruebas que fallan y
después implementando la funcionalidad.
4. Demostración. Una vez que todos los tests pasan la
historia puede ser demostrada al dueño de producto.
10. 4. Herramientas de BDD
Concordion: es un framework Java de Software
Libre que permite convertir especificaciones en
texto común sobre requerimientos en pruebas
automatizadas.
JBehave: es un framework Java para mejorar la
colaboración entre desarrolladores, QA, analistas
de negocio, Dueño Del Producto y todos los
miembros del equipo a través de escenarios
automatizados y legibles.