测试用例设计方法论:等价类与边界值实战
适用人群:软件测试工程师 / QA / 自动化测试工程师
前置条件:了解基本的测试流程概念
预计耗时:阅读 15 分钟
为什么需要测试用例设计方法
直接凭经验写测试用例容易出现两个问题:
- 覆盖不全:漏掉了边界场景
- 冗余过多:大量等价用例浪费测试时间
等价类和边界值是测试领域最基础、最实用的两种设计方法,能帮你系统化地提升用例质量。
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
作者:北小北
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。

浙公网安备 33010602011771号