4. 测试用例设计方法:等价类划分、边界值分析、场景法、正交实验法在车载领域的应用
说实话,很多刚入行的测试工程师问我:“车载测试到底用什么方法设计用例?”我的回答很简单——不是方法不够用,而是你用不对地方。今天我就把这四种最核心的方法,结合我在项目里踩过的坑,一次性讲透。
核心观点:车载测试用例设计,本质是“有限资源下的风险覆盖”。等价类帮你砍掉冗余,边界值抓住临界点,场景法还原真实路况,正交实验法解决多参数组合爆炸。四者缺一不可。
4.1 等价类划分:别在无效数据上浪费时间
等价类划分,说白了就是把输入数据分成几类,每类只测一个代表值。为什么?因为同一类里的数据,程序处理逻辑是一样的。
我在做空调温度控制测试时遇到过这种情况:温度范围是 -20°C 到 60°C,步长 0.5°C。如果每个值都测,光温度就要测 161 个点。用等价类划分,我只需要测 3 个值:-20°C(有效下限)、20°C(有效中间)、60°C(有效上限)。
| 等价类类型 | 车载典型场景 | 示例 | 用例数 |
|---|---|---|---|
| 有效等价类 | 车速输入范围 | 0~250 km/h | 1个代表值 |
| 无效等价类 | 超出范围 | -1 km/h, 251 km/h | 2个代表值 |
| 边界等价类 | 临界值附近 | 0, 250 | 2个代表值 |
我的经验:等价类划分最怕“漏类”。比如车载导航的地址输入,你以为只有“有效地址”和“无效地址”两类,但实际还有“模糊地址”、“历史地址”、“收藏地址”等子类。我建议先画输入域树,再逐层划分。
4.2 边界值分析:Bug 最喜欢藏在边界上
为什么边界值这么重要?因为开发写代码时,最容易在 if (x >= 0 && x <= 100) 这种边界条件上犯错。少写一个等号,或者把 < 写成 <=,都是家常便饭。
我记得有一次测试车窗防夹功能。车窗位置传感器返回 0~1000 的数值,0 代表完全关闭,1000 代表完全打开。防夹功能在位置 50~950 之间激活。我测了边界值:
- 上点:50, 950(刚好激活)
- 离点:49, 951(刚好不激活)
- 内点:500(中间值)
结果呢?49 这个点,防夹功能竟然误触发了。开发一看代码,原来是 if (position >= 50) 写成了 if (position > 49)。你看,一个字符的差别,差点让车窗在关闭时莫名其妙弹回去。
避坑指南:我曾经在测试电池 SOC(荷电状态)时,只测了 0%、50%、100% 三个点。结果 1% 和 99% 这两个边界点,BMS 的均衡策略出了问题。记住:边界值分析一定要覆盖“上点、离点、内点”三个维度,尤其是离点,最容易漏。
4.3 场景法:别让测试脱离真实路况
场景法,说白了就是模拟用户真实操作流程。你想想看,用户不会像测试用例那样一个个功能单独测。他们是一套操作接着一套操作。
我参与过一个自动泊车系统的项目。单功能测试都过了,但一上路就出问题。为什么?因为场景没覆盖到。比如:
- 正常场景:用户挂 R 挡 → 系统启动泊车 → 完成泊车 → 挂 P 挡
- 异常场景:泊车过程中,用户突然踩油门 → 系统应中断泊车 → 交还控制权
- 干扰场景:泊车过程中,有行人突然闯入 → 系统应紧急制动 → 行人离开后恢复
- 边界场景:车位比车身只大 20cm → 系统能否成功泊入
结果发现,异常场景 2 中,系统中断泊车后,方向盘竟然没有回正。这就是场景法的价值——把功能放在真实流程里验证。
场景法设计步骤:
- 列出用户所有可能的操作路径(正常、异常、干扰、边界)
- 为每个路径画出流程图(开始→操作→判断→结束)
- 每个分支至少设计一个用例
- 重点覆盖“异常中断”和“并发操作”
4.4 正交实验法:多参数组合的救星
正交实验法,解决的是“参数太多,组合爆炸”的问题。比如车载语音识别系统,影响因素可能有:
- 语速:慢、中、快(3 种)
- 音量:低、中、高(3 种)
- 背景噪声:安静、城市、高速(3 种)
- 方言:普通话、粤语、四川话(3 种)
全组合需要 3⁴ = 81 个用例。用正交表 L9(3⁴),只需要 9 个用例。怎么做到的?正交表保证任意两个因素的组合都出现一次,这样就能用最少用例覆盖主要交互效应。
| 用例 | 语速 | 音量 | 噪声 | 方言 |
|---|---|---|---|---|
| 1 | 慢 | 低 | 安静 | 普通话 |
| 2 | 慢 | 中 | 城市 | 粤语 |
| 3 | 慢 | 高 | 高速 | 四川话 |
| 4 | 中 | 低 | 城市 | 四川话 |
| 5 | 中 | 中 | 高速 | 普通话 |
| 6 | 中 | 高 | 安静 | 粤语 |
| 7 | 快 | 低 | 高速 | 粤语 |
| 8 | 快 | 中 | 安静 | 四川话 |
| 9 | 快 | 高 | 城市 | 普通话 |
我的建议:正交实验法不是万能的。如果因素之间有强交互(比如“语速快+噪声大”会显著影响识别率),正交表可能漏掉。我一般先用正交表做“初筛”,发现可疑组合后再单独加测。说白了,正交法是“减量不减质”的工具,但不能替代领域知识。
4.5 四种方法的组合策略
在实际项目中,我不会只用一种方法。我的组合策略是这样的:
- 先画场景:用场景法梳理用户操作流程,确定测试范围
- 再分等价类:对每个输入参数做等价类划分,减少冗余
- 然后加边界值:对每个等价类的边界点单独设计用例
- 最后用正交表:对多参数组合场景,用正交表优化用例数量
举个例子,测试自适应巡航(ACC)系统:
- 场景法:前车减速、前车加速、前车切入、前车切出、目标丢失
- 等价类:车速(0~150 km/h)、跟车距离(近/中/远)、加速度(-3~3 m/s²)
- 边界值:车速 0、150;跟车距离最小值、最大值;加速度 -3、3
- 正交表:车速(3级)× 跟车距离(3级)× 加速度(3级)= L9(3³) 只需 9 个用例
这样组合下来,我只需要 20~30 个用例,就能覆盖 80% 以上的风险。剩下的 20%,靠探索性测试和路试去补。
重要提醒:方法只是工具,不要为了用方法而用方法。我见过有人把等价类划分做到极致,结果漏掉了“系统重启后设置丢失”这种场景。记住:测试的最终目标是发现缺陷,不是凑用例数量。