4. 场景测试核心概念

场景分类这件事,说白了就是给测试场景「贴标签」。你想想看,一个ADAS系统要面对的场景成千上万,如果不分类,测试就成了无头苍蝇。我个人习惯从三个维度去切:功能、危险程度、复杂度。这三个维度就像三维坐标系,能把一个模糊的场景精确地定位到测试矩阵里。

4.1 基于功能分类:ACC、LKA、AEB 等

这是最直观的分类方式。按功能来分,就是把场景和具体的ADAS功能挂钩。比如,测试自适应巡航控制(ACC),你就得设计前车加速、前车减速、前车切入、目标丢失等场景。测试车道保持辅助(LKA),你就得考虑车道线清晰、车道线模糊、弯道曲率过大等场景。

我在项目中遇到过一个问题:团队把AEB的测试场景直接拿来测ACC,结果发现ACC在紧急制动场景下表现很差。原因很简单,AEB追求的是「刹停」,ACC追求的是「平顺跟车」。功能目标不同,场景设计自然不同。

功能分类的核心原则: 每个场景必须明确对应一个主测功能,同时记录可能影响的副功能。

下面这张表是我常用的功能-场景映射关系,你可以参考一下:

主测功能 典型场景 关键参数
ACC(自适应巡航) 前车定速巡航、前车减速、目标车切入 相对速度、距离、TTC
LKA(车道保持辅助) 直道居中、弯道保持、车道线缺失 车道线曲率、横向偏移量
AEB(自动紧急制动) 静止目标、移动目标、行人横穿 碰撞时间TTC、相对速度、目标类型
LCA(变道辅助) 盲区有车、盲区无车、目标加速 相对速度差、并道时间
我的小技巧: 设计场景时,我会给每个场景打上「主功能标签」和「副功能标签」。比如一个场景主测ACC,但同时也触发了AEB的预警逻辑,那这个场景就值得深挖。

4.2 基于危险程度分类:正常、临界、危险

这个分类维度,说白了就是看场景有多「悬」。我习惯把危险程度分成三级:正常、临界、危险。为什么要这么分?因为不同危险等级的场景,测试的侧重点完全不同。

  • 正常场景: 系统不触发任何报警或干预。比如高速上跟车距离足够大,ACC平稳工作。这类场景用来验证系统的「舒适性」和「无误报」。
  • 临界场景: 系统处于即将触发报警或干预的边缘。比如前车减速,TTC刚好在预警阈值附近。这类场景最容易暴露问题,我称之为「灰色地带」。
  • 危险场景: 系统必须触发报警或主动干预。比如前车急刹,TTC小于安全阈值。这类场景验证系统的「有效性」和「可靠性」。

我曾经吃过一个亏:某个项目只测了正常和危险场景,结果在临界场景下,系统频繁误报。用户投诉说「车子老是莫名其妙报警」。后来我补了临界场景的测试,发现是TTC计算在边界值附近有抖动。嗯,从那以后,临界场景成了我必测的项目。

注意: 危险程度分类不是绝对的。同一个场景,在不同车速、不同天气下,危险等级可能完全不同。比如晴天下的「前车减速」可能是正常场景,但雨天下的同一个场景可能就是危险场景。

4.3 基于场景复杂度分类

复杂度这个维度,我一般从三个角度去衡量:目标数量、道路结构、环境干扰。复杂度越高,系统的感知和决策压力越大。

我习惯把复杂度分成三级:

  1. 简单场景: 单一目标、直道、良好天气。比如一辆车在空旷的高速上行驶,前方有一辆慢车。这类场景是功能验证的基础。
  2. 中等复杂度场景: 多目标、弯道或匝道、弱光或小雨。比如城市快速路上,前方有三辆车,旁边车道有车准备切入。这类场景考验系统的「多目标跟踪」和「决策优先级」。
  3. 高复杂度场景: 密集交通流、复杂路口、强光或暴雨。比如晚高峰的十字路口,行人、自行车、汽车混行。这类场景是系统能力的「天花板测试」。

下面这张SVG图,是我自己总结的场景复杂度分类框架,你可以看看:

场景复杂度分类框架 场景复杂度分类框架 简单场景 目标数量:1个 道路结构:直道 环境条件:良好天气 示例:高速单目标跟车 中等复杂度 目标数量:2-3个 道路结构:弯道/匝道 环境条件:弱光/小雨 示例:多目标弯道跟车 高复杂度 目标数量:4个以上 道路结构:复杂路口 环境条件:强光/暴雨 示例:密集交通流路口 复杂度递增带来的测试挑战 • 简单场景:验证基础功能是否正常工作 • 中等复杂度:验证多目标跟踪和决策优先级 • 高复杂度:验证系统极限能力和失效模式 • 建议:从简单到复杂逐步递进,不要跳级
我的经验: 测试资源有限时,优先覆盖「中等复杂度」场景。为什么?因为简单场景太容易通过,高复杂度场景又太容易失败,只有中等复杂度场景最能暴露系统的「软肋」。

4.4 三种分类方法的组合应用

这三种分类方法不是孤立的。我习惯把它们组合起来,形成一个三维的测试矩阵。比如:

  • ACC + 危险 + 简单: 前车急刹,直道,晴天。这是最基础的AEB测试场景。
  • LKA + 临界 + 中等: 车道线模糊,弯道,小雨。这是LKA的边界测试场景。
  • AEB + 正常 + 高复杂度: 行人横穿,十字路口,强光。这是AEB的误报测试场景。

你想想看,如果不做这种组合,你可能会漏掉很多「组合爆炸」带来的问题。我在一个项目中就遇到过:ACC在「临界+高复杂度」场景下,系统频繁退出。原因是在密集交通流中,ACC的传感器融合算法出现了目标ID切换,导致跟车目标丢失。这个场景如果只按功能分类,根本发现不了。

避坑指南: 我曾经因为只用了功能分类,漏掉了「LKA+危险+高复杂度」这个组合。结果在高速弯道+暴雨+车道线模糊的场景下,LKA直接失效,车辆偏离了车道。后来我补了这个场景,发现是摄像头在低光照+高曲率下的检测置信度太低。所以,组合分类不是锦上添花,是必须做的。

好了,场景分类的方法就讲到这里。记住,分类的目的是为了「精准定位」和「高效覆盖」。下次设计测试用例时,不妨先问问自己:这个场景属于哪个功能?危险程度如何?复杂度有多高?三个标签一贴,测试思路就清晰了。