Gherkin语言:语法、格式和示例

⚡ 智能摘要

Gherkin 是一种面向业务人员的易读语言,它描述软件行为而无需实现细节。它使用 Given、When 和 Then 关键字来定义…… Cucumber 用通俗易懂的语言编写的测试场景,既是动态文档,也是自动化 BDD 测试的框架。

  • 📝 简明语言: Gherkin 用文字描述行为,以便非程序员也能阅读和编写测试。
  • 🥒 Cucumber: Cucumber 读取 .feature 文件并执行 Gherkin 步骤作为测试。
  • ???? Given-When-Then: 给定上下文,当触发某个动作时,则断言结果。
  • 🧱 关键词: 每个场景都由以下部分构成:特征、背景、场景、并且、但是。
  • 最佳实践: 保持每个场景独立,描述“什么”,而不是“如何”。
  • 🤖 人工智能协助: AI工具可以根据简单的需求生成“给定-当-则”场景。

小黄瓜语言 Cucumber

什么是 Gherkin 语言?

小黄瓜 是一种业务可读的语言,可帮助您描述业务行为而无需深入了解实现细节。它是一种领域特定语言,用于定义测试。 Cucumber 它采用简洁易懂的语言描述用例,并允许用户从行为测试中移除逻辑细节。

Gherkin 文本既是文档,也是自动化测试的框架。Gherkin 格式基于 TreeTop 语法,该语法支持超过 37 种语言,因此您可以使用超过 37 种口语语言编写 Gherkin 代码。该脚本有两个主要用途:记录用户场景,并为编写自动化 BDD 测试提供基础。

为什么是 Gherkin?

如果没有统一的、通俗易懂的语言格式,业务团队和技术团队对需求的描述就会出现差异,从而导致误解。Gherkin 为所有人提供了一种统一的结构化词汇,它既像普通英语一样易读,又能直接映射到可执行的测试用例。

小黄瓜语法

Gherkin 是一种面向行的语言,就像 YAML 一样。 Python每一行称为一个步骤,以关键字开头。缩进使用制表符或空格。注释可以添加到任何位置,但必须以 # 号开头。解释器在读取每一行时,会先移除 Gherkin 关键字,例如 Given、When 和 Then。

Feature: Title of the Scenario
  Given [Preconditions or Initial Context]
  When [Event or Trigger]
  Then [Expected output]

Gherkin 文档的扩展名为 .feature,它只是一个带有描述性扩展名的测试文件。 Cucumber 读取 Gherkin 文档并执行测试以验证软件的行为是否符合 Gherkin 语法的描述。

小黄瓜中使用的重要术语

主要关键词有:特征、背景、场景、给定、当……时、然后、并且、但是、场景概述。 Cucumber 没有严格的命名规则,但清晰的命名规范会有所帮助。

特性

文件扩展名应为 .feature,每个 feature 文件只能描述一个 feature。feature 关键字以 开头。 特征: 然后是一个空格,再是功能名称。

EventXtra XNUMX大解决方案

每个功能文件可能包含多个场景,每个场景都以……开头。 场景: 然后是场景名称。

背景

“背景”关键字为场景添加上下文。它可以包含所有场景共享的步骤;区别在于这些步骤在每个场景之前运行。

特定

Given 关键字在用户开始与系统交互之前,将系统置于一个已知状态。它定义了前提条件或上下文:

Given I am on "/."

日期

When 关键字定义了用户执行的操作:

When I perform "Sign In."

然后

Then 关键字定义了在 When 步骤中执行操作后观察到的结果。您只需验证可察觉的变化:

Then I should see "Welcome Tom."

但是

你可能需要多个 Given、When 或 Then 步骤。And 和 But 关键字可以添加额外的步骤,以提高可读性:

And I enter "EmailAddress" with "tomjohn@gmail.com."
But I should see "Welcome Tom."

Given、When、Then、And 和 But 都是测试步骤。如果将它们互换,解释器不会报错,但语句会变得不通顺,所以请确保每个关键字都用于其预期用途。

Gherkin 示例

例如1: 社交网站的登录功能。

Feature: Login functionality of a social networking site
  Given I am a registered user
  When I enter my username
  And I enter my password
  Then I should be redirected to the home page

Gherkin 会分析功能文件中编写的每个步骤,并且功能文件中的步骤必须与步骤定义文件中的步骤相匹配。

例如2: 带有背景的用户身份验证场景。

Feature: User Authentication

Background:
  Given the user is already registered on the website

Scenario: Successful login
  Given the user is on the login page
  When the user inputs the correct email address
  And the user inputs the correct password
  And the user clicks the Login button
  Then the user should be authenticated
  And the user should be redirected to their dashboard

使用 Gherkin 的最佳实践

  • 每个场景都应该单独独立执行。
  • 每个功能都应该能够独立执行。
  • 步骤信息应单独显示。
  • 将您的场景与您的需求联系起来 track 哪些场景属于每个需求。
  • 创建模块化、易于理解的步骤,并将常见场景结合起来。
  • 描述系统的功能,而不是它的工作原理。

Gherkin 的优点

  • Gherkin 语言足够简单,非程序员也能理解。
  • 程序员可以将其作为开展测试的坚实基础。
  • 它使用户故事更容易理解,并针对业务需求。
  • 企业高管和开发人员都可以阅读同一份脚本。
  • Gherkin 测试用例直接将验收测试与自动化测试关联起来。
  • 这种编写风格使得在不同测试中重复使用代码更加容易。

小黄瓜的缺点

  • 这需要高度的业务参与和协作。
  • 它并非在所有情况下都能很好地发挥作用。
  • 编写不佳的测试会增加测试维护成本。

常见问题

BDD 是一种敏捷实践,团队在编写代码之前用简洁易懂的语言描述预期行为。Gherkin 场景用于捕捉这些行为,确保业务和技术人员达成共识。

Gherkin 是一种用于编写场景的简明语言语法。 Cucumber 它是读取 Gherkin .feature 文件并针对您的应用程序执行步骤的几种工具之一。

场景概要使用示例表格中列出的多个数据集运行相同的步骤。它避免了为每组输入值重复编写场景。

步骤定义将每个 Gherkin 步骤映射到运行该步骤的代码。 Cucumber 读取一个步骤,找到匹配的定义,并对应用程序执行该方法。

这三位好友分别是产品负责人、开发人员和测试人员,他们共同审查一项功能。他们的综合视角比任何单一角色都能生成更清晰、更完整的 Gherkin 场景。

除了 Cucumber小黄瓜大厦得到了以下机构的支持 规格流程 适用于 .NET 和 Behave for Python以及其他 BDD 框架。

是的。人工智能助手可以将用户故事转化为“给定-当-那么”场景草稿,提出边界情况,并保持措辞一致,但测试人员仍应审查其准确性。

AI 工具能够读取简单明了的需求,并自动生成结构化的 Given-When-Then 步骤的初稿。这加快了编写速度,但团队仍然需要根据实际验收标准对措辞进行润色。

总结一下这篇文章: