Foto de Icons8 Team en Unsplash |
Ya sabemos que el así llamado Desarrollo Conducido por
Comportamiento (BDD por las siglas en inglés de Behavior-driven development)
es un proceso de desarrollo de software que se enfoca en el comportamiento de
una aplicación. BDD acentúa la comunicación y la colaboración entre los
desarrolladores, y aquí estoy usando “desarrolladores” en el sentido amplio de
Scrum, es decir, las personas que elaboran software, sean especialistas en
áreas como desarrollo o aseguramiento de la calidad, o en el sentido preferido
de los practicantes ágiles, personal más especialista-generalista o simplemente
más multifuncionales. Pero BDD no solo resalta la comunicación entre ellos,
sino también entre estos desarrolladores y las personas no técnicas dentro y
fuera de los equipos, como un Product Owner, usuarios o interesados.
En general, BDD implica la creación de casos de prueba
que describen el comportamiento del sistema desde la perspectiva del usuario
final. Estos casos de prueba, llamados "características" (“features”),
se escriben en una sintaxis de lenguaje natural llamada "Gherkin",
lo que posibilita que todos los miembros del equipo puedan leer y, mejor aún,
entender las funciones de la aplicación, independientemente de su experiencia
técnica.
Por ejemplo, si el sistema que se está desarrollando es
un sitio web o una aplicación para un servicio de emisión o transmisión en
directo por suscripción que les permita a usuarios ver series y películas en un
dispositivo con conexión a internet, puedo tener la posibilidad de adicionar
películas a una lista de películas favoritas:
Característica:
Lista de Favoritas
Como
usuario, Quiero agregar películas a mi lista de favoritas y conservarlas
allí para poder verlas posteriormente
Luego, puedo agregar uno o más bloques de
"escenario" que describen comportamientos o acciones específicas que
el sistema debería poder realizar.
Escenario:
Agregar película a la lista de favoritas
Dado que
estoy en la página principal
Cuando
busque por “películas de Ciencia Ficción”
Y haga clic en el botón
“Adicionar a la lista” del primer resultado
Entonces la
película debe ser adicionada a mi lista de favoritas
Y se repite la adición de escenarios para cada
comportamiento que se quiera probar de la aplicación. Como siempre, es
importante tener en cuenta que el comportamiento y sus escenarios solo deben se
definen desde la perspectiva del usuario final. No debe contener detalles de
implementación ni jerga técnica.
Ejemplos de
historias de usuario tipo Gherkin
Y es aquí donde entran las historias de usuario. Podemos
usar este “lenguaje natural” tipo “Gherkin” para representarlas. Sigamos
con el ejemplo de la aplicación de transmisión que llamaremos RedTV.
Dado: un usuario tiene
una cuenta con la plataforma RedTV
Cuando: el
usuario intenta iniciar sesión
Entonces: El
usuario se autentica y puede acceder al servicio de streaming
Dado: un usuario está
buscando una película o una serie
Cuando: el
usuario ingresa el título que quiere
Entonces: al
usuario se le presentan las opciones de transmisión disponibles
Dado: un usuario está
transmitiendo contenido
Cuando: el
usuario detiene la transmisión
Entonces: el
contenido se detiene y se puede reanudar más tarde
A estas historias de usuario podemos agregar algunos
criterios de aceptación:
1. El
usuario puede iniciar y cerrar sesión en la plataforma de transmisión con las
credenciales de su cuenta.
2. El
usuario puede buscar cualquier título, ya sea una película o serie, y ver las
opciones de transmisión disponibles.
3. El
usuario puede poner en pausa el contenido de transmisión y reanudarlo más
tarde.
4. El
contenido no debe interrumpirse ni detenerse mientras el usuario está
transmitiendo.
5. La
calidad de la transmisión debe ser constante durante toda la duración de la
transmisión.
6. La
plataforma de transmisión debe ser accesible tanto en dispositivos móviles como
en computadoras de escritorio.
Advertencia: no todos estos criterios son para todas las
historias de usuario anteriormente descritas. Dejo al lector para que use su
habilidad de discernir sobre cuáles criterios serían de qué historias.
Ahora sí, veamos algunos ejemplos de historias de usuario
con sus respectivos criterios de aceptación:
Dado: un usuario está
navegando por el servicio de transmisión
Cuando: al
usuario se le presentan recomendaciones basadas en su historial de
visualización
Entonces: El
usuario recibe recomendaciones de contenido personalizadas.
Criterios de aceptación:
1. El
usuario debe recibir recomendaciones personalizadas basadas en su historial de
visualización y preferencias.
2. El
algoritmo de recomendación de contenidos debe ser eficaz y preciso.
3. El
usuario debe poder filtrar las recomendaciones por género, clasificación por
edad y otros parámetros.
4. El
usuario debe recibir las recomendaciones más actualizadas.
Dado: un usuario está
navegando por el servicio de transmisión
Cuando: el usuario intenta ver una película o
un programa de televisión
Entonces: al usuario se le presentan todas
las opciones de transmisión disponibles
Criterios de aceptación:
1. Al
usuario se le deben presentar todas las opciones de transmisión disponibles
para una película o programa de televisión.
2. Las
opciones de transmisión deben incluir opciones premium y opciones gratuitas.
3. El
usuario debe poder filtrar las opciones de transmisión por precio, calidad y
otros parámetros.
4. El
usuario debe tener la información más actualizada sobre las opciones de
transmisión.
Dado: un usuario está
transmitiendo contenido
Cuando: el
usuario intenta cambiar la calidad de la transmisión
Entonces: Al
usuario se le presenta una gama de opciones de calidad.
Criterios de aceptación:
1. Al
usuario se le debe presentar una variedad de opciones de calidad para elegir.
2. La
calidad de transmisión no debe degradarse al cambiar la configuración de
calidad.
3. El
usuario debe poder cambiar entre configuraciones de calidad con una
interrupción mínima.
4. La
configuración de calidad debe ser uniforme en todos los dispositivos.
Dado: un usuario está
navegando por el servicio de transmisión
Cuando: el
usuario intenta comprar una película o una serie
Entonces: Al
usuario se le presentan opciones de pago
Criterios de aceptación:
1. Al
usuario se le debe presentar una variedad de opciones de pago.
2. El
proceso de pago debe ser seguro y fácil de usar.
3. El
usuario debe tener la opción de comprar contenido por tiempo limitado o de
forma permanente.
4. El
proceso de pago debe explicarse claramente al usuario.
Ahora sí, una
brevísima explicación de esta forma BDD "dado-cuando-entonces" de
historias de usuario
El formato Gherkin-BDD "dado-cuándo-entonces"
es una forma de representar historias de usuario que se centra en el punto de
vista del usuario. La forma se divide en tres partes: Dado, Cuándo y Entonces.
La parte "Dado" de la historia de usuario establece el
contexto y describe la situación actual. La parte "Cuando"
describe la acción que está realizando el usuario. La parte "Entonces"
describe el resultado esperado de la acción. Esta forma permite que las
historias de usuario se expresen desde la perspectiva del usuario, asegurando
que se consideren las necesidades y expectativas del usuario.
Podemos usar diferentes estilos para relatar o
representar historias de usuario. Veamos un ejemplo de una historia de usuario
primero en el estilo clásico "Como - Quiero - Para " y luego, la
misma historia en la forma “Dado - Cuando - Entonces”.
Como usuario,
Quiero modificar
la información de mi perfil
Para poder mantenerla
actualizada.
Ahora en “Gherkin”:
Dado: Un usuario tiene
una cuenta
Cuando: el
usuario intenta modificar la información de su perfil
Entonces: el
usuario puede actualizar correctamente la información de su perfil
Y algunos criterios de aceptación:
1. El
usuario puede ver la información de su perfil.
2. El
usuario puede modificar la información de su perfil.
3. El
usuario puede guardar los cambios que realiza en la información de su perfil.
4. El
usuario puede eliminar la información de su perfil si así lo decide.
5. Las modificaciones
a la información del perfil deben ser seguras y privadas.
Algunas recomendaciones
para narrar mejores historias de usuario con la forma BDD
Usa mi modelo de las 5 C:
1. Céntrate
en la perspectiva del usuario: representar historias de usuario desde el punto
de vista del usuario es clave para asegurarse de que se cumplan sus necesidades
y expectativas. Esto no es exclusivo para esta forma de representación, pero
siempre es bueno recordarlo, las historias son “de usuario”, no de
desarrollador, de interesado ni de gerencia.
2. Concretiza:
Sé específico. Asegúrate de incluir tantos detalles como sea posible, ya que
esto facilitará que quienes implementen las características del producto comprendan
el resultado deseado. Esto no tienes que hacerlo solo “escribiendo” historias
de usuario. Recuerda que la parte más importante de estas es la conversación
que tengas alrededor de la misma. Esto no cambia con una modificación en la
forma de representarlas.
3. Colabora:
invita a los interesados y los desarrolladores a colaborar al describir
historias de usuario, ya que esto ayuda a garantizar que estas sean claras y
brinden la mayor cantidad de detalles posible. Las historias de usuario son un
protocolo de colaboración, es una forma de realizar el trabajo en torno a un
objetivo deseado.
4. Considera
casos extremos: asegúrate de incluir cualquier caso extremo al contar historias
de usuario, ya que esto ayudará a garantizar que se contemplen todos los
resultados posibles. Pero no te estreses con tratar de adjuntar todos los
casos: primero los más críticos u obligatorios, luego los importantes y por
último, si hay tiempo y presupuesto, los buenos, bonitos y baratos.
5. Cata:
Prueba y perfecciona. Después de crear historias de usuario, evalúalas para
asegurarte de que sean claras y precisas, y perfecciona según corresponda. La
calidad del producto comienza con la calidad de las conversaciones que tengas
sobre cada historia de usuario de este.
Conclusión
Esta apenas es una forma más de representar historias de usuario
que puedes incluir en tu caja de herramientas y enseñarla a tus equipos lo más
pronto posible. Los beneficios de usar una forma u otra vienen dados por el
contexto y por los resultados que quieras obtener. No te voy a decir que una
forma es mejor que otra, porque no es cierto.
Anexo # 1: historias
de usuario de la aplicación RedTV en la forma BDD, cada una con sus respectivos
criterios de aceptación.
Dado: un usuario está buscando películas o series
para ver
Cuando: al usuario se le presenta una
variedad de opciones de género
Entonces: El usuario puede filtrar las
recomendaciones por género
Criterios de aceptación:
1. Al
usuario se le debe presentar una lista de opciones de género para elegir.
2. La
lista de opciones de género debe ser completa y estar actualizada.
3. El
usuario puede filtrar el contenido recomendado en función de su selección de
géneros.
Dado: un usuario ha comenzado a ver una
película o serie
Cuando: el usuario desea saltar a una escena
o sección específica
Entonces: el usuario puede buscar escenas
específicas dentro del contenido
Criterios de aceptación:
1. El
usuario puede buscar escenas específicas dentro del contenido que está viendo.
2. La
búsqueda debe ser efectiva y precisa.
3. El
usuario puede saltar fácilmente a la escena que está buscando.
Dado: un usuario está transmitiendo contenido
Cuando: el usuario intenta ajustar la configuración
de audio
Entonces: el usuario puede ajustar la
configuración de audio
Criterios de aceptación:
1. El
usuario puede ajustar la configuración de audio del contenido que está
transmitiendo.
2. El
usuario puede ajustar el volumen, el balance y otras configuraciones de audio.
3. La
configuración de audio debe ser uniforme en todos los dispositivos y
plataformas.
Dado: un usuario está transmitiendo contenido
Cuando: el usuario intenta compartir el
contenido con amigos
Entonces: el usuario puede compartir el
contenido en las redes sociales y otras plataformas
Criterios de aceptación:
1. El
usuario puede compartir el contenido con amigos en las redes sociales y otras
plataformas.
2. El
proceso de compartir debe ser fácil y seguro.
3. Los
usuarios deben poder compartir contenido desde su dispositivo, así como desde
la plataforma de transmisión.
Dado: un usuario está buscando películas y series
Cuando: al usuario se le presentan opciones
de control parental
Entonces: el usuario puede restringir el
contenido según las clasificaciones de edad
Criterios de aceptación:
1. Al
usuario se le deben presentar opciones de control parental cuando busca
películas y programas de televisión.
2. El
usuario debe poder restringir el contenido según las clasificaciones de edad.
3. Las
clasificaciones de edad deben ser consistentes y estar actualizadas.
4. Las
opciones de control parental deben ser seguras y fáciles de usar.
Anexo # 2:
historias de usuario de una Billetera Digital en la forma BDD
Como usuario de la Billetera Digital,
Quiero agregar mi tarjeta de crédito a mi
billetera digital
para hacer pagos usando mi teléfono.
Dado que estoy conectado a
mi cuenta
Cuando hago clic en el botón
"Agregar tarjeta"
E ingreso los datos de mi
tarjeta de crédito
Entonces mi tarjeta de
crédito debe agregarse a mi billetera digital
Como usuario,
Quiero poder realizar pagos con mi monedero
digital
para no tener que llevar mi tarjeta física
conmigo.
Dado que tengo una tarjeta
de crédito agregada a mi billetera digital
Cuando elijo la tarjeta en
un punto de venta
E ingreso mi número de
teléfono o escaneo un código QR
Luego, el pago debe
procesarse utilizando mi billetera digital.
Como usuario,
Quiero ver mi historial de transacciones
para hacer un seguimiento efectivo de mis
pagos.
Dado que estoy conectado a
mi cuenta
Cuando hago clic en la
pestaña "Historial de transacciones"
Entonces debería ver una
lista de todas mis transacciones anteriores
Criterios de aceptación:
1. El
usuario debe poder ver una lista de todas sus transacciones anteriores
2. El
historial de transacciones debe incluir la fecha, el monto y el comerciante de
cada transacción
3. El
usuario debe poder filtrar y ordenar el historial de transacciones por varios
criterios (por ejemplo, fecha, monto, comerciante)
Como cliente,
Quiero seguir el estado de mis transacciones actuales
o en curso
para conocer el momento exacto en que mis
transacciones se hagan efectivas
Dado que estoy conectado a
mi cuenta
Y estoy en la página
"Mis transacciones"
Cuando hago clic en el botón
"Rastrear transacción" para una transacción actual
Entonces debería ver el
estado actual de la transacción seleccionada (por ejemplo,
"Procesando", "Enviada", etcétera.)
Como usuario,
Quiero agregar varias tarjetas de crédito a
mi billetera digital
para que pueda elegir qué tarjeta usar para
cada pago.
Dado que estoy conectado a
mi cuenta
Cuando hago clic en el botón
"Agregar tarjeta"
E ingreso los datos de mi
tarjeta de crédito
Entonces mi tarjeta de
crédito debe agregarse a mi billetera digital
Como usuario,
Quiero ver y administrar todas mis tarjetas
de crédito en mi billetera digital
para seleccionar fácilmente la tarjeta que
quiero usar para cada pago.
Dado que tengo varias
tarjetas de crédito agregadas a mi billetera digital
Cuando hago clic en la
pestaña "Tarjetas"
Entonces debería ver una
lista de todas mis tarjetas de crédito.
Y debería poder seleccionar
una tarjeta para hacer un pago.
Como usuario,
Quiero eliminar tarjetas de crédito de mi
monedero digital
para retirar las tarjetas que ya no uso y
controlar mejor la seguridad de mis datos financieros
Dado que tengo varias
tarjetas de crédito agregadas a mi billetera digital
Cuando hago clic en el botón
"Eliminar" para una tarjeta específica
Entonces, la tarjeta seleccionada
debe eliminarse de mi billetera digital
Como usuario,
Quiero poder realizar pagos con mi monedero
digital
para no tener que llevar mi tarjeta física
conmigo.
Dado que tengo una tarjeta
de crédito agregada a mi billetera digital
Cuando elijo la tarjeta en
un punto de venta
E ingreso mi número de
teléfono o escaneo un código QR
Entonces, el pago debe
procesarse utilizando mi billetera digital.
Criterios de aceptación:
1. El
usuario puede seleccionar una tarjeta de crédito de su billetera digital para
realizar un pago
2. El
usuario puede ingresar su número de teléfono o escanear un código QR para
completar el pago
3. El
pago debe ser procesado con éxito y el usuario debe recibir una confirmación
del pago
Como usuario,
Quiero poder realizar pagos con mi billetera
digital en cualquier lugar que acepte tarjetas de crédito
para que pueda hacer pagos donde quiera que
esté.
Dado que tengo una tarjeta
de crédito agregada a mi billetera digital
Cuando elijo la tarjeta en
un punto de venta
E ingreso mi número de
teléfono o escaneo un código QR
Luego, el pago debe
procesarse utilizando mi billetera digital.
Criterios de aceptación:
1. El
usuario debe poder realizar pagos en cualquier lugar que acepte tarjetas de
crédito (por ejemplo, en la tienda, en línea)
2. El
usuario debe poder seleccionar una tarjeta de crédito de su billetera digital
para realizar un pago
3. El
pago debe ser procesado con éxito y el usuario debe recibir una confirmación
del pago