Consigue una cita de consultoría gratuita

   Granada, España

¿Qué es Cucumber? ¿Cómo se usa? Ejemplos de uso – Tutorial

¿Qué es Cucumber? ¿Cómo se usa? Ejemplos de uso – Tutorial

Cucumber es una herramienta de desarrollo de software que soporta el Desarrollo Guiado por Comportamiento (Behavior-Driven Development, BDD), utilizada para desarrollar casos de prueba para la funcionalidad del comportamiento del software. Es una herramienta de pruebas automatizadas que facilita la escritura de pruebas en un lenguaje claro y sencillo, permitiendo que personas sin conocimiento técnico puedan comprenderlas

1. Introducción al Desarrollo Guiado por Comportamiento (BDD) y Cucumber

Conceptos Básicos de BDD

El Desarrollo Guiado por Comportamiento, o BDD, es una metodología de desarrollo de software que fomenta la colaboración entre los miembros del equipo de desarrollo, los interesados y los profesionales de control de calidad. Su propósito es mejorar la comunicación entre estos grupos para garantizar que todos tengan una comprensión clara de los requisitos del proyecto. BDD se centra en el uso de ejemplos simples para describir el comportamiento del software, en lugar de las especificaciones técnicas detalladas.

Un aspecto clave de BDD es la especificación de software mediante ejemplos conversacionales, conocidos como «escenarios». Estos escenarios describen cómo debería comportarse el software desde la perspectiva del usuario final y se escriben en un lenguaje natural. Por ejemplo:

Característica: Devolución de los productos defectuosos

  Como cliente de una tienda online
  Quiero poder devolver productos defectuosos
  Para obtener un reembolso o un producto de reemplazo

  Escenario: Devolver un producto defectuoso dentro del período de garantía
    Dado que he comprado un producto hace menos de 30 días
    Y el producto no funciona correctamente
    Cuando solicito una devolución
    Entonces debo recibir un reembolso

Este escenario es un ejemplo de cómo se describe una característica en BDD, utilizando el lenguaje Gherkin que Cucumber interpreta para realizar pruebas automáticas.

¿Qué es Cucumber?

Cucumber es una herramienta de automatización de pruebas diseñada para soportar BDD. Permite a los equipos definir el comportamiento deseado del software en archivos de texto plano utilizando Gherkin, que luego se pueden utilizar para producir informes de prueba automáticos.

La clave de Cucumber es que permite escribir pruebas de comportamiento en un lenguaje claro y accesible para todos los miembros del equipo, incluidos aquellos sin antecedentes técnicos. Por ejemplo, usando el escenario anterior, Cucumber permitirá que los desarrolladores y testers colaboren para definir cómo debería implementarse y probarse la funcionalidad de devolución de productos.

Cucumber en la Práctica

Para comenzar a utilizar Cucumber, los equipos crean archivos de características que contienen escenarios escritos en Gherkin. Estos archivos son una fuente de verdad tanto para los requisitos como para las pruebas de aceptación. Cucumber luego utiliza estos archivos para probar que el software se comporta como se espera.

En la práctica, un equipo podría seguir estos pasos:

  1. Definir Características y Escenarios: Reunir a desarrolladores, testers y stakeholders para discutir las características y escribir escenarios juntos.

  2. Escribir Definiciones de Pasos: Los desarrolladores y testers escriben código que define lo que cada paso del escenario debe hacer durante la prueba.

  3. Ejecutar Pruebas: Cucumber se ejecuta, pasando por cada escenario y utilizando las definiciones de pasos para probar si el software se comporta según lo descrito.

  4. Revisar Resultados: Después de ejecutar las pruebas, Cucumber genera informes que muestran si los escenarios han pasado o fallado, lo que proporciona retroalimentación inmediata sobre la calidad del software.

Con Cucumber y BDD, el equipo de desarrollo tiene una guía clara y compartida de lo que necesita ser construido, y los testers tienen una base clara para sus pruebas. Juntos, garantizan que el producto final cumpla con las expectativas del usuario y los objetivos comerciales.

2. Instalación y Configuración de Cucumber

Requisitos Previos

