2012-04-20 113 views
4

单元测试是编写代码测试的做法。 TDD是“之前”写作它们的做法。 BDD是编写行为/规范驱动测试的惯例。我可以在“之后”写下BDD吗?还是我必须在“之前”之前写下BDD?BDD可以在“之后”完成吗?

如果你写BDD“之后”,它不是BDD,那么它叫什么?

回答

7

通过行为驱动开发的定义,你不能代码后写进行性能测试,但是这并不意味着这样做是没有用的。您可以从首先编写规格测试中获得更多好处,但它们仍然可用作应用程序的回归系统测试。所以,虽然你在技术上不是在练习BDD,但写这些测试是个好主意。一个BDD的大福利的是,它引导了特定行为的发展,使你被后来加入他们失去了很多价值,但他们仍然担任一些使用。

这是与在TDD的代码之后写单元测试。这在技术上不是TDD,但进行测试显然仍然有用。

+0

它叫什么然后如果没有BDD? – Tower 2012-04-20 06:14:30

+5

定期开发与行为/规格测试。 :P – Oleksi 2012-04-20 06:14:51

+1

您仍然可以通过手动进行对话和测试来完成BDD。当然,自动化非常有用,但它远没有谈话那么重要。 BDD只是旨在帮助开发人员进行对话并将该语言带入代码。请不要注意自动化! – Lunivore 2012-04-20 13:37:51

3

行为驱动开发(BDD)是测试驱动开发(TDD)的变化,只是像TDD,你应该先写你的测试。

有人叫BDD用于TDD做的权利,或者它的方式之意。另外,您可以说BDD是域驱动开发(DDD)和TDD的混合体。

0

BDD发展后不BDD,它是验证,而不是规范的情况。

然而,随着其他人提到,这并不意味着,在加入验收测试套件后的,其实没有价值。在进行进一步的开发(大型重构工作或添加新功能)之前,您将构建一套验证行为的回归验收测试。根据经验我会说如果你要完成这项任务,那么编写生产代码的关键开发人员最好远离编写验收测试(希望采用小黄瓜脚本的形式);那些正在编写它们的程序可以回到最初的需求文档(如果有的话),并且绝对是与一些利益相关者合作的。这将有助于确保您编写的验收测试更接近规范。

0

我喜欢观察根本就是BDD-后编写验证的情况。我也非常感谢开发人员在做BDD-After之后忽略了BDD-As-You-Go的其他一些好处。这似乎值得补充的一点是,在实施前写secenario /测试,然后有检验合格也是一种类型的验证测试本身是健全的。为已有功能的功能(BDD-After)编写通过测试可能会让开发人员疑惑,如果功能崩溃,他们的测试是否会“适当地失败”。