Articulo de referencia

Desarrollo impulsado por el comportamiento

El desarrollo dirigido por el comportamiento ( BDD ) es un método ágil de desarrollo de software centrado en la colaboración entre profesionales de negocios y de TI que tienen i...

El desarrollo dirigido por el comportamiento ( BDD ) es un método ágil de desarrollo de software centrado en la colaboración entre profesionales de negocios y de TI que tienen interés en encontrar una solución para un problema complejo. El objetivo principal es lograr una comprensión compartida del problema. [ 1 ]

BDD implica el uso de un lenguaje específico de dominio (DSL) que utiliza construcciones del lenguaje natural (por ejemplo, oraciones similares al inglés) que pueden expresar el comportamiento y los resultados esperados. [ 2 ]

BDD fomenta la colaboración entre desarrolladores, expertos en control de calidad y representantes de clientes en un proyecto de software. [ 3 ] [ 4 ] Anima a los equipos a utilizar la conversación y ejemplos concretos para formalizar una comprensión compartida de cómo debería comportarse la aplicación. [ 5 ] BDD se considera una práctica eficaz, especialmente cuando el espacio del problema es complejo. [ 6 ]

Una idea errónea común sobre BDD es que supuestamente es un refinamiento del desarrollo guiado por pruebas (TDD). Si bien se derivó originalmente de las prácticas de TDD, [ 7 ] el único propósito de BDD es obtener una comprensión compartida del espacio del problema y encontrar una manera de escribirlo en un lenguaje empresarial, utilizando datos reales, a la vez que sea revelador de intenciones, esencial y enfocado (BRIEF). [ 8 ] BDD combina las técnicas de TDD con ideas del diseño dirigido por dominio y el análisis y diseño orientado a objetos para proporcionar a los equipos de desarrollo y gestión de software herramientas compartidas y un proceso compartido para colaborar en el desarrollo de software. [ 3 ] [ 9 ]

En términos generales, BDD es una idea sobre cómo se debe gestionar el desarrollo de software considerando tanto los intereses comerciales como la perspectiva técnica. Su práctica implica el uso de herramientas especializadas. [ 10 ] Algunas herramientas específicas para BDD se pueden utilizar para TDD. Estas herramientas automatizan el lenguaje ubicuo .

Descripción general

BDD es un proceso mediante el cual las declaraciones en lenguaje natural estructuradas en DSL se convierten en pruebas ejecutables. El resultado es una especificación ejecutable que, con el tiempo, conforma la Documentación Viva: Requisitos que también son las primeras pruebas de aceptación que impulsan el desarrollo del software ( Desarrollo guiado por pruebas de aceptación ).

BDD se centra en:

  • Colaboración entre personas del ámbito empresarial y técnico.
  • Crear un entendimiento común del problema que hay que resolver y cómo resolverlo (sin incluir aún detalles sobre la implementación técnica elegida).
  • Escribir esto de forma inequívoca y precisa para que pueda convertirse en especificaciones ejecutables [ 11 ].

A partir de este punto, muchas personas desarrollaron marcos BDD durante varios años, finalmente enmarcándolo en términos de un marco de comunicación y colaboración para desarrolladores, control de calidad y participantes no técnicos o comerciales en un proyecto de software. [ 12 ]

Principios

BDD sugiere que las pruebas de software deben nombrarse en términos del comportamiento deseado . [ 10 ] [ 9 ] Tomando prestado del desarrollo ágil de software, el "comportamiento deseado" en este caso consiste en los requisitos establecidos por el negocio , es decir, el comportamiento deseado que tiene valor comercial para la entidad que encargó la unidad de software en construcción. [ 10 ] Dentro de la práctica de BDD, esto se conoce como BDD como una actividad "de afuera hacia adentro".

TDD no diferencia las pruebas en función de los requisitos de software de alto nivel, los detalles técnicos de bajo nivel ni nada intermedio. Por lo tanto, una forma de ver BDD es como una evolución de TDD que toma decisiones más específicas.

Especificaciones de comportamiento

