关于 tracer-tdd
tracer-tdd 是面向编码 Agent 的测试驱动开发技能,涵盖测试设计、公共接口边界、反模式和红绿循环。它要求预先确认测试边界,并通过小型纵向切片逐步构建行为,而非先批量编写测试。
主要功能
- 01围绕公共接口验证行为
- 02预先确认测试边界
- 03识别测试反模式
- 04先红后绿的实现循环
- 05一次推进一个纵向切片
- 06检查上下文与 ADR
适用场景
- 01实现前规划测试边界
- 02通过逐步的测试与代码循环构建行为
- 03避免脆弱或同义反复的测试
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ scottwater/ skills --skill tracer-tdd安装后在 Claude Code 中输入/tracer-tdd确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
mocking.mdtests.mdagents/openai.yaml详细介绍
测试驱动开发
TDD 是红 → 绿循环。这项技能是参考指南,确保这个循环产出值得保留的测试:什么是好的测试、测试应放在哪里、反模式,以及循环规则。每个部分都适用于每一轮循环——应在循环前和循环中查阅,而不是结束后。
探索代码库时,请阅读 CONTEXT.md(如果存在),使测试名称和接口用词符合项目的领域语言,并遵循你正在修改区域的 ADR。
什么是好的测试
测试通过公共接口验证行为,而非实现细节。代码可以彻底改变,测试却不应改变。好的测试读起来像一份规范——“用户可以使用有效购物车结账”能准确说明存在什么能力——并且不受重构影响,因为它不关心内部结构。
示例见 tests.md,模拟指南见 mocking.md。
接缝——测试应放在哪里
接缝是你进行测试的公共边界:在这个接口上,你可以观察行为,而不必深入内部。测试应位于接缝处,绝不针对内部实现。
只在事先约定的接缝处测试。 编写任何测试前,先列出要测试的接缝并与用户确认。未经确认的接缝不得编写测试。你无法测试所有内容——事先约定接缝,才能让测试工作聚焦于关键路径和复杂逻辑,而非每个边缘情况。
询问:“公共接口是什么,我们应该测试哪些接缝?”
反模式
- 与实现耦合——模拟内部协作者、测试私有方法,或通过旁路验证(例如查询数据库,而不是使用接口)。判断标志:重构会导致测试失败,但行为并未改变。
- 同义反复——断言以与代码相同的方式重新计算预期值(
expect(add(a, b)).toBe(a + b)、以相同方式手工推导的快照,或断言某个常量等于自身),因此测试必然通过,永远无法与代码产生分歧。预期值必须来自独立的事实来源——已知正确的字面值、演算示例或规范。 - 横向切片——先编写所有测试,再编写所有实现。批量测试验证的是_想象中_的行为:测试的是事物的_形式_,而非面向用户的行为;测试会对实际变化失去敏感度;而且在理解实现之前就确定了测试结构。应改用纵向切片——一个测试 → 一个实现 → 重复;每个测试都是一发曳光弹,根据上一轮的经验作出调整。
循环规则
- 先红后绿。 先编写失败的测试,再只写足以通过测试的代码。不要预判未来的测试,也不要添加推测性功能。
- 一次只处理一个切片。 每轮只包含一个接缝、一个测试和一个最小实现。
- 重构不属于循环的一部分。 重构属于评审阶段(参见
tracer-code-review技能),而非红 → 绿实现循环。
评论
支持 Markdown