Préparation entretien · 227 questions

Questions d'entretien BDD et Cucumber

Mis à jour

Les questions BDD et Cucumber que les examinateurs posent vraiment — Gherkin et Given-When-Then, scenario outlines, définitions d'étapes, tags et hooks, et la question senior de quand le BDD en vaut la peine — chacune avec la réponse courte à dire à voix haute, la relance, et le piège. Parcourez les aperçus ; ouvrez ce dont vous avez besoin.

14 questions

Qu'est-ce que le BDD, en une phrase honnête ?

Fondamentaux du BDDjuniormid

Le BDD, c'est décrire comment une fonctionnalité doit se comporter dans un langage clair et structuré sur lequel tout le monde s'accorde — avant qu'elle soit construite — pour que la même description…

Le BDD, c'est décrire comment une fonctionnalité doit se comporter dans un langage clair et structuré sur lequel tout le monde s'accorde — avant qu'elle soit construite — pour que la même description guide la conversation, le code et les tests.

Ce que les gens ratent : le BDD est d'abord une pratique de collaboration, un outil ensuite. Cucumber et Gherkin sont la façon de l'écrire, mais la valeur est la compréhension partagée entre le produit, le dev et la QA — pas les fichiers .feature eux-mêmes.

Points clés
  • Décrire le comportement dans un langage clair partagé, avant de construire
  • Une seule description guide la conversation, le code et les tests
  • La collaboration d'abord, l'outillage (Cucumber) ensuite
Ils demanderont ensuite · touchez-en un pour la réponse
Le piège

Appeler le BDD « un framework de test » est le signe que vous avez utilisé Cucumber mais jamais fait de BDD. C'est une pratique de collaboration ; Cucumber est un outil parmi d'autres pour la mettre en œuvre.

Copier le lien

En quoi le BDD diffère-t-il du TDD ?

Fondamentaux du BDDmid

Le TDD est une discipline de développeur — écrire un test unitaire qui échoue, le faire passer, refactoriser. Il porte sur la justesse du code, dans le langage du développeur.

Le TDD est une discipline de développeur — écrire un test unitaire qui échoue, le faire passer, refactoriser. Il porte sur la justesse du code, dans le langage du développeur. Le BDD est un pas de côté : il décrit le comportement du point de vue de l'utilisateur, dans un langage que toute l'équipe partage, et guide généralement des tests de plus haut niveau.

Ce ne sont pas des rivaux — beaucoup d'équipes font les deux : les scénarios BDD cadrent quoi construire, le TDD guide les unités en dessous. Le BDD répond à « construit-on la bonne chose ? » ; le TDD répond à « construit-on la chose correctement ? »

Points clés
  • TDD : développeur, niveau unitaire, justesse du code
  • BDD : toute l'équipe, niveau comportement, langage partagé
  • Complémentaires — le BDD cadre la fonctionnalité, le TDD construit les unités
Ils demanderont ensuite · touchez-en un pour la réponse
Copier le lien

Expliquez Gherkin et la structure Given-When-Then.

Gherkinjunior

Gherkin est la syntaxe en langage clair que Cucumber lit. Un scénario a trois temps : Given pose l'état de départ, When est l'action testée, Then est le résultat attendu.

Gherkin est la syntaxe en langage clair que Cucumber lit. Un scénario a trois temps : Given pose l'état de départ, When est l'action testée, Then est le résultat attendu.

La discipline, c'est une action par scénario. Given je suis connecté en tant qu'admin, When je supprime un utilisateur, Then l'utilisateur n'apparaît plus. Gardez Given pour le contexte, When pour le seul déclencheur, et Then pour les résultats observables — pas un état interne que personne ne peut voir.

Exemple concret

Given un panier avec un article / When le client applique le code SAVE10 / Then le total baisse de 10 %. N'importe qui dans l'équipe peut lire ça et convenir que c'est correct — c'est tout l'intérêt.

Points clés
  • Given = état de départ · When = l'action · Then = résultat attendu
  • Une action par scénario — un seul When
  • Then affirme des résultats observables, pas des internes cachés
Ils demanderont ensuite · touchez-en un pour la réponse
Copier le lien

Qu'est-ce qui fait un bon scénario par rapport à un mauvais ?

Gherkinmid

Un bon scénario se lit comme une règle métier : un comportement, déclaratif, sans mécanique d'UI. « When le client applique un coupon expiré, Then il voit une erreur » — il survit à une refonte parce…

