Comment Utiliser Cucumber pour le Test BDD

Ashley Goolam

Ashley Goolam

23 December 2025

Comment Utiliser Cucumber pour le Test BDD

Le Développement piloté par le comportement (BDD) a fondamentalement changé la façon dont les équipes conçoivent la qualité logicielle en rendant les tests lisibles par tous ! Utiliser Cucumber pour les tests BDD est une compétence qui fait le pont entre les exigences métier et l'implémentation technique, créant une documentation vivante qui est réellement exécutée. Si vous avez eu des difficultés avec des cas de test qui deviennent obsolètes dès qu'ils sont écrits, ce guide vous montrera une meilleure approche.

button

Qu'est-ce que Cucumber et le BDD ?

Cucumber est un outil open-source qui exécute des tests automatisés écrits en langage naturel. Il implémente le Développement piloté par le comportement (BDD), une méthodologie où les développeurs, les testeurs et les parties prenantes métier collaborent pour définir le comportement logiciel à l'aide d'exemples concrets.

Le BDD se concentre sur une question : "Que doit faire le système ?" plutôt que "Comment devons-nous le tester ?" Le résultat est un langage partagé qui élimine les malentendus et crée des tests servant à la fois de spécifications et de validation exécutable.

Cucumber lit les fichiers .feature contenant des scénarios écrits en syntaxe Gherkin et les exécute en regard de définitions d'étapes – du code qui réalise l'automatisation réelle. Cette séparation signifie que les parties prenantes métier peuvent examiner les scénarios de test sans lire le code, tandis que les développeurs implémentent les détails techniques séparément.

cucumber

Installation de Cucumber pour JavaScript

La configuration de Cucumber dans un projet Node.js ne nécessite que quelques commandes :

Prérequis :

vérifier si npm et node sont installés sur votre machine locale
# Créer un nouveau répertoire de projet
mkdir cucumber-bdd-demo && cd cucumber-bdd-demo

# Initialiser npm
npm init -y

# Installer Cucumber et les dépendances de test
npm install --save-dev @cucumber/cucumber chai axios
configurer cucumber dans le projet

Votre fichier package.json devrait inclure un script de test :

{
  "scripts": {
    "test": "cucumber-js"
  }
}

Créez cette structure de répertoires :

project/
├── features/
│   └── user-management.feature
├── step-definitions/
│   └── user-steps.js
├── package.json
└── cucumber.json

Guide Pratique : Écrire Votre Premier Test BDD

Construisons un test pour une API de gestion d'utilisateurs afin de démontrer Comment Utiliser Cucumber pour les Tests BDD en pratique.

Étape 1 : Écrire le Fichier de Fonctionnalité

Créez features/user-management.feature :

Fonctionnalité: API de gestion des utilisateurs
  En tant que client API
  Je souhaite gérer les utilisateurs
  Afin de pouvoir intégrer la fonctionnalité utilisateur dans mon application

  Scénario: Créer un nouvel utilisateur avec succès
    Étant donné que j'ai une charge utile utilisateur valide
    Quand j'envoie une requête POST à "/api/users"
    Alors le statut de la réponse devrait être 201
    Et la réponse devrait contenir un ID utilisateur

  Scénario: Tenter de créer un utilisateur avec un e-mail invalide
    Étant donné que j'ai une charge utile utilisateur avec un e-mail invalide
    Quand j'envoie une requête POST à "/api/users"
    Alors le statut de la réponse devrait être 400
    Et la réponse devrait contenir "Format d'e-mail invalide"

Étape 2 : Implémenter les Définitions d'Étapes

Créez step-definitions/user-steps.js :

const { Given, When, Then } = require('@cucumber/cucumber');
const { expect } = require('chai');
const axios = require('axios');

let requestPayload;
let response;

Given('I have a valid user payload', function() {
  requestPayload = {
    name: 'Test User',
    email: 'test@example.com',
    password: 'ValidPass123'
  };
});

Given('I have a user payload with invalid email', function() {
  requestPayload = {
    name: 'Test User',
    email: 'invalid-email',
    password: 'ValidPass123'
  };
});

When('I send a POST request to {string}', async function(endpoint) {
  try {
    response = await axios.post(`http://localhost:3000${endpoint}`, requestPayload);
  } catch (error) {
    response = error.response;
  }
});

Then('the response status should be {int}', function(statusCode) {
  expect(response.status).to.equal(statusCode);
});

Then('the response should contain a user ID', function() {
  expect(response.data).to.have.property('userId');
  expect(response.data.userId).to.match(/^[0-9a-fA-F]{24}$/);
});

Then('the response should contain {string}', function(message) {
  expect(response.data.message).to.include(message);
});

Étape 3 : Modifier le fichier Cucumber.json

Créez un fichier "cucumber.json" dans le répertoire racine de votre projet et ajoutez le code suivant :

{
    "default": {
        "formatOptions": {
            "snippetInterface": "synchronous"
        }
    }
}

Étape 4 : Exécuter les Tests

Exécutez vos tests avec :

npm test

Cucumber affichera des résultats détaillés indiquant quelles étapes ont réussi, sont indéfinies ou ont échoué.

Règles pour Écrire de Bons Scénarios BDD

Apprendre à utiliser efficacement Cucumber pour les Tests BDD nécessite de suivre ces règles éprouvées :

1. Structure Étant donné-Quand-Alors

Chaque scénario doit avoir ces trois parties dans l'ordre :

2. Écrire de Manière Déclarative, Pas Impérative

Mauvais :

Étant donné que j'ouvre le navigateur
Et que je navigue vers "/login"
Et que je saisis "test@example.com" dans le champ e-mail
Et que je saisis "motdepasse" dans le champ mot de passe
Et que je clique sur le bouton de connexion

Bon :

Étant donné que je suis sur la page de connexion
Quand je me connecte avec des identifiants valides
Alors je devrais voir le tableau de bord

Concentrez-vous sur ce que vous testez, pas sur la manière de le faire.

3. Un Scénario, Un Objectif

Chaque scénario doit tester un comportement unique. Les scénarios combinés masquent les échecs et rendent le débogage difficile.

4. Utiliser un Langage Métier

Écrivez des scénarios que les parties prenantes métier peuvent comprendre. Évitez le jargon technique et les détails d'implémentation.

5. Rendre les Scénarios Indépendants

Les scénarios ne doivent pas dépendre les uns des autres. Chacun doit configurer ses propres données et les nettoyer ensuite.

Fonctionnalités Avancées de Cucumber : Tables de Données et Plans de Scénario

Tables de Données pour les Entrées Complexes

Lorsque vous avez besoin de tester avec plusieurs points de données, utilisez des tables :

Scénario: Créer des utilisateurs avec différents rôles
  Étant donné que j'ai les données utilisateur suivantes :
    | nom     | e-mail             | rôle    |
    | Alice    | alice@example.com | admin   |
    | Bob      | bob@example.com   | utilisateur    |
  Quand j'envoie une requête POST à "/api/users"
  Alors tous les utilisateurs devraient être créés avec succès

Définition d'étape :

Given('I have the following user data:', function(dataTable) {
  requestPayload = dataTable.hashes();
});

Plans de Scénario pour les Tests Basés sur les Données

Lorsque vous souhaitez exécuter le même scénario avec des données différentes, utilisez des plans de scénario :

Plan de Scénario: Connexion avec divers identifiants
  Étant donné que je suis sur la page de connexion
  Quand je saisis "" et ""
  Alors je devrais voir ""

  Exemples :
    | e-mail             | motdepasse   | résultat          |
    | test@example.com  | validPass  | Tableau de bord       |
    | test@example.com  | wrongPass  | Mot de passe invalide|
    | invalid@email.com | validPass  | E-mail invalide   |

Cela crée automatiquement trois scénarios de test distincts.

Organisation des Tests avec des Balises

Les balises vous aident à catégoriser et filtrer les scénarios :

@smoke @regression
Scénario: Connexion utilisateur
  Étant donné que je suis sur la page de connexion
  Quand je me connecte avec des identifiants valides
  Alors je devrais voir le tableau de bord

@api @critical
Scénario: Vérification de l'état de l'API
  Étant donné que l'API est en cours d'exécution
  Quand je requiers "/health"
  Alors le statut de la réponse devrait être 200

