Maîtriser l’ATDD et le BDD : Introduction à Behat pour les Product Owners

Disclaimer: Je regardais mes articles phares de mon blog et je suis retombé sur mon article de l’ATDD et notamment Behat, je me suis rendu compte qu’il avait déjà 11 ans 😱 !!!!!
Voilà pourquoi un petit update, ne ferait pas de mal autour des concepts d’ATDD/BDD, qui restent des concepts clés encore aujourd’hui dans le développement logiciel de qualité !
N’hésites pas à relire cette relique autour de Behat et l’ATDD en 2012 … mis à jour en 2016 💪 😎

Les Tests d’Acceptation : Une Clé de Voûte de l’ATDD et du BDD avec Behat

Lorsqu’il s’agit de garantir que les nouvelles fonctionnalités répondent précisément aux exigences des utilisateurs, les tests d’acceptation se révèlent être un outil indispensable. Mais que sont exactement les tests d’acceptation ? Ce sont des conditions que le logiciel doit satisfaire pour être accepté par un utilisateur, un client ou, dans notre cas, par un Product Owner. Ces tests sont souvent écrits sous forme de scénarios utilisateurs, qui guident le développement et valident le bon fonctionnement des fonctionnalités.

ATDD : Un Cadre Structuré pour les Tests

Dans la méthodologie ATDD (Acceptance Test-Driven Development), ces tests d’acceptation sont rédigés avant même que le code ne soit implémenté. C’est une pratique qui s’inscrit dans une démarche de développement guidée par les tests, une approche qui, je l’ai découvert, est fortement préconisée par des experts tels que Claude Aubry. Celui-ci suggère d’utiliser un modèle d’écriture éprouvé pour les Product Owners, dérivé d’une méthode utilisée par Cucumber, un outil logiciel bien connu dans les cercles de développement Python initialement.

Gherkin et BDD : Des Langages des Comportements

Alors que je me plongeais plus profondément dans la documentation, j’ai découvert que la syntaxe utilisée pour écrire ces tests est connue sous le nom de Gherkin. Cette notation est au cœur du BDD (Behavior-Driven Development), une technique de développement logiciel qui encourage la collaboration entre développeurs, QA et non-techniciens.

Given – When – Then

La rédaction des scénarios en Gherkin est une composante essentielle du Behavior-Driven Development (BDD), une méthode de développement logiciel qui met l’accent sur la collaboration entre les développeurs, les testeurs et les utilisateurs non techniques.

Le format Gherkin se distingue par sa simplicité et sa lisibilité, utilisant un langage naturel pour décrire le comportement et les attentes d’une fonctionnalité.

Chaque scénario Gherkin suit généralement une structure Given-When-Then :
« GIVEN (Étant donné) » un contexte initial,
« WHEN (Quand) » une action spécifique est entreprise,
« THEN (Alors) » un résultat attendu doit se produire.

Cette structure permet de créer des tests clairs et compréhensibles qui servent à la fois de documentation et de base pour les tests d’acceptation automatisés. En facilitant la communication entre les parties prenantes techniques et non techniques, les scénarios Gherkin aident à aligner le développement sur les besoins réels des utilisateurs et à garantir que le logiciel livré répond effectivement aux exigences métier.

Voici un exemple de code / scénario pour vous montrer la simplicité de rédaction en langage naturel pour vous les PO 😮

# Langage : Gherkin
# Exemple de scénario pour une fonctionnalité de connexion utilisateur

Fonctionnalité: Connexion utilisateur
  En tant qu'utilisateur de l'application web
  Je souhaite pouvoir me connecter
  Afin d'accéder à mon espace personnel

  Scénario: Connexion réussie avec des identifiants valides
    GIVEN que je suis sur la page de connexion
    WHEN je saisis mon nom d'utilisateur "user@example.com"
    AND que je saisis mon mot de passe "Password123"
    AND que je clique sur le bouton de connexion
    THEN je devrais être redirigé vers mon espace personnel

  Scénario: Échec de la connexion avec un mot de passe incorrect
    GIVEN que je suis sur la page de connexion
    WHEN je saisis mon nom d'utilisateur "user@example.com"
    AND que je saisis un mot de passe incorrect "WrongPassword"
    AND que je clique sur le bouton de connexion
    THEN un message d'erreur "Identifiants invalides" devrait s'afficher

