# 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 接口冻结、依赖可用性与冒烟结果共同构成集成测试开始与结束的判定依据 ✓ 正确答案