Gherkin: Tutorial Completo
Gherkin: Tutorial Completo
Qué es Gherkin
Gherkin es un lenguaje de dominio específico (DSL) en lenguaje natural para escribir escenarios de aceptación ejecutables. Es el lenguaje subyacente de Cucumber, behave, SpecFlow y muchas otras herramientas BDD.
Un escenario Gherkin describe el comportamiento del sistema en términos de:
- Given: contexto / precondiciones
- When: acción del usuario o evento
- Then: resultado esperado
Lo escriben Product Owners, QA y developers. Lo lee cualquier stakeholder. Lo ejecutan herramientas BDD que mapean cada paso a código.
Por qué importa
- Living documentation: los escenarios son a la vez especificación y test
- Lenguaje ubicuo: developers, QA, PMs y stakeholders hablan el mismo idioma
- Test de aceptación automatizado: cada escenario se ejecuta en CI
- Reportes legibles: cuando un build falla, el reporte dice qué comportamiento falla en español
Capítulos
- Introducción a Gherkin y BDD — Origen, Cucumber, Dan North, lenguaje ubicuo
- Anatomía de un .feature — Feature, Scenario, Given/When/Then/And/But
- Tu primer escenario — Hello World ejecutable con Cucumber-JS
- Background y reutilización — DRY en preconditions
- Scenario Outline y Examples — Parametrización con tablas de ejemplos
- Tags y organización —
@smoke,@wip, ejecución selectiva - Data Tables y Doc Strings — Estructuras complejas en steps
- Step Definitions en TypeScript — Cucumber-JS, expresiones, parámetros
- Step Definitions en Python — behave, decorators, parsers
- Hooks y world/context — Before/After, compartir estado entre steps
- Antipatrones Gherkin — Escenarios imperativos, UI-coupled, dependientes
- Living documentation y reportes — HTML, Allure, dashboards
- EARS + Gherkin — Derivar escenarios desde requisitos EARS
- Integración CI/CD — Ejecución en pipelines, paralelización, tags por entorno
Stack del tutorial
Cubrimos los dos stacks más comunes:
- TypeScript + Cucumber-JS (principal): consistente con proyectos web modernos
- Python + behave (secundario): común en QA tradicional y entornos enterprise
Los conceptos son idénticos; solo cambian las anotaciones y el parser. Cada capítulo de step definitions presenta ambos en paralelo.
Audiencia
- QA Engineers que escriben tests de aceptación
- Product Owners que definen criterios de aceptación
- Developers que practican TDD/BDD
- Equipos que adoptan specification by example
Prerrequisitos
- Familiaridad con line de comandos
- Node.js 20+ y/o Python 3.11+ instalados
- Conocimiento básico de testing
Referencia rápida
| Palabra clave | Uso |
|---|---|
Feature | Encabezado de un archivo .feature |
Background | Steps comunes a todos los Scenarios del archivo |
Scenario | Un caso de prueba |
Scenario Outline | Plantilla parametrizada |
Examples | Tabla de valores para un Scenario Outline |
Given | Precondición |
When | Acción/evento |
Then | Resultado esperado |
And / But | Continuación de un Given/When/Then |
Empezá por el capítulo 1.