等价类划分是什么意思:定义、划分规则与用例设计

等价类划分是一种黑盒测试用例设计方法:把输入或输出条件按“处理逻辑相同、预期结果一致”分成若干集合,每个集合就是一个等价类,再从每个等价类中选取代表性数据构成用例。有效等价类验证合法输入,无效等价类验证异常处理;划分时遵循完备、互斥、可判定三条基本要求,并结合边界值分析补齐临界点。



要点总览(TL;DR)


  • 等价类划分是按处理逻辑与预期结果把输入域拆成若干集合,每个集合取一个代表值构成用例,用有限用例覆盖大量输入组合。
  • 有效等价类验证合法输入能否被正确处理,无效等价类验证异常输入是否被正确拦截和提示,两类都要覆盖。
  • 划分遵循完备性、互斥性、可判定性三条标准;无效等价类一次只取一个值,避免多个错误叠加导致无法定位。
  • 等价类划分常与边界值分析配对使用:先划分等价类保证类别覆盖,再对连续区间补充临界点及其两侧取值。
  • 划分结果建议用登记表记录类编号、条件描述、代表值、预期结果和对应用例,再录入用例管理工具承接评审与执行。


等价类划分的直接答案


等价类划分(Equivalence Partitioning)指按处理逻辑与预期结果,把被测对象的输入域或输出域拆成若干子集,每个子集内部的数据在程序看来“表现一致”,因此只需从中挑一个代表值参与测试。这里的等价类,指预期表现一致的一组输入数据。这个方法的直接目的,是用有限条用例覆盖近乎无限的输入组合。


划分结果分为两类,验证目标不同:


类别 含义 验证目标 典型取值
有效等价类 符合需求规格、程序应当正常受理的输入集合 合法输入能否被正确处理,结果是否符合预期 范围内的整数、符合格式的字符串、已定义的枚举项
无效等价类 不符合规格、程序应当拒绝或提示的输入集合 异常输入是否被正确拦截、提示是否准确、系统是否保持稳定 越界值、格式错误、空值、非法字符、未定义选项

两类缺一不可。只测有效等价类,等于只验证“顺利路径”,异常分支的提示文案、错误码、数据回滚都无从检验;只测无效等价类,则正常业务逻辑是否跑通没有证据。一个可复述的判断标准是:对同一个输入条件,有效等价类通常至少一个,无效等价类可能多个,每个类都要有代表值。



等价类划分的边界:它管什么、不管什么


等价类划分适用于存在明确输入域或输出域的测试项,前提是这些条件能够被描述、被拆分,并且每类的预期结果可以写清楚。它不负责临界点附近的精细行为,也不负责多条件交叉与流程顺序,这些分别由相邻方法承担。


范围判断 具体内容 说明
属于 数值范围(如年龄 18–60) 按区间内外拆分有效与无效类
属于 字符串格式(如手机号、邮箱、编码规则) 按格式合法、格式非法、长度异常拆分
属于 枚举选项、下拉框、单选项 每个合法选项为一个有效类,未定义值为无效类
属于 必填与选填字段 空值、仅空格、正常填写分别成类
属于 状态组合中可独立判断的输入条件 条件之间无耦合时可分别划分
不属于 临界值及其两侧的精确行为 交由边界值分析处理
不属于 多条件交叉与规则冲突 交由判定表处理
不属于 操作顺序、状态迁移、跨页面流程 交由场景法处理
不属于 性能、安全、兼容性等非功能测试 属于其他测试类型的方法范畴
不属于 跨项目用例复用与用例库治理 属于测试用例库与资产复用主题

方法本身与工具无关,纸笔、表格、用例管理平台都能承载划分结果。工具解决的是登记、检索与执行跟踪,不改变划分规则。划分完成后如何把结果沉淀为可评审、可执行的用例,才进入工具协作的环节。



等价类怎么划分:步骤、规则与判定标准


划分可以按五步推进,每一步都有明确产物,便于复核。


  1. 明确输入条件。从需求规格或接口文档中逐条摘出输入项与约束,包括类型、范围、格式、必填性、依赖关系。产物是一份输入条件清单。
  2. 按规则与约束拆分。对每个输入条件,依据取值范围、取值个数、布尔与枚举、格式规则、必填与选填、合法与非法组合等依据,拆出若干子集。
  3. 标注有效与无效。为每个子集打上有效或无效标记,并写明该类的判定条件,例如“大于 60 的整数”。
  4. 编号并说明覆盖条件。给每个类一个唯一编号,写明它覆盖的输入情形,便于后续追溯需求条目。
  5. 选取代表值。从每个类中挑一个最具代表性的数据,配上预期结果,形成用例草稿。

一个划分是否合格,用三条标准检验:


  • 完备性:所有可能的输入都能被某个类接住,不存在“无处安放”的取值。发现遗漏说明拆分不完整。
  • 互斥性:一个具体输入只能落入一个类,不能同时属于两个类。重叠会导致用例重复、预期结果冲突。
  • 可判定性:能说清该类的预期结果,包括正常返回、错误提示或拦截行为。说不清预期结果的类,说明需求本身还有歧义,应先澄清需求。

无效等价类取值有一条操作纪律:一次只取一个无效值。若同时输入两个错误条件,程序可能只报出其中一个,另一个是否被正确处理无法判断,缺陷定位也会变难。


划分结果建议用登记表固化,字段如下:


字段 填写内容 作用
类编号 如 EC-01、EC-02 唯一标识,便于引用与追溯
输入条件 对应的需求条目或字段名 建立与需求的对应关系
类类型 有效 / 无效 区分验证目标
条件描述 如“18 至 60 的整数” 说明该类的判定边界
代表值 如 30 实际用于执行的数据
预期结果 如“保存成功,显示年龄 30” 判定通过与否的依据
对应用例 用例编号 连接设计与执行


