6.7 软件测试

6.72026-11-03 11:13:00

本篇定位:软件测试是软工第一必考大户(9 年直接命中 15+ 题,几乎年年 2–3 题),且老魏摸底唯一错题(27 号:黑盒测试方法)就在本章——必须重点覆盖。考点:白盒 vs 黑盒、覆盖强度(语句<判定<条件<路径)、测试阶段链、回归测试、等价类/边界值、测试观。核心能力:白盒看内部、黑盒看功能;语句覆盖最弱;成功测试=发现错误。 数据依据:01-真题/真题文本/ + 01-真题/考点汇总/ + 05-笔记/软件工程-模块总纲.md;答案以专业判断为准。 阅读提示:测试阶段链与 6.1 生命周期衔接;集成测试验证模块接口(6.6 设计的检验);Web 测试与 5.7 应用层呼应。


一、考点定位(本章真题统计)

考点真题锚点频次考法
白盒 vs 黑盒2021 单43、2024 单33、2020 多873 年 3 题白盒看内部逻辑/黑盒看外部功能
覆盖强度2026 单311 年语句<判定<条件<路径;语句覆盖最弱
测试阶段链2021 单42、2022 单382 年集成测试内容;验收测试=达到用户期望
回归测试2018 单731 年修改后重测确认未引入新错误
黑盒局限2019 单691 年不能发现冗余代码
用例设计2020 单44、2023 单35、摸底错题 273 年等价类/边界值;选发现错误可能性大的数据
测试观2019 多87、2024 单43、2026 多913 年成功测试=发现错误;测试是质量保证手段
性能/兼容性2019 单44、2020 单42、2022 多853 年兼容性不属于性能测试;Web 测试归类

命题规律:测试题两大主线:①白盒/黑盒与覆盖;②测试阶段与测试观。2027 预测 2–3 题:白盒黑盒判定、覆盖强度、等价类/边界值(老魏错题考点专攻)。核心能力:白盒黑盒对比表 + 覆盖四档 + 测试观三连(成功=发现错误/质量保证/选易错数据)。


二、知识框架(先搭骨架)

软件测试(目的:发现错误,不是证明无错)
├── 白盒测试(结构测试)
│   ├── 依据:程序内部逻辑/结构(2021 单43、2024 单33、2020 多87)
│   ├── 覆盖强度(由弱到强):语句 < 判定 < 条件 < 路径(2026 单31)
│   │   ├── 语句覆盖:每句执行一次(最弱)
│   │   ├── 判定覆盖:每个分支真假都走
│   │   ├── 条件覆盖:每个条件真假都走
│   │   └── 路径覆盖:所有路径都走(最强)
│   └── 局限:无法验证外部功能是否符合需求
├── 黑盒测试(功能测试)
│   ├── 依据:软件外部功能/规格说明(摸底错题 27)
│   ├── 方法:等价类划分、边界值分析(摸底错题 27 考点)
│   └── 局限:不能发现是否存在冗余代码(2019 单69)
├── 测试阶段链
│   ├── 单元测试(模块内)→ 集成测试(模块间,2021 单42 全对题)→
│   ├── 系统测试(整体)→ 验收测试(用户确认达到期望,2022 单38)
│   └── 回归测试:修改后重测、确认未引入新错误(2018 单73)
├── 测试观
│   ├── 成功测试=发现至今未发现的错误(2019 多87)
│   ├── 测试是质量保证的重要手段(2024 单43)
│   ├── 选发现错误可能性大的数据(2020 单44、2023 单35)
│   └── 开发人员测自己的程序不能作为通过依据(2022 单37)
└── 测试类型
    ├── 性能测试(含压力测试);兼容性测试不属于性能测试(2019 单44)
    ├── 数据兼容性=能否打开以前版本文件(2020 单42)
    └── Web 测试:内容/无效链接=功能测试(2022 多85)

一句话记忆:白盒看内部(语句<判定<条件<路径)、黑盒看功能(等价类/边界值);阶段链单元→集成→系统→验收;成功测试=发现错误、回归测试=没引入新错。


三、考点详解

3.1 白盒测试(2021 单43、2024 单33、2020 多87)

精确定义:白盒测试 = 依据程序内部逻辑结构设计测试用例(2021 单43 选内部逻辑),检查每条路径/分支/语句是否正确执行。

2020 多87(白盒关注点):白盒测试关注程序结构、内部逻辑、每条路径的正确性——不看外部功能是否满足需求(那是黑盒)。

覆盖强度(2026 单31,必背):语句 < 判定 < 条件 < 路径(由弱到强)——语句覆盖发现错误的能力最弱(2026 单31 选语句覆盖)。

