测试判定基准是什么
测试判定基准(Test Oracle)是判断一次执行结果是否正确所依据的机制:需求规格、参考实现、历史输出、可校验的性质等。没有判定基准时只能记录输出,无法判定对错;自动化用例里的断言就是最常见的判定基准,而含糊的需求往往让基准缺位,测试退化为「跑一遍看看」。
基本信息
| 定义 | 判定实际结果是否符合预期的机制(Barr 等,2015) |
|---|---|
| 常见形式 | 预期值断言、差分测试、元性质校验、人工评审 |
| 缺失后果 | 用例只能记录输出,无法自动判定对错 |
| 快照角色 | 快照是一种判定基准,但需人工确认后才可信 |
| 设计要点 | 基准对齐需求,而不是对齐当前实现 |
判定基准类型
| 类型 | 示例 |
|---|---|
| 规格驱动 | 按验收标准断言响应字段与状态码 |
| 差分测试 | 与旧版本或参考实现比对输出 |
| 元性质 | 排序后元素集合不变、编码解码后等价 |
| 不变量 | 金额守恒、计数一致等恒真约束 |
| 人工判定 | 视觉稿比对、探索式观察 |
典型使用场景
- 写自动化用例:先明确「拿什么判定」,再动手写脚本。
- 复杂业务规则:用不变量替代逐字段硬编码,断言更耐久。
- 算法迁移:用差分测试对比新旧实现输出。
- 快照治理:快照入库前人工复核,避免冻结缺陷。
- 视觉类验证:以设计稿或基线截图作为判定基准。
- 评审需求:验收标准不可测时,当场暴露基准缺失问题。
自动化用例把「当前行为」直接固化为快照,会把既有缺陷一起冻结;快照需人工确认后才入库。
业务规则复杂时先找不变量:金额合计守恒、状态机合法迁移,这类断言比逐字段比对更耐久。
验收标准含糊时先澄清再写用例:没有判定基准的「测试」只是执行操作。