用途
Test Design Reviewer 用于评审测试质量。它把测试当作可执行的规格说明和安全证据来看待:先阅读测试,让测试自身的公开叙事能够独立成立,然后再检查生产边界和仓库约束,以便准确判断测试所声称的内容。
主要能力
该技能围绕 Dave Farley 提出的优秀测试八项属性展开评审:
| 属性 | 检查内容 | 强证据 |
|---|---|---|
| Understandable(可理解) | 命名、arrange/act/assert 流程、领域词汇 | 无需重建内部实现即可看清行为与失败原因 |
| Maintainable(可维护) | 耦合、重复、fixture、公共边界 | 保持行为的重构不需要改写无关测试 |
| Repeatable(可重复) | 时间、随机性、并发、网络、共享资源 | 重复与并行运行具有受控输入和清理 |
| Atomic(原子) | 共享状态、顺序、清理、失败隔离 | 测试可单独运行,其失败能定位到一个行为 |
| Necessary(必要) | 所保护的不同风险或契约 | 删除该测试会移除有意义的证据 |
| Granular(粒度) | 行为范围与诊断质量 | 断言描述一个连贯结果;相关断言可以放在一起 |
| Fast(快速) | 在合适层次上测量的反馈时间 | 测试套件对其预期的反馈循环足够快 |
| First(测试先行) | 测试先行开发的证据 | 有捕获的 RED 运行、开发轨迹或历史,证明在生产行为改变之前测试因预期原因失败 |
使用方式
评审流程如下:
- 确定所声称的行为、测试层次、仓库策略和相关风险。
- 在不看实现的情况下阅读测试,记录失败意味着什么。
- 检查公共生产边界、fixture 和配置的测试运行器。
- 仅在获得授权且有用时运行聚焦测试或计时;准确报告实际运行了什么。
- 对每项属性给出带证据的评级,证据缺失时包括 Not assessed。
- 只按严重程度和影响对可操作的发现排序,并包含最小的可信修复方案。
- 将测试缺陷与生产设计接缝、本地策略偏好区分开。
评级使用 Strong、Mixed、Weak 或 Not assessed。要求使用精确的文件位置和观察到的证据;不计算聚合分数,因为风险不均和仓库上下文不同会使加权数字显得虚假精确。当只有最终代码树可用时,将 First 标记为 Not assessed,因为静态测试形态无法证明时间顺序。除非有执行证据或可信计时,否则将 Fast 标记为 Not assessed。优先选择能增强可观察行为的最小改动;不要求每个测试一个断言、每个文件一个测试,也不要求在更高层契约才是诚实证据边界的地方使用单元测试。
输出格式为 Markdown,包含属性评级表、Findings(按严重程度排序,含影响与最小修复)以及 Validation gaps(未评估的内容及所需证据)。没有发现也是有效结果,不应为了填充该部分而编造工作。
适用场景
适用于评估一个测试文件或测试套件在可理解性、可维护性、可重复性、原子性、必要性、粒度、速度以及测试先行开发证据方面的表现。
限制
该技能不计算聚合分数。当只有最终代码树时,无法评估 First 属性;没有执行证据或可信计时,无法评估 Fast 属性。八项属性来源于 Dave Farley 的 Properties of Good Tests,本版本是基于证据的全新实现,而非对外部技能的文本改编。