3. 等价类划分与边界结合:协作关系

3.1 概念解释

等价类划分法 和 边界值分析法 是黑盒测试中最基础、最常用的两种设计技术。前者擅长将无限的输入空间压缩为有限的等价类集合,后者则聚焦于等价类边缘的敏感区域。两者并非替代关系,而是互补协作——等价类划分负责“划分领地”,边界值分析负责“守卫边界”。

核心协作模型: 等价类划分决定“测哪些区域”,边界值分析决定“在区域边界上怎么测”。先划类,后取边,缺一不可。
维度 等价类划分法 边界值分析法
关注点 输入数据的类别(有效/无效) 类别边界上的具体数值
覆盖粒度 每个等价类至少覆盖一次 边界及其邻域内精确取值
缺陷发现能力 类间逻辑错误、拒绝/接受误判 边界偏移、比较符号错误、
临界值处理遗漏
用例数量 较少(每个类 1 条) 较多(每个边界 2~3 条)
协作角色 划定测试范围 精准探测边界缺陷

3.2 协作关系原理

两种方法在测试设计流程中形成明确的 前后衔接 关系:

  1. 先划分等价类:根据需求规格,将输入域划分为若干有效等价类和无效等价类。
  2. 再提取边界:从每个等价类中找出其边界值(最大值、最小值、临界点)。
  3. 联合生成用例:为每个边界值设计测试用例,同时保留每个等价类的典型中间值作为补充。
经验法则: 在实际项目中,约 70% 的缺陷集中在等价类边界附近。仅做等价类划分而不做边界值分析,会遗漏大量“差一位”的缺陷;仅做边界值分析而不做等价类划分,则容易陷入局部数值而漏掉大类逻辑错误。

3.3 类比:小区快递柜取件

把测试输入域想象成一个 小区快递柜:

  • 等价类划分 相当于按楼层分组:1 层住户、2 层住户……各为一个等价类。每个楼层内任何一户的取件流程高度相似,只需测试一户代表即可。
  • 边界值分析 相当于重点检查每层楼的 第一个和最后一个柜门(比如 101 室、199 室),因为柜门编号最容易贴错、系统最容易在边界处配置遗漏。
  • 只按楼层测试(等价类)可能漏掉“101 室柜门打不开”的缺陷;只检查边界柜门(边界值)则可能忽略“整个 3 层系统都没录入”的大类错误。

两者协作,既确保大类正确,又守住边界不出偏差。

3.4 协作关系图解

等价类划分与边界值分析协作关系流程 等价类划分 + 边界值分析 协作流程 输入域 / 需求规格 等价类划分 (有效 / 无效) 有效等价类 (正常取值) 无效等价类 (异常取值) 有效边界识别 (min/max) 无效边界识别 (临界点) 联合生成测试用例 完整边界测试用例集 先划类 → 再取边 缺一不可,协作互补

3.5 常见误区

误区 错误理解 正确做法
替代论 “边界值分析能覆盖等价类,不需要单独划分” 边界值只覆盖边缘,无法发现类内部逻辑缺失;必须先用等价类划定范围。
合并论 “把两种方法强行合并为一种步骤” 保持先后分工:先划分,后取边界,用例分开设计再合并。
边界遗漏 “只测试每个等价类的中间值就够了” 中间值只能代表类内典型情况,边界值必须独立补充测试。
无效类忽视 “无效等价类不需要做边界值分析” 无效类的边界同样容易出错(如输入 -1、0、最大+1 等),必须同等对待。
典型错误案例: 某电商系统促销活动要求“满 200 减 30”。测试人员仅用等价类划分选取了 150 元、250 元、350 元三个值,没有对边界 199、200、201 做边界值分析,导致线上“满 199.9 元未触发优惠”的缺陷漏测,造成资损。

3.6 练习题

题目: 一个登录模块对密码长度要求为 8~20 个字符(包含 8 和 20)。请按等价类划分 + 边界值分析的协作方法,列出完整的测试用例设计思路。

  1. 步骤一:等价类划分
    • 有效等价类:8 ≤ 长度 ≤ 20
    • 无效等价类:长度 < 8,长度 > 20
  2. 步骤二:边界值提取
    • 有效边界:长度 = 8(最小值),长度 = 20(最大值)
    • 无效边界:长度 = 7(小于最小值),长度 = 21(大于最大值)
    • 补充边界邻域:长度 = 9(最小值+1),长度 = 19(最大值-1)
  3. 步骤三:联合生成用例
用例编号 密码长度 所属类别 预期结果
TC-01 7 无效边界(下邻域) 拒绝
TC-02 8 有效边界(最小值) 接受
TC-03 9 有效边界内(min+1) 接受
TC-04 19 有效边界内(max-1) 接受
TC-05 20 有效边界(最大值) 接受
TC-06 21 无效边界(上邻域) 拒绝
TC-07 12 有效等价类中间值 接受
协作效果: TC-07 来自等价类中间值(覆盖大类),TC-01~TC-06 来自边界值分析(覆盖边界)。两者合并共 7 条用例,即可同时捕获“大类逻辑错误”和“边界偏移缺陷”。

3.7 应用边界

等价类划分与边界值分析协作方法并非万能,在实际项目中有明确的应用边界:

  • 适用场景:输入数据有明确的数值范围、枚举集合、字符串长度约束或有序序列;需求规格中包含“最小值/最大值/上限/下限”等边界关键词。
  • 不适用场景:输入为无结构自由文本、图像/音频等非数值数据、或需求边界模糊未定义时,该方法效果有限,需结合场景法或随机测试。
  • 协作局限:该方法无法发现“业务逻辑链式传递错误”(如 A 条件影响 B 结果但 B 又反馈给 A 的环路缺陷),此时需要引入判定表或因果图。
  • 组合爆炸提示:当存在多个输入参数时,对每个参数独立做等价类+边界值,用例数会快速膨胀。此时应先用等价类划分做参数筛选(只保留关键参数),再对筛选后的参数做边界值分析。
// 伪代码:协作策略选择逻辑
if 输入域有明确边界:
    使用 等价类划分 + 边界值分析
elif 输入依赖多条件组合:
    使用 判定表 或 因果图
elif 输入为连续流/时间序列:
    使用 场景法 + 正交实验
else:
    使用 探索性测试 补充
工程建议: 在测试计划中为每个功能模块标注“是否启用边界协作分析”。对于金融、医疗、航天等高可靠性领域,强制要求等价类划分与边界值分析联合覆盖率达到 100%;对于内部工具或低风险页面,可放宽为仅做等价类划分,但需在报告中注明。