作为程序员,我需要了解行为驱动开发?

时间:2012-03-10 18:14:05

标签: unit-testing bdd

将此置于上下文中。我喜欢TDD。我喜欢先编写测试,并使用assertEquals和assertTrue等表达我需要的代码。

但是每个人似乎都在接受BDD计划。我看到很多关于rSpec和黄瓜和生菜的讨论。当我看到它们时,它们看起来过于冗长,几乎像科博尔一样天真的假设,即以某种方式写长假“伪英语”使得正式的规范对外行人员来说是清晰的。

关于BDD的一些着作使得它听起来像是在实践中发现TDD太难的人。我觉得我没有这个问题。或者,至少,我所遇到的问题是由于在针对数据库或交互式环境中进行TDD的问题,而不是因为我无法制定或优先考虑我的测试。

所以我的问题是这个。作为程序员,BDD对我来说有什么价值? a)在我为自己(或与其他程序员)编写的项目中。 b)在与非技术客户合作的背景下。

对于那些曾在多个项目中使用BDD的人来说,除了TDD之外,它还能为您带来什么? 您是否找到了能够在BDD中编写足够严格的测试用例但不能将其作为普通测试编写的客户,产品或项目经理?

3 个答案:

答案 0 :(得分:0)

我在一个非常简单的内部项目上测试了BDD,然后将其导出到一个复杂的项目上。

我发现主要区别在于您在BDD中运行的测试类型。 BDD外部测试基于验收测试,它不涉及类或任何内部代码,而是作为一个整体测试系统的继电器。 BDD内部测试与您在TDD中完成的单元测试完全相同。

通过这种方式,您可以在两个级别上运行相同的红绿重构方法。

我发现外部测试对复杂项目非常有帮助。

答案 1 :(得分:0)

要回答问题(a),如果您没有任何非技术性的利益相关者,那么Cucumber可能不合适,但您是否确信您已经进行了充分的集成测试?单元测试通常是不够的。

答案 2 :(得分:0)

我喜欢这个视频关于TDD和BDD之间差异的讨论:http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Brandom-Satrom-BDD-in-ASPNET-MVC-using-SpecFlow-WatiN-and-WatiN-Test-Helpers(它的.NET工具,不一定是我使用的.NET工具,但概念是正确的)

一般情况下,您可能会说它通过更改它来改进您的反馈循环,以检查您是否认为软件是按照您的预期实现(使用TDD)来检查软件是否满足用户的观点(使用BDD)