口诀:白盒覆盖四档——语句最弱、路径最强。

3.2 黑盒测试(摸底错题 27,必考)

精确定义:黑盒测试 = 依据软件的外部功能/规格说明设计测试用例(不关心内部实现),验证功能是否符合需求。

两个经典方法(摸底错题 27 考点):

  • 等价类划分:把输入数据分成若干等价类,每类取一个代表测试(有效等价类+无效等价类);
  • 边界值分析:取边界值(最小值/最大值/临界值)测试——大量错误发生在边界。

黑盒局限(2019 单69):黑盒测试不能发现是否存在冗余代码(看不到内部结构,无法发现死代码/冗余逻辑)。

口诀:黑盒=功能视角,管外部不管内部;等价类+边界值最常用。

3.3 测试阶段链(2021 单42、2022 单38)

四阶段(必背):单元测试 → 集成测试 → 系统测试 → 验收测试

  • 单元测试:测每个模块(白盒为主);
  • 集成测试:把模块组装起来测模块间接口(2021 单42:穿越接口数据不丢失、模块间功能影响、全局数据结构、误差累积——全部正确,全对题);
  • 系统测试:整个系统按需求整体测试(功能+性能+安全);
  • 验收测试:用户确认系统是否达到期望(2022 单38 选验收测试)。

回归测试(2018 单73):修正错误后重新测试,确认没有引入新错误——修改代码后必做。

口诀:单集系验(单元→集成→系统→验收);改完必回归。

3.4 测试观(2019 多87、2024 单43、2022 单37、2026 多91)

三个必背测试观:

  1. 成功测试 = 发现了至今未发现的错误(2019 多87——"没发现错误=测试成功"是错误说法);
  2. 测试是质量保证的重要手段(2024 单43——但不是唯一手段,质量还要靠设计/评审);
  3. 开发人员测自己的程序不能作为已通过测试的依据(2022 单37——需要独立测试人员)。

2026 多91(测试正确观):穷举测试不可能、证明程序无错误不可能、错误多则修改后错误很少——均错误说法(选"以上都错"类)。

口诀:测试找错才成功、质量保证靠测试、自己测自己不算数。

3.5 测试效率与用例设计(2020 单44、2023 单35)

2020 单44、2023 单35(选同一答案):提高测试效率的方法 = 选择发现错误可能性大的数据作为测试数据(不追求数量、追求针对性)。

口诀:测试数据要"挑错多的",不是"堆数量"。

3.6 测试类型辨析(2019 单44、2020 单42、2022 多85)

  • 性能测试:响应时间、吞吐量、并发能力;兼容性测试不属于性能测试(2019 单44);
  • 数据兼容性=能否打开以前版本保存的文件(2020 单42);
  • Web 测试归类(2022 多85):
    • 压力测试属性能测试(不做是错的);
    • 内容测试属功能测试(归"易用性"是错的);
    • 无效链接属功能测试(归"安全性"是错的)。

口诀:性能测响应并发、兼容另算;Web 内容链接=功能。

3.9 复杂度度量与白盒覆盖档位(补强)

McCabe 环路复杂度 V(G)(三种等价算法):

  • V=E−N+2(边数−节点数+2);② V=判定节点数+1;③ V=平面图区域数。
  • 含义:独立路径条数,即"至少需要几个测试用例才能覆盖所有基本路径";V(G)≤10 是经验阈值(>10 建议拆分重构,>20 极难测试)。
  • 例:节点 N=7、边 E=9 ⇒ V=9−7+2=4(4 条基本路径)。

白盒覆盖由弱到强(必背顺序):语句 < 判定(分支)< 条件 < 判定/条件 < 条件组合 < 路径。

  • 语句覆盖最弱:判定条件写反也可能"语句全覆盖",查不出逻辑错;
  • 判定覆盖 ⊃ 语句覆盖;条件覆盖不必然满足判定覆盖,要"判定/条件覆盖"才两全;
  • 路径覆盖最强,但含循环时路径数可能爆炸(不可行)。

其他度量:Halstead(算子/算符计数)、LOC;可靠性 vs 可用性——可靠性看 MTBF(故障频次),可用性=MTBF/(MTBF+MTTR)(修得快则可用性高)。


