【软件工程】软件测试阶段:单元测试与集成测试(高频对比考点)

考点频率 :★★★★★(上午选择题必考,下午案例题也常考驱动/桩模块的判断)

难度 :⭐⭐⭐

建议:重点掌握单元测试和集成测试的测试对象、测试依据、执行者,以及集成测试三种策略(自顶向下/自底向上/三明治)中驱动模块和桩模块的区分

1️⃣ 单元测试(Unit Testing):瞄准"最小零件"

单元测试是对软件中的最小可测试单元(通常是一个函数、一个类或一个模块)进行验证,检查其内部逻辑是否正确。

1.1 单元测试的核心要素

维度 说明
测试对象 单个模块/函数/类("零件"本身)
测试依据 详细设计说明书(代码具体怎么实现的)
执行者 开发人员(谁写的代码谁测)
主要方法 白盒测试(逻辑覆盖、基本路径覆盖)
测试目标 验证模块内部的算法、逻辑、数据结构是否正确

1.2 单元测试的环境搭建(考点:驱动模块与桩模块)

单元测试时,待测模块通常不能独立运行,因为它需要被其他模块调用,或者它自己会调用别的模块。为了让它跑起来,我们需要编写两种"替身"模块:

模块类型 定义 方向 适用场景
驱动模块(Driver) 模拟上层模块 ,用来调用待测模块 待测模块 ← 被调用 待测模块是底层模块,没有上层来调用它时,需要写一个驱动来"主动给它传参"
桩模块(Stub) 模拟下层模块 ,被待测模块调用 待测模块 → 调用 待测模块依赖下层模块,但下层还没写好,需要写一个桩来"模拟返回值"

一句话区分:驱动是"喊你干活的人"(调用者),桩是"你喊来干活的人"(被调用者)。

考试中的快速判断技巧

  • 题目说"需要模拟一个模块来调用被测模块"→ 选 驱动模块
  • 题目说"需要模拟一个模块来接受被测模块的调用并返回结果"→ 选 桩模块

2️⃣ 集成测试(Integration Testing):把"零件"组装起来

单元测试做完后,每个零件都是好的。但把它们组装在一起时,接口之间可能会出问题------数据传错了、参数类型不匹配、调用顺序错了。集成测试就是专门检查这些问题的。

2.1 集成测试的核心要素

维度 说明
测试对象 模块之间的接口交互关系("零件之间的接缝")
测试依据 概要设计说明书(系统架构和模块接口设计)
执行者 开发人员或测试人员
主要方法 黑盒测试为主(关注接口数据是否正确传递)
测试目标 验证模块组合后能否协同工作,接口数据是否正常

2.2 集成测试的三种策略(软考核心高频考点)

策略一:自顶向下集成(Top-Down Integration)
  • 方式 :从主控模块(顶层) 开始,逐步向下把下层模块集成进来。
  • 测试顺序:先测上层,再逐层往下加下层模块。
  • 优点 :能尽早验证系统的主控逻辑(整体框架对不对)。
  • 缺点 :因为下层模块还没开发完,需要编写大量的桩模块(Stub) 来模拟下层模块的返回值。
策略二:自底向上集成(Bottom-Up Integration)
  • 方式 :从最底层模块(叶子模块) 开始,逐步向上集成。
  • 测试顺序:先测底层,再用上层模块把它们组合起来。
  • 优点 :能尽早验证底层核心功能(如数据访问、基础算法),且不需要写桩(因为下层都写好了)。
  • 缺点 :因为上层模块还没开发完,需要编写大量的驱动模块(Driver) 来调用待测模块。
策略三:三明治集成(Sandwich Integration)
  • 方式同时进行自顶向下和自底向上,在中间某一层"会合"。
  • 优点 :可以并行测试,缩短测试周期。
  • 缺点 :需要同时准备驱动模块和桩模块,管理和协调成本高。

考试技巧 :题目说"先测主控模块逻辑" → 选自顶向下 ;题目说"先测底层核心算法" → 选自底向上 ;题目说"需要大量的桩" → 选自顶向下 ;题目说"需要大量的驱动" → 选自底向上

3️⃣ 单元测试 vs 集成测试:对比表(极高频考点)

对比项 单元测试 集成测试
测试对象 单个模块/函数 模块之间的接口
测试依据 详细设计说明书 概要设计说明书
执行者 开发人员 开发/测试人员
测试方法 白盒测试(逻辑覆盖) 黑盒测试为主(接口验证)
主要目标 验证模块内部逻辑正确 验证模块之间配合正确
是否涉及接口 不涉及 核心关注点
驱动/桩 可能需要(搭建测试环境) 根据集成策略决定

4️⃣ 经典例题

例题1:在单元测试中,需要模拟一个模块来调用被测模块并传递测试数据,这个模拟模块称为( )。

A. 桩模块

B. 驱动模块

C. 主控模块

D. 接口模块

解析 :模拟"调用"被测模块的 → 驱动模块 (Driver)。选 B


例题2:某项目在集成测试阶段,先测试了最底层的模块,然后逐步向上集成。这种集成策略属于( ),其缺点是需要( )。

A. 自顶向下;编写大量桩模块

B. 自底向上;编写大量驱动模块

C. 自顶向下;编写大量驱动模块

D. 自底向上;编写大量桩模块

解析 :先测底层 → 自底向上。底层模块写好调用它需要模拟上层,所以需要大量驱动模块 。选 B


例题3(判断):集成测试与单元测试的测试依据相同,都是根据详细设计说明书来进行的。( )

解析 :错误。单元测试依据详细设计 ,集成测试依据概要设计 。选 错误

5️⃣ 记忆口诀

单元测零件(详细设),集成看接口(概要设)。

驱动调我来,桩被我调用。

自上多桩,自下多驱,三明治都凑。

6️⃣ 小测验(评论区对答案)

在集成测试中,如果采用自顶向下策略,为了模拟未被开发的底层模块,需要编写( )。

A. 驱动模块

B. 桩模块

C. 测试用例

D. 调试器

🔔 本专栏日更,点击头像 → 专栏《软考中级高频考点》订阅,第一时间接收新内容

#软考中级 #软件设计师 #单元测试 #集成测试 #驱动模块 #桩模块 #软件工程

相关推荐
疯狂打码的少年1 小时前
【数据结构】队列:定义、顺序队列与链式队列
数据结构·笔记
qiyongwork1 小时前
LLM做需求追溯:从PRD到测试用例的全链路实践
项目管理·软件工程·需求管理
梁辰兴3 小时前
软件工程:概要设计阶段的评审
软件工程·梁辰兴·评审内容·评审方法·概要设计阶段的评审·评审意义·评审流程
LeoZY_4 小时前
LinkScope 使用笔记:基于 OpenOCD 的通用硬件芯片调试助手
笔记·单片机·嵌入式硬件·开源软件
不会代码的小猴4 小时前
标准模板库(STL)
开发语言·c++·笔记·算法
爱莉希雅&&&4 小时前
K8s NFS+StorageClass+PV/PVC+Deployment 实战笔记
笔记·容器·kubernetes
影寂ldy4 小时前
SQL 索引(Index)完整笔记
数据库·笔记·sql
GlueNa2SiO35 小时前
06-Docker存储与数据持久化
笔记·学习·docker
上下求索,莫负韶华6 小时前
切面学习笔记
笔记·python·学习
测试运维日常笔记6 小时前
Unix/Linux 系统软件包管理笔记
linux·笔记·unix