Atrás

BDD- Behavior Driven Development

Más conocido por sus siglas BDD, es un proceso de desarrollo de software creado por Dan North en el año 2000, tomando como base TDD, creado por Kent Beck, orientando el origen de la prueba a una especificación o requisito.

Básicamente busca que, dada la descripción del comportamiento de un sistema -especificación, se pueda verificar que está desarrollado para comportarse como debería. Por tanto, BDD ofrece una forma de comprender qué crear, así como un marco para verificar el resultado.

 

El proceso BDD

Incluye los siguientes hitos:

  1. El Cliente y el Analista de Negocio se reúnen para conocer las necesidades del negocio. Features para reducir el riesgo en la comprensión hablan de Ejemplos concretos.
  2. El Analista de Negocio, los Desarrolladores y el Equipo de Pruebas elaboran los requisitos conjuntamente plasmándolos en Escenarios, los cuales estarán escritos en un lenguaje cercano al negocio, formateado con el patrón Given-When-Then (Dado-Cuando-Entonces).
  3. Los Desarrolladores se guiarán por los Escenarios para, aplicando TDD, generar las Pruebas Unitarias que en BDD reciben el nombre de Especificaciones y, a partir de ahí, el código que cumpla estas Especificaciones.
  4. El Equipo de Pruebas, al igual que los Desarrolladores; se guiarán por los Escenarios para generar las Pruebas Funcionales y las complementan con pruebas manuales y exploratorias.

Siguiendo este proceso, se obtiene como ventaja que los Escenarios actuarán como Documentación de negocio y las Especificaciones como Documentación técnica.

 

Pros y contras de BDD

Algunas de las ventajas de emplear BDD son:

  • Reducción de Residuos.
  • Reducción de Costes.
  • Cambios más fáciles y seguros.
  • Entregas más rápidas.

Aunque, por supuesto, también presenta desventajas:

  • Alto compromiso y colaboración con el negocio.
  • Trabaja mejor en entornos Ágiles.
  • No funciona bien en equipos distribuidos.
  • Las pruebas mal escritas pueden incurrir costes de mantenimiento extra.

 

¿Y qué herramientas se recomiendan?

Existen en el mercado diversas herramientas para realizar BDD. Algunas de ellas:

  • Cucumber. Herramienta escrita en Ruby, con compatibilidad para Java, Javascript y Kotlin, que define los escenarios empleando Gherkin.
  • Fitnesse. Herramienta que genera una wiki para definir las pruebas y poder ejecutarlas, por lo que proporciona un entorno online de ejecución y la posibilidad de enriquecer las pruebas con documentación. Es compatible con varios lenguajes como Java, .NET, Python, PHP y otros. Esta más orientada a ATDD.
  • Jbehave. En este caso es una herramienta pura Java, similar a Cucumber, ya que también emplea Gherkin para la definición.

BDD es muy interesante, dado que nos ofrece un punto de vista lógico a la hora de desarrollar, compartiendo una única fuente para los requisitos a implementar y probar, que además esta conforme a las necesidades del cliente. Os invitamos a ponerla en práctica en vuestros desarrollos. ¿Necesitas ayuda?