Considéré comme un héritage du Test-Driven-Devlopment (TDD) le Behavior-Driven Development, ou BDD requiert une augmentation du niveau de collaboration des membres de l’équipe projet. Le développeur, le testeur et le Product Owner doivent travailler ensemble sur la définition de chaque fonctionnalité en se basant sur des mots clés et des règles à respecter.
Le processus métier, pour lequel la solution est en cours de développement, est mis en avant.
Le Principe du BDD en Agilité
Le BDD se base sur la description du comportement associé à la fonctionnalité. Le comportement souhaité par rapport au besoin de l’utilisateur du logiciel à développer.
Le BDD utilise un modèle appelé Gherkin. C’est un ensemble de règles qui rend la description des étapes de test suffisamment structurée pour que sa compréhension soit facile pour l’ensemble de l’équipe projet. L’utilisation d’un référentiel de test qui supporte le format BDD permet de faciliter l’apprentissage d’appliquer ce concept. Notre société « Abid Consulting » propose la platefomre QACoverage pour couvrir ce besoin. N’hésitez pas à nous contacter pour vous donner plus de détails.
Un ensemble de scenarii couvre une fonctionnalité ou Feature. Une fonctionnalité est définie dans un fichier .feature et structurée de la manière suivante :
Désignation en Anglais | Désignation en Français | Description |
Feature | Fonctionnalité | Décrire la fonctionnalité |
In order to | Pourquoi | Définir la raison de l’action |
As a | Qui | Définir le rôle de l’utilisateur |
I want to | Quoi | Décrire le comportement souhaité par l’utilisateur |
Voici un exemple de la définition d’une “feature” :
Feature: Listing command
In order to change the structure of the folder I am currently in
As a UNIX user
I need to be able to see the currently available files and folders there
Par la suite, une liste de scenarii de test devrait permettre de couvrir l’ensemble des critères d’acceptation de la fonctionnalité souhaitée.
La définition de la structure d’un scénario BDD est présentée sous la forme suivante :
Désignation en Anglais | Désignation en Français | Description |
Scenario | Scénario | Définir le titre du scénario de test |
Given | Etant donné | Définir l’état initial de la fonctionnalité |
When | Lorsque | Expliquer l’action à lancer |
Then | Alors | Décrire le résultat attendu |
Voici un exemple d’un scenario de test :
Scenario: Listing two files in a directory
Given I am in a directory « test »
And I have a file named « foo »
And I have a file named « bar »
When I run « ls »
Then I should get:
« » »
bar
foo
« » »
Source d’exemple de test BDD : https://docs.behat.org/en/latest/guides.html
L’automatisation avec le BDD
Le BDD, par sa structure, facilite énormément l’automatisation des tests. Le Langage Gherkin basé sur les mots clés “Given, When, Then” permet de transformer aisément le scénario de test en script automatisé.
La définition des critères d’acceptation au démarrage de l’activité de développement permet à l’équipe de test de valider les scenarii de test et développer les scripts pour une exécution automatisée.
En mettant en place un système d’intégration continue comme Jenkins ou Circle CI, l’exécution des tests automatisés est possible dès l’intégration des fonctionnalités par l’équipe de développement. Ces mêmes scripts de test peuvent être exécutés pendant les campagnes de test de non-régression.
Les frameworks permettant d’appliquer le BDD
Plusieurs solutions sur le marché sont disponibles et permettent d’appliquer le BDD. Voici un exemple d’outils qui peuvent répondre au besoin de mise en place d’automate de test en BDD :
Framework | Commentaire |
Cucumber | Solution open source, la plus répandue sur le marché. Supporte plusieurs langages de programmation |
Hiptest | Racheté par Smartbear, Hiptest fait partie de CucumberStudio |
SpecFlow | Solution d’automatisation en .Net |
Behat | Framework d’automatisation en php |
Cet article permet de présenter le BDD comme une solution pour définir les critères d’acceptation dans un projet Agile. N’hésitez pas à nous contacter, si vous souhaitez être accompagné pour la mise en place d’un système de test automatisé avec du BDD,