关于 behavior-driven-testing
behavior-driven-testing 是一项以用户可见行为为核心的软件测试技能,适合需要规划和验证代码变更的开发者。它通过分阶段工作流与分支矩阵,指导覆盖边界、错误和真实环境场景。
主要功能
- 01按分析、设计和执行阶段组织测试
- 02用 Gherkin 定义预期行为
- 03绘制状态转换与分支矩阵
- 04设计等价类和边界测试
- 05结合单元、集成与端到端测试
- 06核对覆盖情况与发布清单
适用场景
- 01为新需求明确可验证的行为
- 02检查代码变更影响的分支
- 03补充空值、边界和错误响应测试
- 04发布前核验测试与覆盖情况
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ agent-next/ behavior-driven-testing --skill behavior-driven-testing安装后在 Claude Code 中输入/behavior-driven-testing确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdLICENSEreferences/analysis-phase.mddesign-phase.mdbranch-matrices.mdexecution-phase.mdtesting-principles.mdtest-templates.md详细介绍
行为驱动测试
从用户行为出发,而不是代码结构。必须测试用户可访问的每条路径——不遗漏任何分支,也不假设任何边界情况。
核心原则
- 行为优先于实现 - 测试用户看到的内容,而不是代码的工作方式
- 全面覆盖 - 每个分支、每个条件、每种边界情况
- 上下文感知 - 每项测试都必须明确其前置条件
- 真实环境验证 - 模拟是工具,而非目的
工作流概览
测试分为三个阶段。请按顺序进行:
Analysis → Design → Execution → Verify Coverage → Ship (or loop back)
分析阶段:
- 需求定义 - 使用 Gherkin 规范定义“正确”的行为
- 代码变更跟踪 - 准确了解发生了哪些变更
- 状态机分析 - 梳理所有 UI 状态和转换
- 分支映射 - 创建分支矩阵(核心产物)
设计阶段: 5. 测试用例设计 - 运用等价类划分和边界值分析 6. 影响分析 - 确保新代码不会破坏现有行为 7. 测试优先级排序 - P0(每次提交)→ P3(定期)
执行阶段: 8. 测试数据准备 - 创建夹具、模拟对象和工厂 9. 测试实现 - 编写单元、集成和 E2E 测试 10. 测试执行 - 分阶段运行测试(本地 → CI → 预发布环境) 11. 覆盖率验证 - 验证分支矩阵已全部完成
快速参考:必须测试的分支
| 类别 | 测试用例 | 优先级 |
|---|---|---|
| 空值 | null、undefined、""、" "(空白字符)、[]、{} | P0 |
| 边界值 | min-1、min、min+1、max-1、max、max+1 | P1 |
| 身份验证状态 | 已登录、已登出、加载中、会话已过期 | P0 |
| API 响应 | 200+数据、200+空数据、400、401、403、404、500、超时、离线 | P0 |
| 用户混乱操作 | 双击、快速导航、操作中刷新、后退按钮 | P1 |
空白字符陷阱(最常见的 Bug)
// ❌ WRONG - whitespace " " is truthy!
if (!text) throw new Error('Required');
// ✅ CORRECT
if (!text?.trim()) throw new Error('Required');
常见错误
| 错误 | 为什么不好 | 修正方法 |
|---|---|---|
| 只测试成功路径 | 错误路径占代码的 50% | 测试所有分支 |
| 跳过空值测试 | 这是生产环境中最常见的 Bug | 分别测试 null、undefined、"" 和空白字符 |
| 全部使用模拟 | 模拟会掩盖真实问题 | 添加集成和 E2E 测试 |
| “手动测试过” | 无法重复,也不可靠 | 将其自动化 |
| 忽略加载状态 | 用户会在加载期间进行交互 | 测试加载行为 |
| 跳过双击测试 | 用户什么都会双击 | 测试快速交互 |
分支矩阵模板
每次代码变更都要创建一个分支矩阵:
| ID | Condition | True Behavior | False Behavior | Priority | Status |
|----|-----------|---------------|----------------|:--------:|:------:|
| B01 | user.isPremium | Skip credit check | Check credits | P0 | ⬜ |
| B02 | credits >= required | Proceed | Show error | P0 | ⬜ |
| B03 | credits == required | Boundary: Proceed | - | P1 | ⬜ |
Status: ⬜ Pending | ✅ Passed | ❌ Failed
详细参考资料
仅在需要详细指导时加载这些文件:
-
分析详情:参见 references/analysis-phase.md
- Gherkin 规范格式
- 状态机图
- 完整的分支映射方法
-
测试模板:参见 references/test-templates.md
- 单元测试结构(Vitest/Jest)
- 集成测试模式
- E2E 测试示例(Playwright)
-
分支矩阵:参见 references/branch-matrices.md
- 入口点分支
- 身份验证分支
- API 响应分支
- 输入验证分支
-
测试原则:参见 references/testing-principles.md
- 模拟测试与真实测试
- 创建当前不存在的测试条件
- 渐进式测试策略(第 1-4 天)
发布前检查清单
发布前,请确认:
## Mock Tests (CI)
- [ ] All unit tests pass
- [ ] All integration tests pass
- [ ] Coverage thresholds met
## Real Tests (Before release)
- [ ] E2E tests pass on staging
- [ ] Manual smoke test on staging
- [ ] Core paths verified in real environment
## Branch Matrix
- [ ] All P0 branches tested
- [ ] All P1 branches tested
- [ ] No untested edge cases
## Production (After deploy)
- [ ] Smoke test passes
- [ ] Error rate monitoring normal
相关技能
- test-driven-development - 先编写测试,再实现功能
- systematic-debugging - 有条理地调试问题
评论
支持 Markdown