Tracer Bullet
Tracer Bullet(垂直切片)
来自《The Pragmatic Programmer》的核心概念。Matt Pocock 在 TDD 和 issue 拆分中强制使用。
核心思想
不是水平切分所有测试再实现,而是一次完成一个端到端切片。
错误(水平):
RED: test1, test2, test3, test4, test5
GREEN: impl1, impl2, impl3, impl4, impl5
正确(垂直):
RED→GREEN: test1→impl1
RED→GREEN: test2→impl2
RED→GREEN: test3→impl3
为什么水平切片是反模式
- 批量写的测试测的是"想象的行为",不是"实际的行为"
- 测的是数据结构的"形状",不是用户可见行为
- 重构时测试不动 — 行为变了测试还绿,行为没变测试红了
- 提前提交到测试结构,还没理解实现
在 mattpocock/skills 中的应用
TDD(/tdd skill)
每个 cycle:一个测试 → 一个最小实现 → 下一个测试。
Issue 拆分(/to-issues skill)
每个 issue 是一个垂直切片:
- 穿过所有集成层(schema → API → UI → tests)端到端
- 完成后可独立演示/验证
- 标记为 HITL(需人类交互)或 AFK(可独立完成)
PRD(/to-prd skill)
识别测试接缝(seams),优先用已有 seams,用最高层的 seam。
本质
垂直切片 = 反馈驱动 开发。每个切片给你一个信号:这条路走不走得通。水平切片 = 假设驱动,信号要到最后才有。