55 votes

Différences entre TDD et BDD

Honnêtement, je ne vois pas la différence entre BDD et TDD. Je veux dire, les deux ne sont que des tests si ce qui est attendu se produit. J'ai vu des tests BDD qui sont si étoffés qu'ils comptent pratiquement comme des tests TDD, et j'ai vu des tests TDD qui sont si vagues qu'ils noircissent beaucoup de code. Disons simplement que je suis assez convaincu qu'avoir les deux, c'est mieux.

Voici une question amusante cependant. Où est-ce que je commence? Est-ce que je commence avec des tests BDD de haut niveau? Est-ce que je commence avec des tests TDD de bas niveau?

85voto

Jörg W Mittag Points 153275

Honnêtement, je ne vois pas la différence entre la BDD et TDD.

C'est parce que cela n'existe pas.

Je veux dire, les deux sont juste des tests, si ce qui est attendu arrive.

C'est faux. BDD et TDD ont absolument rien du tout à voir avec les tests. Aucun. Nada. Zilch. Zip. Nix. Pas le moins du monde.

Malheureusement, TDD est le mot "test" dans à peu près tout (pas seulement en son nom, mais aussi dans le framework de test unitaire, test, TestCase (la classe que vous tpyically hériter de), FooTest (la classe qui détient généralement vos tests), testBar (typique de modèle de nommage pour une méthode d'essai), en plus d'un lot d'essai liés à l'utilisation de termes comme "affirmation" et "vérification") qui conduit certaines personnes à croire qu'en fait, il ne avoir quelque chose à voir avec les tests. Ainsi, certaines personnes ont dit: "Hey, il faut juste changer le nom de" supprimer tout risque de confusion.

Et c'est ce qui BDD est. C'est juste TDD dans tous les tests liés à la terminologie remplacé par des exemples de comportement liés à la terminologie:

  • Test → Exemple
  • Affirmation → Attente
  • assertshould
  • Unité → Comportement
  • Vérification → Spécification
  • ... et ainsi de suite

BDD est juste TDD avec des mots différents. Si vous ne TDD droit, vous faites BDD. La différence est que, à condition que vous croyez au moins dans la forme faible de l'Sapir-Whorf Hypothèse – les différents mots, il est facile de le faire à droite.

40voto

k3b Points 5381

BDD est le point de vue des clients et se concentre sur le comportement attendu de l’ensemble du système.

TDD est du point de vue des développeurs et se concentre sur la mise en œuvre d’une unité / classe / fonctionnalité. Il bénéficie notamment d'une meilleure architecture (conception permettant la testabilité, moins de couplage entre les modules).

Techniquement (comment écrire le "test"), ils sont similaires.

D'un point de vue agile, je commencerais par un seul bdd-userstory et le mettrais en œuvre à l'aide de TDD.

8voto

Daniel Fath Points 1414

De ce que j'ai recueillies sur Wikipédia, BDD comprend l'acceptation et la QA de test qui ne peut être fait sans les parties prenantes/de l'utilisateur. Aussi BDD utilise un langage naturel pour spécifier son test en TDD habituellement utilise un langage de programmation. Il pourrait y avoir un certain chevauchement entre les deux, mais je pense que ce n'est pas l'imprécision, mais BDD est un langage qui est la principale différence.

Pour savoir où vous êtes pour commencer, eh bien cela dépend vraiment de votre processus de développement, n'est-ce pas? Je suppose que si vous faites bottom-up que vous allez écrire TDD premier et une fois que vous atteignez le niveau supérieur, vous aurez l'utilisation de BDD pour tester si ces fonctionnalités fonctionnent comme prévu.

Comme k3b noter: principale différence serait que la BDD est le problème-domaine orienté, tandis que le DRT est plus orienté solution-domaine.

3voto

Anshuman Points 11

BDD a pour but de bien préparer votre TDD. Il fournit "structure et diciplene" à votre TDD. Il vous guide pour tester la bonne chose et faire la bonne quantité de test. Voici un petit post fantastique sur BDD et TDD,

http://codingcraft.wordpress.com/2011/11/12/bdd-get-your-tdd-right/

2voto

Mark Mayo Points 4193

Un article fantastique sur les différences entre TDD et BDD:

http://www.lostechies.com/blogs/sean_chambers/archive/2008/12/07/starting-with-bdd-vs-starting-with-tdd.aspx

Devrait vous donner tout ce que vous devez savoir, y compris des problèmes avec les deux et des exemples.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X