Day 3 —— 测试用例设计方法(一):等价类划分 + 边界值

等价类划分 + 边界值

这两招是输入框、表单校验类测试的"基本功",几乎每场面试都问,实际工作天天用。

一、为什么需要用例设计方法

一个注册页面,用户名如果盲目测,输入什么算什么,根本测不完。用例设计方法就是帮你在"无穷多的输入"里,挑出最有价值的少数几个——这就是方法的价值。

二、等价类划分法

1. 核心思想

把所有输入划分成若干"等价类",同一类里的任意一个值,效果相同。所以我们每类只挑一个代表测就行。

  • 有效等价类:合法的、符合规则的输入 → 测它能不能正常处理
  • 无效等价类:非法的、不符合规则的输入 → 测它能不能正确拦截

口诀:有效测通过,无效测拦截。

2. 举例:用户名输入框

需求:"用户名 6-18 位,只能包含字母、数字、下划线。"

先划分等价类:

类型等价类编号
有效 6-18 位字母数字下划线 ①
无效 长度 < 6 ②
无效 长度 > 18 ③
无效 为空 ④
无效 含非法字符(如 @、中文) ⑤

再设计用例(每类挑一个代表):

用例数据预期
① 有效 abc_123 校验通过
② 太短 abc 提示"长度不足"
③ 太长 abcdefghijklmnopqrs(19 位) 提示"长度超限"
④ 为空 空 提示"不能为空"
⑤ 非法字符 abc@123 提示"格式错误"

5 条用例覆盖了所有情况,这就是等价类的威力。

3. 划分步骤(记住三步)

  1. 读需求,找出输入项和规则
  2. 按规则划分有效等价类(通常 1 个)和无效等价类(可能有多个)
  3. 每个等价类挑一个代表值写用例

口诀:找输入、分有效无效、挑代表。

三、边界值分析法

1. 核心思想

大量 Bug 都藏在边界上(比如 <= 写成了 <)。所以除了取中间值,要重点测边界及其两侧。

边界取法:对于范围 a ≤ x ≤ b,取:a-1、a、a+1、b-1、b、b+1(上点、离点、内点)。

  • 上点:正好等于边界的值(a、b)
  • 离点:刚越过边界的值(a-1、b+1)
  • 内点:范围内的普通值

口诀:上点离点加内点,边界两侧都要点。

2. 举例(续用户名 6-18 位)

点值长度预期
下边界下方 abcde 5 失败
下边界上点 abcdef 6 通过
下边界内点 abcdefg 7 通过
上边界内点 17 位 17 通过
上边界上点 18 位 18 通过
上边界上方 19 位 19 失败

重点:6、5、18、19 这四个值是必测的——多一位少一位,最容易出 Bug。

3. 常见边界场景(背下来)

场景边界值
输入长度 6-18 5、6、18、19
年龄 1-120 0、1、120、121
金额 0.01-99999.99 0、0.01、99999.99、100000
列表最多 100 条 99、100、101
文件最大 10MB 9.99MB、10MB、10.01MB

 

四、两招一起用(实战最常用)

等价类负责"划范围",边界值负责"抠边角"。实际工作中先等价类、再对"连续区间"类的输入补边界值。

举例:一个金额输入框,要求 0.01 ≤ 金额 ≤ 99999.99:

方法用例数据说明
等价类-有效 100 中间正常值
等价类-无效 -1 负数
等价类-无效 abc 非数字
边界值 0 下边界外
边界值 0.01 下边界上点
边界值 0.02 下边界内点
边界值 99999.98 上边界内点
边界值 99999.99 上边界上点
边界值 100000 上边界外

口诀:等价划分管大面,边界值抓边沿线;两招搭配用,用例少又全。

五、完整示例:密码框

需求:"密码 8-20 位,必须同时包含字母和数字。"

第一步:划等价类

类型等价类
有效 8-20 位且字母+数字组合
无效 长度 < 8
无效 长度 > 20
无效 只有字母
无效 只有数字
无效 含特殊字符(如果需求不允许)
无效 为空

第二步:每类取代表 + 边界补点

用例数据预期
有效 abc12345 通过
太短 abc123(6 位) 提示长度不足
太长 21 位字母数字 提示超限
纯字母 abcdefgh 提示必须含数字
纯数字 12345678 提示必须含字母
边界-7 位 abcd123 失败
边界-8 位 abcd1234 通过
边界-20 位 恰好 20 位 通过
边界-21 位 恰好 21 位 失败

六、这两个方法的适用场景

方法最适合不适合
等价类 输入框、表单校验、有明确取值范围的字段 流程、状态类场景
边界值 长度、数值范围、数量限制、时间区间 无序、无范围的功能

注意:等价类和边界值只解决"输入合法性",流程怎么走、多步骤怎么串,得靠场景法(Day 4 讲)。

七、新手常见错误

  • ❌ 只测有效值,不测无效值 → 拦截逻辑没测到
  • ❌ 边界只取"9 和 10",漏掉"11"这种溢出点
  • ❌ 一个用例塞多个输入错误 → 出问题时不知道是哪个触发的
  • ❌ 把"用例多"当成"覆盖全" → 冗余用例不增加价值,反而浪费时间

原则:单条用例尽量只验证一个变量,出问题时定位最快。


📋 小结表(Day 3)

主题核心要点
等价类思想 分有效/无效,每类取一个代表
等价类步骤 找输入 → 分有效无效 → 挑代表
边界值取法 上点、离点、内点(a-1、a、a+1、b-1、b、b+1)
重点边界 长度、数量、金额、时间的临界值
搭配使用 等价类划大面,边界值抠边角
用例原则 一条用例只验一个变量

🔑 口诀

有效测通过,无效测拦截;找输入分两类,每类挑一个;上点离点加内点,边界两侧都要点;等价划大面,边界抓边线,用例少又全。


 

✍️ 练习题(Day 3)

  1. 等价类划分分哪有效等价类和无效等价类?它们各自的作用是什么?
  2. 需求:"手机号 11 位数字"。请划分等价类,并给出至少 4 条用例(含数据 + 预期)。
  3. 需求:"数量输入 1-100 个"。请用边界值法列出必测的边界值,并说明每个值预期通过还是失败。
  4. 判断题:用例数量越多,测试越充分。(对/错?为什么)
  5. 简答:等价类和边界值有什么区别?实际工作中为什么要两个一起用?

参考答案要点(答完可自查):

  • 第 1 题:有效测正常通过路径,无效测系统拦截/报错能力。
  • 第 3 题:0、1、2、99、100、101 —— 0 和 101 失败,1/2/99/100 通过。
  • 第 4 题:错。覆盖的是等价类,不是用例条数;冗余用例不增加价值。

 

posted on 2026-10-20 11:02  WapN  阅读(23)  评论(0)    收藏  举报

导航