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 obligatoriosEn 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
endCucumber 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?