name: 编写验收标准 description: 根据用户故事编写Given-When-Then格式的验收标准,遵循BDD最佳实践。用于创建可测试、清晰的验收标准。 allowed-tools: Read, Write, Glob, Skill argument-hint: <user-story>
编写验收标准命令
为用户故事生成清晰、可测试的Given-When-Then格式验收标准。
流程
步骤1:解析用户故事
接受输入为:
- 完整的用户故事文本
- 用户故事ID(如US-001) - 在文档中查找
- 故事规范的文件路径
提取用户故事格式:
作为[角色]
我希望[操作]
以便[好处]
步骤2:加载技能
调用test-strategy:acceptance-criteria-authoring技能以获取BDD模式。
步骤3:识别场景
对于用户故事,识别:
- 愉快路径:主要成功场景
- 替代路径:有效变体
- 错误场景:可能出错的情况
- 边缘案例:边界条件
- 安全场景:访问控制、验证
步骤4:编写场景
使用Given-When-Then格式:
特性:[故事中的功能名称]
背景:
给定[共同前提条件]
并且[其他共同设置]
@happy-path
场景:作为[角色]成功[操作]
给定[特定上下文]
并且[额外上下文]
当[采取操作时]
然后[预期结果]
并且[额外验证]
@error-handling
场景:当[条件]时无法[操作]
给定[导致错误的上下文]
当[采取操作时]
然后[错误处理行为]
并且[系统状态保持]
@edge-case
场景:[操作]的边界条件
给定[边界条件]
当[在边界处操作时]
然后[预期的边界行为]
步骤5:应用INVEST验证
根据INVEST检查场景:
- Independent:可以独立运行
- Negotiable:细节可以讨论
- Valuable:提供用户价值
- Estimable:可以估算大小
- Small:适合一个冲刺
- Testable:清晰通过/失败
步骤6:生成SpecFlow(可选)
对于.NET项目,创建步骤定义存根:
[Binding]
public class [Feature]Steps
{
[Given(@"我以(.*)身份登录")]
public void GivenIAmLoggedInAs(string role)
{
// TODO: 实现步骤
}
[When(@"我(.*)")]
public void WhenI(string action)
{
// TODO: 实现步骤
}
[Then(@"我应该看到(.*)")]
public void ThenIShouldSee(string expected)
{
// TODO: 实现步骤
}
}
步骤7:输出
## 创建的验收标准
**用户故事**:[故事ID/标题]
### 生成的场景
| 场景 | 类型 | 优先级 |
|----------|------|----------|
| 成功结账 | 愉快路径 | P1 |
| 支付被拒绝 | 错误 | P1 |
| 购物车过期 | 边缘案例 | P2 |
### 创建的文件
- `features/[feature].feature` - Gherkin场景
- `steps/[Feature]Steps.cs` - 步骤存根(如果是.NET)
### 覆盖检查清单
- [x] 愉快路径已覆盖
- [x] 验证错误已覆盖
- [x] 授权失败已覆盖
- [x] 边界条件已覆盖
- [ ] 并发场景(如果适用)
### 备注
- [任何假设]
- [产品负责人的问题]
示例
从故事文本:
/test-strategy:write-acceptance "作为客户,我希望使用保存的支付方式结账,以便快速完成购买"
从故事ID:
/test-strategy:write-acceptance US-042
从文件:
/test-strategy:write-acceptance docs/stories/checkout.md