【软件工程】软件测试:黑盒测试(等价类/边界值/因果图)

考点频率 :★★★★★(选择题必考,下午案例题高频)

难度 :⭐⭐⭐

建议:重点掌握等价类划分和边界值分析的具体操作步骤,因果图法以理解概念为主

1️⃣ 什么是黑盒测试?

黑盒测试,又称功能测试数据驱动测试 ,把程序看作一个不透明的"黑盒子",测试人员不关心程序内部结构和代码逻辑 ,只根据需求规格说明书来检查程序是否按预期工作,输入数据后能否得到正确的输出结果。

类比:你买了一台自动售货机,你不需要知道它内部电路板上的芯片型号、控制程序怎么写的------你只需要按下"可乐"按钮,它出来一瓶可乐,这就是功能正确。

适用阶段:系统测试、验收测试(站在用户角度验证功能)。


2️⃣ 等价类划分法

2.1 核心思想

把输入数据划分成若干个等价类 ,从每个等价类中选取一个代表性数据作为测试用例。如果该数据能通过测试,则认为该类中的其他数据也能通过------因为它们在功能上等价。

为什么有效:对于同一类输入,程序的执行路径是相同的。只要测一类中的一个,就不需要测所有值,大大减少测试用例数。

2.2 等价类的分类

类型 定义 示例(输入条件:年龄 1~120)
有效等价类 符合需求规格、应该被接受的输入 18、65、120(合理年龄)
无效等价类 不符合需求规格、应该被拒绝的输入 0、-5、150(超出范围)

2.3 划分步骤

步骤 操作
第1步 确定输入条件(需求中的每一个输入字段)
第2步 为每个输入条件划分有效等价类和无效等价类
第3步 为每个等价类编号
第4步 从每个等价类中选取一个代表性数据,设计测试用例

划分规则

  • 输入条件规定了取值范围(如 1~100)→ 1个有效等价类(1~100)+ 2个无效等价类(<1、>100)
  • 输入条件规定了值的集合(如 {红, 黄, 蓝})→ 1个有效等价类(任意一个)+ 1个无效等价类(集合外的值)
  • 输入条件规定了布尔值(如是否同意协议)→ 1个有效等价类(true)+ 1个无效等价类(false)

2.4 示例

某系统要求"用户名长度为 3~10 个字符":

等价类 类型 测试数据
3~10 个字符 有效 "abc"(3个)
小于3个字符(如1个) 无效 "a"
大于10个字符(如11个) 无效 "abcdefghijk"
空字符串 无效 ""

每个测试用例一次只能覆盖一个无效等价类,不能在一个用例中同时包含多个无效输入(否则无法确定是哪个输入导致程序拒绝)。


3️⃣ 边界值分析法

3.1 核心思想

边界是错误最容易发生的地方。程序在处理边界值(如循环边界、数组边界、数值范围边界)时,代码往往写得不严谨,容易产生Bug。边界值分析法就是专门去测试这些边界附近的值。

常见边界

  • 输入范围的最小值/最大值
  • 数组的第一个/最后一个元素
  • 循环的第一次/最后一次迭代

3.2 基本原则

对于取值范围为 min, max 的输入,需要测试的边界值包括:

类型 测试值
略小于最小值 min - 1
最小值 min
略大于最小值 min + 1
正常值 (min + max) / 2
略小于最大值 max - 1
最大值 max
略大于最大值 max + 1

3.3 示例

输入条件:年龄 1~120

测试值 说明 预期结果
0 略小于最小值 拒绝
1 最小值 接受
2 略大于最小值 接受
60 正常值 接受
119 略小于最大值 接受
120 最大值 接受
121 略大于最大值 拒绝

记忆技巧"上点、内点、离点"------上点是边界值本身(1和120),内点是范围内的任意值(60),离点是边界外紧挨的值(0和121)。

3.4 等价类 vs 边界值

对比项 等价类划分 边界值分析
关注点 输入数据的分类 输入数据的边界
测试值 每个类中选1个代表性值 边界附近的所有值
目标 减少测试用例数 发现边界处缺陷

两者通常结合使用 :先用等价类划分选出代表性测试点,再对边界值进行补充测试,通常被称为"等价类+边界值"组合测试法。


4️⃣ 因果图法

4.1 核心思想

因果图法 是一种用于测试多个输入条件组合 的测试方法。当多个输入条件之间存在逻辑关系(如"如果A且B,则输出X;如果A或B,则输出Y"),仅靠等价类和边界值无法覆盖所有组合,需要用因果图来分析。

核心步骤

