BDD de historias: un ejemplo concreto

Para continuar con la serie de artículos acerca del Desarrollo Guiado por Comportamiento, hoy les traigo un ejemplo de BDD de historias, junto con sus implementaciones en Java y PHP.

La historia y sus escenarios

Como he comentado en la serie de artículos de BDD, nuestra intención es partir desde los requerimientos del cliente. Así, para este ejemplo, vamos a partir con la siguiente historia de usuario (característica del sistema):

Característica: Suma de dos números

Como matemático novato
Yo quiero obtener la suma de dos cifras
Para aprender a sumar

Para poder implementar esta sencilla característica de suma de dos cifras, nos reunimos el equipo y determinamos algunos escenarios con ejemplos concretos que podamos validar. A continuación los escenarios identificados:

Escenario: Sumar dos numeros positivos
  Dado que estoy en la aplicación
  Cuando ingreso los números 1 y 3
  Y solicito el resultado del cálculo
  Entonces el resultado debe ser 4

Escenario: Sumar dos numeros negativos
  Dado que estoy en la aplicación
  Cuando ingreso los números -1 y -3
  Y solicito el resultado del cálculo
  Entonces el resultado debe ser -4

Escenario: Sumar un numero positivo y uno negativo
  Dado que estoy en la aplicación
  Cuando ingreso los números -2 y 3
  Y solicito el resultado del cálculo
  Entonces el resultado debe ser 1

Como pueden ver, escribimos 3 simples escenarios con valores concretos que muestran como la funcionalidad de suma debe funcionar. Pudieramos escribir muchas combinaciones de valores, pero nuestra idea aqui es dar un ejemplo concreto, no todas las combinaciones posibles. Los escenarios son fácilmente legibles tanto por el gerente, el dueño del negocio, los desarrolladores, el equipo de pruebas, en fin, todos los interesados.

Partiendo de esta información, creamos un archivo de texto con el nombre de la característica y la extensión feature (Suma.feature) y pasamos la información a ese archivo. Luego, usando las herramientas para BDD, generamos los pasos automáticos que verifican que la aplicación cumple lo que se está solicitando. Finalmente desarrollamos la aplicación que hace pasar los pasos de verificación.

Implementación en Java

Implementación en PHP

Implementación en otros lenguajes

Si alguien se anima a realizar la implementación en otros lenguajes, con mucho gusto la publicaré junto con este artículo. Los principales lenguajes que yo manejo a nivel de trabajo son Java y PHP, y por eso sólo hice las implementaciones para estos dos lenguajes.

Tips y notas finales

Hasta el próximo artículo!

comments powered by Disqus