黑盒测试方法论-等价类

📅 2026/8/2 6:13:08 👁️ 阅读次数 📝 编程学习
黑盒测试方法论-等价类

文章目录

  • 一. 什么是等价类
  • 二. 等价类的分类
  • 三. 等价类的使用场景
  • 四. 等价类划分原则
  • 五. 等价类设计步骤
  • 六. 实战示例:两位整数加法计算器
    • 1. 需求分析
    • 2. 等价类划分表
    • 3. 测试用例设计
      • 3.1 用例结构
      • 3.2 多元素输入的注意事项
      • 3.3 测试用例成品示例
      • 3.4 简单的测试用例示例
  • 七. 输入域等价类划分思路总结
  • 八. 优缺点分析


一. 什么是等价类

等价类划分法是黑盒测试中最经典、最广泛使用的设计方法之一。它不关注程序的内部代码结构,而是完全基于输入规格说明来设计测试用例。

  • 其核心思想是:将所有可能的输入数据划分为若干个互不重叠的子集(即"等价类"),然后从每个子集中选取少量具有代表性的数据作为测试用例。由于同一等价类中的数据对程序的处理逻辑是"等价"的,因此只需测试其中一个代表值,即可覆盖整个子集的测试效果。

一句话概括:等价类划分法 = 合理分类 + 代表值选取,用有限的用例覆盖无限的输入空间。



二. 等价类的分类

类别
定义
说明
有效等价类
符合需求文档规定的、合理的输入数据集合验证程序在正常输入下能否正确运行
无效等价类
不符合需求文档规定的、不合理的输入数据集合验证程序对异常输入的容错与提示能力


三. 等价类的使用场景

在测试资源(时间、人力)有限的情况下,等价类划分法能够以少量有代表性的数据获得较高的测试覆盖率,尤其适用于:

  • 输入域范围大、数据量多的场景
  • 需要快速建立基础测试用例集的项目初期
  • 作为其他测试方法(如边界值分析)的前置步骤


四. 等价类划分原则

序号
输入条件描述
划分方式
1规定了输入的取值范围或个数1 个有效 + 2 个无效(超出上界 / 低于下界)
2规定了输入必须遵循的集合或规则1 个有效 + 1 个无效
3输入条件为布尔值1 个有效(True)+ 1 个无效(False)
4输入为一组数据,且每个值做不同处理若干个有效 + 1 个无效
5输入条件规定了必须遵循的某些规则1 个有效 + 若干个无效(每条规则对应一个无效)
6某些输入条件不存在无效情况仅划分有效等价类即可


五. 等价类设计步骤

Step 1 ➜ 划分等价类:穷举所有可能的输入分类 Step 2 ➜ 确定有效等价类:依据需求文档中的合法条件 Step 3 ➜ 确定无效等价类:取条件的反面 + 特殊异常情况 Step 4 ➜ 选取测试数据:从每个等价类中挑选代表性数据 Step 5 ➜ 编写测试用例:组合数据,明确预期结果


六. 实战示例:两位整数加法计算器

1. 需求分析

计算器要求输入两位整数(即 -99 ~ 99),对两个输入框的数值进行加法运算。如果要一个一个测试,那数据量得非常大,这样效率太低了。那为了解决这个问题,可以采用等价类划分的方法。


2. 等价类划分表

确定这个输入框的所有可能的输入集合,在这里就应该是键盘上所有可能的输入。

把键盘上所有的输入分成若干子集:

在确立了等价类之后,可按下表的形式列出所有划分出的等价类表

输入条件
有效等价类
无效等价类
两位整数
-99 ~ 99 的整数
超出范围的整数(如 120、-111)
小数(如 30.12)
字母(如 ab)
汉字(如 十二)
特殊字符(如 $ %)
空输入

3. 测试用例设计

3.1 用例结构

字段
说明
用例编号唯一标识,便于追踪与管理
所属等价类标注该用例覆盖的有效/无效等价类
输入框 1 数据第一个操作数的测试值
输入框 2 数据第二个操作数的测试值
预期结果系统应返回的正确输出或提示信息

3.2 多元素输入的注意事项

用例的最终计算结果依赖于两个输入框的值,属于多元素协同输入的场景。在设计用例时,必须遵循以下原则:

单一变量原则:当某条用例用于覆盖某个元素的无效等价类时,用例中涉及的其余元素必须保持有效。

  • 示例

    • 若要验证输入框 1 的无效输入 → 输入框 2 填入合法值,且按钮操作正常。
    • 若要验证输入框 2 的无效输入 → 输入框 1 填入合法值,且按钮操作正常。
  • 为什么这样做?

    • 如果一条用例中同时存在多个无效输入,当系统报错时,测试人员将无法判断错误究竟由哪个输入引起。保持"一次只引入一个变量",可以精准定位缺陷来源,提高测试效率与缺陷报告的可追溯性。
要点内容
用例粒度初期保持精简,聚焦核心字段
覆盖策略有效用例验证功能正确性,无效用例验证容错能力
关键原则覆盖无效等价类时,其余元素一律保持有效(单一变量)
目的确保每条用例的错误归因清晰、可定位

3.3 测试用例成品示例

用例编号所属等价类输入框 1输入框 2预期结果
1有效504090
2输入框 1 无效12030错误提示
3输入框 1 无效-11130错误提示
4输入框 1 无效30.1220错误提示
5输入框 1 无效ab10错误提示
6输入框 1 无效十二39错误提示
7输入框 1 无效$ %87错误提示
8输入框 1 无效91错误提示
9输入框 2 无效35120错误提示
10输入框 2 无效59-123错误提示
11输入框 2 无效2430.12错误提示
12输入框 2 无效12ab错误提示
13输入框 2 无效76十二错误提示
14输入框 2 无效83$ %错误提示
15输入框 2 无效95错误提示

3.4 简单的测试用例示例



七. 输入域等价类划分思路总结

在设计等价类时,可从以下 6 个维度 全面审视输入域:

维度关注点
① 长度最大/最小长度、超长/过短
② 类型数字、字母、汉字、特殊字符等
③ 组成规则格式约束(如手机号、邮箱格式)
④ 是否为空必填项留空
⑤ 是否重复重复提交、重复数据
⑥ 是否去除空格前后空格、中间空格的处理


八. 优缺点分析

说明
✅ 优点思路清晰、易于理解;覆盖了单个输入域所有可能的取值情况;避免了盲目或随机选取数据导致的测试不完整
❌ 缺点产生的用例数量较多;未对边界值/特殊点做针对性考虑;可能产生冗余或无效的测试用例
💡 建议实际工作中应结合边界值分析法、判定表、场景法等方法进行补充,形成完整的测试用例集