步骤 操作
第1步 分析需求,列出所有输入条件(原因)输出结果(结果)
第2步 分析输入条件之间的关系(与、或、非)和约束
第3步 画出因果图
第4步 将因果图转化为判定表
第5步 根据判定表设计测试用例

4.2 因果图中的基本符号

符号 名称 含义
恒等 c → e 原因成立 → 结果成立
c NOT e 原因成立 → 结果不成立
与(AND) c1 AND c2 → e 两个原因都成立 → 结果成立
或(OR) c1 OR c2 → e 至少一个原因成立 → 结果成立

4.3 判定表(决策表)

判定表是因果图的输出,用于系统地列出所有条件组合及其对应的结果。

条件1 条件2 条件3 动作
T T T 结果A
T T F 结果B
T F T 结果A
... ... ... ...

因果图法更侧重于需求分析阶段 ,用于梳理复杂的逻辑关系。软考中更常考的是因果图转判定表以及判定表的化简。


5️⃣ 三种黑盒测试方法对比

对比项 等价类划分 边界值分析 因果图法
关注点 输入数据的分类 输入数据的边界 输入条件的逻辑关系
适合场景 输入范围广泛、类型多样 输入有明确范围限制 多个输入条件相互依赖
测试用例数量 少(每类1个) 中等(边界附近多个) 多(组合数增长)
能否单独使用 ✅ 可以 ✅ 通常与等价类结合 ⚠️ 通常需要配合判定表

6️⃣ 经典例题

例题1:某系统要求用户年龄输入范围为 18~65 岁。根据边界值分析法,以下测试数据中,不需要测试的是( )。

A. 17

B. 18

C. 19

D. 66

解析 :边界值测试应覆盖:min-1(17)、min(18)、min+1(19)、normal(如40)、max-1(64)、max(65)、max+1(66)。66在范围内?66 > 65,属于max+1,需要测试。实际上需要测试的是17、18、19、64、65、66。题干问"不需要测试的是"------选项D是66,需要测试;A是17,需要测试;B是18,需要测试。C是19,也属于边界附近需要测试。嗯,这道题可能不严谨。换个方式:如果题目问"应该优先测试哪些值",答案是17、18、19、64、65、66。选 C 是边界值?不对。重新出题:

更典型的题:某系统输入条件为"1 ≤ X ≤ 100",下列哪组数据是边界值测试应选的?

A. 0, 1, 2, 99, 100, 101

B. 1, 50, 100

C. 0, 50, 101

D. 1, 2, 99, 100

解析 :边界值应选 min-1、min、min+1、max-1、max、max+1。对应 0、1、2、99、100、101。选 A


例题2:以下关于黑盒测试的叙述中,正确的是( )。

A. 黑盒测试需要了解程序的内部代码结构

B. 等价类划分法将输入数据划分为有效类和无效类

C. 边界值分析法只测试输入范围的最小值

D. 因果图法不需要考虑输入条件之间的关系

解析 :A错误------黑盒测试不关注内部代码;C错误------边界值需测试边界附近多个值;D错误------因果图法正是关注输入条件之间的逻辑关系。B正确。选 B


7️⃣ 记忆口诀

黑盒测试看功能,等价边界因果图。

等价划分有效无,边界测试七点值。

因果分析看组合,画出因果转判定。


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

某系统要求"密码长度必须为 6~12 个字符"。下列测试数据中,最符合边界值分析法要求的是( )。

A. "12345", "123456", "1234567", "123456789012", "1234567890123"

B. "123456", "123456789012"

C. "12345", "123456"

D. "123", "123456", "123456789012", "1234567890123"

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

#软考中级 #软件设计师 #黑盒测试 #等价类 #边界值 #因果图 #软件工程

相关推荐
圣光SG15 小时前
Java Web入门基础知识笔记
java·前端·笔记
qiyongwork18 小时前
敏捷方法论的演进:从 Scrum 到规模化敏捷的变革
项目管理·软件工程·scrum
蜡笔小电芯19 小时前
【电路设计】TVS 瞬态抑制二极管选型与应用笔记
笔记
梁辰兴20 小时前
软件工程:软件开发模型
软件工程·迭代模型·软件开发模型·模型选择·梁辰兴·经典模型·其他模型
三水不滴1 天前
RAG 系统评测全梳理:三元组方法论 + 分层指标体系
经验分享·笔记
光影6271 天前
MySQL基础入门
数据库·笔记·sql·学习·mysql·学习方法
光影6271 天前
MySQL 进阶篇 —— 事务 / 外键 / 索引 / 高级查询
数据库·笔记·sql·学习·mysql
晴雨天️1 天前
Git工具使用指南
笔记·git
醉城夜风~1 天前
MyBatis 基础CRUD全套实战学习笔记
笔记·学习·mybatis