考点频率 :★★★★★(上午选择题必考,下午案例题也常考驱动/桩模块的判断)
难度 :⭐⭐⭐
建议:重点掌握单元测试和集成测试的测试对象、测试依据、执行者,以及集成测试三种策略(自顶向下/自底向上/三明治)中驱动模块和桩模块的区分
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. 调试器
🔔 本专栏日更,点击头像 → 专栏《软考中级高频考点》订阅,第一时间接收新内容
#软考中级 #软件设计师 #单元测试 #集成测试 #驱动模块 #桩模块 #软件工程