TDD和BDD之间的主要区别是什么?

时间:2020-03-05 18:37:46  来源:igfitidea点击:

在过去的几年中,测试驱动开发一直是.NET社区中的热门话题。最近,我在ALT.NET社区中听到有关BDD的抱怨。它是什么?它与TDD有何不同?

解决方案

回答

行为驱动开发似乎更侧重于开发人员之间以及开发人员与测试人员之间的交互和通信。

维基百科文章有一个解释:

行为驱动的发展

虽然我自己没有练习BDD。

回答

在我看来,BDD的范围更广。它几乎暗示使用了TDD,而BDD是一种可简化的方法,它收集了信息和要求,以使用TDD实践来确保快速反馈。

回答

我了解BDD的重点在于规范,而不是测试。它与域驱动设计链接(我们不喜欢这些* DD首字母缩写词吗?)。

它与编写用户案例的特定方法(包括高级测试)相关联。汤姆·十·蒂(Tom Ten 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

(在他的文章中,Tom继续在Ruby中直接执行此测试规范。)

BDD的教皇是Dan North。我们可以在他的BDD简介文章中找到很好的介绍。

我们将在此视频中找到BDD和TDD的比较。也有人认为杰里米·米勒(Jeremy D. Miller)将BDD称为"正确的TDD"

2013年3月25日更新

上面的视频已经消失了一段时间。这是Llewellyn Falco的最新作品,BDD对TDD(解释)。我认为他的解释很明确而且很明确。

回答

我已经对BDD方法进行了一些试验,但我的过早结论是BDD非常适合用例实现,但不适用于底层细节。 TDD仍处于这一水平。

BDD也用作通信工具。目的是编写领域专家可以理解的可执行规范。

回答

对我而言,BDD和TDD之间的主要区别在于重点和措辞。言语对于传达意图很重要。

TDD将重点放在测试上。而且由于在"旧瀑布世界"中进行测试是在实施之后进行的,因此这种思维方式会导致错误的理解和行为。

BDD专注于行为和规范,因此瀑布般的思维分散了注意力。因此,BDD更容易理解为设计实践,而不是测试实践。

回答

BDD似乎有两种类型。

第一个是Dan North讨论的原始样式,它导致了xBehave样式框架的创建。对我来说,这种样式主要适用于针对领域对象的验收测试或者规范。

第二种风格是Dave Astels所流行的,对我而言,这是TDD的一种新形式,它具有一定的优势。它着重于行为而不是测试以及小型测试类,以期使每个规范(测试)方法基本上只占一行。这种样式适合所有级别的测试,并且可以使用任何现有的单元测试框架来完成,尽管较新的框架(xSpec样式)帮助将行为集中于行为而不是测试。

还有一个BDD组,我们可能会发现它有用:

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

回答

与TDD相比,根据我在BDD中的最新知识,BDD专注于指定接下来将要发生的事情,而TDD则专注于设置一组条件然后查看输出。

回答

BDD在很大程度上是TDD正确完成的。但是,BDD提供了额外的价值。这是一个链接:

BDD比TDD做得还好