测试用例设计方法论:等价类与边界值实战

适用人群:软件测试工程师 / QA / 自动化测试工程师
前置条件:了解基本的测试流程概念
预计耗时:阅读 15 分钟


为什么需要测试用例设计方法

直接凭经验写测试用例容易出现两个问题:

  1. 覆盖不全:漏掉了边界场景
  2. 冗余过多:大量等价用例浪费测试时间

等价类和边界值是测试领域最基础、最实用的两种设计方法,能帮你系统化地提升用例质量。


1. 等价类划分

核心思想

将输入域划分为若干等价子集,每个子集中任意值的行为等价,只需从每个子集取一个代表值即可。

1.1 有效等价类

符合需求规范的输入集合。

例:一个输入框要求"用户年龄 1-100 岁",则 [1, 100] 内的任意整数都是有效等价类。

1.2 无效等价类

不符合需求规范的输入集合。

例:小于 1(如 0、-5)、大于 100(如 101、200)、非整数(如 "abc"、空值)。

1.3 实际案例:用户注册年龄验证

需求:用户注册时,年龄字段必须是 18-60 岁之间的整数。

等价类 类型 示例值
< 18 无效 0, 10, 17
18-60 有效 25, 40, 60
> 60 无效 61, 99, 200
非整数 无效 "abc", 3.14, -1.5
空值 无效 "" , null

测试用例(只需选代表值):

编号 输入 期望结果
TC01 25 通过
TC02 10 提示 "年龄须在18-60之间"
TC03 80 提示同上
TC04 "abc" 提示 "请输入有效数字"
TC05 "" 提示 "年龄不能为空"

2. 边界值分析

核心思想

缺陷往往出现在边界附近:刚好等于、刚好小于、刚好大于边界值。

2.1 边界值选取公式

对于范围 [min, max]:

取值 说明
min - 1 刚好小于下限
min 等于下限
min + 1 刚好大于下限
max - 1 刚好小于上限
max 等于上限
max + 1 刚好大于上限

2.2 实战案例:商品价格折扣

需求:订单金额 >= 100 元享受 9 折,>= 500 元享受 8 折。

边界分析表:

金额 预期折扣 说明
99 无折扣 刚好 < 100
100 9折 等于下限
101 9折 刚好 > 100
499 9折 刚好 < 500
500 8折 等于上限
501 8折 刚好 > 500

注意:500 同时满足两个规则,但业务上 8 折优先。建议在边界值基础上追加一个逻辑覆盖用例:金额=500 时确认实际折扣为 0.8 而非 0.9。

重点关注 99、100、499、500 这四个值,它们最容易出 Bug。

2.3 非数值边界

边界值不仅适用于数字。例如:

  • 字符串长度:最小长度/最大长度正负1
  • 文件大小:0KB 空文件、最大限制正负1KB
  • 列表/集合:空集合、单元素、最大容量正负1

原理相同,只是将"数值"替换为"度量维度"。


3. 两种方法结合使用

等价类和边界值不是二选一,而是组合使用:

  • 第一步:用等价类确定测试范围(保证覆盖)
  • 第二步:用边界值补充边界场景(保证精度)

综合案例:登录密码验证

需求:密码长度 6-20 位,必须包含字母和数字。

等价类分析:

类型 等价类 示例
有效 6-20位含字母和数字 abc123, Passw0rd
无效 纯数字 12345678
无效 纯字母 abcdefgh
无效 含特殊字符 pass!@#123

边界值分析:

长度 预期
5 a1b2c 太短
6 a1b2c3 刚好通过
7 a1b2c3d 通过
19 ... 通过
20 ... 刚好通过
21 ... 太长

最终用例数:等价类 5 个 + 边界值 6 个 = 11 个核心用例即可覆盖。


4. 常见误区

误区 纠正
"只要测有效值就行" 无效等价类往往比有效类更容易出 Bug
"边界值就是 ±1" 还要考虑数据类型边界(int 最大值、空字符串)
"每种组合都要测" 等价类就是要减少不必要的组合测试

总结

方法 核心 口诀
等价类 以一代多 "同类的,测一个就行"
边界值 卡边界 "Bug 都藏在边界上"

设计路径:等价类定范围 → 边界值补精度 → 用最小用例数覆盖最大风险。


更新日期:2026-07-05

posted @ 2026-07-08 09:37  北小北  阅读(14)  评论(0)    收藏  举报