Exécutez uniquement des balises spécifiques :

npm test -- --tags "@smoke"

Comment Apidog Aide aux Tests API dans les Flux de Travail BDD

Alors que Cucumber excelle à définir le comportement, Apidog automatise le travail fastidieux de création et d'exécution des tests API, rendant les tests Cucumber pour BDD beaucoup plus efficaces.

Génération de Cas de Test API Alimentée par l'IA

Au lieu d'écrire manuellement des définitions d'étapes pour les appels API, Apidog les génère à partir de votre spécification OpenAPI en utilisant l'IA :

# Votre spécification API
paths:
  /api/users:
    post:
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name: string
                email: string
      responses:
        '201':
          description: User created

Apidog crée automatiquement des scénarios prêts à être testés :

button
génération de cas de test dans apidog

Foire Aux Questions

Q1 : Ai-je besoin de savoir programmer pour écrire des tests Cucumber ?

Rép : Écrire des scénarios Gherkin ne nécessite aucune programmation — juste une pensée claire sur le comportement. Cependant, l'implémentation des définitions d'étapes requiert des connaissances en JavaScript (ou autre langage). Des outils comme Apidog réduisent cette charge en générant automatiquement le code de définition d'étape.

Q2 : En quoi Cucumber est-il différent des frameworks de test traditionnels ?

Rép : Les frameworks traditionnels (Jest, Mocha) se concentrent sur l'implémentation technique. Cucumber se concentre sur le comportement métier. Le même scénario Cucumber peut piloter des tests d'interface utilisateur web (Selenium), des tests API (Axios) ou des tests mobiles (Appium) sans modifier le texte Gherkin.

Q3 : Cucumber peut-il remplacer les outils de test API ?

Rép : Cucumber fournit la structure de test, mais vous avez toujours besoin d'outils pour exécuter les appels API (Axios, Supertest) et valider les réponses. Apidog complète Cucumber en gérant la couche d'exécution API tandis que Cucumber gère le flux de travail BDD.

Q4 : Qu'est-ce qui fait un bon scénario Cucumber ?

Rép : Les bons scénarios sont indépendants, utilisent un langage métier, suivent la structure Étant donné-Quand-Alors, et testent un comportement chacun. Ils doivent être lisibles par les parties prenantes non techniques et se concentrer sur ce que fait le système, pas sur la façon dont il le fait.

Q5 : Comment Apidog gère-t-il l'authentification dans les tests BDD ?

Rép : Apidog gère automatiquement les jetons d'authentification. Vous pouvez définir des étapes "Étant donné que je suis authentifié" qui utilisent la gestion des identifiants d'Apidog pour récupérer des jetons valides, éliminant ainsi la gestion manuelle des jetons dans vos définitions d'étapes.

Conclusion

L'utilisation de Cucumber pour les tests BDD transforme efficacement votre processus de développement en créant une compréhension partagée entre les équipes techniques et métier. La syntaxe Gherkin impose la clarté, tandis que la séparation des scénarios et des définitions d'étapes maintient les tests gérables à mesure que votre application évolue.

La véritable puissance vient de l'intégration de Cucumber avec des outils d'automatisation modernes. Apidog élimine le travail manuel fastidieux d'écriture de code de test API, vous permettant de vous concentrer sur la définition de comportements significatifs pendant qu'il gère l'exécution. Cette combinaison offre le meilleur des deux mondes : des spécifications lisibles par l'homme qui servent de documentation vivante, et des tests automatisés robustes qui s'exécutent en continu.

Commencez petit. Choisissez un point de terminaison API. Écrivez trois scénarios : succès, échec et cas limite. Implémentez les définitions d'étapes. Exécutez-les. Montrez les résultats à votre chef de produit. Une fois qu'ils verront les exigences métier exécutées sous forme de tests, vous obtiendrez l'adhésion pour étendre le BDD à l'ensemble de votre projet. C'est alors que l'utilisation de Cucumber pour les tests BDD cesse d'être une pratique technique et devient un mouvement qualité à l'échelle de l'équipe.

button

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API