2.5 KiB
2.5 KiB
| name | description |
|---|---|
| testing-workflow | 测试策略与最佳实践(TSL/Python/C++):单元测试→集成测试→回归测试。Triggers: 写测试, 测试策略, 单元测试, 集成测试, testing, unit test, how to test |
测试工作流
适用语言:TSL / Python / C++ 核心原则:新功能与 bug 修复必须有可复现的测试。
使用时机
- 新功能开发
- Bug 修复
- 重构或行为变更
测试层级
1. 单元测试(Unit Tests)
目标:验证单个函数/类的行为
- 测试纯函数(无副作用)
- Mock 外部依赖(文件/网络/数据库)
- 一个测试只验证一个行为点
命名示例:
test_add_positive_numbers_returns_sumtest_add_with_zero_returns_other_number
2. 集成测试(Integration Tests)
目标:验证模块间交互
- 关键流程的 end-to-end 测试
- 使用真实依赖或测试环境
- 验证数据流与状态转换
3. 回归测试(Regression Tests)
目标:防止已修复的 bug 复发
- 修 bug 先写失败测试
- 修复后测试通过
何时补测试
| 场景 | 是否需要测试 | 测试类型 |
|---|---|---|
| 新功能 | ✅ 必须 | 单元 + 集成 |
| Bug 修复 | ✅ 必须 | 回归 |
| 重构 | ✅ 必须 | 运行现有测试 |
| 文档/注释 | ❌ 不需要 | - |
| 格式调整 | ❌ 不需要 | - |
测试可维护性原则
- 一个测试一个断言(或一组相关断言)
- 测试名称自解释
- 避免依赖外部资源(用 Mock/Stub)
- 测试代码也要可读
反模式
- 依赖执行顺序、随机数、系统时间
- 单元测试过慢(>1s)
- Magic number 过多
- 重复测试相同行为
运行测试
TSL
- 若项目已有测试命令,优先使用项目标准命令
- 否则建议添加最小可运行脚本并在 README 说明
Python
pytest tests/
pytest tests/test_module.py::test_function
C++
ctest
./build/test_runner --gtest_filter=TestSuite.TestName
测试失败处理
- 定位:哪个测试失败、失败条件是什么
- 复现:单独运行失败用例
- 调试:优先检查本次改动
- 无关失败:记录并告知用户
可选:测试驱动开发(TDD)
- Red:先写失败测试
- Green:写最少代码让测试通过
- Refactor:重构保持测试绿色
权威参考
- TSL:
docs/tsl/测试相关文档(如有) - Python:
docs/python/tooling.md - C++:
docs/cpp/toolchain.md