Antes de instalar Cucumber, es fundamental asegurarse de que tienes el entorno de programación adecuado configurado en tu sistema. Dependiendo del lenguaje con el que trabajarás, necesitarás tener instalado Ruby, Java, .NET, JavaScript u otros lenguajes soportados por Cucumber. Por ejemplo, si decides trabajar con Java, necesitarás tener instalado Java Development Kit (JDK) y una herramienta de construcción como Maven o Gradle.

Instalación de Cucumber

Una vez que el entorno está listo, puedes proceder con la instalación de Cucumber. Vamos a ver cómo instalar Cucumber para Ruby y Java, que son dos de los entornos más comunes:

Para Ruby:
  1. Instala Ruby en tu sistema si aún no lo has hecho. Puedes descargarlo desde el sitio oficial de Ruby o usar un administrador de versiones como RVM o rbenv.

  2. Una vez que Ruby está instalado, abre una terminal y escribe el siguiente comando para instalar la gema de Cucumber:

gem install cucumber

     3. Verifica la instalación ejecutando cucumber --version en la terminal. Deberías ver la versión instalada de Cucumber si todo ha ido bien.

Para Java:
  1. Asegúrate de tener instalado JDK y una herramienta de construcción como Maven.

  2. Crea un nuevo proyecto Maven y agrega las siguientes dependencias en tu archivo pom.xml:


    
        io.cucumber
        cucumber-java
        LA_ULTIMA_VERSION
    
    
        io.cucumber
        cucumber-junit
        LA_ULTIMA_VERSION
        test
    


Asegúrate de reemplazar LA_ULTIMA_VERSION con la versión actual de Cucumber.

    3. Después de agregar las dependencias, puedes ejecutar Maven para descargar e instalar Cucumber y sus dependencias en tu proyecto.

Configuración del Entorno de Desarrollo

Una vez que Cucumber está instalado, es hora de configurar tu entorno de desarrollo. Si utilizas un IDE como IntelliJ IDEA o Eclipse, hay plugins disponibles que facilitan la ejecución y el manejo de las pruebas de Cucumber. Por ejemplo, para IntelliJ IDEA, puedes instalar el plugin de Cucumber for Java directamente desde el mercado de plugins del IDE.

Estructura de Directorios

Cucumber utiliza una estructura de directorios específica. Por convención, los archivos de características se colocan en un directorio llamado features. Dentro de este directorio, creas un archivo con la extensión .feature para cada característica que quieras probar. Además, necesitarás un subdirectorio step_definitions donde se almacenarán los archivos que contienen el código que ejecuta cada paso definido en tus archivos de características.

Primeros Pasos con Cucumber

Para verificar que todo está configurado correctamente, puedes crear un archivo de prueba de características simple:

# features/prueba.feature
Característica: Prueba simple de Cucumber
  Para verificar que Cucumber está funcionando
  Quiero que una prueba simple pase

  Escenario: Ejecutar un escenario simple
    Dado que tengo Cucumber instalado
    Cuando ejecuto una prueba simple
    Entonces la prueba debería pasar

Luego, escribe las definiciones de los pasos en un archivo Ruby o Java (dependiendo del entorno que estés utilizando). Por último, ejecuta Cucumber desde la terminal o a través de tu IDE. Si ves un mensaje indicando que tu escenario ha pasado, ¡tu entorno de Cucumber está listo para usar!

Con tu entorno configurado y listo para ejecutar pruebas, estás en el camino correcto para comenzar a escribir casos de prueba más complejos y aprovechar todo el poder de Cucumber en tus proyectos de desarrollo.

3. Escribir Casos de Prueba con Cucumber

Fundamentos de Gherkin

Gherkin es el lenguaje específico de dominio utilizado por Cucumber para escribir casos de prueba. Es un lenguaje descriptivo y de alto nivel que permite definir el comportamiento del software en términos legibles y comprensibles. Los archivos de características de Gherkin (.feature) constan de una serie de escenarios, cada uno representando una situación específica o un caso de prueba.

Estructura de un Archivo de Características

Un archivo .feature típico tiene la siguiente estructura:

  • Feature: La descripción de la característica que se va a probar.
  • Background: (Opcional) Una sección que contiene pasos que se ejecutan antes de cada escenario.
  • Scenario: Define un escenario de prueba específico.
  • Given, When, Then, And, But: Palabras clave que definen los pasos de un escenario.

