ONEPSOFT | 软考学习知识库
speedrun20|第14章软件实现与测试(单元覆盖率)速通
一、章节定位
一句话概括:本章讲 " 怎么把设计变成代码,以及怎么系统地找 bug"——编码方法 + 四阶段测试 + 白盒/黑盒覆盖标准。
二、本章在讲什么(系统性阐述)
实现与测试像施工与验收:先按图施工 (编码),再做 " 试块检验 (单元)→分项工程验收 (集成)→竣工验收 (系统)→业主验房 (验收)" 四级测试。
本章三块:
三、教材原文精摘(原封不动,逐子章节全覆盖)
测试定义(14.2.1)原文:软件测试是使用手动或自动手段运行或测量软件系统的过程,目的是检验软件系统是否满足规定需求,并找出与预期结果之间的差异。IEEE 定义为 " 使用人工或自动的手段来运行或测试系统,以检验是否满足规定需求,并找出差异 "。
测试目的 原文:尽可能多地找出软件中潜在的各种错误和缺陷(逆向/发散思维,而非证明无错)。
单元测试(14.4.2)原文:单元测试在编码后或编码前进行,对象是模块(最小可测试单元),白盒测试工程师或开发人员用白盒为主、黑盒为辅,测模块接口、局部数据、路径、错误处理、边界。
集成测试 原文:集成测试在单元测试之后,对象是模块间的接口,测模块间数据传输、功能冲突、全局数据结构。
系统测试 原文:系统测试在集成测试之后,对象是整个系统(软件 + 硬件),黑盒工程师用黑盒,测功能、界面、可靠性、易用性、性能、兼容性、安全性。
验收测试 原文:验收测试在系统测试通过后,对象是整个系统,最终用户/需求方用黑盒,是部署前最后一个测试操作。
白盒覆盖(14.3.1)原文:覆盖标准由弱到强:①语句覆盖 (每条语句至少一次);②判定覆盖 (每个判定分支至少一次);③条件覆盖 (每条件取各种值);④判定/条件覆盖;⑤条件组合覆盖 (每判定各条件每种组合至少一次);⑥修改条件判断覆盖 MC/DC。
黑盒测试 原文:功能测试、数据驱动测试;把程序看作黑盒子,完全不考虑内部结构,在接口处测试,只检查功能是否按需求规格正常使用。方法:等价类划分、边界值分析、错误推测、因果图、判定表、正交试验、功能图、场景法。
McCabe 圈复杂度 原文:1976 年 McCabe 提出,基于程序模块程序图中环路的个数度量软件复杂性,也称 McCabe 环路。反映源代码结构复杂度,复杂度高通常可维护性差。
逐段讲解:
四、核心知识树
第 14 章 软件实现与测试
├── 编码实现
│ ├── 结构化/OOP/可视化
│ └── 影响可靠/维护/复用
├── 测试四阶段
│ ├── 单元 (模块/白盒)
│ ├── 集成 (接口)
│ ├── 系统 (整机/黑盒)
│ └── 验收 (用户)
├── 白盒覆盖 (弱→强)
│ └── 语句→判定→条件→组合→MC/DC
├── 黑盒方法
│ └── 等价类/边界值/因果图
└── McCabe 圈复杂度
└── 环路数=复杂度
五、知识脑图总结
思维导图(结构化呈现)
六、关键概念速解
| 概念 | 教材定义(原文关键词) | 大白话速解 | 考试怎么考 |
|---|---|---|---|
| 软件测试 | 运行系统找与预期差异 | 找 bug 不是证无罪 | 选择:测试目的/定义 |
| 单元测试 | 最小单元=模块,白盒为主 | 试块检验 | 选择:对象/方法 |
| 集成测试 | 测模块间接口 | 分项验收 | 选择:与前后的区别 |
| 语句覆盖 | 每条语句至少一次 (最弱) | 跑到每一行 | 选择:覆盖由弱到强 |
| MC/DC | 修改条件判断覆盖 (最强) | 每条件能独立影响结果 | 选择:最强覆盖 |
| 等价类划分 | 黑盒,输入分区 | 一类取一个代表 | 选择:黑盒方法 |
| McCabe 圈复杂度 | 程序图环路个数 | 模块有多绕 | 选择:复杂度/可维护性 |
七、记忆口诀 & 类比
八、易混淆点对比
| 易混项 A | 易混项 B | 核心区别 |
|---|---|---|
| 单元测试 | 集成测试 | 单元测模块内部;集成测模块间接口 |
| 系统测试 | 验收测试 | 系统由测试员做;验收由用户做、部署前最后一步 |
| 白盒测试 | 黑盒测试 | 白盒看内部逻辑 (结构);黑盒只看功能 (接口) |
| 语句覆盖 | 判定覆盖 | 语句=每行一次;判定=每个分支一次 (更强) |
| 判定覆盖 | 条件覆盖 | 判定看分支;条件看每个子条件取值 |
九、与其他章节的关联
十、考试出题方式