一、黑盒测试的定义与目标
定义:黑盒测试(Black-box Testing),又称功能测试,是一种软件测试方法,它在不考虑程序内部结构和实现细节的前提下,仅依据软件的需求规格说明书来设计测试用例,测试软件的外部行为和功能是否符合预期。
测试目标:主要目标是发现以下五类错误:
- 功能错误或遗漏:如功能未实现、逻辑错误、流程错误等;
- 界面、输入输出错误:如界面布局混乱、提示信息错误、输入无法响应、输出格式不符等;
- 数据结构或外部数据库访问错误:如数据存储错误、查询失败、文件读写异常等;
- 性能不达标问题:如响应时间过长、资源占用过高、并发处理能力差等;
- 初始化和终止错误:如系统启动失败、资源未释放、退出时数据丢失等。
二、常用黑盒测试技术
等价类划分(Equivalence Partitioning)
- 核心思想:将程序的输入域划分为若干个子集(即“等价类”),从每个等价类中选取少量代表性数据作为测试用例。假设同一等价类中的输入数据在测试中具有相同的效果。
- 分类:
- 有效等价类:符合输入条件的合理数据集合;
- 无效等价类:不符合输入条件的不合理数据集合。
- 划分原则(6 条):
- 若输入条件规定了取值范围或个数,则可确定一个有效等价类和两个无效等价类(小于最小值、大于最大值);
- 若输入为某个特定集合或“必须如何”,则一个有效类(属于集合)、一个无效类(不属于集合);
- 若输入为布尔类型,则一个有效类(真)、一个无效类(假);
- 若输入需处理 n 个值中的某一个,则划分为 n 个有效等价类 + 1 个无效类;
- 若输入有特定规则(如格式要求),则一个有效类 + 多个无效类(分别违反不同规则);
- 若等价类中元素处理方式不同,应进一步细分。
- 设计步骤:
- 划分等价类并建立编号的等价类表;
- 设计测试用例覆盖所有有效等价类;
- 分别设计测试用例覆盖每一个无效等价类(避免多个错误同时出现导致掩盖)。
边界值分析(Boundary Value Analysis)
- 核心思想:大量错误发生在输入或输出的边界上,因此测试边界值比测试中间值更有效。它是对等价类划分的补充。
- 选择策略:对于一个取值范围 [a, b],通常选择 a-1、a、a+1、b-1、b、b+1 作为测试数据;
- 适用范围:不仅适用于输入条件的边界,也适用于输出域的边界测试;
- 增强版本:结合健壮性边界值分析,可测试超出边界的值(如最小值减1、最大值加1)以验证系统的容错能力。
等价类划分与边界值分析是黑盒测试中两种基础且常用的测试用例设计技术,它们在目标、方法和应用场景上既有区别又有联系。
一、区别
| 比较维度 | 等价类划分(Equivalence Partitioning) | 边界值分析(Boundary Value Analysis) |
|---|---|---|
| 核心思想 | 将输入域划分为若干等价类,认为同一类中数据测试效果相同 | 认为边界值更容易出错,重点测试输入/输出的临界点 |
| 关注点 | 输入的“区域”或“类别” | 输入的“边缘”情况(如最小值、最大值附近) |
| 测试数据选择 | 从每个等价类中选取一个代表性数据(通常选中间值) | 选择边界及其邻近值(如 min-1, min, min+1, max-1, max, max+1) |
| 覆盖目标 | 覆盖所有有效和无效的输入类别 | 覆盖可能因边界判断错误导致的缺陷(如<=写成<) |
| 适用阶段 | 初步功能验证,确保各类输入能被正确处理 | 深入测试,发现边界逻辑错误 |
二、联系
互补关系:
- 等价类划分侧重于“面”的覆盖,边界值分析侧重于“线”或“点”的覆盖。
- 实际测试中常将两者结合使用:先用等价类划分确定测试范围,再在每个等价类的边界上应用边界值分析,提升测试有效性。
共同基础:
- 两者都基于需求规格说明进行分析,不依赖程序内部结构,属于典型的黑盒测试方法。
- 都用于设计输入相关的测试用例,尤其适用于有明确输入条件的功能模块(如登录、搜索、数值计算等)。
协同应用示例:
假设某输入要求为“年龄在 1~150 之间”:- 等价类划分:
- 有效等价类:1 ≤ 年龄 ≤ 150
- 无效等价类:年龄 < 1,年龄 > 150
- 边界值分析:
- 测试点:0, 1, 2, 149, 150, 151
- 综合设计时,既覆盖了有效/无效类,又强化了边界测试,提高缺陷检出率。
- 等价类划分: