gpt4 book ai didi

ruby-on-rails - 集成与验收测试......什么是 cucumber /牛排?

转载 作者:行者123 更新时间:2023-12-03 10:45:15 25 4
gpt4 key购买 nike

对于我的 Rails Web 应用程序的集成测试,我使用 Steak(类似于 Cucumber)。 Steak 的规范在名为 spec/acceptance 的文件夹中。 Steak/Cucumber 现在是否用于集成或验收测试?我一直认为这是不同的东西。

最佳答案

首先,关于术语的说明:术语集成测试在 TDD 社区中有点含糊。取决于您来自 Java 还是 Rails(使用 Test::Unit),您可能对它有不同的理解。在 Rails(带有 Test::Unit)中,集成测试是测试您的完整堆栈的测试,而功能测试将是测试您的 Controller 的测试。 Java 社区中的大多数人(至少根据我的观察)会认为情况正好相反。我个人更喜欢将端到端测试称为验收测试,而将涉及系统多个层(但不是所有层)的测试称为集成测试。总而言之,这很大程度上取决于您所处的文化。

至于 Cucumber 和 Steak —— 两者都是允许称为行为驱动开发(或简称 BDD)的开发风格的框架。关键是你有两个级别的测试:

  • 端到端测试 ,它通过完整的堆栈测试您 - 它们模拟浏览器,通过您的 Controller 并访问数据库。 cucumber 和牛排适合这个利基市场。
  • 单元测试 ,它单独测试一小部分功能(通常是单个类, mock 其合作者)。这就是 RSpec 适合的地方。

  • 在 BDD 中,您从一个失败的端到端测试开始(被亲切地称为“上档”),然后您开始使用 RSpec(“下档”)首先实现功能测试,直到您得到最终结果——端到端测试通过。通过这种方式,端到端测试插入了您的单元测试,而单元测试又反过来插入了您的实现。主要好处是避免范围蔓延——您最终不会实现不需要的用户可见功能(因为您没有为其编写端到端测试)。

    如果您想了解更多信息,我听说 Behavior Driven Development Wikipedia article出奇的好。此外,RSpec 书。

    因此,Cucumber 和 Steak 都是允许您在“上档”中编写测试的框架。不同之处在于风格——Cucumber 让您用自然语言编写测试。这有几个好处。
  • 业务人员可以阅读测试 ——虽然你不能指望非程序员来编写它们,但他们在传达你打算做什么方面做得很好。您可以编写该功能(先进行 Cucumber 测试)并将其展示给客户,以获取有关这是否是他们真正想要的反馈。我发现这非常有用。
  • cucumber 特征更好地传达意图 -- 因为您可以充分利用英语(或任何语言,真的),您可以交流 为什么此功能是相关的和 怎么样用户在 Ruby 不允许的水平上完成他们的目标。
  • cucumber 有助于发现无处不在的语言 -- 该域包含许多在与客户的对话中飞来飞去的术语。 Cucumber 允许您在开始实现该功能之前发现和捕获它们。而且这一切都是测试驱动的。
  • Cucumber 功能有点高级 ,这使得功能(但不是步骤定义)更加独立于界面。这样,如果界面需要更改,您就不必重新设计功能。

  • 缺点包括学习如何很好地应用它有点棘手,并且您必须多写一点(功能和步骤定义)。我发现如果你已经做了一段时间,第二个并不是真正的问题,因为你得到了一系列可重用的步骤,让你可以更快地编写下一个功能。

    另一方面,牛排更简单,它是 ruby 。你失去了使用英语的所有好处,但你可以写得更少,而且它会执行得更快(有点)。

    归根结底,您使用两者来编写驱动开发的端到端测试。

    关于ruby-on-rails - 集成与验收测试......什么是 cucumber /牛排?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4019646/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com