name: BDD场景编写 description: 在编写有效的BDD场景时使用,包括验收标准、边缘案例和场景组织。用于定义行为规范。 allowed-tools:
- Bash
- Read
BDD场景编写
学习编写清晰、可维护的BDD场景,有效捕捉业务需求并推动实现。
编写好场景
一个好的场景应该是:
- 具体:测试一个行为
- 声明性:描述什么,而不是如何
- 业务聚焦:使用领域语言
- 独立:不依赖其他场景
# 好场景 - 具体和声明性
Scenario: 客户获得忠诚度折扣
Given 一个拥有黄金会员状态的客户
And 购物车总金额为100美元
When 客户继续到结账
Then 应应用10%的忠诚度折扣
And 最终总金额应为90美元
# 坏场景 - 过于实现聚焦
Scenario: 应用折扣
Given 我点击会员下拉菜单
And 我从列表中选择"黄金"
When 我点击结账按钮
Then JavaScript计算10%的折扣
验收标准格式
Feature: 订单退款
# 基于规则的验收标准
Rule: 30天内可全额退款
Scenario: 退货窗口内请求退款
Given 一个15天前下的订单
When 客户请求退款
Then 应处理全额退款
Scenario: 退货窗口后请求退款
Given 一个45天前下的订单
When 客户请求退款
Then 退款应被拒绝
And 客户应看到"退货窗口已过期"
边缘案例场景
Feature: 用户注册
Scenario: 成功注册
Given 我在注册页面上
When 我提交有效的注册详情
Then 我的账户应被创建
# 边缘案例
Scenario: 使用已存在的电子邮件注册
Given 存在一个用户邮箱为"existing@example.com"
When 我尝试使用邮箱"existing@example.com"注册
Then 我应看到"电子邮件已注册"
Scenario: 使用无效电子邮件格式注册
When 我尝试使用邮箱"not-an-email"注册
Then 我应看到"请输入有效的电子邮件"
Scenario: 使用空必填字段注册
When 我提交带有空字段的注册表单
Then 我应看到必填字段的验证错误
场景标签和组织
@authentication @critical
Feature: 用户登录
@smoke
Scenario: 基本登录流程
# ...
@security
Scenario: 多次失败尝试后的账户锁定
# ...
@wip
Scenario: 双因素认证
# 正在进行中
何时使用此技能
在需要时使用BDD场景编写:
- 定义用户故事的验收标准
- 记录预期系统行为
- 创建全面的测试覆盖率
- 在开发早期识别边缘案例
- 清晰沟通需求
最佳实践
- 从快乐路径场景开始
- 系统地添加边缘案例
- 使用标签进行组织和过滤
- 保持场景在3-7个步骤
- 在实现前编写场景
- 与利益相关者审查场景
常见陷阱
- 在实现后编写场景
- 每个场景包含太多步骤
- 使用模糊或模棱两可的语言
- 忘记负面测试案例
- 未能有效使用标签组织