集成测试策略

共 19 题
#

1. 大爆炸集成、自顶向下集成、自底向上集成、三明治集成四种策略各自的优缺点和适用场景是什么?请从桩模块/驱动模块开发成本、缺陷定位难度、并行度三个维度对比。

A 大爆炸集成缺陷定位最轻松,适合大型复杂系统
B 自顶向下集成需要大量的驱动模块来模拟下层模块
C 三明治集成结合了自顶向下与自底向上的优点,平行度较高 ✓ 正确答案
D 自底向上集成能尽早验证主控制逻辑
#

2. 组件测试中如何用 Test Double(Stub/Driver/Mock/Fake/Spy)实现隔离?Stub 和 Driver 在自顶向下/自底向上集成中分别扮演什么角色?

A Stub 是主动调用被测组件的模块
B 自顶向下集成主要使用 Driver 来模拟下层模块
C Fake 是提供固定返回值的简单替身
D 自底向上集成中 Driver 模拟上层的调用者,主动调用被测的底层模块 ✓ 正确答案
#

3. 集成测试中真实依赖与测试替身的比例决策,契约测试、服务虚拟化与全真环境的边界

A 测试替身越多越接近生产真实行为
B 契约测试通过约定接口契约使双方可独立测试,从而减少对真实依赖的依赖 ✓ 正确答案
C 全真环境应作为默认的每次提交集成测试环境
D 服务虚拟化只能用于 UI 自动化测试
#

4. 持续集成环境下如何选择集成测试粒度?'每次提交触发全量集成'与'按模块增量集成'各自的适用条件?

A 可采用"每次提交跑冒烟+合并后跑全量集成"的组合来兼顾速度与覆盖 ✓ 正确答案
B 增量集成完全不需要分析依赖影响
C 全量集成每次提交都能最快获得反馈
D 增量集成一定比全量集成更全面
#

5. 自顶向下集成中桩模块(Stub)的复杂度如何控制?当被调用模块逻辑复杂时,Stub 的'足够真实'边界在哪里?

A Stub 应完整复制被调用模块的全部业务逻辑
B Stub 只需实现当前测试用例所依赖的接口行为,保持简单 ✓ 正确答案
C Stub 越复杂越能反映真实缺陷
D Stub 不需要关注接口契约
#

6. 大爆炸集成看似低效,但在什么场景下反而是合理选择?请给出至少两个真实场景。

A 大型高耦合系统最适合大爆炸集成
B 小型原型系统或模块高度解耦的服务化系统,大爆炸集成可能是合理选择 ✓ 正确答案
C 大爆炸集成永远是最低效的策略
D 大爆炸集成不需要任何集成测试
#

7. 共享数据库在集成测试中的 Schema 管理,迁移脚本版本化与测试数据隔离如何配合

A 迁移脚本保证结构一致,数据隔离保证内容独立,两者互补才能稳定并行 ✓ 正确答案
B 数据隔离解决的是各环境 Schema 结构一致的问题
C 迁移脚本版本化解决的是测试数据互相污染的问题
D 共享数据库无法做到并行测试
#

8. 集成测试中的消息/事件驱动场景,消息顺序、重复投递、消费失败重试与幂等如何设计集成用例?

A 只要消费者正常消费一次消息即算通过
B 死信队列与集成测试无关
C 消息顺序是绝对保证,无需测试乱序
D 需显式构造重复投递与乱序场景,验证幂等键去重与重试机制 ✓ 正确答案
#

9. 集成测试的接口覆盖率度量,如何统计接口/服务间调用覆盖,并用它指导集成用例补充?

A 覆盖率应结合业务风险与调用频率,优先补齐高风险接口的用例 ✓ 正确答案
B 接口覆盖率越高越好,应追求 100%
C 接口覆盖率与代码覆盖率无关
D 覆盖率只用于统计,不指导用例设计
#

10. 依赖故障注入,集成测试中如何验证下游依赖超时、5xx 与错误数据时被测服务的降级与容错行为?

A 通过注入超时、5xx、错误数据验证被测服务的熔断、降级与恢复行为 ✓ 正确答案
B 故障注入只验证正常路径是否工作
C 故障注入只能通过真实破坏下游服务实现
D 容错行为与可靠性测试无关
#

11. 依赖版本兼容回归,内部库与第三方 SDK 升级时,如何用集成测试捕获签名兼容但语义变化的回归?

A 只要签名兼容(编译通过)就无需担心语义变化
B 依赖升级不需要任何测试
C 语义变化只能靠人工审查代码发现
D 集成测试应断言关键语义行为(返回值、边界、异常),升级后自动跑回归以捕获语义变化 ✓ 正确答案
#

12. 集成测试用例设计应关注哪些接口相关缺陷类型?请列举至少五种接口缺陷模式。

A 接口测试只需验证一次正常调用
B 数据格式不一致、空值处理、错误码映射、时序、幂等都是常见接口缺陷模式 ✓ 正确答案
C 参数缺失不是接口缺陷
D 版本兼容与接口缺陷无关
#

13. 三明治集成(Hybrid Integration)如何结合自顶向下和自底向上的优势?其适用条件是什么?

A 三明治集成只使用桩模块,不使用驱动模块
B 三明治集成不适合任何规模系统
C 上层自顶向下、下层自底向上,分头并进并在中间汇合,兼顾主控逻辑与底层逻辑的验证 ✓ 正确答案
D 三明治集成完全不需要中间层协调
#

14. 集成测试的层次,模块、服务与端到端?

A 端到端集成最多、模块级最少
B 模块级集成验证服务与外部依赖的交互
C 按测试金字塔原则,模块级最多、服务级次之、端到端最少,并聚焦关键链路 ✓ 正确答案
D 三个层次的成本与速度完全相同
#

15. 集成测试的稳定性,重试与幂等?

A 重试越多越好,能掩盖所有问题
B 幂等只适用于单元测试
C 重试缓解偶发失败,幂等保证重复执行安全,但根本是消除不稳定源而非过度重试 ✓ 正确答案
D 集成测试不稳定与外部依赖无关
#

16. 集成测试的并行与隔离,如何加速?

A 并行执行不需要隔离测试数据
B 并行度越高越好,无副作用
C 通过分片并行与独立数据/schema 隔离,才能在加速的同时避免测试间冲突 ✓ 正确答案
D 集成测试只能串行执行
#

17. 单体应用微服务化过程中的集成测试策略,如何分批拆分并保持端到端验证不中断?

A 应一次性拆分成多个服务再测试
B 分批拆分,用契约测试锁定接口、用端到端回归保证拆分不中断 ✓ 正确答案
C 拆分后不需要端到端测试
D 兼容层只用于生产,不影响测试
#

18. 集成测试的业务数据准备,如何构造满足多服务状态依赖的端到端测试数据(订单、用户、库存联动)?

A 应按业务场景统一装配多服务状态一致的数据,用唯一标识隔离并验证回滚一致性 ✓ 正确答案
B 每个服务各自独立造数即可
C 只需造主服务的订单数据
D 测试数据不需要考虑服务间引用关系
#

19. 集成测试的准入准出条件,接口冻结、依赖可用性与冒烟结果如何作为集成测试开始与结束的判断依据?

A 准入条件只关注测试用例数量
B 集成测试不需要准入条件
C 准出条件与缺陷处理无关
D 接口冻结、依赖可用性与冒烟结果共同构成集成测试开始与结束的判定依据 ✓ 正确答案