3、用例设计:等价类划分、边界值分析、场景法、正交实验法
好,咱们直接进入正题。用例设计这块,说白了就是回答一个问题:测什么?怎么测?
我做了这么多年测试,见过太多人上来就闷头写用例。结果呢?要么漏测,要么重复。今天我把四种最核心的方法揉碎了讲给你听。你跟着我的思路走一遍,以后写用例心里就有谱了。
3.1 等价类划分——把无穷变成有限
先问个问题:一个输入框,允许输入1到100之间的整数。你要测多少个值?
理论上无限个。但实际工作中,我们不可能全测。等价类划分就是干这个的——把无限多的输入,分成几个有代表性的类别。
我个人的习惯是:先找有效等价类,再找无效等价类。拿上面的例子来说:
- 有效等价类:1到100之间的整数(比如50)
- 无效等价类:小于1的数、大于100的数、非整数、非数字字符
每个等价类里,我只需要挑一个典型值来测。为什么?因为同一个类里的值,程序处理逻辑是一样的。你测了50,就没必要再测51了——除非你怀疑边界有问题,那就要用下一种方法了。
3.2 边界值分析——Bug最喜欢躲的地方
等价类划分有个弱点:它不关心边界。而现实是,绝大多数Bug都藏在边界上。
我记得有一次测一个支付系统,金额限制是0.01到99999.99。等价类我测了100块,没问题。结果上线后,用户输入0.01就报错。为什么?因为开发写的是 amount > 0.01,而不是 amount >= 0.01。这就是边界没测透的代价。
边界值分析的核心原则很简单:
- 取最小值、最大值
- 取最小值-1、最大值+1(如果允许)
- 取最小值+1、最大值-1
还是那个1到100的例子,边界值就是:0、1、2、99、100、101。一共6个值,就能把边界覆盖得死死的。
3.3 场景法——从用户视角出发
前面两种方法,都是针对单个输入项的。但实际业务场景往往是多个步骤串联起来的。这时候就需要场景法了。
场景法的核心是业务流程。我一般先画一个基本流,再画几个备选流和异常流。
举个例子,一个登录流程:
- 基本流:输入正确账号密码 → 点击登录 → 进入首页
- 备选流1:密码错误 → 提示错误 → 重新输入 → 登录成功
- 备选流2:账号不存在 → 提示注册 → 点击注册 → 跳转注册页
- 异常流:网络中断 → 提示网络异常 → 重试 → 恢复后登录成功
你看,一个登录功能,用场景法就能覆盖到用户可能遇到的各种情况。我当年做电商项目时,就是用场景法发现了「下单后库存扣减失败」的严重Bug——基本流走通了,但并发场景下备选流没处理好。
3.4 正交实验法——用最少的用例覆盖最多的组合
最后这个,是处理多因素组合问题的利器。
假设一个搜索功能,有3个条件:关键词、分类、排序方式。每个条件有2个选项。全组合就是2×2×2=8种。如果条件增加到5个,每个有3个选项,那就是243种。你测得过来吗?
正交实验法就是帮你用最少的组合,覆盖所有因素的两两组合。说白了,它不保证覆盖所有全组合,但保证任意两个因素的所有组合都至少出现一次。
我常用的做法是:
- 列出所有因素和水平(每个因素的取值)
- 查正交表(比如L9(3^4)表示4个因素3个水平,只需要9个用例)
- 把因素和水平填入正交表
- 生成测试用例
举个例子,3个因素(A、B、C),每个2个水平(1和2),用L4(2^3)正交表:
| 用例编号 | A | B | C |
|---|---|---|---|
| 1 | 1 | 1 | 1 |
| 2 | 1 | 2 | 2 |
| 3 | 2 | 1 | 2 |
| 4 | 2 | 2 | 1 |
你看,4个用例就覆盖了所有两两组合。全组合要8个,省了一半。
3.5 四种方法的配合使用
你可能会问:这四种方法到底怎么选?
我的经验是:别单选,要混搭。
- 单个输入项:用等价类 + 边界值
- 业务流程:用场景法
- 多因素组合:用正交实验法
- 复杂功能:先用场景法拆流程,再对每个步骤用等价类+边界值,最后用正交法覆盖组合
说白了,没有万能的方法。你掌握这四种,就像工具箱里有了锤子、扳手、螺丝刀和电钻。用对了工具,活才能干得漂亮。
下面这张图,是我自己总结的用例设计方法选择逻辑,你可以参考一下:
嗯,这张图你看懂了吗?从上往下走,先判断是单个输入还是业务流程。单个的用等价类+边界值,流程的用场景法拆开。拆完之后,如果发现有多因素组合的情况,再套正交实验法来精简用例。最后所有用例汇总输出。
这套流程我用了好多年,基本覆盖了日常工作中90%以上的用例设计场景。你刚开始可能觉得麻烦,但用熟了之后,写用例的速度和覆盖率都会有明显提升。
可可精品资料库