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个值,就能把边界覆盖得死死的。

注意:边界值分析一定要和等价类配合使用。光用边界值,你会漏掉中间区域的异常情况。光用等价类,边界上的Bug你抓不住。

3.3 场景法——从用户视角出发

前面两种方法,都是针对单个输入项的。但实际业务场景往往是多个步骤串联起来的。这时候就需要场景法了。

场景法的核心是业务流程。我一般先画一个基本流,再画几个备选流和异常流。

举个例子,一个登录流程:

  • 基本流:输入正确账号密码 → 点击登录 → 进入首页
  • 备选流1:密码错误 → 提示错误 → 重新输入 → 登录成功
  • 备选流2:账号不存在 → 提示注册 → 点击注册 → 跳转注册页
  • 异常流:网络中断 → 提示网络异常 → 重试 → 恢复后登录成功

你看,一个登录功能,用场景法就能覆盖到用户可能遇到的各种情况。我当年做电商项目时,就是用场景法发现了「下单后库存扣减失败」的严重Bug——基本流走通了,但并发场景下备选流没处理好。

核心思想:场景法不是测功能点,而是测用户旅程。你把自己当成用户,一步步走下来,哪里会卡住,哪里会走岔路,这些就是你的测试场景。

3.4 正交实验法——用最少的用例覆盖最多的组合

最后这个,是处理多因素组合问题的利器。

假设一个搜索功能,有3个条件:关键词、分类、排序方式。每个条件有2个选项。全组合就是2×2×2=8种。如果条件增加到5个,每个有3个选项,那就是243种。你测得过来吗?

正交实验法就是帮你用最少的组合,覆盖所有因素的两两组合。说白了,它不保证覆盖所有全组合,但保证任意两个因素的所有组合都至少出现一次。

我常用的做法是:

  1. 列出所有因素和水平(每个因素的取值)
  2. 查正交表(比如L9(3^4)表示4个因素3个水平,只需要9个用例)
  3. 把因素和水平填入正交表
  4. 生成测试用例

举个例子,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%以上的用例设计场景。你刚开始可能觉得麻烦,但用熟了之后,写用例的速度和覆盖率都会有明显提升。

可可精品资料库