行为驱动或测试驱动的开发?

时间:2008-09-23 15:38:11

标签: testing tdd bdd agile

我最近听说过BDD,发现它与TDD非常相似。

你使用这两个中的哪一个(如果有的话)?

哪个是各自的优点和缺点?

4 个答案:

答案 0 :(得分:9)

BDD与TDD类似,但心态不同。在BDD中,您尝试创建可执行规范而不是测试。这主要是通过使用不同的词汇表但与TDD类似的机制来实现的。

BDD似乎是对很多人声称在做TDD但是编写集成测试而不是单元测试的情况的反应。 BDD人士认为谈论测试是误导性的,因此测试成为规范。这似乎有点形而上学,但背后有一些好主意。

答案 1 :(得分:9)

我非常喜欢BDD = TDD正确营地。如果你正在按照Beck最初的描述进行TDD - 并且由许多人实践 - 那么基本上没有区别。

BDD带来的是用于描述该过程的语言的一些有趣变体。通过在流程描述和工具中使用备用术语,BDD民众希望鼓励更好的实践 - 这是一个值得称道的目标。

我已经做了很长时间的TDD,现在我很难判断这是否真的有帮助。我想(希望:-)我已经学到了BDD工具/语言鼓励的许多课程,因此它们似乎没有为我提供太多额外的价值。当然YMMV - 我还没有使用BDD工具完成一个完整的“真实世界”项目 - 所以我可能会进行个人实验并推断太远。

猜测 BDD工具/语言对于人们介绍这种接近开发的方式可能更有用 - 因为它们避免了与传统中使用的“测试”完全混淆感。我自己还没有这样做 - 如果这里的人有这样的经历,我会很感兴趣。

答案 2 :(得分:2)

BDD就是运行场景。与TDD类似,我们将测试每个场景作为故事。

故事将由客户解释..根据故事情节,将编写方案。像CUCUMBER这样的工具可以很容易地编写场景。

答案 3 :(得分:0)

TDD和BDD几乎相同。不同之处在于我们如何解释它,以及成功的团队最终如何使它为它们工作。

BDD建立在TDD的基础上,形成了最佳TDD实践者的良好习惯。 TDD是一个开发人员工具或编写优秀软件的指南,BDD是一个很好的工具,可以帮助外部开发,因为它是使用无处不在的语言开发的更多因素。

我的经验是,BDD有助于协作,当团队中的每个人都参与编写描述系统应该执行的操作的文档时,使用业务可读的可执行规范有助于构建共享语言。这有助于整个团队一起学习域的语言。

BDD是使TDD成功的必要条件。