En este módulo, exploraremos cómo los esquemas de escenarios y los ejemplos pueden ayudarte a escribir pruebas más eficientes y reutilizables en Cucumber utilizando Gherkin. Esta técnica es especialmente útil cuando necesitas probar múltiples conjuntos de datos con la misma lógica de prueba.
¿Qué es un Esquema de Escenario?
Un esquema de escenario es una plantilla para un conjunto de escenarios que comparten la misma estructura pero difieren en los datos. En lugar de escribir múltiples escenarios con pasos idénticos, puedes definir un esquema de escenario y proporcionar diferentes conjuntos de datos en una tabla de ejemplos.
Ventajas de Usar Esquemas de Escenarios
- Reutilización de Código: Reduce la duplicación de pasos en múltiples escenarios.
- Mantenimiento Simplificado: Facilita la actualización de pruebas, ya que los cambios en la lógica de los pasos se realizan en un solo lugar.
- Claridad: Mejora la legibilidad al separar la lógica de prueba de los datos de prueba.
Sintaxis de Esquemas de Escenarios
La sintaxis de un esquema de escenario en Gherkin es similar a la de un escenario regular, pero incluye una sección adicional para los ejemplos.
Scenario Outline: [Nombre del Esquema] Given [condición inicial] When [acción] Then [resultado esperado] Examples: | [columna1] | [columna2] | | valor1 | valor2 | | valor3 | valor4 |
Ejemplo Práctico
Supongamos que estamos probando una funcionalidad de inicio de sesión en una aplicación web. Queremos verificar que los usuarios puedan iniciar sesión con diferentes combinaciones de nombres de usuario y contraseñas.
Scenario Outline: Login con credenciales válidas Given el usuario está en la página de inicio de sesión When el usuario ingresa el nombre de usuario "<username>" y la contraseña "<password>" Then el usuario debería ver el mensaje de bienvenida Examples: | username | password | | user1 | pass1 | | user2 | pass2 | | user3 | pass3 |
Explicación del Código
- Scenario Outline: Define la estructura del escenario que se repetirá para cada conjunto de datos.
- Given, When, Then: Pasos que describen la lógica de la prueba.
- Examples: Tabla que contiene los diferentes conjuntos de datos que se utilizarán en el esquema. Cada fila representa un conjunto de datos diferente.
Ejercicio Práctico
Ejercicio: Crea un esquema de escenario para probar una calculadora que suma dos números.
- Define un esquema de escenario que acepte dos números como entrada.
- Escribe los pasos Given, When, Then para realizar la suma.
- Proporciona al menos tres conjuntos de datos diferentes en la sección de ejemplos.
Solución:
Scenario Outline: Sumar dos números Given la calculadora está encendida When el usuario ingresa el número "<num1>" y el número "<num2>" Then el resultado debería ser "<resultado>" Examples: | num1 | num2 | resultado | | 2 | 3 | 5 | | 5 | 7 | 12 | | 10 | 15 | 25 |
Retroalimentación y Consejos
- Errores Comunes: Asegúrate de que los nombres de las columnas en la tabla de ejemplos coincidan exactamente con los nombres de los parámetros en los pasos del escenario.
- Consejo: Usa esquemas de escenarios cuando tengas múltiples casos de prueba con la misma lógica pero diferentes datos. Esto no solo ahorra tiempo, sino que también mejora la claridad de tus pruebas.
Conclusión
Los esquemas de escenarios y los ejemplos son herramientas poderosas en BDD que te permiten escribir pruebas más eficientes y mantenibles. Al separar la lógica de prueba de los datos, puedes manejar fácilmente múltiples casos de prueba con un solo esquema, mejorando la claridad y reduciendo la duplicación de código. En el próximo módulo, exploraremos cómo usar etiquetas y filtrar escenarios para ejecutar subconjuntos específicos de pruebas.
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