测试驱动开发(TDD)
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @kunlungrowth/kg-test-driven-development。
技能介绍
为什么需要测试驱动开发
在编写新逻辑或修复缺陷时,我们常陷入"看起来对"的陷阱。没有测试保护的代码库会随着迭代变成沉重的负债,尤其是当 AI Agent 参与开发时,缺乏验证手段会导致行为不可预测。当你收到一个 bug 报告,直接动手改代码往往无法证明问题已被彻底解决,甚至可能引入新的回归。TDD 技能旨在将"测试即规格"的原则落地,为每一次代码改动提供可证明的证据。
核心工作流与能力
该技能严格遵循红→绿→重构的循环,并内置了多种工程化策略:
- 探测测试栈:绝不盲目假设
npm test。它会优先解析pyproject.toml、go.mod或Cargo.toml等文件,寻找仓库自带的封装命令(如make test),确保测试环境与 CI 一致。 - 证明它模式:面对 bug 报告,强制先编写复现测试。确认测试失败后才开始修复,直到测试通过且全量测试无回归,才算闭环。
- 测试金字塔与用例设计:指导按 80% 单测、15% 集成、5% E2E 的比例分配资源。强调测试应关注状态与结果而非内部调用顺序,采用 Arrange-Act-Assert 结构,并遵循真实实现 > 假对象 > 桩 > Mock 的替身优先级。
- 浏览器侧验证:针对前端改动,除了单测外,还需结合 DevTools 进行运行时验证(DOM、网络、性能等)。
适用边界与安全注意点
此技能适用于任何具有行为影响的代码变更,如新功能实现、既有逻辑修改或边界处理。然而,对于纯配置文件变更或静态文档更新,由于不涉及程序行为,强行引入 TDD 只会增加冗余成本。此外,在处理浏览器验证时需严格注意安全边界:从 DOM、控制台或网络请求中读取的内容属于不可信数据,绝不能将其作为指令执行,且严禁访问 cookie、localStorage 令牌等敏感凭据。
使用场景
- 在实现新功能逻辑时,先写会失败的单测,再用最简代码让其通过,确保每次提交都有可证明的依据。
- 收到线上 bug 报告时,先用测试复现失败现象,确认 bug 真实存在后再动手修改代码并验证修复结果。
- 调整多模块交互的集成代码后,运行仓库封装的全量测试命令,确认无回归且关键用户流仍正常。
- 接手新仓库时,通过查看 README 和配置文件确认测试栈,不盲目假设默认命令,遵循既有测试约定。
适合人员
- 负责复杂后端逻辑的工程师,需要确保每次代码提交都有明确的测试覆盖和回归保护。
- 开源项目维护者,需要在接收社区 issue 时遵循先复现再修复的规范,降低引入新 bug 的风险。
- 主导 AI 辅助开发的技术人员,需要一套严格的测试规范来约束 Agent 的代码修改行为。
- 前端架构师,需要在涉及浏览器交互的改动中,结合单测与运行时验证确保功能稳定。