在 API 自动化测试中使用 BDD 是一种好方法吗?

Using BDD in API automation testing is a good aproach?

我正在为 RESTful API 测试自动化编写一个框架,我已经决定使用 REST Assured,我不是 100% 确定添加一个层以允许使用定义测试像 Gherkin 这样的领域特定语言,因此添加了像 Cucumber 这样的 BDD 框架。 你怎么看?
在 API 自动化测试中使用 BDD 是一种好方法吗?

在我看来,使用 BDD 始终是一个好方法(就测试自动化而言)。

  1. 易于与其他开发者共享。一组人类可读的场景将更快进入绳索。
  2. CI 与 BDD 集成将使故障调查更加容易。
  3. 易于维护和重构,因为您的方法名称不仅是"assertUserHasRoLe" f.e。而且还有商业意义的文字

BDD 就像一座桥梁,是测试框架中更高层次的抽象。相反,或者阅读该方法中发生的事情的测试代码 - 这应该足以阅读该方法的行为定义。

我目前正在使用 BDD 进行 RestAPI 测试。这是 BDD RestAPI 自动化框架的优缺点。

我们使用的技术:Cucumber、Java、Rest-Assured 和 junit

以下优缺点是我自己的评论或个人看法。这是基于我的经验。

优点:

  • 使用 Gherkin 语言轻松编写特征文件
  • 很容易满足验收标准
  • 团队中的每个人(包括团队)都可以帮助您编写功能文件
  • 非常好的报告格式和调试失败
  • 在夜间或常规构建期间易于执行
  • 集成测试非常简单,因为您可以使用 Gherkin 语言的 Background 或 Given 和其他功能

缺点:

  • 当公司的其他团队成员需要测试用例或任何文档时,您的答案将是 "We have scenario in Gherkin Language" 并且有时很难 understand/explain 场景,因为没有明确的步骤像传统的步骤定义或大文档

  • 高层管理人员有更多时间了解 HP ALM 覆盖率报告等测试产品的收敛性。

  • 对于写测试用例多年的人来说,写几个sprint有点难。

请随意编辑或建议任何需要添加或删除的内容。希望对你有所帮助

不,它不是 API 测试的好方法,甚至 UI 测试很多东西都必须 "line up" BDD 助您取得成功。

我已经写了一个详细的解释作为对 Stack Overflow 上另一个问题的回答,这里是 link:

几年前,我确实设法为客户结合了自动化 UI 测试和 BDD (Concordion)。更大的挑战过去是,现在仍然是带有 div 的 HTML 代码和其他可以在网页设计时轻松更改的标签。 对于 BDD 解决方案,还应该决定他们最喜欢什么,FIT、Cucumber、Concordion 等。有多种解决方案。

这取决于你的项目,如果你的项目很大并且一天比一天大,并且你想要最大的集成或功能测试覆盖率,那么我可以建议你使用 BDD。在这种情况下,您将只需要为每个模块化任务定义步骤定义,并使用功能文件中的这些步骤定义创建测试用例。

我在过去 3 年中使用 BDD 致力于 API 自动化。这是一个非常简单且可重复使用的概念,它为任何人甚至 non-technical 人提供了清晰的视野。我们在这里维护的唯一部分是 header 数据,其中包括 header 和用于维护 session.

的 cookie

我必须推荐这种方法,因为它确实以结果为导向并且易于维护和重用。

已使用 selenium 实现了 Cucumber:Java、TestNG 框架以及 SpecFlow、NUnit、Selenium:POM 和 Extent Reports 框架。 根据我过去的经验,这提供了扩大没有技术开发背​​景的商业用户和 SME 的输入和反馈的能力。通过这种扩展的反馈,我们能够更快更好地交付产品。在 UAT 和发布期间很少或没有意外,因为应用程序代码是功能文件的派生而不是需求的解释。 这使得持续集成和部署发生得更快。我期待在我当前的项目中实现这一点。