1. 可测性设计的两个核心维度,可控性(Controllability)与可观察性(Observability)如何定义,各自对应哪些测试痛点?
可测性设计的两个核心维度是什么?可控性(Controllability)与可观察性(Observability)如何定义?各自对应哪些测试痛点?
- 可控性与可观察性的定义
- 两个维度对应的测试痛点
- 可测性设计对测试的影响
可测性设计(Design for Testability)的两个核心维度是可控性(Controllability)与可观察性(Observability)。可控性指"测试能否控制被测对象的输入、状态与依赖",即测试能否方便地设置前置条件、触发目标行为;可观察性指"测试能否观察被测对象的输出、状态与内部行为",即测试能否方便地断言结果。对应的测试痛点:可控性不足的痛点——难以设置特定状态(如数据库状态、时间、随机数、外部依赖),难以触发特定分支(如边界条件、异常路径),测试被迫依赖真实环境或复杂准备,甚至无法复现问题;可观察性不足的痛点——难以断言结果(输出不清晰、状态不暴露)、难以定位失败(日志缺失、无埋点)、无法验证内部行为是否正确,测试只能"瞎猜"或写弱断言。可测性设计通过注入依赖、开放接口、暴露状态、埋点日志等手段提升可控性与可观察性,从而让测试更快、更稳定、更可定位。
可测性的本质是"输入可控、输出可观"。可控性决定测试"能不能测",可观察性决定测试"测了能不能验证"。两大痛点分别对应"难以准备/触发"与"难以断言/定位"。可测性设计就是针对这两个维度做工程,让测试成本大幅下降。