14

Ago

Publicado por: Marc Sances | BDD | DDD | software development | tdd

Descubriendo BDD: desarrollo guiado por el comportamiento

Una de las herramientas más prácticas que tiene el programador Agile es el Test Driven Development (TDD) que, a base de especificar casos de prueba muy concretos para la funcionalidad necesaria, permiten que el desarrollo se centre en superar esos casos de prueba.


También te podría interesar: Beneficios del desarrollo de software en TDD

 

TDD es muy útil para garantizar un código de calidad, pero siempre es posible dar un paso más allá, y por eso nació el BDD. El desarrollo guiado por el comportamiento (Behavior Driven Development) usa conceptos del DDD (Domain Driven Design) para mejorar el enfoque de TDD.

BDD es la respuesta que Dan North dio a las dificultades que presentaba TDD. Uno de los motivos de bloqueo que documenta en su artículo Introducing BDD era el hecho de llamar a las pruebas “test”. Esto lleva a la consideración errónea de que el mero hecho de realizar pruebas significa que la aplicación está bien hecha. North introdujo el concepto de “comportamiento” para reemplazar el de “test”, y el cambio le resolvió muchas de las dudas que surgían al aplicar TDD. Poco después, en 2003, lanzaría JBehave, el primer framework de BDD, basado en JUnit.


También te podría interesar: ¿Qué es DDD y qué aporta al desarrollo de software?

 

¿Cómo funciona BDD?

Las pruebas de BDD se escriben en un lenguaje casi natural, donde priman las palabras clave que definen el proceso que da valor al usuario. Una prueba de BDD tiene un aspecto similar al siguiente:

Scenario:  Añadir un producto a la cesta de compra
    Given Estoy viendo la página del artículo
    When  Pulso el botón “añadir a la cesta”
    Then  El contador de la cesta de compra incrementa
    And   El artículo aparece en la cesta de la compra

 

Las palabras clave en naranja son las que las herramientas de BDD como JBehave, Cucumber o behave interpretan. Los casos de prueba son escenarios (Scenario), que tienen un estado inicial (Given), una o más acciones propias de nuestra prueba (When) y unas consecuencias a probar (Then). Si hay más acciones de un tipo concreto, las conectaremos con un And.

Los escenarios se definen en archivos de texto plano (features), que son fácilmente legibles por todas las partes. La implementación concreta de los pasos que se definen en estos escenarios se hace en los archivos de pasos (steps), donde los programadores se encargan de programar las acciones que se quiere probar a realizar.

¿Por qué BDD?

BDD facilita al desarrollador determinar el alcance de sus pruebas, ya no se trata de probar métodos o clases, sino de garantizar que una funcionalidad se comporta como el usuario se espera.

Otra de las principales ventajas de BDD es el uso de lenguaje que todos los interesados pueden comprender con una formación mínima, sin tener conocimientos previos de programación. Gracias a esto, todas las partes que participan en el desarrollo de un producto pueden entender en qué se está trabajando y cuál es la funcionalidad involucrada. Cuando una prueba de BDD falla, todo el equipo es capaz de identificar el componente que está fallando y puede aportar ideas a la conversación, donde todos suman.

El BDD permite, además, diseñar las pruebas del producto entorno al dominio, y realizando pruebas que efectivamente aportan valor al usuario final. Las pruebas de BDD conocen de la aplicación lo mismo que el usuario, y por ello obligan a todos los equipos a trabajar por funcionalidades y comportamientos de la aplicación, sin forzar una organización concreta del código a nivel interno.

Por último, otra ventaja de BDD es que permite reutilizar gran parte del código de prueba, ya que los pasos comunes de las pruebas (iniciar sesión, hacer clic en un botón…) se pueden estandarizar y re-aprovechar varias veces.

En conclusión, BDD es una potente herramienta capaz de generar valor real para el usuario centrando las pruebas en el producto final como un todo y no en el código. Si decides dar el paso y probarlo, verás como BDD puede ser tu mejor aliado en el desarrollo de software.

Referencias

Dan North, “Introducing BDD”.  (consulta [07-08-18]).
Agile Alliance, “Behavior Driven Development (BDD)” . (consulta [07-08-18])

 

Barcelona
Passeig Gaiolà 13
+34 933 801 144
Lleida
Carrer Agustins 7
+34 973 988 222
Andorra
(Escaldes-Engordany)
Parc de la Mola 10, AD700
Bogota
Carrera 9A #99-07 Piso 9. Despacho 02
Torre la Equidad