首页/开发/软件测试速查/等价类划分(Equivalence Partitioning)
用例设计方法62 条

等价类划分(Equivalence Partitioning)

把输入域划分为若干等价类,每类中任取一个代表值即可代表该类行为;有效类与无效类都要划分,是黑盒用例设计的基础方法。

软件测试速查开发更新于 2026-10-13

等价类划分是什么

等价类划分把输入域切成若干区间,同一区间内任一取值预期产生相同行为,因此每类只需取一个代表值做用例,就能用最少用例覆盖最大的输入空间。它是黑盒用例设计的基础方法:Myers《The Art of Software Testing》系统阐述,ISTQB 大纲收录为通用技术。划分时必须同时给出有效类(合法输入)与无效类(非法输入),两者共同构成完整集合;实际工作中通常先划分等价类,再对每类的边界单独做边界值分析。划分的粒度服务于风险:类划得越细用例越多,划得越粗漏检风险越高,用历史缺陷数据校正粒度比凭感觉细划更有效。

基本信息

方法类别黑盒用例设计,基于输入域分析
核心判据同一等价类中任取一个值,预期结果相同
适用输入数值范围、枚举、布尔、集合、字符串格式
产出物每个等价类的代表值及预期结果
常配合使用边界值分析、决策表、场景法
覆盖口径有效类与无效类都要划分并覆盖

典型使用场景

  • 表单校验规则:年龄、金额、数量等数值区间输入
  • 枚举与下拉:支付状态、单据类型等有限取值集合
  • 格式类输入:手机号、邮箱、身份证号的位数与字符集约束
  • 数据库字段约束:长度上限、非空、唯一键冲突路径
  • 接口参数校验:必填项缺失、类型错误、超长字符串
  • 验收标准拆解:把用户故事里的输入条件逐条映射成等价类
  • 组合爆炸裁剪:先用等价类收敛每个维度的取值再谈组合

示例:18 到 60 周岁可办卡

示例:18 到 60 周岁可办卡
# 有效类:18 ≤ age ≤ 60,代表值取区间中值 25
# 无效类一:age < 18,代表值取 10
# 无效类二:age > 60,代表值取 70
# 无效类三:非数字输入,代表值取 abc
# 无效类四:空值,代表值取 None
# 用例:25 -> 可办卡;10/70/abc/None -> 拒绝并给出对应提示

常见输入的划分

输入类型有效类示例无效类示例划分要点
数值范围18 到 60小于 18、大于 60分段规则变化时按段拆分
枚举状态为 paid未知状态、空状态核对系统间枚举字典一致性
布尔true 或 false空值、字符串 yes注意隐式类型转换的边界
字符串格式11 位数字手机号位数不足、含字母位数与字符集是两个维度
集合1 到 5 个元素0 个、超过 5 个空集合常触发独立代码路径
同类只取一个代表值,取多个是重复劳动;选择代表值时可优先靠近区间边界(如 18、60),把边界值分析的用例一并覆盖掉。
无效类覆盖要逐个来:一次只放一个非法值,其余输入保持合法,否则失败时无法判断是哪条校验拦下的;多个非法值叠加属于反模式,详见 equivalence-invalid 条目。
同一维度内部行为不一致时必须拆分:例如折扣从 100 元、500 元分段后折扣率不同,应按分段拆成多个等价类,否则会漏掉分支缺陷。
接口与数据库字段的等价类要单独核一遍:前端校验通过不代表后端也拦住;两侧规则不一致时,脏数据会从缺口进入,事后清洗与修复的成本远高于补一条用例。
划分不是一次性的:线上每次出现新缺陷,都应回溯它落在哪个未划分或划分错误的等价类上,把代表值补给用例集。

易错点

  • 只划分有效类,遗漏无效输入组合的防御性用例
  • 等价类内部行为其实有差异(如折扣分段)却当作一类处理,漏掉分支
  • 多个无效值叠加在同一条用例里,失败时无法定位是哪个校验拦截
  • 代表值专挑远离边界的值,把边界附近的 off-by-one 缺陷全部绕开
  • 划分完成后不复盘线上缺陷,等价类集合长期不更新

数据来源与参考

  • ISTQB CTFL 4.0 大纲(等价类划分)
  • Myers《The Art of Software Testing》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