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%+,新功能先写关键路径测试再逐步补充。

📖 小节


📝 作业

  1. 基础题(难度⭐):创建一个测试执行 Skill,自动检测项目测试框架并运行测试。
  2. 进阶题(难度⭐⭐):创建一个测试生成 Skill,为指定函数生成正常/边界/异常三类测试。
  3. 挑战题(难度⭐⭐⭐):创建一个 TDD 辅助 Skill,完整实现 RED-GREEN-REFACTOR 循环,并输出每阶段的状态报告。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