Critères d'acceptation vs Scénarios d'acceptation

De Wiki Agile

Auteur : Liz Keogh
Source : Acceptance Criteria vs. Scenarios
Date : 20/06/2011


Traducteur : Fabrice Aimetti
Date : 07/08/2025


Traduction :

Une confusion courante que j'ai récemment observée concerne la différence entre un scénario et des critères d'acceptation.

Je vais commencer par définir ces deux notions telles que je les comprends :

  • Un scénario est un exemple du comportement du système du point de vue d'un ou plusieurs utilisateurs.
  • Les critères d'acceptation sont un ensemble de règles qui couvrent certains aspects du comportement d'un système et à partir desquelles des scénarios peuvent être dérivés.


Voici un scénario tiré de l'animalerie que j'utilise dans mes tutoriels BDD :

(Given) Étant donné un lapin appelé Fluffy âgé d'un mois et demi
(When) Lorsque nous essayons de vendre Fluffy
(Then) Alors nous devrions être informés que Fluffy est trop jeune

Voici un exemple du type de situation auquel un employé d'une animalerie pourrait être confronté lorsqu'il utilise le logiciel du point de vente. Il s'agit d'un cas très spécifique, contenant des données réelles, qui illustre bien notre domaine. Nous pouvons en déduire beaucoup de choses : les animaux ont des noms, il existe des règles régissant leur vente, des unités sont utilisées pour mesurer l'âge des jeunes animaux, etc.

Nous ne savons toutefois pas à partir de quel âge nous serions autorisés à vendre les animaux. Est-ce un âge fixe ? Pour tous les animaux ? Examinons un autre cas :

Étant donné un bébé animal est plus jeune que l'âge recommandé pour la vente
Lorsque nous essayons de le vendre
Alors nous devrions être informés qu'il est trop jeune

Malgré les éléments « Étant donné / Given », « Lorsque / When » et « Alors / Then », il ne s'agit pas d'un scénario. Il s'agit de critères d'acceptation, c'est-à-dire une spécification complète de cet aspect du comportement, formulée sous forme de scénario. Souvent, je vois des gens rédiger des critères de ce type, puis se retrouver perplexes lorsqu'ils ne parviennent pas à les traiter comme un véritable scénario, c'est-à-dire en les discutant en détail, en en déduisant d'autres cas limites, en les automatisant, etc.

Discuter des scénarios est, pour moi, l'aspect le plus important du BDD. C'est ainsi que nous découvrons si nous avons une compréhension mutuelle ou non, en utilisant des exemples spécifiques pour illustrer notre compréhension ou découvrir notre ignorance.

Lorsque nous discutons des scénarios, il n'est pas toujours nécessaire de rédiger des scénarios pour tous les critères d'acceptation. Tant que les critères d'acceptation sont suffisamment clairs pour permettre de dériver facilement les scénarios pertinents, je recommande de les laisser tels quels jusqu'au moment où ils doivent être automatisés. Vous pouvez déterminer si les scénarios peuvent être dérivés en quelques secondes de conversation. Vous n'avez pas besoin de tout noter.

Il est également possible de formuler les critères d'acceptation d'une autre manière :

Nous devrions être dans l'impossibilité de vendre des animaux plus jeunes que l'âge recommandé.

Vous pouvez désormais discuter des scénarios et identifier d'autres critères potentiels que vous auriez pu manquer :

Les clients doivent être encouragés à revenir lorsque l'animal est en âge d'être vendu.

Au fur et à mesure que vous discutez des scénarios, les informations dont nous avons besoin pour l'automatisation apparaissent, et les personnes impliquées dans ces discussions (généralement un développeur, un métier et un testeur) acquièrent une meilleure compréhension du domaine :

Étant donné que les lapins ne peuvent pas être vendus avant l'âge de 2 mois  
Étant donné que Fluffy, le lapin, est âgé d'un mois et demi  
Lorsque nous essayons de vendre Fluffy
Alors nous devrions être invités à dire au client : « Cet animal est trop jeune. Veuillez revenir dans 15 jours pour le récupérer. »

En discutant à la fois des critères d'acceptation et des scénarios, en posant des questions et en utilisant des scénarios pour illustrer les critères, nous en apprenons davantage sur notre domaine. Nous pouvons également les automatiser ultérieurement, ce qui permettra de fournir une documentation vivante et constituera des tests de non régression.

Il existe une autre différence entre un scénario et des critères d'acceptation, voire un test d'acceptation. Vous pouvez demander à vos parties prenantes métier : « Pouvez-vous me donner un scénario dans lequel cela se produit ? » ou « Pouvez-vous me donner un exemple ? ». J'ai constaté que cela suscitait souvent des discussions plus utiles que « Pouvez-vous me donner les critères d'acceptation pour cela ? » ou « Pouvez-vous m'aider à déterminer comment tester cela ? ».

Le langage BDD, et en particulier son vocabulaire, fournit un langage universel pour l'analyse et le développement.

Maintenant, nous pouvons discuter.