如何在Gherkin中实现含条件分支的场景?新手BA/PO技术问询
处理Gherkin中带条件分支的场景:定位权限的两种结果
作为经常帮BA/PO梳理Gherkin用例的老鸟,这种用户操作后出现分支结果的场景,我一般推荐两种写法——既符合BDD的「单一行为单一结果」原则,又能让团队所有人快速get业务逻辑:
方法1:拆分独立场景(最推荐,业务可读性拉满)
咱们把两种分支拆成两个独立场景,公共前置步骤用Background提取避免重复。这种写法最直观,业务方、开发、测试都能一眼看懂每个分支的结果:
Background: Given 我是已注册用户 And 我处于着陆页 Scenario: 接受定位权限提示后进入客户代理联系页面 When 我选择搜索并联系客户代理 And 我接受应用定位权限提示 Then 系统展示客户代理联系页面 Scenario: 拒绝定位权限提示后进入手动选择区域页面 When 我选择搜索并联系客户代理 And 我拒绝应用定位权限提示 Then 系统展示手动选择区域页面
为什么首推这个?
- 每个场景只聚焦一个明确结果,完全贴合Gherkin的设计初衷;
- 后续修改某分支逻辑时,直接改对应场景就行,不会影响另一个;
- 业务评审时能单独讨论每个分支的合理性,沟通效率拉满。
方法2:场景大纲+例子(适合自动化测试,减少重复代码)
如果你的团队已经在做自动化测试,或者后续可能增加更多分支(比如「稍后提醒」选项),可以用Scenario Outline结合Examples统一管理,减少重复步骤:
Background: Given 我是已注册用户 And 我处于着陆页 Scenario Outline: 处理定位权限提示后的页面展示 When 我选择搜索并联系客户代理 And 我<权限操作>应用定位权限提示 Then 系统展示<目标页面> Examples: | 权限操作 | 目标页面 | | 接受 | 客户代理联系页面 | | 拒绝 | 手动选择区域页面 |
这个写法的优势:
- 新增分支时,只需要在
Examples里加一行,不用重复写场景步骤; - 自动化测试框架可以直接遍历Examples里的用例,自动生成测试脚本;
- 适合分支逻辑类似、仅结果不同的场景。
给首次用Gherkin的你的小Tips:
- 尽量用业务语言,别写技术术语(比如不说「调用定位API」,就说「提示我开启应用定位权限」);
- 场景名称要明确,让别人一眼知道这个场景测什么;
- 优先用拆分场景的方法,除非分支特别多或需要自动化批量执行,再考虑场景大纲。
内容的提问来源于stack exchange,提问作者user9759542
相关产品推荐
相关产品推荐

