3、测试用例设计:等价类划分、边界值分析、正交实验法、场景法在量产中的应用

量产测试和研发测试,最大的区别在哪?

我个人觉得,研发测试追求的是「覆盖率」,恨不得把每行代码、每个逻辑都跑一遍。但量产测试不一样,它追求的是「效率」和「成本」。你想想看,产线上每秒钟都在出板子,测试时间多一秒,成本就多一分。所以,怎么用最少的测试用例,发现最多的缺陷?这就是我们今天要聊的核心。

3.1 等价类划分:别做重复劳动

等价类划分,说白了就是把输入数据分成几个「类」。同一类里的数据,程序处理方式是一样的。你测一个,就等于测了一堆。

核心思想: 从每个等价类中选一个代表值进行测试。

举个例子,一个电压检测程序,输入范围是 0V ~ 10V。我们可以分成三类:

  • 有效等价类: 0V ~ 10V 之间的值(比如 5V)
  • 无效等价类(上): 大于 10V 的值(比如 12V)
  • 无效等价类(下): 小于 0V 的值(比如 -1V)

我在项目中遇到过,有人把 0V、1V、2V……一直到 10V 全测了一遍。其实没必要,选一个 5V 就够了。剩下的时间,不如去测测边界值。

我的小技巧: 写测试用例时,先列等价类,再挑代表值。这样能保证「不重不漏」。

3.2 边界值分析:Bug 最爱扎堆的地方

经验告诉我,程序出问题,十有八九在边界上。为什么?因为开发写代码时,最容易搞混的就是「大于」和「大于等于」。

边界值分析的原则: 取边界值、边界值减一、边界值加一。

还是那个 0V ~ 10V 的例子,我们需要测这些点:

  • 上点:0 和 10
  • 离点:-1 和 11
  • 内点:5(其实等价类已经测过了)

嗯,这里要注意:边界值分析不是独立的,它和等价类划分是黄金搭档。等价类帮你划范围,边界值帮你找边界上的坑。

避坑指南: 我曾经吃过一次亏,只测了边界值 0 和 10,没测 -1 和 11。结果量产时,有一批板子输入电压稍微超了 0.1V,程序直接死机。从那以后,我每次都会把「离点」加上。

3.3 正交实验法:用最少的组合,覆盖最多的场景

量产测试中,经常遇到多个参数组合的情况。比如一个电源模块,有输入电压、负载电流、温度三个因素,每个因素有 3 个水平。如果全组合测试,需要 3×3×3 = 27 个用例。产线哪受得了?

正交实验法就是干这个的。它用一张「正交表」,用少量的组合,覆盖两两之间的所有搭配。

举个例子:

因素 水平 1 水平 2 水平 3
输入电压 (V) 5 12 24
负载电流 (A) 1 2 3
温度 (°C) -20 25 85

用 L9(3^3) 正交表,只需要 9 个用例:

用例 电压 电流 温度
151-20
25225
35385
412125
512285
6123-20
724185
8242-20
924325

你看,27 个用例压缩到 9 个,效率提升了 3 倍。而且两两组合都覆盖到了,大部分缺陷都能揪出来。

核心要点: 正交实验法不是万能的,它只保证「两两覆盖」。如果怀疑有三因素交互的 Bug,还得靠场景法。

3.4 场景法:模拟用户真实操作

前面几种方法,都是针对「输入」的。但量产测试中,很多问题出在「流程」上。比如上电顺序、按键操作、状态切换……这些用等价类和边界值都测不到。

场景法,就是模拟用户真实的使用流程。我一般会画一个「状态迁移图」,然后沿着每条路径走一遍。

举个例子: 一个带按键的电源模块,有四个状态:待机、启动、运行、故障。

状态迁移:
待机 -> 启动 (按下按键)
启动 -> 运行 (电压稳定)
运行 -> 故障 (过流)
故障 -> 待机 (断电重启)
运行 -> 待机 (长按按键)

我们需要测试的「场景」包括:

  • 基本流: 待机 -> 启动 -> 运行 -> 待机
  • 备选流: 待机 -> 启动 -> 运行 -> 故障 -> 待机
  • 异常流: 在启动过程中断电、在运行中多次按键等

我习惯把场景法和正交实验法结合起来用。先用场景法画出主流程,再用正交法补充参数组合。这样既保证了流程正确,又覆盖了参数边界。

我的经验: 场景法特别适合测「时序」相关的 Bug。比如上电时,先给电压还是先给信号?顺序错了,板子就可能不工作。

3.5 四种方法的综合运用

在实际量产测试中,我不会只用一种方法。我的套路是这样的:

  1. 先用场景法 画出核心流程,确保主路径和异常路径都覆盖到。
  2. 再用等价类划分 把每个步骤的输入参数分类。
  3. 然后用边界值分析 补充边界上的测试点。
  4. 最后用正交实验法 压缩组合数量,提升测试效率。

这四步走下来,测试用例的质量和效率都能兼顾。说白了,就是「该测的一个不少,不该测的一个不多」。

注意: 正交实验法虽然高效,但不要滥用。如果某个参数组合历史上出过问题,那就单独加一个用例,别省。

3.6 知识体系总览

下面这张图,是我自己总结的四种方法在量产测试中的定位和关系。你可以把它当作一个快速参考。

量产测试用例设计方法体系 量产测试用例设计 等价类划分 减少重复测试 边界值分析 聚焦边界缺陷 正交实验法 压缩组合数量 场景法 模拟真实流程 实战组合策略 场景法画流程 → 等价类划分参数 → 边界值补边界 → 正交法压组合 目标:用最少的用例,发现最多的缺陷

好了,这四种方法就讲完了。我个人觉得,量产测试的精髓不在于「会多少种方法」,而在于「知道什么时候用什么方法」。你想想看,如果每个项目都能把这四步走一遍,产线上的「意外」至少能减少一半。

专注资料整理