# BDD — Behavior Driven Development ## Índice - [Overview](#overview) - [Features](#features) - [Step Definitions](#step-definitions) --- ## Overview Este directorio contiene especificaciones BDD en formato Gherkin. Los archivos `.feature` sirven como especificación ejecutable. ### naming conventions ``` features/ ├── / │ ├── .feature │ └── .feature └── common/ └── .feature ``` ### tags permitidos | Tag | Uso | |-----|-----| | `@F-XXX` | Link a feature del backlog | | `@smoke` | Tests críticos (siempre ejecutar) | | `@regression` | Tests de regresión | | `@integration` | Tests de integración | | `@e2e` | End-to-end tests | | `@unit` | Tests unitarios | | `@api` | Tests de API | | `@ui` | Tests de interfaz | --- ## Features Ver `spec/bdd/features/` para los archivos `.feature`. --- ## Step Definitions Los step definitions deben estar en: - Python: `features/steps/*.py` - JS/TS: `features/step_definitions/*.ts` - Go: `features/steps/*.go` ### Template (Python/Behave) ```python """Steps para login feature.""" from behave import given, when, then @given('un usuario registrado con email "{email}" y password "{password}"') def step_registered_user(context, email, password): """Crea usuario de prueba.""" pass @when('el usuario ingresa su email "{email}"') def step_enter_email(context, email): """Ingresa email en el formulario.""" pass @when('ingresa password "{password}"') def step_enter_password(context, password): """Ingresa password.""" pass @then('el sistema muestra mensaje de error "{message}"') def step_show_error(context, message): """Verifica mensaje de error.""" pass ``` --- ## Ejecutar Tests ### Python (Behave) ```bash behave features/ behave features/ --tags @smoke behave features/ --tags ~@slow # exclude ``` ### Node.js (Cucumber) ```bash npx cucumber-js features/ npx cucumber-js features/ --tags "@smoke and @F-001" ``` --- ## Checklist de Feature - [ ] Feature documentado en Gherkin - [ ] Todos los scenarios tienen Given/When/Then - [ ] Tags `@F-XXX` presentes - [ ] Step definitions implementados - [ ] Tests ejecutables