可测性设计(Design for Testability)

共 18 题
#

1. 可测性设计的两个核心维度,可控性(Controllability)与可观察性(Observability)如何定义,各自对应哪些测试痛点?

A 可控性指测试能否控制输入/状态/依赖,可观察性指能否观察输出/状态/行为,二者分别对应"难以准备触发"与"难以断言定位"两类痛点 ✓ 正确答案
B 可测性设计只关注可控性
C 可观察性与测试无关
D 可测性设计只影响测试速度不影响可测性
#

2. 依赖注入如何提升可测性,构造器注入 vs 服务定位器对单元测试的影响,如何识别难注入的代码?

A 构造器注入让依赖显式可替换、最适合单元测试;服务定位器依赖隐式难替换,直接 new/静态依赖/全局状态是难注入代码的特征 ✓ 正确答案
B 服务定位器比构造器注入更适合测试
C 依赖注入与可测性无关
D 直接 new 依赖最利于测试
#

3. 不可测代码的典型特征,静态方法调用、直接 new 依赖、全局状态、硬编码时间与随机数,如何重构?

A 静态/直接 new/全局状态/硬编码时间与随机数等不可测特征,可通过依赖注入、抽象接口、时钟与随机源注入等重构为可控可测 ✓ 正确答案
B 静态方法调用无法重构
C 硬编码时间不影响可测性
D 全局状态有利于测试隔离
#

4. 环境变量与配置开关如何提升可测性,测试模式、特性开关与配置注入的设计原则?

A 测试模式应默认开启
B 通过测试模式、特性开关与配置注入,让测试环境可控、可切换、可覆盖不同场景,且默认安全、显式可控 ✓ 正确答案
C 配置应硬编码在代码中
D 特性开关无法测试两种状态
#

5. 日志与指标埋点如何支撑可观测性测试,关键路径的可观测点设计如何帮助测试定位?

A 在关键路径埋设结构化日志与指标,可还原执行轨迹、提供可断言度量,帮助定位测试失败 ✓ 正确答案
B 日志与测试定位无关
C 指标埋点无法用于断言
D 可观测点设计会降低测试有效性
#

6. 分层架构与可测性的关系,业务逻辑与基础设施(DB/外部服务)分离为何是测试友好的前提?

A 分层架构会降低可测性
B 业务逻辑与基础设施分离,使业务层依赖抽象接口、可用替身独立测试,是测试友好的前提 ✓ 正确答案
C 业务逻辑必须直接依赖数据库
D 分层架构与测试无关
#

7. 时间依赖的可测性设计,时钟注入、时间工厂与固定时间戳如何让时间相关用例可重复?

A 时间相关代码无法测试
B 硬编码真实时间最利于测试
C 通过时钟注入、时间工厂、固定时间戳把时间外部化,测试可精确控制时间点,让时间相关用例可重复 ✓ 正确答案
D 时间注入会破坏功能正确性
#

8. 随机性与非确定性的可测性设计,随机种子注入、随机源抽象如何保证测试可复现?

A 随机代码无法进行可复现测试
B 随机源抽象无法测试随机逻辑
C 通过随机种子注入与随机源抽象,把随机取数外部化,测试可注入固定种子或可控序列,保证可复现 ✓ 正确答案
D 随机性不需要可测性设计
#

9. 幂等与确定性设计对测试的价值,接口幂等、重试安全如何降低测试复杂度?

A 幂等与测试无关
B 接口幂等与重试安全让测试可重复、可安全重试、可覆盖重试场景,降低测试复杂度、提升稳定性 ✓ 正确答案
C 幂等设计会增加测试复杂度
D 重试安全无法被测试
#

10. 测试数据工厂与种子数据设计,如何让业务代码天然支持测试数据注入而非依赖后门?

A 测试数据应通过后门注入
B 测试数据工厂只能用于测试后门
C 应通过公开业务入口与可替换数据源,用工厂/种子经正常路径注入测试数据,避免依赖失真且有风险的测试后门 ✓ 正确答案
D 种子数据与业务逻辑无关
#

11. 可测性设计在微服务中的应用,服务虚拟化、契约测试与可观测点设计如何协同?

A 微服务必须依赖真实服务才能测试
B 服务虚拟化提供可控依赖、契约测试保证接口一致、可观测点支撑定位,三者协同实现微服务可测 ✓ 正确答案
C 契约测试无法验证接口一致
D 可观测点设计只用于运维
#

12. 可测性设计与安全性的平衡,测试后门、调试接口的暴露风险如何管控?

A 测试后门与调试接口应限定在受控环境,通过环境隔离、默认关闭、鉴权、评审与监控管控其暴露风险 ✓ 正确答案
B 测试后门在生产环境也应保留
C 调试接口在生产可安全公开
D 可测性手段无需考虑安全
#

13. 可测性设计的代码评审实践,评审中如何快速识别静态方法、全局状态与私有逻辑等反模式,并给出重构建议?

A 评审中识别静态方法、全局状态、私有逻辑、直接 new 等反模式,并给出注入/外化/暴露的重构建议,把可测性要求前置 ✓ 正确答案
B 静态方法最利于可测
C 全局状态有利测试隔离
D 私有逻辑无需可测
#

14. 异步与消息场景的可测性设计,如何设计可注入的消息总线、时钟与回调,让异步流程可同步化测试?

A 异步流程只能依赖真实 MQ 测试
B 通过设计可注入的消息总线、时钟与回调,让测试能控制消息/时钟/回调时序,把异步流程同步化、可断言地测试 ✓ 正确答案
C 虚拟时钟无法用于异步测试
D 异步回调无法注入
#

15. 可测性评估方法,如何用可测性检查清单或评分卡评估一个模块/系统的可测性水平?

A 可测性无法评估
B 可测性评估一次性完成即可
C 评分卡无法反映可测性
D 用可测性检查清单从可控性/可观察性维度逐项核对,并用评分卡量化打分,可定位弱点、驱动改进 ✓ 正确答案
#

16. 可测性设计在遗留系统中的应用策略,如何通过接缝(Seam)逐步引入可测试结构?

A 遗留系统应一次性全面重构
B 接缝与可测性无关
C 通过接缝(可替换点)先补测试建立基线,再在测试保障下逐步把耦合重构为可注入结构,小步渐进引入可测性 ✓ 正确答案
D 遗留系统无法改进可测性
#

17. 可测性设计与测试自动化 ROI 的关系,可测性投入如何降低长期自动化维护成本?

A 可测性投入会拖累自动化 ROI
B 可测性差反而利于自动化
C 可测性与自动化维护成本无关
D 可测性投入换取测试更稳定、易维护、易覆盖、少返工,长期降低自动化维护成本、提升 ROI ✓ 正确答案
#

18. 可测性设计与性能、安全的权衡,测试钩子与详细日志对性能与安全的影响如何度量与管控?

A 测试钩子与详细日志会带来性能与安全代价,应通过分级启用、裁剪、脱敏、性能预算与评审监控来管控 ✓ 正确答案
B 测试钩子与日志不会影响性能
C 详细日志越详细越好
D 测试钩子在生产可保留