Un bon scénario se lit comme une règle métier : un comportement, déclaratif, sans mécanique d'UI. « When le client applique un coupon expiré, Then il voit une erreur » — il survit à une refonte parce qu'il dit quoi, pas comment.

Un mauvais scénario est un script de clics : « When je clique sur #coupon-field, And je tape SAVE10, And je clique sur le bouton… ». C'est impératif, fragile, et ça ne dit rien à un lecteur métier. Si votre Gherkin mentionne des sélecteurs CSS ou des ID de boutons, il a cessé d'être du BDD.

Points clés
  • Déclaratif (quoi), pas impératif (quels boutons)
  • Un comportement, lisible comme une règle métier
  • Pas de mécanique d'UI dans le Gherkin — ça vit dans les définitions d'étapes
Ils demanderont ensuite · touchez-en un pour la réponse
Le piège

Écrire des scénarios pleins de « cliquer », « taper », « sélectionner la liste déroulante » est l'échec BDD le plus courant — c'est un script d'UI déguisé en Gherkin, fragile et illisible pour les gens à qui le BDD est destiné.

Copier le lien

Quelle est la différence entre un Scenario et un Scenario Outline ?

Gherkinmid

Un Scenario est un cas concret unique. Un Scenario Outline est un modèle exécuté une fois par ligne d'une table Examples — mêmes étapes, données différentes, avec des <espaces réservés>.

Un Scenario est un cas concret unique. Un Scenario Outline est un modèle exécuté une fois par ligne d'une table Examples — mêmes étapes, données différentes, avec des <espaces réservés>.

Vous prenez un outline quand le même comportement doit être vérifié sur plusieurs entrées : e-mails valides et invalides, montants limites, rôles différents. Un outline avec cinq lignes Examples bat cinq scénarios copiés-collés — et il rend visibles en une table les données que vous couvrez.

Exemple concret

Scenario Outline : appliquer un coupon / When j'applique « <code> » / Then je vois « <result> ». Examples : SAVE10→10 % de remise, EXPIRED→erreur, vide→invite. Trois comportements, un bloc lisible.

Points clés
  • Scenario = un cas ; Outline = modèle × lignes Examples
  • <espaces réservés> remplis depuis la table Examples
  • À utiliser pour le même comportement sur plusieurs entrées
Ils demanderont ensuite · touchez-en un pour la réponse
Copier le lien

Que sont les définitions d'étapes et comment se connectent-elles au Gherkin ?

Définitions d'étapesjuniormid

Les définitions d'étapes sont le code derrière chaque ligne Gherkin. Cucumber fait correspondre le texte d'une étape à une définition par un motif (regex ou expression Cucumber), capture les…

Les définitions d'étapes sont le code derrière chaque ligne Gherkin. Cucumber fait correspondre le texte d'une étape à une définition par un motif (regex ou expression Cucumber), capture les paramètres, et exécute cette méthode.

Ainsi « When j'applique le coupon SAVE10 » correspond à une fonction qui prend « SAVE10 » et fait le vrai travail — cliquer, appeler l'API, peu importe. Le Gherkin reste clair ; la mécanique vit ici. Une définition bien paramétrée peut servir de nombreux scénarios.

Points clés
  • Le code derrière chaque étape Gherkin, apparié par motif
  • Paramètres capturés depuis le texte de l'étape
  • Le Gherkin reste lisible ; le comment vit dans la définition
Ils demanderont ensuite · touchez-en un pour la réponse
Copier le lien

À quoi sert le mot-clé Background, et quand ne pas l'utiliser ?

Gherkinmid

Background contient les étapes Given que chaque scénario d'un fichier feature partage — il s'exécute avant chacun, donc vous écrivez la mise en place commune une seule fois au lieu de la répéter.

Background contient les étapes Given que chaque scénario d'un fichier feature partage — il s'exécute avant chacun, donc vous écrivez la mise en place commune une seule fois au lieu de la répéter.

Ne le surchargez pas. Si le Background dépasse quelques lignes, ou si les scénarios n'en utilisent que la moitié, il cesse d'aider et cache le contexte — un lecteur doit remonter pour comprendre un seul scénario. Gardez-le pour une mise en place vraiment universelle ; tout ce qui est spécifique appartient au scénario.

