Behat, framework de tests naturels


Technique

Behat est un framework PHP permettant de faire du développement piloté par le comportement (BDD, Behavior Driven Development). Le BDD est une méthode agile qui consiste à écrire des scénarii lisibles par des humains et qui décrit le fonctionnement de l’application.
Ces scénarii peuvent être exécutés pour en tester l’implémentation.

Pourquoi utiliser Behat ?

Behat a été créé par Konstantin Kudryashov pour pallier certaines problématiques que l’on peut rencontrer lors de l’écriture de tests “classiques”. On se pose souvent les questions : « Par quel bout commencer ? Quelle granularité des tests ? »…

Voici quelques avantages de son utilisation :
– Behat offre un point de vue moins technique et un peu plus fonctionnel
– Les tests sont écrits en langage “naturel”
– Le travail conjoint entre le fonctionnel et la technique permet un suivi projet plus conséquent
– Dans la mesure où le client est assez mature avec la méthodologie agile, on peut faire une recette fonctionnelle en BDD
– Pas de régression fonctionnelle
– Tests fonctionnels automatisables

Un exemple est toujours plus parlant qu’un discours. Imaginez que vous souhaitez spécifier une application où l’on peut créer des comptes clients. Voici comment le scénario pourrait être rédigé :

Feature
Scenario: Fill in registration form
Given I am a new user
And I am on the homepage
When I click "Register Now"
And I fill in "E-mail" with "test@domain.com"
And I press "Create new account"
Then I should see the success message "Your account has been created"

Quelques explications sur le scénario ci-dessus :

Pour exécuter ces tests, Behat se sert de mots-clés prédéfinis :

  • Scenario
    Description textuelle d’un test. Il peut y avoir plusieurs scenarii pour tester une même fonctionnalité.

  • Given
    Détermine un état, une pré-condition pour exécuter le scénario.

  • When
    Détermine un événement

  • And
    Détermine une autre action

  • Then
    Détermine le résultat attendu

Le mot clef « And » peut être associé aux mots-clef Given, When, et Then pour ajouter des pré-conditions, des actions et/ou des résultats.

Il est possible d’écrire nos scénarii en anglais, comme dans d’autres langues.

Comment intéger Behat dans Symfony ?

La façon la plus simple et la plus courante d’installer Behat est de passer par Composer.

Créez un fichier composer.json à la racine de votre projet :

{
"require": {
"behat/behat": "2.4@stable",
"behat/symfony2-extension": "*@stable",
"behat/mink-bundle": "*@stable",
"behat/mink-browserkit-driver": "*@stable",
"behat/mink-zombie-driver": "*@stable"
},
"minimum-stability": "dev",
"config": {
"bin-dir": "bin/"
}
}

« behat/behat » : cœur de Behat.
« behat/symfony2-extension » : intégration à Symfony 2, permet de générer et lancer des suites de tests.
« behat/mink-bundle » : bundle créé pour écrire des tests fonctionnels pour les applications symfony2.
« behat/mink-extension » : navigateur « headless » se reposant sur des « drivers »
« behat/mink-zombie-driver » : permet de tester du javascript

Créez ensuite un fichier behat.yml dans le répertoire config/ de votre application :

default:
extensions:
Behat\Symfony2Extension\Extension:
mink_driver: true
Behat\MinkExtension\Extension:
default_session: 'symfony2'
base_url: https://your-project.local/

Enfin, installez composer.phar et lancez la commande d’installation :

$ curl https://getcomposer.org/installer | php
$ php composer.phar install

Vous pouvez maintenant écrire vos features et les exécuter :

$ bin/behat --init
$ bin/behat @MonBundle

Vous avez maintenant toutes les armes nécessaires pour commencer à faire vos tests avec Behat. Pour plus d’informations, voir la documentation officielle.

Laisser un commentaire