4. 场景测试核心概念
场景分类这件事,说白了就是给测试场景「贴标签」。你想想看,一个ADAS系统要面对的场景成千上万,如果不分类,测试就成了无头苍蝇。我个人习惯从三个维度去切:功能、危险程度、复杂度。这三个维度就像三维坐标系,能把一个模糊的场景精确地定位到测试矩阵里。
4.1 基于功能分类:ACC、LKA、AEB 等
这是最直观的分类方式。按功能来分,就是把场景和具体的ADAS功能挂钩。比如,测试自适应巡航控制(ACC),你就得设计前车加速、前车减速、前车切入、目标丢失等场景。测试车道保持辅助(LKA),你就得考虑车道线清晰、车道线模糊、弯道曲率过大等场景。
我在项目中遇到过一个问题:团队把AEB的测试场景直接拿来测ACC,结果发现ACC在紧急制动场景下表现很差。原因很简单,AEB追求的是「刹停」,ACC追求的是「平顺跟车」。功能目标不同,场景设计自然不同。
下面这张表是我常用的功能-场景映射关系,你可以参考一下:
| 主测功能 | 典型场景 | 关键参数 |
|---|---|---|
| ACC(自适应巡航) | 前车定速巡航、前车减速、目标车切入 | 相对速度、距离、TTC |
| LKA(车道保持辅助) | 直道居中、弯道保持、车道线缺失 | 车道线曲率、横向偏移量 |
| AEB(自动紧急制动) | 静止目标、移动目标、行人横穿 | 碰撞时间TTC、相对速度、目标类型 |
| LCA(变道辅助) | 盲区有车、盲区无车、目标加速 | 相对速度差、并道时间 |
4.2 基于危险程度分类:正常、临界、危险
这个分类维度,说白了就是看场景有多「悬」。我习惯把危险程度分成三级:正常、临界、危险。为什么要这么分?因为不同危险等级的场景,测试的侧重点完全不同。
- 正常场景: 系统不触发任何报警或干预。比如高速上跟车距离足够大,ACC平稳工作。这类场景用来验证系统的「舒适性」和「无误报」。
- 临界场景: 系统处于即将触发报警或干预的边缘。比如前车减速,TTC刚好在预警阈值附近。这类场景最容易暴露问题,我称之为「灰色地带」。
- 危险场景: 系统必须触发报警或主动干预。比如前车急刹,TTC小于安全阈值。这类场景验证系统的「有效性」和「可靠性」。
我曾经吃过一个亏:某个项目只测了正常和危险场景,结果在临界场景下,系统频繁误报。用户投诉说「车子老是莫名其妙报警」。后来我补了临界场景的测试,发现是TTC计算在边界值附近有抖动。嗯,从那以后,临界场景成了我必测的项目。
4.3 基于场景复杂度分类
复杂度这个维度,我一般从三个角度去衡量:目标数量、道路结构、环境干扰。复杂度越高,系统的感知和决策压力越大。
我习惯把复杂度分成三级:
- 简单场景: 单一目标、直道、良好天气。比如一辆车在空旷的高速上行驶,前方有一辆慢车。这类场景是功能验证的基础。
- 中等复杂度场景: 多目标、弯道或匝道、弱光或小雨。比如城市快速路上,前方有三辆车,旁边车道有车准备切入。这类场景考验系统的「多目标跟踪」和「决策优先级」。
- 高复杂度场景: 密集交通流、复杂路口、强光或暴雨。比如晚高峰的十字路口,行人、自行车、汽车混行。这类场景是系统能力的「天花板测试」。
下面这张SVG图,是我自己总结的场景复杂度分类框架,你可以看看:
4.4 三种分类方法的组合应用
这三种分类方法不是孤立的。我习惯把它们组合起来,形成一个三维的测试矩阵。比如:
- ACC + 危险 + 简单: 前车急刹,直道,晴天。这是最基础的AEB测试场景。
- LKA + 临界 + 中等: 车道线模糊,弯道,小雨。这是LKA的边界测试场景。
- AEB + 正常 + 高复杂度: 行人横穿,十字路口,强光。这是AEB的误报测试场景。
你想想看,如果不做这种组合,你可能会漏掉很多「组合爆炸」带来的问题。我在一个项目中就遇到过:ACC在「临界+高复杂度」场景下,系统频繁退出。原因是在密集交通流中,ACC的传感器融合算法出现了目标ID切换,导致跟车目标丢失。这个场景如果只按功能分类,根本发现不了。
好了,场景分类的方法就讲到这里。记住,分类的目的是为了「精准定位」和「高效覆盖」。下次设计测试用例时,不妨先问问自己:这个场景属于哪个功能?危险程度如何?复杂度有多高?三个标签一贴,测试思路就清晰了。