Durante este curso se proporcionan las bases para la integración con Behat (software de pruebas en sitios web de forma automatizada), la adquisición de conocimientos en la definición de pruebas orientadas a funcionalidades mediante historias de usuario, así como su integración en un entorno Drupal.
Este curso está dirigido a profesionales del mundo online que buscan una forma intuitiva de probar sus aplicaciones en un lenguaje comprensible para personal no técnico, permitiendo su lectura y conceptualización basada en un modelo de negocio claro definido según las especificaciones del cliente.
La formación se distribuye en dos días y puede complementarse con casos prácticos en modalidad de taller en días posteriores sobre proyectos indicados por el solicitante.
What you will learn
Course modules
Pruebas: introducción y tipos
Cada tipo de prueba cubre un nivel diferente del producto: las pruebas unitarias comprueban las partes más pequeñas del código, las pruebas funcionales que una característica específica hace lo que debe, y las pruebas de aceptación que el producto cumple los requisitos del negocio. Estas últimas son las que el cliente puede leer, entender y validar. También se analiza cuándo merece la pena automatizar y cuándo no.
- Descripción del curso
- Prueba: introducción y objetivos
- Tipos de pruebas
- Pruebas unitarias
- Pruebas funcionales
- Prueba de comportamiento
- Selección del tipo de prueba
- Pruebas manuales vs automáticas
BDD: desarrollo dirigido por comportamiento
En BDD, las pruebas se derivan directamente de los requisitos de negocio escritos en lenguaje sencillo, de modo que los equipos de negocio y técnicos parten de una comprensión compartida de cómo debe comportarse el producto. Los escenarios funcionan tanto como pruebas automatizadas como documentación viva: cuando un requisito cambia, el escenario cambia, y lo que no se actualiza no supera las pruebas.
- Descripción
- Metodología
- Descripción de las características del sistema
Las historias de usuario
Convertimos los requisitos abstractos en comportamientos verificables. Partiendo del formato "como… quiero… para que…", añadimos lo que hace comprobable un escenario: precondiciones, poscondiciones, escenarios alternativos y casos de error. Terminamos con la diferencia entre verificar (el sistema hace lo que dice la especificación) y validar (que eso es lo que el negocio realmente necesitaba).
- Casos de uso
- Como ___ quiero ___ para ___
- Precondiciones
- Postcondiciones
- Escenarios alternativos
- Casos de error
- Verificación vs. validación
Introducción a Behat
Behat es la herramienta que ejecuta los escenarios: BDD es la metodología, Gherkin el lenguaje en el que están escritos los escenarios, y Behat el motor que los lee y los comprueba contra el sistema real. Encaja de forma natural en entornos PHP y es ampliamente usado en proyectos Drupal, porque hay pasos ya preparados para nodos, usuarios, permisos, formularios y vistas. Mink es lo que decide si un escenario necesita JavaScript o no.
- ¿Qué es Behat?
- Sintaxis
- Extensiones - Mink
- Descripción
- Controladores
- JavaScript frente a sin JavaScript
Anatomía de una función
Desglosamos un archivo .feature pieza a pieza: la feature describe la funcionalidad que se valida, el scenario un caso específico dentro de ella, y los pasos Given/When/Then las acciones y los resultados esperados. A partir de ahí, las herramientas que evitan repetirse: backgrounds para el contexto compartido, scenario outlines para ejecutar el mismo escenario con varios conjuntos de datos, y variantes para los casos de error.
- Estructura de archivos
- Características
- Pasos
- Escenarios
- Variantes
- Error
- Esquemas de escenarios
- Antecedentes
- Pasos avanzados
- Ejemplo completo
La parte práctica
Primer bloque práctico: configuramos la máquina de pruebas y escribimos escenarios sobre casos reales, desde comprobaciones básicas de acceso y errores hasta visualización de contenido, navegación y formularios, incluyendo los que dependen de JavaScript. La regla en todo momento es mantener solo los pasos que verifican un comportamiento real y descartar los decorativos.
- Instalación de la máquina de pruebas
- Casos prácticos
- Conceptos básicos
- Página de inicio
- Comprobación de acceso
- Errores en las pruebas
- Contenido
- Visualización
- Navegación
- Formularios
- Búsqueda
- Crear contenido
- Formularios con JavaScript
- Conceptos básicos
Instalación e integración en Drupal
Instalamos Behat con Composer en un entorno DDEV y repasamos los paquetes que lo hacen funcionar en Drupal: behat/behat como ejecutor, behat/mink y su extensión para interactuar con el navegador, los controladores correspondientes, y drupal/drupal-extension, que proporciona los pasos específicos de Drupal. Con eso en su lugar, la decisión práctica es cuándo un emulador sin interfaz gráfica es suficiente y cuándo es necesario manejar un navegador real.
- Introducción
- Instalación de componentes
- Composer
- Behat (Behat Drupal Extension)
- Selenium / ChromeDriver
- Integración de Behat en Drupal
- Emuladores de navegación
- Tipos
- Emuladores de navegador sin interfaz
- Controladores de navegador
- Drivers
- GoutteDriver
- Selenium (JavaScript)
- Behat Drupal Extension
Configuración: behat.yml y contextos
En behat.yml se declara todo: los suites, los contextos que proporcionan los pasos disponibles, las extensiones y la URL base del entorno, con perfiles separados para no tener que tocar la configuración principal al cambiar de entorno. También se analiza dónde residen las features y los contextos dentro del proyecto, y cómo cargar los contextos de DrupalExtension junto con la biblioteca propia de Metadrop (metadrop/behat-contexts), que añade utilidades de depuración y capturas de pantalla.
- behat.yml
- Parámetros básicos
- Contextos «Suite»
- Regiones
- Host virtual
- Contextos
- Biblioteca Metadrop (GitHub)
- Integración de contextos
Ejecución y pasos personalizados
Ejecutamos la suite y aprendemos a leer la salida: pasos que pasan, que fallan, que quedan pendientes porque no coincide ninguna definición, y que se omiten porque un paso anterior falló. Desde ahí puedes filtrar por etiquetas o comprobar la configuración con una ejecución en seco. Cuando ningún paso existente encaja, escribe los tuyos en el contexto del proyecto — con parámetros, apoyándose en la API de Drupal y en XPath — guardando los reutilizables en librerías compartidas en lugar de acumularlos en FeatureContext.
- Ejecución de pruebas
- Guzzle
- Selenium (Javascript)
- Desarrollo de pasos personalizados
- Pasos simples
- Pasos con parámetros
- API de Drupal
- Introducción a XPath
- Casos prácticos
