¿Qué es Behat?
Behat es una herramienta de
BDD(Behaviour Driven Development) que se utiliza para revisar el comportamiento de una aplicación desde la perspectiva de un final. Es muy popular el uso de esta herramienta para pruebas de automatización de casos, usando escenarios inteligibles para los humanos.
Para redactar los test se usa el lenguaje, muy afín al Inglés, de manera que se puedan redactar los test de la forma "Teniendo en cuenta que... Entonces debería...". Se puede además extender escribiendo funciones PHP adaptadas en el fichero FeatureContest.php que se crea en la carpetita bootstrap.
¿Cuando usar Behat?
Behat ayuda a cumplir con las especificaciones y requisitos del cliente pues marcha con
testque describen escenarios de posibles comportamientos del usuario en la página web. Estos test pueden ser creados y mantenidos por cualquier persona, así sea un gerente de proyecto, un desarrollador o cualquier otra parte interesada en el proyecto.
Los
test automatizadosde Behat pueden asistir a:
¿Donde no puede asistir Behat?
A continuación pasamos a la fase de instalación, para arrancar Behat en nuestro Drupal desde cero.
Instalación
Se puede instalar de forma cómoda y sencilla a través de
composer. Agrega estas lineas a tu composer.json en Drupal, o bien, en una carpetita /behat aparte.
Luego dejamos que composer haga su trabajo:
dólares americanos composer install
Después de esto, tendremos nuevas carpetas como:
/bin (Donde está el ejecutable de behat y otros como drush)
/vendor (todas las dependencias precisas)
Ahora precisamos este otro archivo:
behat.yml
Recuerda modificar la url que deseas testar en: base_url.
Luego:
dólares americanos bin/behat --init
Y el paso final:
$ bin/behat -dl
Este listado muestra las posibles acciones que podemos utilizar en los test, y su sintaxis.
Escribiendo nuestros primeros test. Escenarios
Los escenarios describen la funcionalidad que deseamos testear, como si fuese un usuario final. Estos escenarios se escriben en unos ficheros llamados fueatures y se alojan en la carpeta /features.
Ejemplo, deseamos testear que un usuario anónimo en Drupal, puede comenzar y cerrar apropiadamente su sesión. En el front hemos habilitado un bloque que sólo verán los usuarios registrados, con un texto "BIenvenido usuario". El usuario anónimo no debería ver ese bloque, ni el de herramientas.
Creamos un fichero nuevo en /features:
home.feature
Ahora, lanzamos el test, desde la raiz del proyecto
dólares americanos bin/behat
Como podemos ver, el escenario es válido y se valida el test completo sin aparecer fallos (once pasos / 11 pasaron).
Supongamos que accidentariamente cambiamos la configuración del bloque, y queda perceptible también para usuarios anónimos, lanzamos de nuevo el test, y mostraría lo siguiente:
Y ahí tenemos perceptible el fallo, identificado de forma perfecta el escenario.
Conclusiones
Esta herramientapor tanto
ayuda a adoptar buenas prácticasen los equipos de desarrollo, siendo muy recomendable la rutina de ejecutar los test ya antes de enviar un commit, para asegurarnos que el código no genera regresiones, aun su integración con herramientas de integración continua como
Jenkins.