Test-Driven Development

11小时前发布 0 0 0

按 Red–Green 的小步循环开发:先用公共接口写失败测试,再实现最小行为,并把 mock 限制在系统边界。

收录时间:
2026-09-17

Test-Driven Development 是什么

这是一个严格执行测试驱动开发的工程 Skill。它先让用户和代理对可观察行为与公共接口达成一致,再通过 Red–Green 循环逐个交付垂直切片,避免测试追着内部实现跑。

Red–Green 小步循环

每次先写一个能表达下一项行为的失败测试,确认它确实因缺少该行为而失败;随后只写让该测试通过的最小实现。通过后再选择下一项行为,不能一次预写整批测试,也不能顺手加入尚未需要的功能。

公共接口与预期值

测试应从公共 API、页面或命令等真实入口观察结果。预期值要独立计算,不能复制实现逻辑,否则实现与测试可能一起犯错。缺陷修复则先建立能稳定复现问题的测试,再做最小修复。

Mock、依赖与限制

Mock 只适合外部 API、时间、随机数、文件系统或部分数据库等系统边界,不应替代内部类或模块。测试仍依赖项目已有的测试框架和可运行环境。该 Skill 把重构留到 review 阶段,因此不是完整的设计或性能优化流程。

落地与验收

开始前要确认测试命令、目标公共入口和成功标准。每个循环都应保存失败证据,再保存通过结果,避免出现测试从未真正失败的假阳性。异步、时间和随机行为需要可重复控制;外部服务故障应在边界上模拟。完成一轮功能后还要运行相关测试集和静态检查,确认新行为没有破坏既有契约。

来源与许可

本条目依据 mattpocock/skills 固定提交中的完整 TDD 规则、测试与 mocking 参考整理,仓库声明 MIT 许可证。

常见问题

1. 核心循环是什么?

先写一个失败测试,再写最小实现让它通过,然后进入下一项可观察行为。实际使用时还应结合当前版本、权限、输入数据和运行环境复核结果,并在重要任务中保留人工确认。

2. 何时开始写测试?

先和用户确认公共接口及行为契约,避免测试建立在未确认的 API 上。实际使用时还应结合当前版本、权限、输入数据和运行环境复核结果,并在重要任务中保留人工确认。

3. 可以一次写完全部测试吗?

不建议。规则要求一个行为一个循环,保持失败原因清晰。实际使用时还应结合当前版本、权限、输入数据和运行环境复核结果,并在重要任务中保留人工确认。

4. 测试应该覆盖什么?

覆盖用户能观察到的行为、边界条件和错误结果,而不是私有方法调用次数。实际使用时还应结合当前版本、权限、输入数据和运行环境复核结果,并在重要任务中保留人工确认。

5. 何时可以使用 mock?

在外部服务、时间、随机性等难以稳定控制的系统边界使用。实际使用时还应结合当前版本、权限、输入数据和运行环境复核结果,并在重要任务中保留人工确认。

6. 数据库一定要 mock 吗?

不一定。可根据速度、隔离性和真实度选择临时数据库、容器或边界 mock。实际使用时还应结合当前版本、权限、输入数据和运行环境复核结果,并在重要任务中保留人工确认。

7. 重构在哪一步?

该工作流把重构留到 review 阶段,先保证行为测试和最小实现完整。实际使用时还应结合当前版本、权限、输入数据和运行环境复核结果,并在重要任务中保留人工确认。

8. 适合修复缺陷吗?

适合。先写复现缺陷的失败测试,再修复并保留测试防止回归。实际使用时还应结合当前版本、权限、输入数据和运行环境复核结果,并在重要任务中保留人工确认。

数据统计

相关导航

暂无评论

none
暂无评论...