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

考点频率:★★★★★(选择题必考,下午案例题高频)
难度:⭐⭐⭐
建议:重点掌握等价类划分和边界值分析的具体操作步骤,因果图法以理解概念为主

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动作
TTT结果A
TTF结果B
TFT结果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”

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

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