En este tema, exploraremos uno de los conceptos fundamentales de BDD: la estructura Given-When-Then. Esta estructura es esencial para escribir escenarios claros y comprensibles en Gherkin, el lenguaje utilizado por Cucumber para definir el comportamiento esperado de una aplicación.
¿Qué es Given, When, Then?
La estructura Given-When-Then se utiliza para describir el comportamiento de una aplicación en términos de:
- Given (Dado): Describe el estado inicial del sistema antes de que ocurra una acción. Es el contexto o las precondiciones necesarias para que el escenario sea válido.
- When (Cuando): Describe la acción o evento que se está probando. Es el estímulo que provoca un cambio en el sistema.
- Then (Entonces): Describe el resultado esperado después de que la acción ha tenido lugar. Es la verificación de que el sistema se comporta como se espera.
Ejemplo Práctico
Veamos un ejemplo de un escenario escrito en Gherkin utilizando Given-When-Then:
Feature: Login de Usuario Scenario: Usuario inicia sesión con credenciales válidas Given el usuario está en la página de inicio de sesión When el usuario ingresa su nombre de usuario y contraseña válidos Then el usuario debería ser redirigido a la página de inicio
Explicación del Ejemplo
- Given: "el usuario está en la página de inicio de sesión" establece el contexto inicial. Aquí, se asume que el usuario ya ha navegado a la página de inicio de sesión.
- When: "el usuario ingresa su nombre de usuario y contraseña válidos" describe la acción que el usuario realiza.
- Then: "el usuario debería ser redirigido a la página de inicio" verifica el resultado esperado de la acción.
Ejercicio Práctico
Ejercicio: Escribe un escenario utilizando Given-When-Then para describir el proceso de agregar un producto al carrito de compras en una tienda en línea.
Solución del Ejercicio
Feature: Carrito de Compras Scenario: Agregar un producto al carrito Given el usuario está en la página de detalles del producto When el usuario hace clic en el botón "Agregar al carrito" Then el producto debería aparecer en el carrito de compras
Explicación de la Solución
- Given: "el usuario está en la página de detalles del producto" establece que el usuario ya ha navegado a la página del producto que desea comprar.
- When: "el usuario hace clic en el botón 'Agregar al carrito'" es la acción que el usuario realiza para agregar el producto.
- Then: "el producto debería aparecer en el carrito de compras" verifica que el producto se ha agregado correctamente al carrito.
Errores Comunes y Consejos
-
Error Común: No definir claramente el contexto en el Given.
- Consejo: Asegúrate de que el Given establezca todas las precondiciones necesarias para que el escenario sea válido.
-
Error Común: Describir múltiples acciones en un solo When.
- Consejo: Mantén cada When simple y enfocado en una sola acción para mejorar la claridad.
-
Error Común: No verificar el resultado en el Then.
- Consejo: Siempre incluye una verificación clara en el Then para asegurar que el sistema se comporta como se espera.
Conclusión
La estructura Given-When-Then es una herramienta poderosa para escribir escenarios claros y comprensibles en BDD. Al seguir esta estructura, puedes describir el comportamiento esperado de una aplicación de manera que sea fácil de entender para todos los miembros del equipo, incluidos aquellos sin experiencia técnica. En el próximo módulo, exploraremos cómo crear definiciones de pasos para implementar estos escenarios en Cucumber.
BDD con Cucumber y Gherkin
Módulo 1: Introducción a BDD
Módulo 2: Comenzando con Cucumber
- Configuración del Entorno
- Creando Tu Primer Proyecto Cucumber
- Entendiendo los Archivos de Características
Módulo 3: Escribiendo Escenarios Gherkin
Módulo 4: Definiciones de Pasos
Módulo 5: Técnicas Avanzadas de Gherkin
Módulo 6: Integrando Cucumber con el Desarrollo
- Integración con Integración Continua
- Usando Cucumber con Diferentes Lenguajes
- Mejores Prácticas para BDD en Equipos
Módulo 7: Características Avanzadas de Cucumber
Módulo 8: Aplicaciones de BDD en el Mundo Real
- Estudio de Caso: BDD en una Aplicación Web
- Estudio de Caso: BDD en una Arquitectura de Microservicios
- Desafíos y Soluciones en BDD