等价类划分与边界值分析、判定表的区别


这几种方法回答的问题不同:等价类划分回答“取哪一类数据”,边界值分析回答“临界点及其两侧取什么值”,判定表回答“多个条件组合时走哪条规则”,场景法回答“操作按什么顺序发生”。


方法 关注点 典型适用场景 输出物
等价类划分 输入域的类别覆盖 单条件或可独立拆分的输入项 等价类登记表与代表值用例
边界值分析 临界点及其两侧取值 有序或连续区间,如数值范围、长度限制 边界取值用例
判定表 多条件组合与规则冲突 折扣规则、权限矩阵、审批条件 条件与动作的规则表
场景法 操作流程与状态迁移 下单、支付、审批流转 基本流与备选流用例

组合顺序建议是:先划分等价类,确定每类取一个代表值;对有序或连续区间,再补充临界点及其两侧取值;当多个条件相互影响、结果由组合决定时,转用判定表;当测试对象是流程而非单个输入时,改用场景法。等价类划分与边界值分析常配对使用,前者保证类别覆盖,后者保证临界精度。



具体例子与常见误解


以“用户年龄输入,允许 18 至 60 周岁整数”为例,划分结果如下:


类编号 类类型 条件描述 代表值 预期结果
EC-01 有效 18 至 60 的整数 30 保存成功,年龄显示为 30
EC-02 无效 小于 18 的整数 10 提示年龄不符合要求,拒绝保存
EC-03 无效 大于 60 的整数 70 提示年龄不符合要求,拒绝保存
EC-04 无效 非整数(小数) 25.5 提示请输入整数
EC-05 无效 非数字字符 abc 提示格式错误
EC-06 无效 空值 (留空) 提示年龄为必填项

执行时,EC-02 至 EC-06 各自单独提交一次,不与其他错误条件叠加。若把“10”和“abc”同时输入,系统只报一个错误,另一个分支是否被正确处理就失去了证据。这个例子还提示:18 和 60 本身属于有效类,但它们紧邻无效类,临界行为需要边界值分析补充 17、18、60、61 等取值,才能发现“大于等于写成大于”这类缺陷。


实践中高频出现的误解有四条:


  • 把等价类划分当成随机抽样。随机抽样不保证同类内预期结果一致,也不保证类别覆盖;等价类划分要求同类数据在处理逻辑上表现相同,代表值是可解释的选择。
  • 只划有效等价类。忽略异常输入,等于放弃对错误提示、拦截逻辑和系统稳定性的验证,上线后异常路径的问题往往最先暴露。
  • 划分完就结束。等价类解决类别覆盖,临界点附近的缺陷仍会漏测,需要与边界值分析配合。
  • 等价类越多越好。类拆得过细,用例数量和维护成本同步上升,收益递减。划分粒度以“预期结果是否真的不同”为准,预期结果相同的子集应合并。

划分结果最终要落成可执行、可评审的用例。ONES 支持编写测试用例并组织用例库,用例属性可自定义以适配不同业务场景,用例模块支持树状结构与拖拽排序,便于按输入条件或功能模块归类;用例可与产品需求、研发任务关联,用例库中的属性支持筛选,方便按等价类编号或覆盖条件快速定位。划分表登记完成后,把每个类的代表值与预期结果录入为用例,关联到对应需求,评审与执行就有了统一的承接载体。方法本身与工具无关,工具承担的是登记、检索与跟踪的管理动作。



常见问题


等价类划分和边界值分析应该先用哪个?


建议先做等价类划分,再做边界值分析。等价类划分确定每个输入条件有哪些类别、每类取哪个代表值;边界值分析在此基础上,对有序或连续区间补充临界点及其两侧的取值。两者关注点不同:前者保证类别覆盖,后者保证临界精度。如果先做边界值分析,容易只盯着数值边界,漏掉格式、空值、枚举等非连续类别的划分。


无效等价类为什么一次只能取一个值?


程序对多个错误条件同时出现时,通常只报出最先触发的一个错误,其余错误分支是否被正确处理无法观察。一次只提交一个无效值,可以让每个异常分支都有独立的执行证据,缺陷定位也更直接。如果业务上确实存在多个错误同时出现的场景,可以单独设计组合用例,但应与单无效值用例分开记录。


等价类划分做到什么粒度算合适?


以“预期结果是否真的不同”作为判断标准。如果两个子集的预期结果完全一致,应合并为一个等价类;如果预期结果不同,例如一个提示“格式错误”、另一个提示“超出范围”,就应拆成不同的类。类拆得过细会推高用例数量和维护成本,收益递减;拆得过粗则可能漏掉不同的异常处理分支。划分完成后用完备性和互斥性检查一遍,能帮助校准粒度。


划分结果怎么落到测试用例管理工具里?


划分表登记完成后,把每个类的代表值和预期结果录入为一条用例,用例标题或自定义属性中带上类编号,便于追溯。ONES 支持编写测试用例并组织用例库,用例属性可自定义以适配不同业务场景,用例模块支持树状结构与拖拽排序,便于按输入条件或功能模块归类;用例可与产品需求、研发任务关联,用例库中的属性支持筛选,方便按等价类编号或覆盖条件快速定位。工具承担的是登记、检索与执行跟踪,划分规则本身不变。


输出域也能做等价类划分吗?


可以。当输出结果存在多种可分类的形态时,例如订单状态分为待支付、已支付、已取消、已退款,可以按输出域划分等价类,再反推哪些输入组合会触发每种输出。输出域划分常用于输入条件不易枚举、但输出结果定义清晰的场景。它与输入域划分的规则一致:完备、互斥、可判定,每类取代表值并写明预期结果。