Skills: 自动化测试技能
最后更新:2026-08-31
测试是代码的安全网——Skill 让这张网织得更快、更密、更智能。
1. 测试 Skill 类型
(1) 测试生成
根据源代码自动生成测试:
YAML
---
name: test-generator
description: "自动生成单元测试"
triggers:
- keyword: "生成测试|generate-test"
tools:
- Read
- Grep
- Glob
- Write
---
MARKDOWN
## 生成流程
1. Read 源文件,分析函数签名和逻辑
2. 识别边界条件和异常路径
3. Write 创建测试文件
4. Bash 运行测试验证
(2) 测试执行
自动检测并运行项目测试:
| 框架 | 检测方式 | 运行命令 |
|---|---|---|
| pytest | pyproject.toml | pytest |
| Jest | package.json | npx jest |
| Go | go.mod | go test ./... |
| Rust | Cargo.toml | cargo test |
(3) 失败诊断
测试失败时自动分析原因:
MARKDOWN
## 诊断流程
1. 读取失败测试的输出
2. 定位失败断言和错误堆栈
3. Read 相关源代码
4. 分析失败原因
5. 输出诊断报告和修复建议
2. 测试生成策略
(1) 函数级测试
PYTHON
# 源代码
def divide(a: float, b: float) -> float:
if b == 0:
raise ValueError("Division by zero")
return a / b
PYTHON
# 自动生成的测试
def test_divide_normal():
assert divide(10, 2) == 5.0
def test_divide_negative():
assert divide(-10, 2) == -5.0
def test_divide_zero():
with pytest.raises(ValueError):
divide(10, 0)
def test_divide_float():
assert divide(7, 2) == 3.5
(2) 测试覆盖维度
| 维度 | 测试类型 | 示例 |
|---|---|---|
| 正常路径 | Happy path | 正常输入返回预期结果 |
| 边界条件 | Boundary | 空字符串、零值、最大值 |
| 异常路径 | Error path | 非法输入抛出预期异常 |
| 并发安全 | Concurrency | 多线程访问共享资源 |
3. 覆盖率分析
(1) 覆盖率收集
BASH
# Python
pytest --cov=src --cov-report=term-missing
# JavaScript
npx jest --coverage
# Go
go test -coverprofile=coverage.out ./...
(2) 覆盖率报告
TEXT
📖 仅展示
覆盖率报告
├── 总覆盖率: 72%
├── 未覆盖文件:
│ ├── src/auth/__init__.py (0%) ← 入口文件,需要测试
│ ├── src/utils/validators.py (45%) ← 部分函数未测试
│ └── src/api/routes.py (60%) ← 错误处理未覆盖
└── 建议: 优先补充 validators.py 的测试
4. 测试 Skill 实战
▶ 示例:TDD 辅助 Skill
Alice 创建了一个 TDD 辅助 Skill,帮助团队践行测试驱动开发:
YAML
---
name: tdd-assistant
description: "TDD 辅助:先写测试,再写实现"
triggers:
- keyword: "tdd|测试驱动"
tools:
- Read
- Write
- Edit
- Bash
---
MARKDOWN
## TDD 流程
1. 理解需求
2. Write 失败测试(RED)
3. Bash 运行确认测试失败
4. Edit 编写最小实现(GREEN)
5. Bash 运行确认测试通过
6. Edit 重构优化(REFACTOR)
7. Bash 再次确认测试通过
Bob 说:"TDD 最大的敌人是惰性——Skill 把流程固化了,开发者不用纠结'先写测试还是先写代码',跟着走就行。"
❓ 常见问题
Q 自动生成的测试质量够吗?
A 作为起点够用,但边界条件和业务逻辑测试需要人工补充。Skill 生成的测试覆盖正常路径和常见边界,复杂场景仍需人工设计。
Q 测试失败时 Skill 能自动修复吗?
A 可以尝试,但建议先诊断再修复。简单断言失败可以自动修,复杂逻辑错误需要人工确认修复方向。
Q 如何平衡测试覆盖率和开发速度?
A 核心模块目标 80%+,工具函数 60%+,新功能先写关键路径测试再逐步补充。
📖 小节
- 三类测试 Skill:生成、执行、诊断
- 生成策略:正常路径 + 边界条件 + 异常路径
- 覆盖率分析:收集 → 报告 → 优先补充
- TDD 流程:RED → GREEN → REFACTOR,Skill 固化流程
📝 作业
- 基础题(难度⭐):创建一个测试执行 Skill,自动检测项目测试框架并运行测试。
- 进阶题(难度⭐⭐):创建一个测试生成 Skill,为指定函数生成正常/边界/异常三类测试。
- 挑战题(难度⭐⭐⭐):创建一个 TDD 辅助 Skill,完整实现 RED-GREEN-REFACTOR 循环,并输出每阶段的状态报告。