Cuando entré en contacto por primera vez con BDD (Desarrollo impulsado por el comportamiento), pensé que estaba usando herramientas como Cucumber para escribir casos de uso de escenarios para lograr pruebas automatizadas. Ni siquiera podía notar la diferencia entre BDD. y ATDD (Pruebas de Aceptación) durante mucho tiempo. Entonces, ¿se utiliza realmente BDD para pruebas automatizadas? Este artículo compartirá con ustedes mi comprensión de BDD.
“La parte más difícil de desarrollar un sistema de software es explicar exactamente qué construir” (“La parte más difícil de construir un sistema de software es negarse a construir qué” – No Silver Bullet, Fred Brooks).
Escenario 1: El analista de negocios siente que los requisitos para su análisis han sido escritos claramente y ha habido suficiente comunicación con el personal técnico. Sin embargo, cuando completaron la revisión del escritorio de desarrollo, descubrieron que la funcionalidad desarrollada aún no cumplía con las expectativas.
Escenario 2: Cuando el equipo de desarrollo trabajó duro para desarrollar una función y se la mostró con confianza al gerente de producto/cliente, descubrieron que la función solicitada por el cliente no era así.
¿Te resultan familiares estas escenas? ¿Por qué sucede esto? El primer escenario es que existe una discrepancia entre el personal técnico y los analistas de requisitos dentro del equipo de desarrollo, lo que hace que todos comprendan los requisitos de manera diferente. El segundo escenario es que el equipo de desarrollo no comprende realmente los requisitos reales propuestos por el gerente de producto; /cliente, lo que resulta en que el desarrollo de los productos y las necesidades sean inconsistentes. De hecho, la verdadera razón de la inconsistencia entre los dos es que diferentes personajes tienen diferentes conocimientos de dominio y hablan diferentes idiomas. Si todos usan su propio idioma de dominio al comunicarse, inevitablemente habrá una brecha generacional en la comunicación, lo que provocará inconsistencias en la comprensión.
Los diferentes conocimientos de dominio y las barreras del idioma conducen a barreras de comunicación. ¿Cómo solucionar este problema objetivo? Para esto se creó BDD.
Dan North, partidario de BDD, enfatiza que BDD no se trata de pruebas. Se trata de escribir casos de uso y expectativas antes de que exista la aplicación, describiendo así el comportamiento de la aplicación y permitiendo que las personas del proyecto se comuniquen entre sí.
Es difícil dar una definición clara y comprensible de TDC, incluyendo las opiniones de los expertos. Aquí, intente resumir los siguientes puntos:
1. Céntrese en el dominio empresarial, no en la tecnología: BDD enfatiza el uso de DSL (lenguaje específico de dominio) para describir el comportamiento del usuario y definir los requisitos comerciales, en lugar de centrarse en el implementación técnica del sistema.
2. No es una herramienta, sino un método de colaboración: BDD requiere que todos los roles participen en la extracción y definición del comportamiento del sistema para lograr una comprensión consistente del valor comercial.
3. No es cuestión de probar: BDD tiene su origen en TDD y es diferente de TDD. La atención no se centra en las pruebas, pero puede guiar mejores pruebas automatizadas.
4. Enfoque ágil de pila completa: BDD insta a todos los roles del equipo a colaborar y comunicarse entre sí desde los requisitos hasta las pruebas finales y la verificación para ofrecer las funciones más valiosas.
El formato de descripción de un escenario de caso de uso determinado... cuando... entonces..." es familiar para todos, pero escribir un buen caso de uso en este formato es muy difícil, especialmente para principiantes Los siguientes puntos son para su referencia:
Según el proceso comercial, encuentre el flujo de datos correspondiente, corte verticalmente cada punto de parada de datos o punto de cambio de datos y extraiga un escenario de caso de uso. un ejemplo de una empresa real.
Ejemplo:
Un empleado crea un cuestionario en blanco en el sistema empresarial y lo envía al cliente. Vea el cuestionario y complételo. Después del envío, el empleado puede ver el informe del cuestionario completado en el sistema empresarial. El proceso empresarial y el flujo de datos se muestran en la siguiente figura.
El lenguaje de descripción del escenario debe ser comprensible para el dominio empresarial. no implica ningún detalle técnico relacionado con la implementación. El escenario descrito debe abstraerse de la capa empresarial y reflejar el valor empresarial real.
Para impulsar el desarrollo, los escenarios de casos de uso descritos deben ser fáciles de entender. Para que el personal técnico comprenda y oriente las pruebas automatizadas, también debe ser amigable con la implementación de la automatización.
Esto parece algo contradictorio con el primer punto, pero aún podemos hacerlo cumpliendo estrictamente con los requisitos de formato de BDD:
-La cláusula GIVEN describe las condiciones previas y las condiciones iniciales. estado de la escena, generalmente presente perfecto;
-la cláusula CUANDO es para realizar una acción o evento, debe ser un verbo, generalmente presente simple
-la cláusula ENTONCES usa "debería"; be..." Describe un resultado esperado en lugar de afirmarlo, lo cual está más estrechamente relacionado con las pruebas.
Los requisitos descritos en un lenguaje empresarial abstracto suelen ser demasiado abstractos y carecen de una gran cantidad de información clave, lo que lleva a una comprensión inconsistente de los requisitos por parte de diferentes personas. Si desea resumir e incluir información detallada, debe describirla utilizando instancias de requisitos. En pocas palabras, significa describir casos de uso de escenarios. Por ejemplo, necesita enumerar datos. Si agrega directamente instancias de datos a la descripción de los casos de uso del escenario, dichos casos de uso serán muy confusos y tendrán poca legibilidad y mantenibilidad. Si puede sustituir algunas variables en los casos de uso que describen el escenario, extraer los valores (datos) correspondientes a las variables y guardarlos como tablas o archivos independientes, los casos de uso serán más legibles y más fáciles de mantener y modificar más adelante. Este es un enfoque basado en datos para describir requisitos instanciados.
Aquí hay algunos ejemplos para que todos los experimenten:
Escenario 1: revise la bandeja de entrada, puede ver que el tercero es más claro, puede reflejar el valor comercial y es más en concordancia con lo anterior.
Escenario 2: Restringir que los usuarios ilegales vean cierto contenido restringido BDD debería enfatizar qué (qué) en lugar de cómo (cómo). El segundo está mejor escrito.
Escenario 3: Añade libros al carrito de compras y calcula el importe total.
Las herramientas BDD incluyen Cucumber, JBehave, Twist, concordancia, etc. Hay una gran cantidad de literatura disponible en línea como referencia, que no presentaré aquí.
La función de BDD es reunir a diferentes partes interesadas, equipos de ejecución y otras partes interesadas del proyecto para formar un entendimiento, valores y expectativas comunes. Nos ayuda a:
1. Centrarse en el comportamiento del usuario
2. Proporcionar las funciones más útiles
3. Mantener una terminología coherente en todo el equipo.
4. Explorar ejemplos de requisitos
5. Redactar y mantener requisitos
6. Crear documentos dinámicos
7. Barreras
-No es necesario usar BDD para proyectos simples de una sola vez, bajo costo de comunicación;
-Para proyectos comerciales livianos y de tecnología pesada, se puede usar BDD simple en la pizarra, no es necesario registrar documentos de casos de uso de requisitos en la herramienta BDD;
-Para proyectos con negocios complejos y muchos miembros del equipo, los costos de comunicación son altos y se requiere BDD.
1. BDD y TDD/ATDD
TDD es un desarrollo basado en pruebas y ATDD es un desarrollo basado en pruebas de aceptación. Se trata de pruebas y están estrechamente relacionados con el sistema que se está desarrollando. BDD, por otro lado, es diferente. Como se mencionó anteriormente, BDD no se trata de realizar pruebas, sino de centrarse en los requisitos y el valor comercial para el cliente. Los casos de uso de requisitos descritos pueden existir independientemente del sistema de software porque el negocio del cliente siempre existe y no depende de si existe un sistema de software que lo respalde.
2. BDD y SBE
SBE (Especificación por ejemplo) fue propuesto por Gojko después de BDD. También se trata de requisitos. Enfatiza principalmente la búsqueda de conceptos faltantes en los requisitos mediante una lista de ejemplos. . BDD también se centra en los requisitos y utiliza ejemplos para describir el comportamiento. No existe una diferencia esencial entre los dos, sólo una diferencia conceptual.