image de chargement
Retour au glossaire

ATDD (Acceptance Test-Driven Development)

Méthode de développement pilotée par des tests d'acceptation écrits en collaboration avant le code, alignant équipe technique et métier.

Mis à jour le 4 mars 2026

L'Acceptance Test-Driven Development (ATDD) est une pratique de développement agile où les tests d'acceptation sont définis collaborativement par les développeurs, testeurs et représentants métier avant l'implémentation. Cette approche garantit que tous les acteurs partagent une compréhension commune des exigences fonctionnelles et que le code produit répond précisément aux besoins métier. L'ATDD crée un pont entre les spécifications métier et la vérification technique, réduisant les malentendus et les écarts par rapport aux attentes.

Fondements de l'ATDD

  • Collaboration tripartite (développeurs, testeurs, métier) pour définir les critères d'acceptation avant le développement
  • Rédaction de tests d'acceptation automatisés servant de spécification exécutable et de documentation vivante
  • Cycle itératif : discussion → test → implémentation → validation, garantissant l'alignement continu
  • Utilisation de langages accessibles (Gherkin, tableaux de décision) pour faciliter la compréhension par tous les profils

Avantages de l'ATDD

  • Clarification précoce des exigences, réduisant les ambiguïtés et les incompréhensions coûteuses
  • Amélioration de la collaboration entre équipes techniques et métier, créant un langage commun
  • Réduction des défauts en production grâce à une validation systématique des comportements attendus
  • Documentation automatiquement à jour sous forme de tests exécutables reflétant les fonctionnalités réelles
  • Feedback rapide sur l'adéquation du code aux besoins métier, accélérant les cycles de développement

Exemple concret d'ATDD

Prenons l'exemple d'une fonctionnalité de panier e-commerce. L'équipe se réunit pour définir les critères d'acceptation en utilisant la syntaxe Gherkin :

panier-remise.feature
Feature: Application de remise au panier
  En tant que client
  Je veux bénéficier d'une remise automatique
  Afin d'économiser sur mes achats importants

  Scenario: Remise de 10% pour achat supérieur à 100€
    Given un panier vide
    When j'ajoute des articles pour un montant total de 120€
    Then une remise de 12€ est appliquée
    And le montant final est de 108€

  Scenario: Pas de remise pour achat inférieur à 100€
    Given un panier vide
    When j'ajoute des articles pour un montant total de 80€
    Then aucune remise n'est appliquée
    And le montant final est de 80€

Ces scénarios sont ensuite automatisés avec un framework comme Cucumber, puis le code est développé pour faire passer ces tests :

panier.steps.ts
import { Given, When, Then } from '@cucumber/cucumber';
import { Panier } from '../domain/Panier';
import { expect } from 'chai';

let panier: Panier;

Given('un panier vide', function() {
  panier = new Panier();
});

When('j\'ajoute des articles pour un montant total de {float}€', function(montant: number) {
  panier.ajouterMontant(montant);
});

Then('une remise de {float}€ est appliquée', function(remise: number) {
  expect(panier.getRemise()).to.equal(remise);
});

Then('aucune remise n\'est appliquée', function() {
  expect(panier.getRemise()).to.equal(0);
});

Then('le montant final est de {float}€', function(montant: number) {
  expect(panier.getMontantFinal()).to.equal(montant);
});

Mise en œuvre de l'ATDD

  1. Organiser un atelier de spécification avec développeurs, testeurs et Product Owner pour identifier les scénarios d'acceptation
  2. Rédiger les tests d'acceptation dans un format lisible (Gherkin, FitNesse) décrivant les comportements attendus
  3. Automatiser ces tests avec des frameworks adaptés (Cucumber, SpecFlow, Robot Framework) pour créer une suite exécutable
  4. Développer le code minimal nécessaire pour faire passer chaque test d'acceptation, en suivant le cycle rouge-vert-refactor
  5. Exécuter la suite de tests d'acceptation en continu (CI/CD) pour détecter rapidement les régressions
  6. Raffiner et enrichir les tests au fur et à mesure de la découverte de nouveaux cas limites ou comportements

Conseil pro

Commencez chaque user story par un atelier des trois amigos (développeur, testeur, PO) de 30 minutes maximum. Limitez-vous à 3-5 scénarios clés par fonctionnalité pour éviter la sur-spécification. Utilisez des exemples concrets plutôt que des descriptions abstraites pour faciliter la compréhension commune et accélérer la rédaction des tests.

Outils associés

  • Cucumber/Cucumber.js : framework BDD permettant d'écrire des tests en Gherkin pour JavaScript/TypeScript
  • SpecFlow : implémentation .NET de Cucumber pour des tests d'acceptation en C#
  • Behave : framework BDD Python pour automatiser des scénarios Gherkin
  • Robot Framework : framework open-source avec syntaxe tabulaire pour tests d'acceptation multi-langages
  • FitNesse : wiki collaboratif pour écrire et exécuter des tests d'acceptation sous forme de tableaux
  • Serenity BDD : framework enrichissant Cucumber avec des rapports détaillés et une traçabilité exigences-tests

L'ATDD transforme la qualité logicielle en créant un alignement précoce entre toutes les parties prenantes. En définissant collaborativement des tests d'acceptation avant le code, les équipes réduisent drastiquement les malentendus, accélèrent la livraison de fonctionnalités conformes aux attentes métier, et construisent une documentation vivante qui évolue avec le produit. Cette pratique est particulièrement précieuse dans les environnements agiles où la rapidité de feedback et la collaboration continue sont essentielles à la réussite projet.

L'argentestdéjàsurlatable.

En 1 heure, découvrez exactement combien vous perdez et comment le récupérer.