Quelles sont les principales différences entre TDD et BDD?

voix
119

Test Driven Development a été la rage dans la communauté .NET pour les dernières années. Récemment, je l'ai entendu grognements dans la communauté ALT.NET sur les BDD. Qu'Est-ce que c'est? Ce qui le rend différent de TDD?

Créé 05/08/2008 à 16:58
source utilisateur
Dans d'autres langues...                            


15 réponses

voix
94

Je comprends BDD d'être plus sur la spécification de test . Il est lié à Domain Driven Design (ne vous aime pas ces * DD acronymes?).

Elle est liée à une certaine manière d'écrire des histoires d'utilisateurs, y compris les tests de haut niveau. Un exemple par Tom dix Thij :

Story: User logging in
  As a user
  I want to login with my details
  So that I can get access to the site

Scenario: User uses wrong password

  Given a username 'jdoe'
  And a password 'letmein'

  When the user logs in with username and password

  Then the login form should be shown again

(Dans son article, Tom va à exécuter directement cette spécification de test en Ruby.)

Le pape de BDD est Dan North . Vous trouverez une excellente introduction dans son introduction BDD article.

Vous trouverez une comparaison des BDD et TDD dans cette vidéo . Aussi une opinion sur BDD comme « TDD bien fait » par Jeremy D. Miller

25 mars 2013 mise à jour

La vidéo ci - dessus a été porté disparu pendant un certain temps. Voici un récent Llewellyn Falco, BDD vs TDD (expliqué) . Je trouve son explication claire et au point.

Créé 05/08/2008 à 17:36
source utilisateur

voix
17

Pour moi, la différence principale entre BDD et TDD est mise au point et libellé. Et les mots sont importants pour communiquer votre intention.

TDD dirige se concentrer sur les tests. Et comme dans les tests « vieux monde chute d'eau » viennent après la mise en œuvre, alors cet état d'esprit conduit à une mauvaise compréhension et le comportement.

BDD dirige l'accent sur le comportement et les spécifications, et les esprits sont distraits si cascade. Alors BDD est plus facile à comprendre que la pratique de conception et non pas comme la pratique de tests.

Créé 08/09/2008 à 19:36
source utilisateur

voix
13

Il semble y avoir deux types de BDD.

Le premier est le style original que Dan North parle et qui a provoqué la création des cadres de style xBehave. Pour moi, ce style est principalement applicable pour les tests d'acceptation ou spécifications contre des objets de domaine.

Le second style est ce que Dave Astels popularisé et qui, pour moi, est une nouvelle forme de TDD qui a quelques avantages sérieux. Il met l'accent sur le comportement plutôt que les tests et aussi de petites classes de test, en essayant d'arriver au point où vous avez essentiellement une ligne par méthode de spécification (test). Ce style convient à tous les niveaux de tests et peut être effectuée à l'aide de tout cadre de tests unitaires existants si des cadres plus récents (style xSpec) aident à concentrer un comportement plutôt que les tests.

Il y a aussi un groupe BDD qui pourraient vous être utiles:

http://groups.google.com/group/behaviordrivendevelopment/

Créé 10/09/2008 à 17:00
source utilisateur

voix
6

Je l'ai expérimenté un peu avec l'approche BDD et ma conclusion prématurée est que BDD est bien adapté à utiliser la mise en œuvre de cas, mais pas sur les détails sous-jacents. TDD encore du rock à ce niveau.

BDD est également utilisé comme outil de communication. L'objectif est d'écrire des spécifications exécutables qui peuvent être compris par les experts du domaine.

Créé 27/08/2008 à 21:59
source utilisateur

voix
5

Développement piloté par les tests est un premier test méthodologie de développement logiciel, ce qui signifie qu'il nécessite l' écriture de code de test avant d' écrire le code réel qui sera testé. Pour reprendre les mots de Kent Beck:

Le style ici est d'écrire quelques lignes de code, un test qui devrait fonctionner, ou mieux encore, d'écrire un test qui ne fonctionne pas, alors écrire le code qui fera fonctionner.

Après avoir déterminé comment écrire un petit morceau de code, maintenant, au lieu de simplement le codage, nous voulons obtenir une rétroaction immédiate et pratique « code un peu, tester un peu, code un peu, tester un peu. » Donc, nous écrivons immédiatement un test pour elle.

Alors TDD est un faible niveau, la méthodologie technique que les programmeurs utilisent pour produire un code propre qui fonctionne.

