Quelles sont les principales différences entre TDD et BDD?
Développement Piloté par les tests a été la rage dans le .NET de la communauté pour les quelques dernières années. Récemment, j'ai entendu grumblings dans le ALT.NET communauté sur la BDD. Quel est-il? Ce qui le rend différent de TDD?
- Voir aussi, programmers.stackexchange.com/q/135218/76176. Cette question est plus sur le sujet là.
- TDD est pour les micro-tests. BDD est pour les besoins ou macro tests. Écouter les épisodes 1 à 8 sur le Test de la Pyramide et il va vous expliquer ces niveaux: agilenoir.biz/série/agile-pensées
Vous devez vous connecter pour publier un commentaire.
Je comprends BDD pour être plus à propos de spécification que tests. Il est lié à de Domain Driven Design (n'aimez-vous pas ces *JJ acronymes?).
Il est lié à une certaine façon d'écrire des histoires d'utilisateurs, y compris les tests de haut niveau. Un exemple par Tom dix Thij:
(Dans son article, Tom va directement à l'exécution de cette spécification du test de Rubis.)
Le pape de la BDD est Dan Le Nord. Vous trouverez une excellente introduction à son L'introduction de BDD article.
Vous trouverez une comparaison des BDD et TDD dans ce vidéo. Aussi un avis sur la BDD comme "TDD fait droit" par Jeremy D. Miller
Le 25 mars 2013 mise à jour
La vidéo ci-dessus a été absent pendant un certain temps. Voici une récente par Llewellyn Falco, BDD vs ATS (expliqué). Je trouve son explication clair et précis.
Pour moi la principale différence entre la BDD et le TDD est de se concentrer et de sa formulation. Et les mots sont importants pour la communication de votre intention.
TDD dirige concentrer sur le test. Et puisque dans la "vieille chute d'eau du monde" les tests sont effectués après la mise en œuvre, alors cet état d'esprit conduit à une mauvaise compréhension et de comportement.
BDD dirige l'accent sur le comportement et les spécifications, et ainsi de cascade esprit est distrait. Donc BDD est plus facile à comprendre que la conception pratique et pas que des essais de pratique.
Il semble y avoir deux types de BDD.
Le premier est le style original que Dan Nord discute et qui a causé la création de la xBehave style de cadres. Pour moi, ce style est principalement applicable pour les essais d'acceptation ou de caractéristiques contre des objets du domaine.
Le second style est ce que Dave Astels vulgarisée et qui, pour moi, est une nouvelle forme de TDD qui a un peu de sérieux avantages. Il se concentre sur le comportement plutôt que de tester et de petites classes de test, en essayant d'arriver au point où vous avez essentiellement une ligne par spécification (test) de la méthode. Ce style convient à tous les niveaux de test et peut être fait à l'aide de l'existant framework de test unitaire si les nouvelles des cadres (xSpec style) aider à orienter le comportement plutôt que de tester.
Il y a aussi une BDD groupe qui pourraient vous être utiles:
http://groups.google.com/group/behaviordrivendevelopment/
Développement Piloté par les tests est un test-premier logiciel de la méthodologie de développement, ce qui signifie qu'il nécessite l'écriture de code de test avant d'écrire le code qui va être testé. Dans le Kent Beck mots:
Après à trouver 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." Nous avons donc immédiatement écrire un test pour elle.
Donc TDD est un bas niveau, méthodologie technique que les programmeurs utilisent pour produire un code propre qui fonctionne.
Behavior-Driven Development est une méthodologie qui a été créé sur la base TDD, mais qui ont évolué dans un processus qui ne concerne pas seulement les programmeurs et les testeurs, mais au lieu de cela traite de l'ensemble de l'équipe et toutes les parties prenantes importantes, techniques et non techniques. BDD a commencé à partir de quelques questions simples qui TDD ne répond pas bien: combien tests dois-je écrire? Que dois-je tester réellement et ce que je ne devrais pas? Qui de la les tests que j'ai écriture est en fait important de l'entreprise ou à la qualité globale du produit, et qui sont mes plus-ingénierie?
Comme vous pouvez le voir, ces questions nécessitent une collaboration entre la technologie et des affaires. Les intervenants et les experts du domaine peuvent souvent dire ingénieurs de ce genre de tests sonores comme ils le seraient utiles, mais seulement si les tests sont des tests de haut niveau qui traitent d'affaires importants aspects. BDD des appels du genre d'affaires-comme des tests “exemples”, comme dans “dites-moi un exemple de la façon dont cette fonction doit comporter correctement”, et se réserve le mot “test” de bas niveau, les contrôles techniques telles que la validation des données ou test de l'API intégrations. L'important, c'est que tout tests ne peuvent être créés que par les programmeurs et les testeurs, exemples peuvent être collectées et analysées par l'ensemble de la prestation en équipe de concepteurs, d'analystes, et ainsi de suite.
Dans une phrase, l'une des meilleures définitions de la BDD j'ai trouvé jusqu'à présent est que la BDD est sur le “avoir des conversations avec des experts du domaine et à l'aide d'exemples à la compréhension du comportement désiré et découvrir inconnues.” La découverte de la partie est très importante. Comme la prestation de l'équipe recueille des exemples de plus, ils commencent à comprendre le domaine d'activité de plus en plus et donc à réduire leur incertitude concernant certains aspects du produit qu'ils ont à traiter. Alors que l'incertitude diminue, la créativité et l'autonomie de l'équipe de la livraison de l'augmentation. Par exemple, ils peuvent maintenant commencer à suggérant leurs propres exemples que les utilisateurs de l'entreprise, n'étaient pas possible en raison de leur manque d'expertise technique.
Maintenant, avoir des conversations avec les entreprises et les experts du domaine sonne bien, mais nous savons tous comment ça finit souvent dans la pratique. J'ai commencé mon voyage avec tech en tant que programmeur. En tant que programmeurs, on nous a appris à écrire du code—algorithmes, modèles de conception, des abstractions. Ou, si vous êtes un designer, on vous l'a appris conception—organiser les informations et de créer de belles interfaces. Mais quand nous arrivons à notre entrée des emplois de niveau, nos employeurs attendent de nous "offrir de la valeur pour les clients." Et parmi ceux-ci, les clients peuvent être, par exemple... une banque. Mais je sais à peu près rien sur les banques—à l'exception de la façon la plus efficace de diminuer le solde de mon compte. Je voudrais donc avoir en quelque sorte à traduire ce que l'on attend de moi dans le code... j'aurais besoin de construire un pont entre la banque et mon expertise technique si je veux livrer n'importe quelle valeur. BDD m'aide à construire un pont sur une base stable de communication fluide entre l'équipe de livraison et les experts du domaine.
En savoir plus
Si vous voulez en savoir plus sur la BDD, j'ai écrit un livre sur le sujet. “L'Écriture De Grands Le Cahier Des Charges” explore l'art de l'analyse de besoins, et vous aider à apprendre comment construire une grande BDD processus et utiliser des exemples comme une partie essentielle de ce processus. Le livre parle de l'omniprésence de la langue, de la collecte d'exemples, et créant ainsi des spécifications exécutables (tests automatisés) des exemples de techniques qui aident les BDD équipes offrir une grande softeware les délais et le budget.
Si vous êtes intéressé par l'achat de “l'Écriture de Grand Spécifications,” vous pouvez économiser 39% avec le code promo 39nicieja2 🙂
J'ai expérimenté un peu avec l'approche BDD et ma conclusion prématurée est que la BDD est bien adapté à l'utilisation de cas de mise en œuvre, mais pas sur les détails sous-jacents. TDD encore rock à ce niveau.
BDD est également utilisé comme un outil de communication. Le but est d'écrire des spécifications exécutables qui peuvent être compris par les experts du domaine.
Il me semble que la BDD est un champ d'application plus large. Il est presque implique TDD est utilisé, que la BDD est l'encompasing méthodologie qui rassemble les informations et les exigences pour l'utilisation, amongh d'autres choses, TDD pratiques afin d'assurer une rétroaction rapide.
Mes dernières connaissances en BDD lorsque par rapport aux TDD, BDD se concentre sur la définition de ce qui va se passer, alors que l'ATS se concentre sur la définition d'un ensemble de conditions et puis, regardant la sortie.
Développement Piloté par le comportement semble se concentrer davantage sur l'interaction et la communication entre les Développeurs et aussi entre les Développeurs et les testeurs.
L'Article de Wikipédia a une explication:
Behavior-driven development
Ne pratiquant pas une BDD bien me.
Considérer le principal avantage de l'ATS à la conception. Il devrait être appelé Test Driven Design. BDD est un sous-ensemble de l'ATS, composez le Comportement axé sur la Conception.
Maintenant examiner populaire de la mise en œuvre du TDD - Tests Unitaires. Les Unités dans les Tests Unitaires sont généralement d'un peu de logique qui est la plus petite unité de travail que vous pouvez faire.
Lorsque vous mettez ces Unités de manière fonctionnelle pour décrire le Comportement souhaité pour les machines, vous devez comprendre le Comportement que vous décrivez à la machine. Comportement axé sur la Conception met l'accent sur la vérification de la mise en œuvre de la compréhension de l'Utilisation Cas/Conditions/Whatever 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 en particulier en cas de changement. BDD fait droit implique biz et dev (et aq), alors que les Tests Unitaires (peut-être mal vu, TDD plutôt que d'un type de TDD) qui est généralement fait dans le dev silo.
Je voudrais ajouter que les BDD des tests de servir de lieu de vie exigences.
BDD est en grande partie TDD fait. Cependant, il n'y a plus de valeur que la BDD offre. Voici un lien sur:
BDD est plus que “TDD fait la droite”
Différence entre le développement piloté par les tests (TDD) et behavior-driven development (BDD)
BDD se concentre sur l'aspect comportemental du système plutôt que de l'
la mise en œuvre aspect du système TDD se concentre sur.
BDD donne une meilleure compréhension de ce que doit faire le système
du point de vue du développeur et le client. ATS seulement
donne le développeur d'une compréhension de ce que doit faire le système.
BDD permet à la fois le développeur et le client afin de travailler ensemble sur
l'analyse des exigences contenues dans le code source de la
système d'.
En bref il y a une grande différence entre TDD et BDD
En TDD, nous sommes totalement concentrés sur des données de Test
Dans la BDD notre accent est mis sur le comportement de la le projet, alors que les non - programmation de la personne peut comprendre la ligne de code sur le nom du titre de cette méthode
Voici l'aperçu rapide:
Il n'y a pas de différence entre le TDD et BDD. sauf que vous pouvez lire vos tests de mieux, et vous pouvez les utiliser comme des exigences. Si vous écrivez à vos exigences avec les mêmes mots que vous écrivez BDD tests, alors vous pouvez venir frome votre client avec certains de vos tests définis prêt à écrire de code.