【问题标题】:What do I, as a programmer, need to know about Behavior Driven Development?作为一名程序员,我需要了解关于行为驱动开发的哪些内容?
【发布时间】:2012-03-10 18:14:05
【问题描述】:

把它放在上下文中。我喜欢TDD。我喜欢先编写测试,然后使用 assertEquals 和 assertTrue 等表达我需要代码执行的操作。

但似乎每个人都在接受 BDD 计划。我看到很多关于 rSpec 和 Cucumber and Lettuce 的讨论。当我看到这些时,它们看起来过于冗长,几乎就像 Cobol 在他们天真的假设中一样,即以某种方式编写长的“伪英语”使得正式的规范对于外行人来说是易读的。

一些关于 BDD 的文章听起来好像是为那些发现 TDD 在实践中很难做到的人准备的。我不觉得我有这个问题。或者,至少,我之所以会出现这种情况,是因为在针对数据库或交互式环境中进行 TDD 时出现问题,而不是因为我无法制定或确定测试的优先级。

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

对于在多个项目中使用 BDD 的人来说,除了 TDD 之外,它还为您带来了什么? 您是否正在寻找可以在 BDD 中编写足够严格的测试用例但无法将它们编写为普通测试的客户、产品或项目经理?

【问题讨论】:

    标签: unit-testing bdd


    【解决方案1】:

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

    我发现主要区别在于您在 BDD 中运行的测试类型。 BDD 外部测试基于验收测试,不处理类或任何内部代码,而是对整个系统进行测试。 BDD 内部测试与您在 TDD 中执行的单元测试完全相同。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        我喜欢这个视频讨论 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) .

        【讨论】:

          猜你喜欢
          • 2010-09-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多