用途
Scenario-Driven Testing 用于 AI 代码生成过程中的测试与验证。当需要编写测试、验证功能、确认代码是否真正可用时使用该技能。其触发场景包括“write tests”“add test coverage”“validate”等。
核心原则
该技能提出一条“铁律”:没有场景在真实依赖下通过,任何功能都不算被验证。
它给出一个“真相层级”:
- 场景测试(真实系统、真实数据)= 真相
- 单元测试(隔离)= 仅供人类心理安慰
- Mock = 掩盖 bug 的谎言
原文表述为:“使用 mock 的测试不是在测试你的系统,而是在测试你对依赖行为方式的假设。”
何时使用
- 验证新功能
- 在宣布工作完成之前
- 当你想使用 mock 时
- 修复 bug 后需要验证时
- 任何需要证明代码可用的时刻
必需实践
- 在 .scratch/ 中编写场景:使用适合任务的任意语言;端到端地运行真实系统;零 mock;必须加入 .gitignore(绝不提交)。
- 将模式提升到 scenarios.jsonl:把反复出现的场景提取为有文档的规格;每个场景一行 JSON;包含 name、description、given/when/then、validates;该文件需要提交。
- 使用真实依赖:外部 API 必须访问真实服务(沙箱/测试模式可接受)。对任何依赖使用 mock 都会使场景无效。
- 独立性要求:每个场景必须能独立运行,不依赖之前的执行。这带来并行执行、避免隐藏的顺序依赖、可靠的 CI/CD 集成。
无效场景的判定
出现以下情况即视为无效:
- 包含任何 mock
- 使用假数据而非真实存储
- 依赖另一个场景先运行
- 从未实际执行以验证其通过
需要避免的常见违规
应拒绝以下合理化借口:
- “就写个快速单元测试……”——单元测试不验证功能
- “太简单了不需要端到端……”——集成会破坏简单的东西
- “为了速度我先 mock……”——如果测试说谎,速度没有意义
- “我没有 API 凭证……”——向人类伙伴索要真实凭证
完成定义
功能只有在以下条件全部满足时才算完成:
- ✅ .scratch/ 中的场景零 mock 通过
- ✅ 真实依赖被实际调用
- ✅ .scratch/ 保持在 .gitignore 中
- ✅ 稳健模式已提取到 scenarios.jsonl
示例工作流
- 编写场景——创建 .scratch/test-user-registration.py
- 使用真实依赖——访问真实数据库、真实认证服务(测试模式)
- 运行并验证——执行场景,确认通过
- 提取模式——记录到 scenarios.jsonl
- 保持 .scratch 被忽略——绝不提交临时场景
为什么重要
- 单元测试验证隔离逻辑
- 集成测试验证组件协同工作
- 场景测试验证系统确实可用
只有场景测试能证明功能为用户交付了价值。
限制
资料未提供该技能的具体安装命令、支持平台、收费方式或价格信息,暂未提供。