Comportement-Driven Development est une méthodologie qui a été créé sur la base TDD, mais a évolué dans un processus qui ne concerne pas seulement les programmeurs et les testeurs, mais traite plutôt toute l'équipe et toutes les parties prenantes importantes, techniques et non techniques. BDD a commencé sur quelques questions simples que TDD ne répond pas bien: comment les tests bien dois - je écrire? Que dois - je tester et en fait ce pas moi? Lequel des tests que je L' écriture est en fait important de l'entreprise ou à la qualité globale du produit, et qui sont juste mon over-engineering?

Comme vous pouvez le voir, ces questions nécessitent une collaboration entre la technologie et les entreprises. Les entreprises intéressées et des experts du domaine peuvent souvent dire quel genre d' ingénieurs de tests sonnent comme si elles seraient utiles, mais seulement si les tests sont des tests de haut niveau qui traitent des aspects importants de l' entreprise. BDD appelle ces tests comme entreprises « exemples », comme dans « dites - moi un exemple de la façon dont cette fonctionnalité doit se comporter correctement » et se réserve le mot « test » pour de bas niveau, les contrôles techniques telles que la validation des données ou des intégrations API de test. L'important est que si les tests ne peuvent être créés par des programmeurs et testeurs, des exemples peuvent être collectées et analysées par la prestation ensemble des concepteurs de l' équipe par les analystes, et ainsi de suite.

Dans une phrase, l' une des meilleures définitions de BDD je trouve à ce jour est que BDD est « avoir des conversations avec des experts du domaine et en utilisant des exemples pour acquérir une compréhension commune du comportement souhaité et découvrir inconnues. » La partie découverte est très importante . Comme l'équipe de livraison recueille plus d' exemples, ils commencent à comprendre le domaine des affaires de plus en plus et donc ils réduisent leur incertitude quant à certains aspects du produit qu'ils doivent traiter. Alors que l' incertitude diminue, la créativité et l' autonomie de l'augmentation de l' équipe de livraison. Par exemple, ils peuvent maintenant commencer à proposer leurs propres exemples que les utilisateurs professionnels ne pensaient pas était possible en raison de leur manque d'expertise technique.

Maintenant, avoir des conversations avec les experts d'affaires et domaine sonne bien, mais nous savons tous comment cela se termine souvent dans la pratique. J'ai commencé mon voyage avec la technologie en tant que programmeur. Comme les programmeurs, nous apprenons à écrire le code -algorithms, design patterns, des abstractions. Ou, si vous êtes un concepteur, vous apprend à concevoir des informations -Organiser et créer de belles interfaces. Mais quand nous obtenons nos emplois d'entrée de gamme, nos employeurs attendent de nous « offrir de la valeur aux clients. » Et parmi ces clients peuvent être, par exemple ... une banque. Mais je ne pouvais savoir à côté de rien sur les services bancaires, sauf la façon de réduire efficacement le solde de mon compte. Je dois donc de traduire en quelque sorte ce qui est attendu de moi dans le code ... Je dois construire un pont entre la banque et mon expertise technique si je veux offrir une valeur. BDD me aide à construire un pont sur une base stable de communication fluide entre l'équipe de livraison et les experts du domaine.

Apprendre encore plus

Si vous souhaitez en savoir plus sur BDD, j'ai écrit un livre sur le sujet. « Rédiger des spécifications » explore l'art de l' analyse des besoins et vous aider à apprendre comment construire un grand processus BDD et utiliser des exemples comme une partie essentielle de ce processus. Les livre parle de la langue omniprésente, la collecte des exemples, et la création de ce qu'on appelle les spécifications exécutables (tests automatisés) sur des exemples techniques qui aident les équipes BDD offrent une grande softeware dans les délais et le budget.

Si vous êtes intéressé à acheter « rédiger des spécifications, » vous pouvez économiser 39% avec le code promo 39nicieja2 :)

Créé 12/02/2017 à 16:43
source utilisateur

voix
2

Considérons le principal avantage de TDD être conception. Il devrait être appelé Driven Design Test. BDD est un sous-ensemble de TDD, appelez comportement Driven Design.

Considérons maintenant une mise en œuvre populaire de TDD - Tests unitaires. Les unités de tests unitaires sont généralement un peu de logique qui est la plus petite unité de travail que vous pouvez faire.

