Skip to content

Latest commit

 

History

History
86 lines (68 loc) · 5.04 KB

README.md

File metadata and controls

86 lines (68 loc) · 5.04 KB

Prácticas BDD

Build Status

¿Qué es BDD?

Es una metodología de Desarrollo de Software basado en TDD (Test-driven Development) y en DDD (Domain-Driven Development) y cuyo acrónimo significa Behaviour-driven Development (Desarrollo dirigido por Comportamiento). Sus principales objetivos son la construcción de código con calidad, la garantía de cobertura de tests y el cumplimiento de los requisitos funcionales que necesita la parte de negocio.

Algunas de sus características más importantes incluyen:

  • Es una metodología de fuera hacia dentro. Comienza identificando las necesidades de negocio y profundiza hasta el conjunto de características que necesita su implementación.
  • Sustituye la palabra Prueba por Comportamiento.
  • Aboga por la semántica y el lenguaje natural para los nombres de Clases, Métodos y Pruebas.
  • Utiliza un Lenguaje Común para todos los involucrados en el proceso de desarrollo.
  • Extiende TDD para involucrar en el proceso de desarrollo a Analistas de Negocio, Stakeholders, Testers y Desarrolladores.

Primeros Pasos con BDD

Para esto, en BDD partimos de Historias de Usuario, que son definiciones funcionales de Comportamientos deseados para el Software. Estas Historias de Usuario normalmente deben ser definidas por la parte de negocio en conjunción con el equipo de desarrollo.

Siguiendo los principios de TDD, primero definimos un test que cumpla con lo descrito en la primera Historia de Usuario, después realizamos el código necesario para que ese test sea superado y finalmente refactorizamos ese código realizado.

Repetiremos este proceso tantas veces como sea necesario para acabar con las Historias de Usuario.

Historia de Ejemplo

Para la Práctica de BDD utilizaremos esta Historia de Ejemplo que define la necesidad de un Rover capaz de moverse sobre un Grid, al estilo de los vehículos exploratorios que se usan en las misiones a Marte.

Título: El piloto mueve el Rover

Como Piloto
Quiero Mover el Rover en cualquier dirección
De Manera Que Disponga de un vehículo funcional

Criterios de Aceptación:

Escenario 1: El Rover se mueve hacia adelante

Dado Que existe el Rover
Y Que existe el Grid
Y Que el Rover tiene una posición y una dirección sobre el Grid
Cuando Pulso 'f'
Entonces El Rover avanza una casilla en el Grid
Y Mantiene su dirección

Escenario 2: El Rover se mueve hacia atrás

Dado Que existe el Rover
Y Que existe el Grid
Y Que el Rover tiene una posición y una dirección sobre el Grid
Cuando Pulso 'b'
Entonces El Rover retrocede una casilla en el Grid
Y Mantiene su dirección

Escenario 3: El Rover gira a la derecha

Dado Que existe el Rover
Y Que existe el Grid
Y Que el Rover tiene una posición y una dirección sobre el Grid
Cuando Pulso 'r'
Entonces El Rover cambia su dirección un punto cardinal en el sentido de las agujas del reloj.
Y Mantiene su posición

Escenario 4: El Rover gira a la izquierda

Dado Que existe el Rover
Y Que existe el Grid
Y Que el Rover tiene una posición y una dirección sobre el Grid
Cuando Pulso 'l'
Entonces El Rover cambia su dirección un punto cardinal en el sentido contrario al de las agujas del reloj.
Y Mantiene su posición

Escenario 5: El Rover gira a la derecha y se mueve hacia adelante

Dado Que existe el Rover
Y Que existe el Grid
Y Que el Rover tiene una posición y una dirección sobre el Grid
Cuando Pulso 'rf'
Entonces El Rover cambia su dirección un punto cardinal en el sentido de las agujas del reloj y avanza una casilla.

Escenario 6: El Rover sobrepasa el límite del Grid en el eje Y

Dado Que existe el Rover
Y Que existe el Grid
Y Que el Rover tiene una posición y una dirección sobre el Grid
Y Que su posición está a una casilla del límite del Grid en el eje Y
Cuando Pulso 'ff'
Entonces El Rover avanza dos casillas, una hasta el límite del Grid y para la siguiente reaparece en la primera casilla.
Y Mantiene su dirección