Pruebas funcionales automatizadas con Gherkin y Cucumber
En el desarrollo de software, las pruebas funcionales desempeñan un papel fundamental para garantizar que las aplicaciones cumplan con los requisitos y funcionen correctamente. Con el creciente enfoque en la automatización de pruebas, han surgido diversas herramientas para facilitar y agilizar este proceso. Dos de las herramientas más populares son Gherkin y Cucumber. En este artículo, exploraremos cómo Gherkin y Cucumber se combinan para mejorar las pruebas funcionales automatizadas y cómo se utilizan para fomentar la colaboración entre los equipos de desarrollo y pruebas.
¿Qué es Gherkin?
Gherkin es un lenguaje de dominio específico (DSL, por sus siglas en inglés) utilizado para describir el comportamiento de un sistema o una aplicación en un formato legible para los seres humanos. Es altamente estructurado y se basa en el concepto de especificaciones ejecutables. Gherkin permite escribir escenarios de prueba utilizando un formato fácil de entender, lo que facilita la colaboración entre los miembros del equipo técnico y no técnico.
El formato de Gherkin se compone de pasos, escenarios y características. Los pasos son declaraciones que describen acciones o verificaciones, mientras que los escenarios son ejemplos específicos de cómo se comporta el sistema en diferentes situaciones. Las características agrupan escenarios relacionados que cumplen un objetivo común.
Ejemplo de Uso de Gherkin
Característica: Inicio de sesión en una aplicación web Como usuario Quiero poder iniciar sesión en la aplicación Para acceder a mis datos personales Escenario: Iniciar sesión con credenciales válidas Dado que estoy en la página de inicio de sesión Cuando ingreso mi nombre de usuario "john_doe" y mi contraseña "secretpassword" Y hago clic en el botón "Iniciar sesión" Entonces debería ser redirigido a la página de inicio Escenario: Iniciar sesión con credenciales inválidas Dado que estoy en la página de inicio de sesión Cuando ingreso un nombre de usuario inválido y una contraseña inválida Y hago clic en el botón "Iniciar sesión" Entonces debería ver un mensaje de error que indica que las credenciales son incorrectas Escenario: Iniciar sesión sin completar campos obligatorios Dado que estoy en la página de inicio de sesión Cuando dejo en blanco el campo de nombre de usuario y el campo de contraseña Y hago clic en el botón "Iniciar sesión" Entonces debería ver un mensaje de error que indica que los campos son obligatorios
En este ejemplo, se describe una característica de «Inicio de sesión en una aplicación web». Luego se presentan varios escenarios, cada uno de los cuales describe una situación específica de inicio de sesión con diferentes conjuntos de datos.
Cada escenario comienza con el estado inicial («Dado que…»), seguido de los pasos de interacción con la aplicación («Cuando…»), y finalmente se especifica el resultado esperado («Entonces…»). Esto proporciona una descripción clara y legible de cómo se comporta el sistema en diferentes situaciones de inicio de sesión.
Al utilizar Gherkin, los miembros del equipo, tanto técnicos como no técnicos, pueden comprender fácilmente el propósito y el flujo de trabajo de las pruebas funcionales, lo que fomenta la colaboración y garantiza que todos tengan una visión clara del comportamiento esperado del sistema.
¿Qué es Cucumber?
Cucumber es una herramienta de automatización de pruebas que utiliza el lenguaje Gherkin para definir y ejecutar pruebas funcionales. Cucumber actúa como un intérprete de Gherkin, analizando los archivos de especificación y ejecutando los pasos definidos en código de programación.
Cucumber proporciona soporte para varios lenguajes de programación, incluyendo Java, Ruby y JavaScript, lo que la hace flexible y accesible para equipos con diferentes preferencias tecnológicas. Además, Cucumber facilita la generación de informes claros y concisos sobre el resultado de las pruebas, lo que ayuda a identificar y solucionar problemas de manera eficiente.
Beneficios de utilizar Gherkin y Cucumber juntos:
Colaboración efectiva: Gherkin actúa como un lenguaje común entre los miembros del equipo técnico y no técnico, permitiendo una comunicación clara y eficiente. Los stakeholders pueden contribuir a la creación de las especificaciones y validar que los resultados se ajusten a sus expectativas.
Claridad en las pruebas: El formato estructurado de Gherkin garantiza que las pruebas sean fáciles de leer y entender. Esto facilita el seguimiento del flujo de trabajo y asegura que todos los aspectos importantes sean considerados en las pruebas automatizadas.
Reutilización de pasos: Cucumber permite la reutilización de pasos de prueba definidos previamente, lo que reduce la duplicación de código y mejora la mantenibilidad de las pruebas. Esto significa que los equipos pueden crear una biblioteca de pasos comunes para agilizar el desarrollo de nuevas pruebas.
Enfoque basado en el comportamiento: Gherkin y Cucumber fomentan un enfoque basado en el comportamiento (BDD, por sus siglas en inglés)
Ejemplo de Uso de Cucumber y Gherkin
Feature: Inicio de sesión en una aplicación web Como usuario Quiero poder iniciar sesión en la aplicación Para acceder a mis datos personales Scenario: Iniciar sesión con credenciales válidas Given que estoy en la página de inicio de sesión When ingreso mi nombre de usuario "john_doe" y mi contraseña "secretpassword" And hago clic en el botón "Iniciar sesión" Then debería ser redirigido a la página de inicio Scenario: Iniciar sesión con credenciales inválidas Given que estoy en la página de inicio de sesión When ingreso un nombre de usuario inválido y una contraseña inválida And hago clic en el botón "Iniciar sesión" Then debería ver un mensaje de error que indica que las credenciales son incorrectas Scenario: Iniciar sesión sin completar campos obligatorios Given que estoy en la página de inicio de sesión When dejo en blanco el campo de nombre de usuario y el campo de contraseña And hago clic en el botón "Iniciar sesión" Then debería ver un mensaje de error que indica que los campos son obligatorios
En este ejemplo, se utiliza Cucumber para ejecutar las pruebas escritas en Gherkin. Cucumber interpreta los pasos escritos en lenguaje natural y los mapea a definiciones de pasos escritas en código.
Las definiciones de pasos en código se implementan utilizando un lenguaje de programación compatible con Cucumber, como Ruby. A continuación, se muestra un ejemplo de cómo se podrían implementar los pasos para el escenario «Iniciar sesión con credenciales válidas»:
Given("que estoy en la página de inicio de sesión") do # Código para navegar a la página de inicio de sesión end When("ingreso mi nombre de usuario {string} y mi contraseña {string}") do |username, password| # Código para ingresar el nombre de usuario y contraseña en los campos correspondientes end And("hago clic en el botón {string}") do |button_text| # Código para hacer clic en el botón de inicio de sesión end Then("debería ser redirigido a la página de inicio") do # Código para verificar que se haya redirigido a la página de inicio correctamente end
Cucumber ejecutará estos pasos de manera secuencial y mostrará el resultado de la prueba en forma de informes. Al utilizar Cucumber, es posible definir y ejecutar pruebas funcionales de manera estructurada, reutilizable y fácilmente comprensible por todas las partes interesadas, mejorando la colaboración y la eficiencia en el proceso de pruebas automatizadas.
¿Donde puedo ver que lenguajes de programación soporta Cucumber?