行为驱动开发

2023-04-21   出处: toolsqa  作/译者:Lakshay Sharma/Yilia

BDD(Behavior Driven Development)

  行为驱动测试是 TDD 的扩展。 与 BDD 中的 TDD 一样,首先编写测试,然后添加应用程序代码。 在这里看到的主要区别是:
●测试以简单的描述性英语类型语法编写
●测试被解释为应用程序的行为,并且更加以用户为中心
●使用示例阐明需求
这种差异需要一种可以以可理解的格式定义的语言。

BDD的特点

1.从思考“测试”转向思考“行为”
2.业务利益相关者、业务分析师、QA 团队和开发人员之间的协作
3.无处不在的语言,很容易描述
4.受商业价值驱动
5.通过使用非技术利益相关者可以理解的自然语言来扩展测试驱动开发 (TDD)
6.Cucumber 或 JBehave 等 BDD 框架是推动者,充当业务和技术语言之间的“桥梁”
  BDD 很流行,可用于单元级测试用例和 UI 级测试用例。 诸如 RSpec(用于 Ruby)或 .NET 中的工具(如 MSpec 或 SpecUnit)在遵循 BDD 方法的单元测试中很受欢迎。 或者,可以编写有关 UI 交互的 BDD 样式规范。 假设你正在构建 Web 应用程序,可能会使用 WatiR/WatiN 或 Selenium 等浏览器自动化库,并使用我刚才提到的框架之一或 Cucumber ( 适用于 Ruby)或 SpecFlow(适用于 .NET)。

BDD 工具 Cucumber 和 SpecFlow

什么是Cucumber ?

  Cucumber 是一个支持行为驱动开发(BDD)的测试框架。 它让我们可以使用由称为 Gherkin 的语言定义的简单语法,以简单有意义的英语文本定义应用程序行为。 Cucumber 本身是用 Ruby 编写的,但它可用于“测试”用 Ruby 或其他语言(包括但不限于 Java、C# 和 Python)编写的代码。

什么是 SpecFlow?

SpecFlow 的灵感来自 Ruby on Rails 世界中的 Cucumber 框架。 Cucumber 使用 Gherkin 格式的简单英语来表达用户故事。 一旦编写了用户故事和他们的期望,Cucumber gem 就用于执行这些商店。 SpecFlow 将相同的概念带入 .NET 世界,并允许开发人员用通俗易懂的英语表达该功能。 它还允许以人类可读的 Gherkin 格式编写规范。

为什么选择 BDD 框架?

  假设电子商务网站的客户要求通过在网站上实施一些新功能来增加产品的销量。 开发团队的唯一挑战是将客户的想法转化为实际为客户带来利益的东西。
  最初的想法很棒。 但这里唯一的挑战是提出这个想法的人并不是拥有这个想法的人。 如果有想法的人恰好是一位才华横溢的软件开发人员,那么我们可能很幸运:这个想法可以转化为可用的软件,而无需向任何其他人解释。 现在需要传达这个想法,并且必须从企业主(客户)传播到开发团队或许多其他人。
  大多数软件项目都涉及多人协同工作的团队,因此高质量的沟通对于他们的成功至关重要。 你可能知道,良好的沟通不仅仅是向他人雄辩地描述你的想法; 还需要征求反馈以确保你得到正确理解。 这就是为什么敏捷软件团队学会了以小增量方式工作,使用增量构建的软件作为对利益相关者“这就是你的意思吗?”的反馈。
下图是客户心中所想并与开发人员团队沟通的示例,以及开发人员如何理解和处理它的示例。

  在 Gherkin 语言的帮助下,cucumber 有助于促进在团队中发现和使用一种无 处不在的语言。 用 Cucumber 编写的测试直接与开发代码交互,但测试是用业务利益相关者很容易理解的语言编写的。 Cucumber 测试在代码中产生任何歧义之前消除了许多误解。

Cucumber/SpecFlow/BDD 测试示例:

  Cucumber 的主要特点是它专注于验收测试。 它使团队中的任何人都可以轻松阅读和编写测试,并通过此功能将业务用户带入测试过程,帮助团队探索和理解需求。

Feature: Sign up
Sign up should be quick and friendly.
Scenario: Successful sign-up
New users should get a confirmation email and be greeted personally by the site once signed in.
Given I have chosen to sign up
When I sign up with valid details
Then I should receive a confirmation email
And I should see a personalized greeting message
Scenario: Duplicate email
Where someone tries to create an account for an email address that already exists.
Given I have chosen to sign up
But I enter an email address that has already registered
Then I should be told that the email is already registered
And I should be offered the option to recover my password

  现在看看上面的示例代码,任何人都可以理解测试的工作原理以及它的目的。 它通过使人们能够在系统构建之前对其进行可视化,从而产生意想不到的强大影响。 任何业务用户都会阅读并理解测试,并能够向你反馈它是否反映了他们对系统应该做什么的理解,甚至可以引发对其他需要考虑的场景的思考。


声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
201° /2011 人阅读/0 条评论 发表评论

登录 后发表评论