【问题标题】:Does behavior-driven development use unit tests or integration ("assembly") tests?行为驱动开发是否使用单元测试或集成(“组装”)测试?
【发布时间】:2014-05-03 04:08:08
【问题描述】:

我们应该将 BDD 测试归类为“单元测试”还是“集成测试”(“汇编测试”或“字符串测试”)?感到困惑,因为从技术上讲 BDD 测试是使用 *unit 工具运行的,尽管测试可能(并且在大多数情况下)涵盖多个组件,因为它们可能用于端到端测试用例。

【问题讨论】:

    标签: unit-testing testing integration-testing bdd acceptance-testing


    【解决方案1】:

    BDD 不仅有一种测试。它同时使用验收测试和单元测试。

    从验收测试开始。验收测试的目的是在高层次定义和验证应用程序功能。验收测试通常使用 JBehave 或 Cucumber 等 BDD 工具编写,而不是使用单元测试工具。您可以使用单元测试工具编写验收测试,但这并不像使用真正的 BDD 工具那样有效,因为单元测试工具将规范和实现混合在同一个文件中,从而更难专注于行为。从技术上讲,验收测试是集成测试,因为它们针对整个应用程序堆栈运行。

    实施验收测试后,BDD 将继续进行测试,定义和验证所需应用程序行为的详细信息,并确保技术正确性。

    • 其他集成测试可以使用与验收测试相同的工具编写,也可以使用单元测试工具编写,但不隔离应用层。即使它们是使用与验收测试相同的工具编写的,它们也只是集成测试,因为它们的动机是需求细节和工程问题,而不是高级需求。

    • BDD 还使用常规单元测试来测试需求细节和技术问题。

    典型的 BDD 测试套件包括一整套验收测试、数量有限的集成测试(验收测试除外)和大量单元测试。靠近用户的应用层(例如控制器)通常在验收测试中大部分或全部进行测试,而较低的层(例如模型)需要更多的单元测试。

    【讨论】:

    • 而且由于 BDD 测试经常使用 Selenium 来测试 UI 旅程,我想它们也可以用作回归测试。但问题在于 BDD 是单元测试还是集成测试。
    • 我同意 Dave,我说 xUnit 的原因是(我可能错了)Cucumber(或类似 BDD 工具)可能依赖于 xUnit(如 JUnit),您可以使用 JUnit 运行它们.另外,我猜集成测试是组装测试的另一个名称。
    • 不,通常 BDD 工具(或多或少是验收测试工具)不是建立在单元测试工具之上的。但重要的不是工具是如何实现的,而是 a) BDD 工具将重点放在行为而不是测试实现上,以及 b) 每种工具在不同开发阶段的作用。我重写了我的答案;看看你现在是否清楚。
    • 你的回答对戴夫很有帮助,遗憾的是让我感到困惑的是这些测试的分类。虽然它们是围绕验收标准编写的验收测试,但我认为 BDD 是组装测试,因为我们正在测试的用户旅程或流程涉及(也许不一定)多个组件。
    • 是的,所有验收测试(这是通常的术语,不是组装)都是集成测试。关键在于,在 BDD 中,您编写验收测试来指定系统行为,而不是因为您正在考虑系统的某些部分。 (事实上​​,您在系统存在并有部分之前编写了第一个测试。)在您实现了所有验收测试之后,您可能会编写更多集成测试以提高集成覆盖率。
    猜你喜欢
    • 1970-01-01
    • 2010-12-26
    • 2013-08-24
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多