BDD: el enfoque estratégico indispensable para desarrolladores de software
El BDD es uno de los mejores y más versátiles enfoques estratégicos para el desarrollo de software. ¡Acompáñanos a descubrirlo!
Programación
Imaginemos una estrategia de desarrollo enfocada al 300% en el usuario. Y además, una estrategia comprensible y fácil de entender para absolutamente todos los implicados en el desarrollo de software: clientes, asociados, colaboradores externos. Estamos hablando del BDD.
El BDD (Behavior-Driven Development - Desarrollo Guiado por Comportamiento) es uno de los mejores y más versátiles enfoques estratégicos para el desarrollo de software.
Y una de las prácticas preferidas por las empresas, equipos de desarrollo y control de calidad.
El BDD es un arma letal para el desarrollo de metodologías ágiles. Y si buscas especializarte en el desarrollo de software o ampliar tus conocimientos en metodologías ágiles aquí te contaremos todo lo que tienes que saber sobre el Behavior-Driven Development, en qué se basa y qué beneficios te puede ofrecer.
¿Cómo funciona el BDD?
El BDD está basado en los posibles comportamientos del usuario dentro del software, por lo que este enfoque se basa en pruebas del posible comportamiento del usuario, sus interacciones y las funciones que este va a necesitar.
A menudo, este enfoque comienza con la comunicación entre los desarrolladores, managers de proyecto, clientes y la información recopilada sobre el usuario final.
Aquí es donde se empieza a trazar el mapa inicial de lo que se convertirá en la estrategia de desarrollo. Y en la práctica, suele desarrollarse de la siguiente forma:
Plantear las situaciones y posibles situaciones entre el usuario, el software o producto y sus características según las metas empresariales.
Definir los posibles resultados para cada escenario.
Traducir cada escenario al lenguaje específico de dominio (DSL por sus siglas en inglés) e implementarlo.
Recolectar todos los comportamientos e interacciones y documentarlos, de manera que tanto desarrolladores y testers como los otros miembros del equipo y las partes implicadas puedan acceder.
Implementar los comportamientos registrados en el software, empezando pruebas automatizadas para el desarrollo del software.
Esta metodología es bastante versátil y puede aplicarse en todas las facetas del desarrollo de software.
Puedes implementarlo al inicio de un proyecto, mientras se desarrolla el software, para probar nuevas funciones y detectar errores e implementar optimizaciones.
O bien, una vez el producto esté terminado, para reinventar el producto según el comportamiento de los usuarios.
Para ilustrar cada paso del proceso, el método BDD utiliza el lenguaje Gherkin, un lenguaje específico de dominio natural y fácil de entender para todos los miembros de la empresa y sus asociados.
Gherkin: lenguaje programático para BDD
Gherkin es la clave de BDD. Pero para entender qué es Gherkin, tenemos que entender qué es un DSL o Lenguaje Específico de Dominio.
Estos lenguajes están diseñados para resolver problemas muy específicos dentro de un proceso o flujo de trabajo. Por ejemplo:
Problemas de comunicación entre departamentos.
Problemas de comunicación entre equipos de desarrollo y stakeholders.
Problemas de sincronización entre perfiles específicos.
Para que este tipo de lenguajes funcionen, tienen que ser comprensibles tanto para perfiles técnicos, como desarrolladores, como perfiles no técnicos, editores, marketeros y especialistas en atención al cliente.
Y Gherkin es uno de los más potentes.
Gherkin es un lenguaje común de negocio, o sea, un lenguaje universal para los equipos empresariales y los stakeholders.
Ahora bien, veamos en qué consiste este lenguaje:
Feature: la función o funcionalidad a desarrollar.
Scenario: básicamente agrupa todas las características de cada feature.
Given: precondiciones para que se puedan ejecutar el escenario.
When: las acciones que el usuario hará dentro del sistema.
Then: todas las respuestas del sistema a las interacciones del usuario.
Nota: el comando And se usa para ampliar las funciones anteriores y es aplicable en todos los casos.
Simple, ¿verdad? Pero es extremadamente efectivo.
Para verlo puesto en práctica, supongamos que has desarrollado una función para que el usuario pueda retirar dinero de una billetera digital. ¿Cómo lo harías?
Pues justo así:
Feature: función para retirar dinero de tu cuenta.
Scenario: la cuenta tiene suficientes fondos.
And: la tarjeta del usuario está afiliada a la cuenta.
Given: el balance de la cuenta es 50 euros.
When: el usuario solicita retirar 30 euros.
Then: la cuenta transferirá 30 euros a la tarjeta del usuario.
And: el balance de la cuenta tendría que ser de 20 euros.
And: una notificación tendría que aparecer para confirmar la transacción.
Bastante simple, ¿no? Y es esta simpleza la que convierte al lenguaje Gherkin y al BDD en herramientas súper potentes.
Herramientas para que todos, técnicos y no técnicos, puedan seguir el proceso de desarrollo de principio a fin.
Puedes aplicar este formato a un sinnúmero de escenarios. Así, en el momento de desarrollar, puedes plantear todos los escenarios del usuario al interactuar con la interfaz y desarrollar y mejorar el software con esa base.
Las 3 mejores herramientas para el BDD
Ahora bien, si buscas adoptar e implementar esta poderosa metodología, tienes que conocer las herramientas más eficaces para añadirlas a tu repertorio.
Y para facilitarte las cosas, te recomendaremos algunas de las herramientas que tanto los testers como los desarrolladores tienen que manejar:
1. Cucumber
Para muchos este es el software BDD supremo. Esta herramienta simplifica y facilita todo el proceso de desarrollo y testeo.
Además, tiene una buena gama de funciones, muchas de ellas compatibles con diversos formatos, tales como JavaScript, .NET, Java y Ruby…
2. SpecFlow
Specflow también es llamada como Cucumber para .NET, y está completamente enfocada en este método y su aplicación para desarrollo y testeo de software.
Como resultado, cuenta con una verdadera multitud de herramientas para desarrollar, documentar, testear y automatizar a partir de la metodología BDD.
Para empezar, SpecFlow integra Visual Studio y ya está basado en el lenguaje Gherkin, sin mencionar una función de Auto-deployment, entre otras funcionalidades.
3. JBehave
JBehave es un framework BDD de código abierto totalmente focalizado en Java. También, tiene una función para reportar en formato XML, HTML y para simplificar: Text.
Por otra parte, puede integrarse con herramientas como Selenium para ejecutar scripts de testeo en aplicaciones web.
Y como está basado en Java, puede integrarse bien con una amplia gama de herramientas basadas en este lenguaje.
También te recomendamos las siguientes herramientas:
Jasmine.
Gauge.
Concordion.
Tricentis Tosca.
testRigor.
JDave.
Nota: no es necesario manejarlas todas. Pero sí es conveniente manejar más de una herramienta según sus lenguajes y funciones.
Y si quieres sacarle todo el jugo a estas y a otras herramientas, sin importar el tipo de software con el que vayas a trabajar, te recomendamos aprender –o perfeccionar tus conocimientos en:
Python.
Java.
JavaScript.
C.
C++.
Mientras más lenguajes de programación manejes, mejor será tu desempeño a la hora de trabajar. Y desde luego, también te sugerimos profundizar tus conocimientos en metodologías ágiles y su implementación.
¿Cuándo usar el BDD?
1. Metodologías ágiles
El Behavior-Based Development es para muchos una metodología ágil por sí mismo. Es perfecto para optimizar flujos de trabajo y mejorar las comunicaciones entre los equipos.
Además, es la herramienta ideal para sumar departamentos empresariales, asociados y stakeholders al proceso de desarrollo. E incluso para realizar presentaciones de conceptos técnicos.
Desde luego, este proceso puede sumarse a otras metodologías ágiles, tales como el TDD, para maximizar el éxito de los flujos de trabajo.
2. Testeo
Y por supuesto, este método está pensado para probar software de principio a fin, manteniendo al usuario como eje central en cada paso del proceso de desarrollo.
Como consecuencia, este es un enfoque más que imprescindible tanto para desarrolladores como para testers a nivel global.
De hecho, es de los primeros que todos especialistas en control de calidad tienen que añadir a su portafolio.
3. Automatización
Desde luego, este método es fenomenal para automatizar pruebas de software, reducir los tiempos de prueba, optimizar flujos de trabajo, ahorrar recursos y mejorar la productividad.
En este caso, las especificaciones automatizadas son documentadas tanto por los usuarios –a través de sus interacciones– como por los testers.
¿Cuál es la diferencia entre BDD y TDD?
TDD (Test-Driven Development) es una práctica de desarrollo totalmente enfocada en las pruebas de software y en el control de calidad.
BDD es un enfoque de desarrollo, basado en pruebas orientadas hacia el usuario y, por tanto, a la interfaz de usuario y su facilidad de uso. A su vez, a brindarle al usuario las funciones que necesite.
Ambos pueden complementarse a la perfección, por lo que muchos desarrolladores y testers los utilizan simultáneamente.
Ahora bien, el TDD tiene un enfoque mucho más técnico y está pensado únicamente para equipos de desarrollo. El BDD es una metodología magnífica para la integración de equipos, técnicos y no técnicos.
Ventajas del BDD
Vamos a resumirte los beneficios del Behavior-Driven Development para desarrolladores, testers y equipos empresariales:
Colaboración imparable: esta metodología es de las mejores para facilitar y promover la colaboración y la comunicación entre equipos. Y un método infalible para asegurarte de que todos los miembros de la estrategia estén en la misma página.
Priorización absoluta: con esta metodología, tanto desarrolladores como testers pueden permanecer al tanto de las necesidades de la empresa. Y además, basar sus estrategias en función de estas necesidades.
Pruebas muchísimo más eficientes: porque con una metodología funcional bien definida e implementada, puedes duplicar, triplicar y hasta multiplicar la eficiencia de las pruebas funcionales.
Reducción de costes y riesgos: las probabilidades de invertir tiempo y dinero en características o funciones no necesarias para el usuario, así como código excesivo, serán nulas.
Mejor usabilidad para el usuario final: todas las buenas prácticas del BDD se traducen en un software más eficiente y confiable. Pero sobre todo, en un software bien adaptado a las necesidades del usuario, más dinámico y funcional.
Desventajas del Behavior-Driven Development que no todos te contarán
BDD es, sin lugar a dudas, uno de los enfoques más potentes para los desarrolladores y para las estrategias de negocio. Sin embargo, tiene ciertas desventajas a considerar si deseas ponerlo en práctica.
Algunas de estas son:
Tiempo: la implementación requiere de tiempo, mucho tiempo, tanto para redactar los escenarios como para capacitar a los miembros del equipo.
Costes de inversión: una vez implementada, esta metodología puede ahorrar bastante tiempo y dinero, pero también requiere de una inversión inicial considerable.
Limitaciones: el BDD es un enfoque, y como tal, no puede abarcar todas las aristas del proceso de desarrollo. Y es por ello que te recomendamos complementarlo con otras metodologías ágiles como el TDD.
Antes de implementar el BDD…
Ahora bien, si quieres sacarle provecho al BDD, te recomendamos:
Establecer los objetivos estratégicos: porque todo parte de la estrategia inicial, y todos los involucrados tienen que conocer los objetivos de la estrategia de negocio para ponerla en práctica.
Definir los canales de comunicación: porque esta es una estrategia basada en la comunicación. Y porque nada más problemático en un equipo o en un proyecto que la falta de comunicación y la inefectividad de esta.
Escoger las herramientas: todos los involucrados en la estrategia tienen que conocer tanto el enfoque BDD como las herramientas escogidas. Por tanto, no solo es importante definir las herramientas, sino también asegurarse de que todos las conozcan y puedan manejarlas.
Una vez hayas definido estos puntos, puedes seguir perfeccionando el flujo de trabajo. Para ello, te sugerimos:
Automatizar: crear las pruebas automatizadas puede tomar tiempo, pero estas aumentarán la velocidad, eficiencia y productividad de tu equipo.
Documentar: la documentación efectiva ya es parte de esta metodología. Pero, si quieres mejorar los procesos automatizados y la eficiencia del software de cara al usuario, es primordial crear una base de datos a la que todos los involucrados puedan acceder.
Siguiendo estos consejos, podrás implementar una metodología de Behavior-Driven Development sólida e indetenible.
Una estrategia que SÍ se traducirá en resultados para tu equipo.
Bien implementada, el BDD puede marcar la gran diferencia en las estrategias empresariales. Y es por ello que es una de las metodologías ágiles preferidas entre los desarrolladores y testeadores.
Ahora es tu turno. Cuéntanos en los comentarios qué te ha parecido este enfoque estratégico y cómo te gustaría ponerlo en práctica.