Por ejemplo:

# features/ejemplo_login.feature

Feature: Inicio de sesión en la aplicación

  As a registered user
  I want to log in with my credentials
  So that I can access my personal dashboard

  Scenario: Successful login with valid credentials
    Given I am on the login page
    When I enter valid credentials
    And I click on the login button
    Then I should be redirected to my personal dashboard

Definiendo Escenarios

Un escenario es una secuencia de pasos que describe una función desde su inicio hasta su conclusión. Los escenarios deben ser independientes y poder ejecutarse en cualquier orden. Cada paso en un escenario se escribe utilizando las palabras clave Given, When, Then, And, y But.

  • Given: Se utiliza para describir el estado inicial del sistema.
  • When: Describe la acción que desencadena el evento.
  • Then: Define el resultado esperado o el estado del sistema después de la acción.
  • And, But: Se utilizan para agregar condiciones o acciones adicionales a los pasos Given, When, o Then.

Definiciones de Pasos

Después de escribir los escenarios, necesitarás definir los pasos en tu lenguaje de programación preferido. Las definiciones de pasos son bloques de código que le dicen a Cucumber qué hacer cuando se encuentra con un paso en un archivo .feature.

Por ejemplo, para el escenario anterior, podrías tener definiciones de pasos en Ruby como las siguientes:

# features/step_definitions/login_steps.rb

Given('I am on the login page') do
  visit('/login')
end

When('I enter valid credentials') do
  fill_in('Username', with: 'user@example.com')
  fill_in('Password', with: 'securepassword')
end

When('I click on the login button') do
  click_button('Login')
end

Then('I should be redirected to my personal dashboard') do
  expect(page).to have_content('Your Dashboard')
end

Cada definición de paso corresponde a un paso en el archivo .feature y utiliza expresiones regulares o strings coincidentes para enlazar el texto del paso con el código que debe ejecutar.

Buenas Prácticas

Cuando escribes casos de prueba con Cucumber, es importante seguir algunas buenas prácticas:

  • Escribe escenarios claros y concisos: Los escenarios deben ser comprensibles para todos los miembros del equipo.
  • Mantén los escenarios independientes: Cada escenario debe poder ejecutarse por sí solo.
  • Reutiliza pasos: Define pasos comunes que puedan ser reutilizados en varios escenarios.
  • Evita detalles de implementación: Concéntrate en el comportamiento en lugar de cómo se realiza la funcionalidad.

Al seguir estos principios, te aseguras de que tus archivos .feature sean una herramienta valiosa tanto para la definición de comportamientos como para la documentación del proyecto. Con casos de prueba bien escritos, tu equipo puede continuar desarrollando y manteniendo una base de código saludable con confianza en que el comportamiento del software cumple con las expectativas del usuario final.

4. Ejecución de Pruebas y Automatización con Cucumber

Ejecución de Pruebas

Una vez que has definido tus archivos de características y las definiciones de los pasos asociados, el siguiente paso es ejecutar las pruebas para ver si el comportamiento del software coincide con lo que se ha descrito en tus escenarios de Gherkin.

Para ejecutar las pruebas con Cucumber, generalmente se utiliza la línea de comandos o una tarea definida en tu herramienta de construcción (como Maven, Gradle o Rake). Al ejecutar Cucumber, la herramienta buscará en el directorio features/ todos los archivos de características y ejecutará los escenarios uno por uno.

Por ejemplo, en la línea de comandos, podrías simplemente navegar a la raíz de tu proyecto y ejecutar:

cucumber features/ejemplo_login.feature

Esto iniciará la ejecución de los escenarios definidos en ejemplo_login.feature. Cucumber utiliza las definiciones de los pasos para ejecutar el código asociado con cada paso del escenario.

Automatización de Pruebas

La automatización de pruebas con Cucumber puede integrarse en tu proceso de integración continua (CI). Herramientas como Jenkins, CircleCI, o Travis CI pueden configurarse para ejecutar tus pruebas de Cucumber cada vez que se hace push al repositorio de código o se fusiona una pull request.

Ejemplo Detallado

Vamos a continuar con el ejemplo del apartado anterior, donde teníamos un escenario de prueba para el inicio de sesión en una aplicación.

Archivo de Características (ejemplo_login.feature)
# features/ejemplo_login.feature

Feature: Inicio de sesión en la aplicación

  As a registered user
  I want to log in with my credentials
  So that I can access my personal dashboard

  Scenario: Successful login with valid credentials
    Given I am on the login page
    When I enter valid credentials
    And I click on the login button
    Then I should be redirected to my personal dashboard
Definiciones de los Pasos (login_steps.rb)
# features/step_definitions/login_steps.rb

Given('I am on the login page') do
  visit('/login')
end

When('I enter valid credentials') do
  fill_in('Username', with: 'user@example.com')
  fill_in('Password', with: 'securepassword')
end

When('I click on the login button') do
  click_button('Login')
end

Then('I should be redirected to my personal dashboard') do
  expect(page).to have_content('Your Dashboard')
end
Ejecución y Resultados

Al ejecutar el comando cucumber, se inicia la prueba y Cucumber procesa el archivo ejemplo_login.feature. Si todos los pasos se ejecutan correctamente y las expectativas se cumplen, verás una salida similar a la siguiente en la terminal:

Feature: Inicio de sesión en la aplicación

  Scenario: Successful login with valid credentials
    Given I am on the login page
    When I enter valid credentials
    And I click on the login button
    Then I should be redirected to my personal dashboard

1 scenario (1 passed)
4 steps (4 passed)
0m0.123s

Esto indica que el escenario se ejecutó con éxito y que el comportamiento definido en tus pruebas coincide con el comportamiento actual del software.

Conclusión y Mejores Prácticas

La ejecución de pruebas con Cucumber es un proceso poderoso y flexible. Para aprovechar al máximo Cucumber y BDD, considera las siguientes mejores prácticas:

  • Automatiza la ejecución de pruebas: Integra Cucumber en tu pipeline de CI/CD para asegurarte de que las pruebas se ejecuten automáticamente y con frecuencia.
  • Revisa los informes de pruebas: Utiliza los informes generados por Cucumber para identificar problemas y mejorar la calidad del código.
  • Mantén las definiciones de pasos limpias y reutilizables: Refactoriza las definiciones de pasos para que sean reutilizables en varios escenarios, lo que facilita el mantenimiento y mejora la claridad de tus pruebas.
  • Colabora con tu equipo: Comparte los resultados de las pruebas con todos los miembros del equipo y utiliza los comentarios para mejorar continuamente tus pruebas y el código subyacente.

Al seguir estas prácticas, Cucumber se convierte en una herramienta indispensable para asegurar que tu aplicación se comporte exactamente como se espera, cada vez que se introduce un cambio en el código.

Bibliografía para profundizar en Cucumber

Para profundizar en el uso de Cucumber y en el Desarrollo Guiado por Comportamiento (BDD), puedes consultar los siguientes recursos que proporcionan información detallada y ejemplos prácticos:

  1. «The Cucumber Book: Behaviour-Driven Development for Testers and Developers» por Matt Wynne y Aslak Hellesøy.

    • Este libro es una guía completa para aprender Cucumber y BDD. Ofrece explicaciones detalladas, ejemplos del mundo real y consejos prácticos para aplicar BDD en tus proyectos.
  2. «Cucumber & Cheese: A Tester’s Workshop» por Jeff Morgan.

    • Un libro que se enfoca en la aplicación práctica de Cucumber en pruebas automatizadas, mostrando cómo escribir mejores escenarios y definiciones de pasos.
  3. «BDD in Action: Behavior-Driven Development for the whole software lifecycle» por John Ferguson Smart.

    • Proporciona una visión general de BDD y cómo se puede aplicar a lo largo del ciclo de vida del desarrollo de software, incluyendo integración y pruebas.
  4. Documentación Oficial de Cucumber

    • La documentación oficial de Cucumber es siempre un recurso actualizado para obtener información sobre las últimas características, mejores prácticas y cómo empezar con Cucumber en diferentes lenguajes de programación.
4.7 3 votos
Calificación
Suscribirse
Notificar de
guest
1 Comentario
Más antiguo
El mas nuevo Más votado
Comentarios en línea
Ver todos los comentarios
Sara
Sara
1 año atrás

¿Está disponible para php?

1
0
Me encantaría saber tu opinión, por favor comenta.x