Testing
Cucumber
- Testing
- java
- Springboot
- cypress
- jest
- CICD
- jenkins
- docs
- Arquitectura de Cucumber
Documentación y Recursos
Testing Resources
- Arquitectura de Cucumber
-
[Introduction Cucumber](https://cucumber.io/docs/) - Installation - Cucumber Documentation
- Guides - Cucumber Documentation
JUnit Integration
- Cucumber Java Installation
BDD Workshops
- Discovery workshop | Cucumber
Introducción
Cucumber es una herramienta de testing que soporta Behavior-Driven Development (BDD). Permite escribir tests en lenguaje natural (Gherkin) que pueden ser ejecutados automáticamente.
Conceptos Fundamentales
BDD (Behavior-Driven Development)
- BDD: Metodología de desarrollo que combina técnicas y herramientas de TDD con el diseño dirigido por dominio
- Lenguaje Gherkin: Sintaxis de lenguaje natural para describir comportamientos del sistema
- Colaboración: Facilita la comunicación entre desarrolladores, QA y stakeholders no técnicos
Estructura Básica
Feature: Nombre de la funcionalidad
Como [rol]
Quiero [característica]
Para [beneficio]
Scenario: Nombre del escenario
Given [condición inicial]
When [acción]
Then [resultado esperado]
Instalación y Configuración
Dependencias Maven
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>7.15.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>7.15.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-spring</artifactId>
<version>7.15.0</version>
<scope>test</scope>
</dependency>
Configuración JUnit
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/resources/features",
glue = "stepdefinitions",
plugin = {"pretty", "html:target/cucumber-reports"}
)
public class RunCucumberTest {
}
Implementación con Java y Spring Boot
Step Definitions
public class LoginStepDefinitions {
@Given("el usuario está en la página de login")
public void usuario_en_pagina_login() {
// Configuración inicial
}
@When("ingresa credenciales válidas")
public void ingresa_credenciales_validas() {
// Acción del usuario
}
@Then("debe acceder al dashboard")
public void debe_acceder_al_dashboard() {
// Verificación del resultado
}
}
Integración con Spring Boot
@SpringBootTest
@CucumberContextConfiguration
public class SpringIntegrationTest {
@Autowired
private ApplicationContext applicationContext;
}
Comparativa con Otras Herramientas
vs Cypress
- Cucumber: Enfocado en BDD y testing de aceptación
- Cypress: Especializado en testing E2E de aplicaciones web
- Complementariedad: Pueden usarse conjuntamente
vs Jest
- Cucumber: Tests basados en comportamiento y lenguaje natural
- Jest: Framework de testing unitario para JavaScript
- Diferentes propósitos: Cucumber para aceptación, Jest para unitarios
Integración con CI/CD
Pipeline Jenkins
pipeline {
agent any
stages {
stage('Test') {
steps {
sh 'mvn test -Dtest=RunCucumberTest'
}
post {
always {
cucumber buildStatus: null,
fileIncludePattern: '**/cucumber.json',
trendsLimit: 10
}
}
}
}
}
CICD Best Practices
- Ejecución paralela: Configurar runners para features independientes
- Reportes: Generación automática de reportes HTML/JSON
- Quality Gates: Integración con herramientas de calidad de código
Características Avanzadas
Tags y Organización
@smoke
Feature: Login functionality
@critical
Scenario: Successful login
Given user is on login page
When user enters valid credentials
Then user should be redirected to dashboard
Data Tables
Scenario: Multiple user login
Given the following users exist:
| username | password |
| user1 | pass123 |
| user2 | pass456 |
When each user logs in
Then all should access successfully
Scenario Outline
Scenario Outline: Login with different credentials
Given user is on login page
When user enters "<username>" and "<password>"
Then user should see "<message>"
Examples:
| username | password | message |
| valid | valid | Welcome |
| invalid | valid | Invalid credentials |
¿Te gusta este contenido? Suscríbete vía RSS