BEHAT, mais pour quoi faire ?

behat

« Behat » est un cadre de développement open source qui peut être utilisé avec PHP 5.3 et 5.4. Celui ci va permettre de faire le lien entre ces tests d'acceptation, écrits par le Product Owner (propriétaire du produit), et le produit que moi, développeur, je lui livre. Il permet de lancer ces tests d'acceptation de manière automatisée sur le produit et d'en fournir un rapport lisible par n'importe quel client.

Installation de Behat :

  • Créez le fichier « composer.json » dans la source du projet
  • Installez le composer-setup.exe et activez php.ini, puis activez « extension=php_openssl.dll »
  • Ajoutez dans la variable d'environnement « l’installation du composerSetup\bin »
  • Installez via commande le fichier: « composer.phar »
           commande : « composer install »

Démarrage d’un projet :

Créez un dossier dans la racine du projet exemple « tests » puis se positionner dans ce dossier et faire la commande d’initialisation du projet :
« behat –init »

Après l’initialisation du projet, on obtient des dossiers nécessaires pour le projet :

  • features : les fichiers de fonctionnalité *.feature
  • features/bootstrap : les classes nécessaires au fonctionnement des fonctionnalités (contextes)
  • features/bootstrap/FeatureContext.php : le contexte principal

Définition de features :

  • « Features » est un fichier simple, lisible avec un texte brut, dans un format appelé Gherkin.
  • Chaque fichier *.feature est composé d'une seule "fonction"
  • Une ligne commençant par le mot-clé "Feature" suivi de son titre et trois lignes en retrait définissent le début d'une nouvelle fonctionnalité.
  • Les« features » contiennent généralement une liste de scénarios.

Définition Test Fonctionnel :

  • On vérifie que chaque fonction est correctement implémentée (= conforme aux exigences / spécifications).
  • On vérifie chaque fonction indépendamment les unes des autres, généralement en terme d'entrées/sorties.

Définition Test Acceptation :

  • On vérifie que le produit répond aux attentes de l'utilisateur (= conforme aux besoins / cahier des charges).
  • On vérifie le produit dans son ensemble, généralement avec des scénarios réalistes d'utilisation.
  • Cas d’utilisation rédigé par le client.Grâce à ces tests d’application, on peut satisfaire la demande du client, et éviter l’ajout de nouvelles fonctionnalités par le client au fur et à mesure du développement.

Structure d’une fonctionnalité :

  • Chaque option commence avec une ligne pour la description de la fonctionnalité,
  • Suivi de trois lignes qui décrivent la prestation, le rôle et la fonction elle-même

Exemple :

Fonctionnalité : Avoir un compte bancaire
Afin d’offrir aux utilisateurs la possibilité d’avoir un compte bancaire
Etant donné que je suis inscrit
Je dois être capable d’ajouter ou de retirer de l’argent sur mon compte

Ce fichier se trouve dans « features/banque.feature » par exemple.
Dans ce dernier, ne pas oublier de mettre le commentaire « #language : fr » au début du fichier qui indique que la fonctionnalité est décrite en français.

Le Product Owner va fournir des cas d’utilisation qui vont décrire cette fonctionnalité. On parle alors de « Scénario ».

Structure d’un scénario : chaque scénario est défini par

  • Un contexte (étant donné que) (Given)
  • Des événements déclencheurs (quand) (When)
  • Un résultat attendu (alors) (Then)

Exemple :

Scénario :
Etant donné que j’ai un compte bancaire
Et que le solde de mon compte est de «10 » euros
Quand j’ajoute « 5 » euros sur mon compte
Alors mon solde doit être de « 15 » euros

Ce fichier se trouve dans « features/banque.feature » .
Chaque partie dans le scénario "contexte", " événements", " résultat " peut être étendue par les mots clés "et", "mais".

Lancement du test :  allez dans « test/features », puis tapez la commande :

"behat –lang=fr"

On aura ensuite un rappel de fonctionnalités, s’il y a des erreurs, le texte est écrit en rouge, si tout est ok, le texte est en vert. S’il est en orange, il n’y a pas encore de signification par rapport au produit. Puis un bilan du test.

Donner du sens aux fonctionnalités :

En effet, on n'a rien qui fait le lien entre les scénarios (les souhaits du product owner) et notre produit (le code source).  Behat fournit le code PHP nécessaire pour créer ce lien, avec pour chaque phrase :

  • L'annotation qui permet de faire le lien (@Given /^ j’ai un compte bancaire$/)
  • La méthode à insérer pour donner du sens à cette phrase (public function queJeSuisUnNouveauClient())
  • Les valeurs de cas du scénario (encadrées par des guillemets), qui sont fournies en paramètres de la méthode. 

Behat nous fournit le code à copier-coller vers la classe qui gère notre contexte principal, à savoir la classe FeatureContext contenue dans «  /features/bootstrap/FeatureContext.php ». On constate que chaque méthode lance une exception de type « PendingException ». Cela signifie qu'il va falloir modifier ces méthodes pour les relier à notre application.

Configuration langue :

« Behat » permet également d'écrire des fonctions dans la langue de notre choix. En d'autres termes, au lieu d'écrire métrage, Scénario ou donnée, on peut choisir la langue désirée en configurant « Behat ». Pour vérifier que la langue choisie est prise en charge par Behat et voir les mots-clés disponibles, exécutez la commande :        « behat --story-syntax --lang YOUR_LANG »

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.