首页/开发/系统分析与架构设计速查/Gherkin 语法与实例化需求
需求分析与建模61 条

Gherkin 语法与实例化需求

Gherkin 用 Feature、Scenario、Given、When、Then、Background、Scenario Outline 与 Examples 描述可执行的需求示例,既是沟通语言也是自动化测试入口。

Gherkin 是什么

Gherkin 是用业务语言书写可执行验收场景的语法,核心关键词包括 Feature、Background、Scenario、Scenario Outline、Examples、Given、When、Then、And、But。它要求用业务可读的语言描述前置条件、动作与预期结果,把技术细节留给步骤实现,从而让业务、开发与测试围绕同一份文本对齐,并可直接被 Cucumber、SpecFlow、Behave 等框架执行。

示例

示例
Feature: 订单查询
  Background:
    Given 用户已登录

  Scenario: 查询本人订单
    When 用户按订单号查询
    Then 返回订单详情

  Scenario Outline: 查询异常订单
    When 用户按订单号 "<id>" 查询
    Then 提示 "<error>"
    Examples:
      | id     | error    |
      | 999999 | 订单不存在 |
      | 1001   | 无权限    |

基本信息

关键词Feature、Background、Scenario、Scenario Outline、Examples、Given、When、Then
书写原则用业务语言写步骤,技术细节放在步骤实现中
常见工具Cucumber、SpecFlow、Behave、Robot Framework 等
维护要点场景与业务规则一一对应,规则变化时同步更新场景
反模式把每个按钮点击都写成一个步骤,文本退化成脚本

典型使用场景

  • 验收标准落地:把讨论出的示例写成可执行场景
  • 回归测试:业务关键路径以场景形式长期维护
  • 跨角色沟通:业务方能读懂场景文本并直接评审
  • 文档化行为:场景文本作为系统行为的活文档
  • 外包交付:以场景清单约定验收范围与判定标准
  • 培训新人:通过读场景快速理解业务规则与边界
Gherkin 场景应描述业务行为而不是界面操作:写“用户提交订单”比写“点击提交按钮”更稳定,界面改版时场景无需跟着修改。
为追求自动化覆盖把场景写成脚本细节,业务方读不懂,文本与自动化代码的双重维护成本会迅速上升。

关键词速查

关键词作用示例
Feature描述被验证的功能与其价值订单查询
Background所有场景共用的前置条件用户已登录
Scenario一个独立可验证的场景查询本人订单
Scenario Outline参数化场景,配合表格批量展开查询异常订单
Examples参数表格,每行生成一个用例订单号与预期提示
Then预期结果,必须可观察返回订单详情

易错点

  • 场景里写界面操作细节,界面改版后大量场景失效,维护成本上升
  • 一条场景包含多个 When-Then 组合,失败时无法判断是哪条规则不满足
  • 步骤实现里塞入大量业务判断,场景文本与真实行为脱节
  • 业务方从不阅读场景文本,自动化测试沦为开发自娱自乐
  • 场景只覆盖正常路径,异常与边界仍靠人工测试补充

数据来源与参考

  • Cucumber 文档(cucumber.io)
  • Gojko Adzic《Specification by Example》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