第七章:测试与质量保证
本章介绍如何测试 Superpowers 技能,确保代码质量。
测试理念
Superpowers 强调测试驱动开发,技能本身也不例外。每个技能都需要经过严格测试。
测试类型
集成测试
测试技能在真实环境中的行为,特别是涉及子代理、工作流和复杂交互的技能。
特点:
- 执行真实的 Claude Code 会话
- 在无头模式下运行
- 通过会话记录验证行为
测试结构:
tests/
├── claude-code/
│ ├── test-helpers.sh # 共享测试工具
│ ├── test-subagent-driven-development-integration.sh
│ ├── analyze-token-usage.py # Token 分析工具
│ └── run-skill-tests.sh # 测试运行器运行测试
bash
# 运行 subagent-driven-development 集成测试
cd tests/claude-code
./test-subagent-driven-development-integration.sh注意:集成测试可能需要 10-30 分钟,因为它们执行真实的实施计划。
要求
- 必须从 superpowers 插件目录运行(而非临时目录)
- Claude Code 必须安装并作为
claude命令可用 - 本地开发市场必须启用:
~/.claude/settings.json中"superpowers@superpowers-dev": true
集成测试示例:subagent-driven-development
测试内容
验证 subagent-driven-development 技能是否正确:
- 计划加载 - 在开始时读取一次计划
- 完整任务文本 - 向子代理提供完整的任务描述
- 自我审查 - 确保子代理在报告前进行自我审查
- 审查顺序 - 先运行规格合规性审查,再运行代码质量审查
- 审查循环 - 发现问题时使用审查循环
- 独立验证 - 规格审查器独立读取代码,不信任实施者报告
工作原理
- 设置:创建一个临时的 Node.js 项目和最小实施计划
- 执行:在无头模式下运行 Claude Code 和技能
- 验证:解析会话记录(
.jsonl文件)验证:- Skill 工具被调用
- 子代理被分发(Task 工具)
- TodoWrite 用于跟踪
- 实施文件被创建
- 测试通过
- Git 提交显示正确的工作流
- Token 分析:按子代理显示 token 使用情况
测试输出
========================================
集成测试: subagent-driven-development
========================================
测试项目: /tmp/tmp.xyz123
=== 验证测试 ===
测试 1: Skill 工具调用...
[通过] subagent-driven-development 技能被调用
测试 2: 子代理分发...
[通过] 分发了 7 个子代理
测试 3: 任务跟踪...
[通过] TodoWrite 使用了 5 次
测试 6: 实施验证...
[通过] src/math.js 已创建
[通过] add 函数存在
[通过] multiply 函数存在
[通过] test/math.test.js 已创建
[通过] 测试通过
测试 7: Git 提交历史...
[通过] 创建了多个提交(共 3 个)
测试 8: 未添加额外功能...
[通过] 未添加额外功能
=========================================
Token 使用分析
=========================================
子代理 1: 12,345 tokens
子代理 2: 8,234 tokens
...
总计: 45,678 tokens测试最佳实践
1. 真实环境测试
不要过度 mock。使用真实的 Claude Code 会话测试实际行为。
2. 全流程验证
不仅测试最终结果,还要验证:
- 工作流程是否正确
- 中间步骤是否执行
- 错误处理是否正确
3. 会话记录分析
解析会话记录(.jsonl)可以获取:
- 工具调用序列
- Token 使用情况
- 错误和警告
- 用户交互
4. Token 效率分析
监控每个子代理的 token 使用:
- 识别低效的子代理
- 优化提示模板
- 减少不必要的上下文
质量保证
代码审查
在合并任何技能前,进行代码审查:
- 规格合规性 - 是否符合设计文档
- 代码质量 - 是否遵循最佳实践
- 测试覆盖 - 是否有足够的测试
- 文档完整 - 文档是否清晰完整
持续集成
使用 CI 确保每次提交都经过测试:
yaml
# .github/workflows/test.yml
name: Test Skills
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run integration tests
run: |
cd tests/claude-code
./run-skill-tests.sh下一步
在下一章中,我们将学习跨平台兼容性,确保技能在不同平台上正常工作。
参考资源: