3、测试用例设计方法论:等价类划分、边界值分析、正交实验法、场景法
做基带芯片系统级测试这么多年,我最大的体会是:测试用例不是拍脑袋想出来的。你想想看,一个基带芯片要处理多少种信号组合?多少种协议状态?多少种异常场景?如果靠直觉去点,漏掉一个边界条件,流片回来可能就是几百万的损失。
所以,这一章我跟你聊聊测试用例设计的四个核心方法。说白了,就是教你用最少的用例,覆盖最多的风险点。
3.1 等价类划分:把无穷变成有限
等价类划分,核心思想就一句话:把输入域分成若干区间,每个区间里选一个代表就够了。
举个例子。基带芯片的AGC(自动增益控制)模块,输入信号强度范围是 -120dBm 到 0dBm。你不可能每个0.1dB都测一遍,对吧?
我一般这么分:
- 有效等价类:-120dBm ~ 0dBm(正常工作的范围)
- 无效等价类:< -120dBm(信号太弱,芯片应该上报失锁)
- 无效等价类:> 0dBm(信号过强,芯片应该启动限幅保护)
每个等价类里,我选一个典型值去测。比如 -80dBm、-130dBm、+5dBm。这样3个用例,就覆盖了所有可能的情况。
3.2 边界值分析:Bug最喜欢藏在边界上
等价类划分的兄弟方法,就是边界值分析。为什么?因为程序里的判断逻辑,比如 if (x >= -120 && x <= 0),最容易在边界上出错。
我个人习惯,每个边界测三个点:
- 边界值本身:比如 -120dBm、0dBm
- 边界值-1:比如 -121dBm、-1dBm
- 边界值+1:比如 -119dBm、1dBm
你看,一个边界就衍生出3个用例。但别嫌多,我跟你讲个真实案例。
if (snr > -5),漏掉了等于的情况。这就是典型的边界值没覆盖全。
所以,边界值分析一定要把「等于」「小于」「大于」都测到。尤其是 >= 和 <= 这种带等号的逻辑,最容易出问题。
3.3 正交实验法:用最少的组合覆盖最多的场景
基带芯片的测试,经常遇到多因素组合的场景。比如:
- 频段:Band 1, Band 3, Band 8
- 带宽:5MHz, 10MHz, 20MHz
- 调制方式:QPSK, 16QAM, 64QAM
- MIMO层数:1层, 2层, 4层
如果全组合测试,3×3×3×3 = 81个用例。太多了,测不完。这时候正交实验法就派上用场了。
正交实验法的核心是:用正交表来安排实验,保证任意两个因素的组合都出现一次。这样用例数会大幅减少,但覆盖度依然很高。
比如上面这个例子,用 L9(3^4) 正交表,只需要9个用例:
| 用例编号 | 频段 | 带宽 | 调制方式 | MIMO层数 |
|---|---|---|---|---|
| 1 | Band 1 | 5MHz | QPSK | 1层 |
| 2 | Band 1 | 10MHz | 16QAM | 2层 |
| 3 | Band 1 | 20MHz | 64QAM | 4层 |
| 4 | Band 3 | 5MHz | 16QAM | 4层 |
| 5 | Band 3 | 10MHz | 64QAM | 1层 |
| 6 | Band 3 | 20MHz | QPSK | 2层 |
| 7 | Band 8 | 5MHz | 64QAM | 2层 |
| 8 | Band 8 | 10MHz | QPSK | 4层 |
| 9 | Band 8 | 20MHz | 16QAM | 1层 |
你看,9个用例就覆盖了所有两两组合。虽然没测全组合,但实际经验告诉我,90%以上的Bug都是两两交互触发的。三因素以上的交互,概率极低。
3.4 场景法:从用户视角出发
前面三种方法,都是从「输入」角度设计的。但基带芯片最终是要跑场景的。你想想看,用户不会关心你测了多少个边界值,他只关心「打电话会不会断」「上网快不快」。所以,场景法必不可少。
场景法的核心是:模拟真实的使用流程。我一般分两类:
- 基本流:正常流程,比如开机搜网 -> 驻留 -> 发起呼叫 -> 通话 -> 挂断
- 备选流:异常流程,比如通话中突然进入隧道(信号丢失)、切换失败、RRC重建等
举个例子,VoLTE通话测试的场景:
场景1(基本流):
1. UE开机,搜到LTE小区
2. 发起IMS注册
3. 发起VoLTE呼叫
4. 通话建立,双向语音正常
5. 挂断,释放资源
场景2(备选流-切换):
1. 通话中,UE从小区A移动到小区B
2. 触发S1切换
3. 切换完成后,语音是否中断?
4. 检查切换时延 < 50ms
场景3(备选流-异常):
1. 通话中,突然进入无信号区域
2. UE启动T310定时器
3. 定时器超时,触发RRC重建
4. 重建成功后,语音是否恢复?
我个人习惯,每个功能模块至少设计3~5个场景:1个基本流,2~3个备选流,1个异常流。这样既能验证功能,又能覆盖边界。
3.5 四种方法的组合使用
你可能会问:这四种方法,到底用哪个?
我的经验是:不要孤立使用,要组合。
- 先用场景法:画出用户的使用流程,确定要测哪些功能点
- 再用等价类划分:对每个功能点的输入参数,划分有效/无效等价类
- 接着用边界值分析:对每个等价类的边界,补充边界用例
- 最后用正交实验法:对多参数组合的场景,用正交表压缩用例数
举个例子,测基带芯片的「随机接入过程」:
- 场景法:基本流(正常PRACH发送+收到RAR)、备选流(PRACH冲突、RAR超时)
- 等价类划分:PRACH功率(-120dBm ~ 0dBm)、前导码索引(0~63)、RA-RNTI(0~60)
- 边界值分析:PRACH功率测 -120、-119、-121;前导码索引测 0、1、63、64
- 正交实验法:如果同时测频点、PRACH配置索引、前导码格式,用正交表组合
这样一套组合拳下来,用例数可控,覆盖度也高。我这些年做基带测试,基本都按这个套路来,没出过大问题。