Ce morceau de code Gherkin décrit deux scénarios typiques pour une fonctionnalité de connexion : un scénario où l’utilisateur se connecte avec succès et un autre où la connexion échoue à cause d’un mot de passe incorrect. Chaque scénario suit la structure Given-When-Then (Étant donné-Quand-Alors) pour décrire clairement le contexte, l’action et le résultat attendu.

Les tableaux de données 🤯🤯

Dans l’exemple ci-dessous, le « Scenario Outline » permet de réutiliser le même scénario avec différentes combinaisons de noms d’utilisateur et de mots de passe. Les valeurs entre « <> » sont des paramètres qui seront remplacés par les données fournies dans le tableau « Exemples ». Ce type de scénario est particulièrement utile pour tester une fonctionnalité avec plusieurs ensembles de données sans avoir à réécrire le même scénario plusieurs fois. Ce qui est complètement « Mindf*ck » 😮😮😮

# Langage : Gherkin
# Exemple de scénario avec Scenario Outline pour tester la connexion utilisateur avec différentes données

Fonctionnalité: Connexion utilisateur avec plusieurs ensembles de données
  En tant qu'utilisateur de l'application web
  Je souhaite tester la connexion avec différents ensembles de données
  Afin de vérifier le comportement de l'application avec des identifiants variés

  Plan du Scénario: Connexion avec différents identifiants
    Étant donné que je suis sur la page de connexion
    Quand je saisis le nom d'utilisateur "<username>"
    Et que je saisis le mot de passe "<password>"
    Et que je clique sur le bouton de connexion
    Alors le résultat devrait être "<outcome>"

    Exemples:
      | username            | password       | outcome               |
      | user@example.com    | Password123    | redirection vers espace personnel |
      | user@example.com    | WrongPassword  | message d'erreur "Identifiants invalides" |
      | invalid@example.com | Password123    | message d'erreur "Identifiants invalides" |

Behat : L’Outil BDD pour PHP

C’est alors que Behat entre en scène, un outil BDD dédié au PHP. Inspiré par Cucumber, Behat utilise le langage Gherkin pour permettre aux développeurs d’écrire des tests clairs et compréhensibles. Ce qui distingue Behat, c’est sa compatibilité native avec PHP, en particulier avec le framework Symfony, grâce à un bundle dédié.

L’avantage de Behat sur les Autres Outils

Qu’est-ce qui fait de Behat un choix supérieur à d’autres outils comme RobotFramework ? Sa facilité d’intégration avec Symfony, sa syntaxe intuitive et la possibilité d’exécuter des tests directement depuis la console en font un choix de prédilection pour les développeurs PHP.

Test et Intégration

J’ai eu la chance au cours de ces dernières années et lorsque je travaillais avec des équipes PHP de travailler avec Behat, et je peux vous dire que c’était bien fluide.

Malgré tout, je ne suis pas aussi sûr qu’aujourd’hui ce soit toujours le meilleur outil de BDD en PHP, il me faudrait faire de nouveaux tests et analyser un peu plus en profondeur la concurrence en 2023.

Pour ceux qui souhaiteraient ce plonger dedans je vous recommande forcément la doc officielle qui est pas mal du tout pour le coup : https://docs.behat.org/en/latest/ !

Partage d’Expérience

Je vous tiendrai informés de mes découvertes. Entre-temps, si vous avez déjà utilisé Behat ou pratiqué l’ATDD, je serais ravi de lire vos retours en commentaire. Chaque partage d’expérience enrichit notre connaissance collective.

Retrouvez bientôt plus d’insights sur coffee-meeting, le blog dédié à l’agilité et à l’innovation dans le développement logiciel. 😉

❤️

Partager cet article:

Ecrit par André De Sousa

Je suis un coach Agile ayant plus de 10 années d'expérience Agile et 15 d'expérience dans la Tech. J'ai coaché/mentoré/animé plus d'une vingtaine d'équipes faisant du Scrum, XP ou du Kanban depuis mes débuts en agilité ainsi que des organisations en pleine transformation agile. Enfin, avec une "fail startup" à mon actif, j'aide les entrepreneurs qui se lancent pour leur éviter de reproduire mes propres erreurs. Actuellement Coach Agile / Formateur / Scrum Master / Hackathon Organizer /Learning Expedition Organizer chez The Valley.

0 Commentaire

Partager vos opinions ! Laisser un Commentaire

XHTML TAGS AUTORISES

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Vous avez aimé ? Vous aimerez aussi...