等价类 + 边界值:测试用例设计的“黄金搭档“,新手也能一次搞懂
2026/9/16 9:29:35 网站建设 项目流程

一、等价类划分法:用最少的用例,测最多的情况

1.1 它解决什么问题?

我们在测试一个密码输入框时,经常会遇到这种需求:密码必须是8-16位的英文字母、数字、字符组合(不能是纯数字)

如果按"穷举法"来测,那得测多少种组合?无穷无尽。

等价类划分法的核心思想就是:把输入数据分成几类,每一类里选一个"代表"来测试就够了。

1.2 怎么划分?

以"微信注册密码 8-16位,英文字母+数字+字符组合,不能是纯数字"为例:

类型说明例子
有效等价类符合所有规则的输入abc12345(8位,字母+数字)
无效等价类①长度不足abc12(5位)
无效等价类②长度超长abc12345678901234(17位)
无效等价类③纯数字(违反"不能纯数字"规则)12345678
无效等价类④纯字母(不含数字或字符)abcdefgh
无效等价类⑤含非法字符(如空格、中文)abc 1234

注意:每个无效等价类都要单独测一条,不能只测一个代表。

1.3 我自己动手试了一下

我拿着微信注册的密码框实际测了一轮:

  • Abc123!@(8位,字母+数字+字符)→ 符合规则

  • Abc123!@#456(12位,混合组合)→ 符合规则

  • abc12(5位)→ 报错"密码长度需为8-16位"

  • abc12345678901234(17位)→ 报错"密码长度需为8-16位"

  • 12345678(纯数字)→ 报错"密码不能为纯数字"

  • abcdefgh(纯字母)→ 报错"密码需包含字母、数字或字符组合"

  • abc 1234(含空格)→ 报错"密码包含非法字符"

我只用了7个用例,就把所有情况覆盖了,而不是盲目地乱测一通。


二、边界值分析法:Bug最喜欢藏在"边界"上

2.1 为什么需要边界值分析?

等价类虽然好用,但它有个盲区——边界上的值最容易出错

还是以"密码8-16位"为例,8位和16位是边界,7位和17位是刚好越界。程序员的代码里经常是if (len >= 8 && len <= 16)这种逻辑,边界上的=号有没有写对,就是最容易出Bug的地方。

2.2 三个关键概念

术语我的理解例子(8-16位)
上点边界上的点,正好等于边界值8 和 16
离点离上点最近的点,刚好越过边界7 和 17
内点范围内的任意一个点12(或9、10都行)

⚠️我一开始卡住的地方:分不清"离点"到底是取边界内还是边界外。

搞懂之后的理解

  • 如果是闭区间[8, 16],离点取外部,即 7 和 17

  • 如果是开区间(8, 16),离点取内部,即 9 和 15

大部分实际需求都是闭区间,所以离点 = 刚好越界的那个数,这么记最简单。

2.3 等价类 + 边界值,搭配使用效果更好

通常先用等价类划分出大类,再用边界值补充边界上的测试点

以"密码8-16位"为例:

测试数据覆盖的方法预期结果
7位密码边界值(离点)报错"长度不足"
8位密码边界值(上点)符合规则
12位密码等价类(内点)符合规则
16位密码边界值(上点)符合规则
17位密码边界值(离点)报错"长度超长"

5个用例,既覆盖了等价类,又覆盖了边界值,效率极高。

三、判定表法

除了等价类和边界值,还有一种方法叫判定表法,它适用于"多个条件之间有组合关系"的场景。

比如:用户注册时,同时满足"手机号格式正确 + 验证码正确 + 密码符合规则"才能成功。

每个条件都有"真/假"两种可能,组合起来就是 2ⁿ 种情况。判定表就是把这些组合列成表格,然后筛选出有效的测试点。

四、等价类 + 边界值 速查卡

这张表浓缩了全文最核心的内容,写用例时可以直接对照。

场景怎么做口诀
划分等价类有效类挑1个代表;无效类每个单独测"有效的测一个,无效的全测到"
确定上点就是边界值本身"边界上的点,一个不能少"
确定离点闭区间取外面,开区间取里面"闭测外,开测内"
确定内点范围内随便选1个"范围内,意思一下"
组合策略先用等价类筛大类,再用边界值补边角"等价类砍数量,边界值抓重点"

密码8-16位场景的快速测试点:

测试数据测什么
abc12345(8位)上点(最短边界)
abc123456789abcd(16位)上点(最长边界)
abc123(6位)离点(最短-1)
abc123456789abcde(17位)离点(最长+1)
abc1234567(10-12位左右)内点(中间值)
12345678(纯数字)无效等价类(违反规则)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询