四、易错坑汇总(命题人惯用陷阱)

  1. 语句覆盖最弱(2026 单31)——"路径覆盖最弱"错误(路径最强);语句覆盖发现能力最弱。
  2. 黑盒不能发现冗余代码(2019 单69)——"黑盒能发现冗余代码"错误(黑盒看不到内部)。
  3. 成功测试=发现错误(2019 多87)——"测试没发现错误=成功"错误(可能用例设计得不好)。
  4. 自己测自己不算数(2022 单37)——"开发人员测试通过=程序没问题"错误。
  5. 兼容性不属于性能测试(2019 单44)——"兼容性测试是性能测试"错误。
  6. 回归测试=修改后重测(2018 单73)——"回归测试是首次测试"错误(回归=修改后确认无新错)。
  7. 验收测试=用户确认(2022 单38)——"验收测试是开发人员自测"错误(验收是用户视角)。
  8. 边界值=关键测试点(摸底错题 27)——"测试不用测边界值"错误(边界最容易出错)。

五、横向扩展(防漏网:本章边界内、真题尚未考但可能补考的点)

说明:横向扩展覆盖"大纲范围内但 9 年真题未考过"的知识,标注【新增概率】供取舍。

  1. 等价类划分应用【高】:给输入条件分有效/无效等价类、取代表值——2027 高概率(老魏错题考点)。
  2. 边界值取点【高】:最小值/最大值/略超边界——"边界值分析取哪些值"题。
  3. 判定表/因果图【低】:黑盒测试其他方法——名词题。
  4. α/β 测试【中】:α=内部用户、β=外部用户(验收前)——名词辨析。
  5. 压力/负载/容量测试【低】:性能测试细分——名词题。
  6. 测试用例四要素【低】:前置条件/步骤/输入/期望输出——名词题。
  7. 单元测试的白盒性【中】:单元测试以白盒为主、集成以黑盒+白盒、系统/验收黑盒为主——阶段方法匹配题。
  8. 自动化测试【低】:回归测试常用自动化——与 6.9 DevOps 衔接。

六、真题演练(代表性真题 + 解析)

例 1(摸底错题 27) 黑盒测试的主要方法包括(口径已核)。 A. 等价类划分 B. 边界值分析 C. 语句覆盖 D. 路径覆盖

答案:AB。黑盒=等价类+边界值(功能视角);语句/路径覆盖是白盒方法(C/D 错)。口诀:黑盒等价边界、白盒语句路径。

例 2(2026 单31) 下列测试覆盖方法中,发现错误能力最弱的是(口径已核)。 A. 语句覆盖 B. 判定覆盖 C. 条件覆盖 D. 路径覆盖

答案:A。语句 < 判定 < 条件 < 路径——语句覆盖最弱、路径覆盖最强。口诀:语句最弱、路径最强。

例 3(2021 单43) 白盒测试的测试用例依据是(口径已核)。 A. 软件外部功能 B. 程序内部逻辑 C. 用户需求文档 D. 规格说明书

答案:B。白盒=程序内部逻辑/结构;外部功能/规格是黑盒依据。口诀:白盒看内、黑盒看外。

例 4(2019 单69) 黑盒测试不能发现的问题是(口径已核)。 A. 功能错误 B. 界面错误 C. 冗余代码 D. 输入错误

答案:C。黑盒看不到内部结构——不能发现冗余代码;功能/界面/输入错误都能通过黑盒发现。口诀:黑盒看不见冗余。

例 5(2022 单38) 验证软件是否达到用户期望的测试是(口径已核)。 A. 单元测试 B. 集成测试 C. 系统测试 D. 验收测试

答案:D。验收测试=用户确认达到期望;单元/集成/系统是开发侧测试。口诀:验收看用户满不满意。

例 6(2018 单73) 修正软件错误后,为了确认没有引入新的错误而进行的测试是(口径已核)。 A. 单元测试 B. 回归测试 C. 系统测试 D. 性能测试

答案:B。回归测试=修改后重测、确认未引入新错误。口诀:改完必回归。

例 7(2019 多87) 关于软件测试,正确的说法是(口径已核)。 A. 成功的测试是发现了至今未发现的错误 B. 测试的目的是证明程序没有错误 C. 穷举测试是可行的 D. 测试通过说明程序一定正确

答案:A。成功测试=发现新错误;测试不能证明无错(B 错)、穷举不可行(C 错)、通过≠绝对正确(D 错)。口诀:测试为找错、不为证无错。


七、本章小结

  • 一条主线:白盒(内部/覆盖四档)vs 黑盒(功能/等价类边界值)→ 阶段链(单元→集成→系统→验收)→ 回归测试 → 测试观三连 → 测试类型辨析。
  • 必背判定:语句覆盖最弱(2026 单31);黑盒不能发现冗余(2019 单69);成功测试=发现错误(2019 多87);验收=用户确认(2022 单38);回归=无新错(2018 单73);自己测自己不算(2022 单37)。
  • 衔接预告:单元/集成测试与 6.6 模块设计衔接;自动化测试→6.9 DevOps;性能测试与 5.10 网络性能呼应。