Otra sugerencia de BDD se refiere a cómo especificar el comportamiento deseado. BDD propone utilizar un formato semiformal para la especificación del comportamiento, tomado de las especificaciones de historias de usuario del campo del análisis y diseño orientado a objetos . El aspecto de escenario de este formato puede considerarse una aplicación de la lógica de Hoare a la especificación del comportamiento del software mediante el lenguaje específico del dominio.

BDD sugiere que los analistas de negocio y los desarrolladores de software deben colaborar en esta área y especificar el comportamiento en términos de historias de usuario, cada una de las cuales se documenta explícitamente. Cada historia de usuario debe, en cierta medida, seguir la estructura: [ 10 ]

Título
Un título explícito.
Narrativo
Una breve sección introductoria con la siguiente estructura:
  • Como : la persona o rol que se beneficiará de la función;
  • Quiero : la función;
  • para que : el beneficio o valor de la característica.
Criterios de aceptación
Una descripción de cada escenario específico de la narración con la siguiente estructura:
  • Dado : el contexto inicial al comienzo del escenario, en una o más cláusulas;
  • Cuándo : el evento que desencadena el escenario;
  • Entonces : el resultado esperado, en una o más cláusulas.

BDD no exige un formato específico para esta información, pero sugiere que el equipo adopte un formato estandarizado relativamente simple con los elementos mencionados. [ 10 ] También sugiere que los escenarios se formulen de manera declarativa en lugar de imperativa, en el lenguaje empresarial, sin referencia a elementos de la interfaz de usuario a través de los cuales se producen las interacciones. [ 13 ] Este formato se conoce en Cucumber como el lenguaje Gherkin .

La especificación como lenguaje ubicuo

BDD toma prestado el concepto de lenguaje ubicuo del diseño dirigido por dominio . [ 10 ] [ 9 ] Un lenguaje ubicuo es un lenguaje (semi)formal que comparten todos los miembros de un equipo de desarrollo de software , tanto desarrolladores como personal no técnico. [ 14 ] El lenguaje en cuestión es utilizado y desarrollado por todos los miembros del equipo como un medio común para discutir el dominio del software en cuestión. [ 14 ] De esta manera, BDD se convierte en un vehículo de comunicación entre todos los diferentes roles en un proyecto de software. [ 10 ]

Un riesgo común en el desarrollo de software son las fallas de comunicación entre desarrolladores y partes interesadas del negocio. [ 15 ] BDD utiliza la especificación del comportamiento deseado como un lenguaje común para los miembros del equipo del proyecto. Por esta razón, BDD insiste en un lenguaje semiformal para la especificación del comportamiento: cierta formalidad es un requisito para ser un lenguaje común. [ 10 ] Además, tener un lenguaje común crea un modelo de dominio de especificaciones, de modo que las especificaciones puedan razonarse formalmente. [ 16 ] Este modelo también es la base de las diferentes herramientas de software que soportan BDD que están disponibles.

El ejemplo anterior describe una historia de usuario para un sistema de software en desarrollo. Esta historia identifica a un interesado, un efecto en el negocio y un valor para el negocio. También describe varios escenarios, cada uno con una condición previa, un desencadenante y un resultado esperado. Cada una de estas partes se identifica con precisión mediante la parte más formal del lenguaje (el término «Dado» podría considerarse una palabra clave , por ejemplo) y, por lo tanto, puede ser procesada de alguna manera por una herramienta que comprenda las partes formales del lenguaje común.

La mayoría de las aplicaciones BDD utilizan DSL y enfoques de especificación basados ​​en texto. Sin embargo, el modelado gráfico de escenarios de integración también se ha aplicado con éxito en la práctica, por ejemplo, para fines de prueba. [ 17 ]

Herramientas especializadas

Al igual que TDD, BDD puede implicar el uso de herramientas especializadas.

BDD requiere no solo código de prueba, como TDD, sino también un documento que describa el comportamiento en un lenguaje más comprensible para los humanos. Esto implica un proceso de dos pasos: ejecutar las pruebas, leer e interpretar las descripciones, y leer el código de prueba y encontrar la implementación correspondiente para ejecutar. Este proceso hace que BDD sea más laborioso para los desarrolladores. Sus defensores sugieren que, debido a su naturaleza comprensible para los humanos, el valor de estos documentos se extiende a un público relativamente no técnico y, por lo tanto, pueden servir como medio de comunicación para describir los requisitos ("características").