Lorsque vous mettez ces unités ainsi que d'une manière fonctionnelle pour décrire le comportement désiré aux machines, vous devez comprendre le comportement que vous décrivez à la machine. Comportement Driven Design met l'accent sur la vérification de la compréhension des exécutants de l'emploi Cas / Exigences / Quels que soient et vérifie la mise en œuvre de chaque fonction. BDD et TDD en général sert l'objectif important d'informer la conception et le deuxième but de vérifier l'exactitude de la mise en œuvre surtout quand il change. BDD fait implique le droit biz et dev (et qa), alors que les tests unitaires (peut-être mal considéré comme TDD plutôt que d'un type de TDD) est généralement fait dans le silo dev.

Je voudrais ajouter que les tests BDD servent exigences de vie.

Créé 28/05/2015 à 22:36
source utilisateur

voix
2

BDD est en grande partie TDD fait. Cependant, il y a une valeur ajoutée qui offre BDD. Voici un lien sur ce point:

BDD est plus « TDD bien fait »

Créé 29/07/2010 à 11:25
source utilisateur

voix
2

Avec mes dernières connaissances en BDD par rapport à TDD, BDD se concentre sur la définition ce qui se passera ensuite, alors que TDD met l'accent sur la mise en place d'un ensemble de conditions et à la recherche puis à la sortie.

Créé 25/05/2009 à 05:09
source utilisateur

voix
2

Il me semble que BDD est une portée plus large. Elle implique presque TDD est utilisé, que BDD est la méthodologie de encompasing qui rassemble les informations et les conditions d'utilisation, amongh autres, pratiques TDD pour assurer une rétroaction rapide.

Créé 05/08/2008 à 17:11
source utilisateur

voix
2

Comportement Driven Development semble se concentrer davantage sur l'interaction et la communication entre les développeurs et aussi entre les développeurs et les testeurs.

Wikipedia article a une explication:

développement axée sur le comportement

Pas pratique BDD moi-même bien.

Créé 05/08/2008 à 17:06
source utilisateur

voix
1

Différence entre le développement piloté par les tests (TDD) et développement axé sur le comportement (BDD)

  • BDD se concentre sur l'aspect comportemental du système plutôt que l'
    aspect de la mise en œuvre du système qui se concentre sur TDD.

  • BDD donne une compréhension plus claire quant à ce que le système doit faire
    du point de vue du développeur et le client. TDD ne
    donne au développeur une compréhension de ce que devrait faire le système.

  • BDD permet à la fois le développeur et le client de travailler ensemble à l'analyse des exigences contenues dans le code source du système.

Créé 09/06/2017 à 23:49
source utilisateur

voix
1

Voici l'aperçu rapide:

  • TDD est juste le processus de code de test avant de l'écrire!

  • DDD est le processus d'être informé sur le domaine avant chaque cycle de toucher le code!

  • BDD est une implémentation de TDD qui apporte dans certains aspects de DDD!

J'espère que cela pourra aider!

Créé 18/01/2016 à 03:01
source utilisateur

voix
0

Le choix entre TDD et BDD est complexe. Cela dépend s'il existe un cadre de contrôle approprié pour votre langue cible donnée, ce que vos collègues de travail sont à l'aise avec, et parfois d'autres facteurs.

Certains font valoir que BDD est toujours mieux que TDD parce qu'il a la possibilité d'éliminer les problèmes qui pourraient survenir lors de l'utilisation TDD.

La clé de BDD est qu'il pourrait prévenir les problèmes; il est pas garanti. Des questions telles que la mauvaise organisation du code, les mauvaises pratiques de conception, etc. seront encore persister. Vous aurez juste un capot probablement plus faible de l'écriture des tests mauvais et ont donc des fonctionnalités plus robustes.

Créé 18/09/2016 à 09:59
source utilisateur

voix
0

Il n'y a pas de différence TDD et BDD Situés entre. sauf que vous pouvez lire vos meilleurs tests, et vous pouvez les utiliser comme exigences. Si vous écrivez vos besoins avec les mêmes mots que vous écrivez des tests BDD alors vous pouvez venir frome votre client avec certains de vos tests définis prêts à écrire du code.

Créé 07/10/2014 à 09:52
source utilisateur

voix
-1

Ce blog offre un point de vue intéressant sur les différences entre TDD, BDD, et ATDD: http://assertselenium.com/2012/11/05/difference-between-tdd-bdd-atdd/

Créé 20/05/2014 à 19:32
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more