Points clés
  • Étapes Given partagées, exécutées avant chaque scénario du fichier
  • Supprime la mise en place répétée
  • Gardez-le court et vraiment universel — un Background épais cache le contexte
Ils demanderont ensuite · touchez-en un pour la réponse
Copier le lien

Comment utiliser les tags dans Cucumber ?

Cucumber & outillagemid

Les tags sont des étiquettes comme @smoke ou @regression au-dessus des scénarios. À l'exécution vous filtrez par eux — ne lancer que @smoke à chaque push, le @regression complet la nuit.

Les tags sont des étiquettes comme @smoke ou @regression au-dessus des scénarios. À l'exécution vous filtrez par eux — ne lancer que @smoke à chaque push, le @regression complet la nuit. Ils pilotent aussi des hooks tagués : un hook @db qui amorce des données uniquement pour les scénarios qui en ont besoin.

C'est ainsi qu'une suite sert plusieurs objectifs sans dupliquer les scénarios. La discipline, c'est un petit vocabulaire de tags convenu — @wip, @smoke, @slow — pas une prolifération que personne ne retient.

Points clés
  • Étiqueter les scénarios (@smoke, @regression) et filtrer les exécutions par eux
  • Piloter des hooks tagués (mise en place seulement là où c'est nécessaire)
  • Garder le vocabulaire de tags petit et convenu
Ils demanderont ensuite · touchez-en un pour la réponse
Copier le lien

Que sont les hooks dans Cucumber, et qu'y met-on ?

Définitions d'étapesmid

Les hooks sont des blocs qui s'exécutent autour des scénarios — Before, After, et leurs variantes taguées.

Les hooks sont des blocs qui s'exécutent autour des scénarios — Before, After, et leurs variantes taguées. Ils contiennent la mise en place et le nettoyage techniques que vous ne voulez pas encombrer le Gherkin : ouvrir le navigateur, amorcer des données, prendre une capture d'écran en cas d'échec, fermer les connexions.

La règle, c'est que les hooks sont pour la plomberie, pas le comportement. Tout ce qu'un lecteur métier devrait voir — l'état dans lequel un scénario démarre — appartient à un Given ou un Background. Si un hook fait quelque chose dont le sens du scénario dépend, il cache le test.

Points clés
  • Before/After s'exécutent autour des scénarios pour la mise en place/le nettoyage
  • Plomberie technique uniquement — navigateur, données, captures d'écran
  • La mise en place pertinente pour le métier va dans Given/Background, pas les hooks
Ils demanderont ensuite · touchez-en un pour la réponse
Copier le lien

Qui écrit les scénarios — la QA, les devs, ou le métier ?

BDD en pratiquemid

Les trois, ensemble — ce sont les « trois amigos » : une voix métier/produit, un développeur, et un testeur, avant que le travail commence.

Les trois, ensemble — ce sont les « trois amigos » : une voix métier/produit, un développeur, et un testeur, avant que le travail commence. Le produit apporte l'intention, le développeur signale ce qui est techniquement difficile, le testeur fait remonter les cas limites et les chemins d'erreur que personne n'a mentionnés.

Quand une seule personne écrit les scénarios seule, vous perdez tout le bénéfice — la QA les écrivant seule produit juste des tests en Gherkin, et le produit les écrivant seul rate les cas limites. La conversation est le livrable ; le fichier .feature est le compte rendu.

Points clés
  • Trois amigos : produit + dev + QA, avant de construire
  • Chacun attrape ce que les autres ratent (intention, faisabilité, cas limites)
  • Des scénarios écrits en solo perdent l'intérêt du BDD
Ils demanderont ensuite · touchez-en un pour la réponse
Copier le lien

Quelle est la différence entre les scénarios déclaratifs et impératifs ?

BDD en pratiquesenior

Les scénarios impératifs détaillent chaque étape mécanique — cliquer ceci, taper cela, presser le bouton.

Les scénarios impératifs détaillent chaque étape mécanique — cliquer ceci, taper cela, presser le bouton. Les scénarios déclaratifs énoncent l'intention — « When le client paie avec une carte expirée » — et laissent les définitions d'étapes gérer le comment.

Le déclaratif l'emporte presque toujours : il se lit comme une règle métier, survit aux refontes d'UI, et reste court. Le Gherkin impératif est fragile et illisible pour les gens non techniques que le BDD existe pour inclure. La compétence est de pousser le détail dans les étapes et de garder le fichier .feature au niveau du comportement.

Points clés
  • Impératif = étapes mécaniques ; déclaratif = intention
  • Le déclaratif survit aux refontes et se lit comme une règle métier
  • Poussez le comment dans les définitions d'étapes, gardez le Gherkin au niveau comportement
Ils demanderont ensuite · touchez-en un pour la réponse
Copier le lien

Quand le BDD échoue-t-il ou devient-il un fardeau ?

BDD en pratiquesenior

Quand vous gardez l'outillage et lâchez la collaboration. Les équipes adoptent Cucumber, sautent la conversation des trois amigos, et finissent par écrire des tests en Gherkin après coup — maintenant…

Quand vous gardez l'outillage et lâchez la collaboration. Les équipes adoptent Cucumber, sautent la conversation des trois amigos, et finissent par écrire des tests en Gherkin après coup — maintenant chaque test porte la lourdeur d'un fichier feature, d'une définition d'étape et d'un appariement de motifs, sans aucun gain de compréhension partagée.

Ça échoue aussi quand les scénarios deviennent impératifs (des scripts de clics fragiles), quand la bibliothèque d'étapes prolifère sans entretien, ou quand personne en dehors de la QA ne lit jamais les fichiers .feature. Si le métier n'est pas dans la boucle, le BDD n'est qu'un framework de test plus lent — mieux vaut écrire des tests automatisés simples.

Points clés
  • Échoue quand vous gardez Cucumber mais sautez la conversation
  • Échoue avec des scénarios impératifs et une bibliothèque d'étapes proliférante
  • Si le métier ne lit jamais les features, abandonnez le BDD pour des tests simples
Ils demanderont ensuite · touchez-en un pour la réponse
Le piège

La réponse senior nomme quand NE PAS utiliser le BDD. Dire « le BDD est toujours mieux » signale que vous ne l'avez vu que vendu, pas vécu avec son coût de maintenance.

Copier le lien

Comment fonctionnent les data tables dans une étape, et en quoi diffèrent-elles des Examples ?

Gherkinmid

Une data table est une grille attachée à une seule étape — la définition d'étape la reçoit comme des données structurées à parcourir.

Une data table est une grille attachée à une seule étape — la définition d'étape la reçoit comme des données structurées à parcourir. « Given les produits suivants : » puis une table de noms et de prix, utilisée une fois dans ce scénario.

Une table Examples est différente : elle appartient à un Scenario Outline et exécute tout le scénario une fois par ligne. Règle générale — une data table passe plusieurs valeurs dans une étape ; Examples exécute un scénario plusieurs fois. Les confondre est une erreur courante de débutant.

Points clés
  • Data table : entrée structurée pour une seule étape
  • Examples : lignes qui ré-exécutent chacune un Scenario Outline entier
  • La data table alimente une étape ; Examples multiplie le scénario
Ils demanderont ensuite · touchez-en un pour la réponse
Copier le lien

Le BDD est-il la même chose que Cucumber ? Peut-on faire du BDD sans lui ?

Cucumber & outillagesenior

Non. Cucumber est un outil qui exécute Gherkin ; le BDD est la pratique de spécifier le comportement de façon collaborative.

Non. Cucumber est un outil qui exécute Gherkin ; le BDD est la pratique de spécifier le comportement de façon collaborative. Vous pouvez faire du vrai BDD avec SpecFlow, Behave, JBehave, ou sans aucun outil Gherkin — une conversation au tableau et de l'example mapping avant de coder, c'est du BDD.

De même, vous pouvez utiliser Cucumber et faire zéro BDD, si vous écrivez les fichiers feature seul après que le code existe. L'outil n'est ni nécessaire ni suffisant. Les examinateurs posent cette question pour séparer les gens qui ont adopté un outil de ceux qui comprennent la pratique.

Points clés
  • Cucumber exécute Gherkin ; le BDD est la pratique de collaboration
  • Le BDD marche avec SpecFlow/Behave/JBehave — ou sans aucun outil
  • Vous pouvez utiliser Cucumber sans faire de BDD, et inversement
Ils demanderont ensuite · touchez-en un pour la réponse
Le piège

Traiter « BDD » et « Cucumber » comme des synonymes est le signe révélateur. Ce sont une pratique et un outil ; les confondre montre une expérience de l'outil sans l'idée sous-jacente.

Copier le lien
Ils demanderont ensuite