Principios de utillaje

En principio, una herramienta de soporte para BDD es un marco de pruebas para software, muy similar a las herramientas que soportan TDD. Sin embargo, mientras que las herramientas TDD suelen ser bastante flexibles en cuanto a la especificación de pruebas, las herramientas BDD están vinculadas a la definición del lenguaje común.

El lenguaje omnipresente permite a los analistas de negocio documentar los requisitos de comportamiento de una manera que también sea comprensible para los desarrolladores. El principio de las herramientas de soporte de BDD es hacer que estos mismos documentos de requisitos sean directamente ejecutables como una colección de pruebas. Si esto no se puede lograr debido a razones relacionadas con la herramienta técnica que permite la ejecución de las especificaciones, entonces se debe modificar el estilo de redacción de los requisitos de comportamiento o cambiar la herramienta. [ 18 ] La implementación exacta de los requisitos de comportamiento varía según la herramienta, pero la práctica ágil ha dado como resultado el siguiente proceso general:

  • La herramienta lee un documento de especificaciones.
  • La herramienta comprende directamente las partes completamente formales del lenguaje común (como la palabra clave Given en el ejemplo anterior). A partir de esto, la herramienta divide cada escenario en cláusulas significativas.
  • Cada cláusula individual de un escenario se transforma en algún tipo de parámetro para una prueba de la historia de usuario. Esta parte requiere trabajo específico del proyecto por parte de los desarrolladores de software.
  • A continuación, el sistema ejecuta la prueba para cada escenario, utilizando los parámetros de dicho escenario.

Historia versus especificación

Una subcategoría aparte del desarrollo dirigido por el comportamiento la constituyen las herramientas que utilizan especificaciones como lenguaje de entrada en lugar de historias de usuario. Las herramientas de especificación no utilizan historias de usuario como formato de entrada para los escenarios de prueba , sino que emplean especificaciones funcionales para las unidades que se están probando. Estas especificaciones suelen tener un carácter más técnico que las historias de usuario y, por lo general, resultan menos convenientes para la comunicación con el personal de negocio. [ 10 ] [ 19 ] Un ejemplo de especificación para una pila podría ser el siguiente:

Especificación: Pila Cuando se crea una nueva pila, entonces está vacía. Cuando se agrega un elemento a la pila , ese elemento se coloca en la parte superior de la pila. Cuando una pila tiene N elementos y el elemento E está en la parte superior de la pila, entonces una operación pop devuelve E y el nuevo tamaño de la pila es N-1.

Dicha especificación puede describir con exactitud el comportamiento del componente que se está probando, pero resulta menos significativa para un usuario de negocio. Por consiguiente, en la práctica de BDD, las pruebas basadas en especificaciones se consideran un complemento de las pruebas basadas en historias y operan a un nivel inferior. A menudo, las pruebas de especificación se ven como un sustituto de las pruebas unitarias de formato libre. [ 19 ]

Los tres amigos

La reunión de los "tres amigos", también conocida como "Taller de Especificación", es una reunión donde el propietario del producto discute los requisitos en forma de especificación mediante ejemplos con diferentes partes interesadas, como el equipo de control de calidad y el equipo de desarrollo. El objetivo principal de esta discusión es iniciar el diálogo e identificar cualquier especificación faltante. La discusión también proporciona una plataforma para que el equipo de control de calidad, el equipo de desarrollo y el propietario del producto converjan y escuchen las perspectivas de cada uno para enriquecer los requisitos y asegurarse de que están construyendo el producto correcto. [ 20 ]

Los tres amigos son:

  • Negocio - El rol del usuario de negocio es definir el problema únicamente y no aventurarse a sugerir una solución.
  • Desarrollo - El rol de los desarrolladores implica sugerir formas de solucionar el problema.
  • Pruebas: La función de los evaluadores es cuestionar la solución, plantear tantas posibilidades diferentes como sea posible para generar ideas a través de escenarios hipotéticos y ayudar a que la solución sea más precisa para solucionar el problema.

Véase también

