Agence web et solutions IT, Experts Symfony contact@avanim-prod.com

BEHAT OR NOT BEHAT ?

20 octobre 2015 Guillaume Goncalves Technologies de développement Étiquettes : , , , 0 Comments

Avez-vous déjà entendu parler de BEHAT ? Non ? OK ça tombe bien c’est le sujet de cet article.68747470733a2f2f646c2e64726f70626f7875736572636f6e74656e742e636f6d2f752f3238323739372f62656861742f62656861742e706e67

Qu’est-ce donc ?

BEHAT est un outil permettant de réaliser des tests d’acceptation indissociables de la philosophie SCRUM. De plus, les tests effectués permettent d’assurer aux clients que telle ou telle fonctionnalité puisse répondre exactement à ce qui a été demandé.

Il s’inscrit dans une logique BDD (Behavior Driven Development)

Mais comment cela fonctionne-t-il ?

Il me semble nécessaire de séparer ce chapitre en deux parties, afin que chacun puisse s’identifier suivant son rôle dans un projet.

1- Client / Product owner :

Pour vous, rien de bien compliqué. En effet il vous suffit d’écrire un document type dont la base vous a été certainement transmise par vos développeurs. Sur ce même modèle, vous décrivez vos fonctionnalités une par une (appeler ici scénario).

Par exemple : si je veux gérer des articles sur mon blog .

Les développeurs vont me comuniquer un fichier nommer par exemple article.feature qui contiendra en premier lieu la langue utilisée par exemple : # language: fr

Ainsi qu’un descriptif de la fonctionnalité :

Fonctionnalité: gérer des articles
 Afin de gérer le contenu de mon site
 En tant que rédacteur
 Je dois être capable d'effectuer des opérations telles que création, édition, suppression 

A la suite de la fonctionnalité je vais décrire pas à pas mes scénarii. On peut déjà imaginer la création, qui pourrait ressembler à ceci par exemple :

Scénario: Poster un article
 Etant donné que je suis inscrit
 Et que je possède le rôle rédacteur
 Et que je clique sur "Poster un article"
 Et que je suis sur la page de création 
 Et que je remplis le champ "titre" avec "test" et le champ "contenu" avec "test contenu"
 Et que je clique sur le bouton "Poster"
 Alors, je dois avoir +1 article à mon actif sur mon compte

Examinons ensemble cet exemple plutôt simple:
Chaque premier mot (ici : Etant donné que, Et que, Quand), sera traduit comme une condition, ce qui vous permet à terme d’être absolument sûr que la fonctionnalité exécute tout ce que vous voulez.

Vous pouvez noter que ce scénario a été écrit en français. Eh oui ! Behat vous permet d’écrire différentes langues selon votre choix. Pour connaître la liste de ces-dernières, je vous invite à consulter le site officiel de Behat.

Evidement cet exemple reste très basique et les scénarii seront en général plus complexes, en fonction de vos projets.

2- Développeur :

Pour nous autres développeurs le challenge est plus relevé ! En premier lieu, on récupère le fichier complété par le client ou le product owner (reprenons dans notre exemple le fichier article.feature).

Il ne nous reste plus qu’à regarder comment notre client a imaginé la fonctionnalité, afin de développer celle-ci ainsi que tous les tests permettant de vérifier les scénarii. Où mettre les tests me demandez-vous ? Grâce à deux commandes magiques:

behat –init : Initialisation d’un projet behat. Celui-ci va nous créer un dossier Features avec à l’intérieur un dossier bootstrap contenant un autre fichier : FeatureContext.php . Vos fichier .feature seront à placer dans notre dossier Features.

behat : Lancement des tests . On constate que la première fois behat va nous donner un code à copier dans le fichier FeatureContext.php. Il ne nous reste plus qu’à écrire nos tests phpUnit correspondant à chacune des fonctions générées précédemment.

Afin de lancer nos tests ultérieurement, on lance à nouveau la commande behat. Une fois que nos tests ont été exécutés, on aura le droit à un résumé qui nous dira s’il n’y a pas eu d’erreur. Et le cas échéant, Behat nous indiquera quelles sont les fonctions qui ont échouées.

Note: L’exécutable de Behat peut se trouver dans un autre chemin en fonction des frameworks utilisés, par exemple sous Symfony2 celui-ci se situe dans le dossier bin. La commande sera donc : bin/behat

Avantages et inconvénients :

Vous l’aurez compris, le fait d’utiliser Behat permet à terme d’avoir une meilleure vision de ce qu’attend le client sur son projet et nous éviter des remarques du style « Ce n’est pas exactement ce que je voulais pour cette fonctionnalité » , et donc un gain de temps considérable sur le développement. Ainsi, le client est assuré d’avoir exactement ce qu’il a demandé. Par contre évidement cela demande plus d’implication de sa part car rédiger des scénarii complexes peut être chronophage. De plus le temps de développement s’en trouve allongé, les développeurs devant rédiger leurs tests et faire en sorte qu’ils soient validés avant de passer à autre chose.

Voilà j’espère que j’ai réussi à vous éclairer sur Behat, pour ma part je suis conquis. N’hésitez pas à nous faire connaître votre opinion et/ou votre expérience avec cet utilitaire.
La prochaine fois je vous ferai découvrir les arcanes de Jenkins. Quoi ? Qu’est-ce ? See you soon

 

Submit a comment