Referencias

  1. "Estudio de caso Desarrollo impulsado por el comportamiento Parte 1" . Consultado el 7 de mayo de 2026 .
  2. Silva, Thiago Rocha (2023). "Hacia un lenguaje específico de dominio para el desarrollo basado en el comportamiento". Simposio IEEE 2023 sobre lenguajes visuales y computación centrada en el ser humano (VL/HCC) . IEEE. doi : 10.1109/VL-HCC57772.2023.00054 .
  3. 1 2 "Desarrollo impulsado por el comportamiento" . Archivado del original el 1 de septiembre de 2015. Recuperado el 12 de agosto de 2012 .
  4. Keogh, Liz (2009-09-07). "Introducción al desarrollo basado en el comportamiento" . SkillsMatterr . Archivado del original el 25 de febrero de 2021. Recuperado el 1 de mayo de 2019 .
  5. John Ferguson Smart (2014). BDD en acción: Desarrollo guiado por el comportamiento para todo el ciclo de vida del software . Manning Publications. ISBN 9781617291654.
  6. Tharayil, Ranjith (15 de febrero de 2016). "Desarrollo impulsado por el comportamiento: simplificando el espacio de problemas complejos" . SolutionsIQ . Recuperado el 15 de febrero de 2018 .
  7. "Introducción a BDD" . Consultado el 7 de mayo de 2026 .
  8. Nagy, Gáspár; Rosa, Seb (31 de marzo de 2026). Desarrollo eficaz impulsado por el comportamiento . Nueva York, Estados Unidos: Manning. pag. 83.ISBN  9781633435254.
  9. 1 2 3 Bellware, Scott (junio de 2008). "Desarrollo impulsado por el comportamiento" . Code Magazine . Archivado del original el 12 de julio de 2012. Recuperado el 1 de mayo de 2019 .
  10. 1 2 3 4 5 6 7 8 9 Haring, Ronald (febrero de 2011). de Ruiter, Robert (ed.). "Desarrollo impulsado por el comportamiento: mejor que el desarrollo impulsado por pruebas". Java Magazine (en neerlandés) (1). Veen Magazines: 14–17 . ISSN 1571-6236 . 
  11. Captura de requisitos ágiles mediante ejemplos (CARE) (PDF) . 1 de agosto de 2022. págs. 11-12 . Consultado el 7 de mayo de 2026 . 
  12. "El libro de RSpec: Pregunta sobre el capítulo 11: Escribir software que importe" . Archivado del original el 7 de noviembre de 2009. Consultado el 9 de agosto de 2009 .
  13. Mabey, Ben. "Escenarios imperativos frente a declarativos en historias de usuario" . Archivado del original el 3 de junio de 2010. Recuperado el 19 de mayo de 2008 .
  14. 1 2 Evans, Eric (2003). Diseño orientado al dominio: Abordando la complejidad en el corazón del software . Addison-Wesley. ISBN 978-0-321-12521-7. Consultado el 12 de agosto de 2012 .
  15. Geneca (16 de marzo de 2011). "Por qué fracasan los proyectos de software" . Consultado el 16 de marzo de 2011 .
  16. Mahmudul Haque Azad (6 de febrero de 2011). "Dale la bienvenida al desarrollo impulsado por el comportamiento" . Recuperado el 12 de agosto de 2012 .
  17. Lübke, Daniel; van Lessen, Tammo (2016). "Modelado de casos de prueba en BPMN para el desarrollo basado en el comportamiento". IEEE Software . 33 (5): 15– 21. doi : 10.1109/MS.2016.117 . S2CID 14539297 . 
  18. Adam Craven (21 de septiembre de 2015). "Fundamentos del desarrollo impulsado por el comportamiento (BDD) a escala empresarial" . Consultado el 14 de enero de 2016 .
  19. 1 2 Roy Osherove (4 de octubre de 2008). "BDD: Comportamiento vs. Marcos de especificación" . Recuperado el 12 de agosto de 2012 .
  20. "¿Cuáles son los tres amigos en Agile?" . Agile Alliance . 16 de junio de 2016 . Consultado el 10 de junio de 2019 .
  21. Ketil Jensen (13 de diciembre de 2009). "BDD con tablas de escenarios en Fitnesse Slim" . Walk the walk . Wordpress . Consultado el 12 de agosto de 2012 .