3. 场景与用例概念:测试场景定义、测试用例定义、场景与用例的关系、场景要素分析

这一章,我们来聊聊ADAS测试里最基础、也最容易搞混的两个概念——测试场景和测试用例。

我见过不少刚入行的工程师,一上来就急着写用例,结果写出来的东西要么跑不通,要么覆盖不全。为什么?说白了,就是没把场景想清楚。

你想想看,场景是“故事背景”,用例是“具体剧本”。没有背景,剧本就是空中楼阁。今天我们就把这个关系彻底理清。

3.1 测试场景定义

什么是测试场景?我的理解很简单:测试场景是车辆在真实世界中可能遇到的一段连续交通环境与自车行为的快照。

它描述的是“在什么路上、什么天气、什么交通状况下,自车在做什么”。

测试场景 = 道路 + 交通 + 环境 + 自车行为

这四个要素缺一不可。少一个,场景就不完整,测试也就失去了意义。

举个例子:

  • 不完整的描述:“高速公路上前车刹车”——这只是一个片段,没有说清楚天气、没有说清楚自车速度。
  • 完整的场景:“晴天、干燥路面、双向四车道高速公路、自车以120km/h巡航、前方100米处目标车从80km/h急减速至20km/h”——这才是一个可执行的测试场景。

我个人习惯把场景分为三个层级:

层级 名称 说明 例子
L1 功能场景 用自然语言描述的抽象场景 “高速跟车时前车切入”
L2 逻辑场景 用参数范围描述的场景 “自车速度80~120km/h,目标车速度60~100km/h,TTC 2~5s”
L3 具体场景 所有参数取固定值的场景 “自车100km/h,目标车80km/h,TTC 3s”

我在项目中遇到过一个问题:团队里有人写场景只写“前车急刹”,结果测试工程师不知道用什么车速、什么距离去测。后来我们统一要求,所有场景必须至少达到L2逻辑场景的粒度,才允许进入用例设计阶段。这个习惯,建议你也养成。

3.2 测试用例定义

测试用例,是在特定场景下,对被测系统施加的输入、操作步骤、预期结果和通过准则的完整描述。

场景是“环境”,用例是“动作+验证”。

我的经验公式:

测试用例 = 测试场景 + 输入激励 + 预期结果 + 通过/失败判据

一个标准的ADAS测试用例,通常包含以下字段:

  • 用例ID:唯一标识,比如“ACC-001”
  • 关联场景:指向哪个具体场景
  • 前置条件:车辆状态、系统状态、环境条件
  • 测试步骤:自车和目标车的具体动作序列
  • 预期结果:系统应该有什么响应
  • 通过判据:量化指标,比如“减速度不超过3m/s²”
  • 测试数据:记录哪些信号、采样频率等

举个例子,还是刚才那个高速前车急减速的场景:

用例ID: ACC-002-急减速
关联场景: 高速前车急减速(自车120km/h,前车80→20km/h,TTC 3s)
前置条件:
  - ACC已激活,设定速度120km/h
  - 跟车间距设为“中”
  - 天气晴朗,路面干燥
测试步骤:
  1. 自车以120km/h稳定巡航
  2. 前车以-4m/s²减速度从80km/h减速至20km/h
  3. 保持前车减速状态5s
预期结果:
  - ACC在2s内识别到前车减速
  - 自车自动减速,与前车保持安全距离
  - 减速度不超过舒适阈值(3m/s²)
通过判据:
  - 最小TTC > 1.5s
  - 自车减速度 ≤ 3m/s²
  - 无FCW误报警

3.3 场景与用例的关系

很多人问我:“场景和用例到底有什么区别?能不能混着用?”

我的回答是:场景是“舞台”,用例是“剧本”。

  • 场景:描述“在哪里、什么条件、谁在场”。它是静态的、客观的。
  • 用例:描述“怎么操作、期望什么结果”。它是动态的、带验证的。

一个场景可以衍生出多个用例。比如“高速前车急减速”这个场景,我可以设计:

  1. 用例A:自车ACC开启,前车急减速,验证跟车功能
  2. 用例B:自车ACC关闭,前车急减速,验证FCW报警
  3. 用例C:自车ACC开启但跟车间距设为“近”,前车急减速,验证极限工况

你看,同一个场景,不同的操作和验证目标,就变成了不同的用例。

避坑指南:

我曾经见过一个项目,测试团队把场景和用例混在一起管理,结果场景库里有3000条“用例”,但真正能复现的不到一半。为什么?因为很多“用例”只写了操作步骤,没有写清楚场景条件,换个测试场地就跑不通了。

所以我的建议是:场景库和用例库分开管理。场景库负责描述“世界是什么样的”,用例库负责描述“我们要怎么测”。两者通过场景ID关联。

3.4 场景要素分析

前面说了,场景由四个要素组成。我们一个一个拆开来看。

3.4.1 道路要素

道路是场景的“骨架”。没有道路,其他要素都无从谈起。

道路要素包括:

  • 道路类型:高速公路、城市道路、乡村道路、匝道、隧道等
  • 车道结构:车道数、车道宽度、是否有中央隔离带、路肩
  • 道路几何:直道、弯道(曲率半径)、坡度、超高
  • 路面条件:干燥、湿滑、积雪、结冰、颠簸
  • 标志标线:车道线类型(实线/虚线)、限速标志、指示牌

嗯,这里要注意:弯道曲率是很多ADAS功能的“隐形杀手”。我遇到过一台车,在直道上ACC表现完美,一进弯道就丢失目标。后来一查,是雷达的视场角在弯道里覆盖不到前车。所以,道路几何一定要在场景里明确。

3.4.2 交通要素

交通要素描述的是“路上还有谁”。

  • 目标车数量:单车、多车、密集车流
  • 目标车类型:轿车、SUV、卡车、摩托车、自行车、行人
  • 目标车行为:匀速、加速、减速、切入、切出、静止、倒车
  • 相对位置:本车道前车、相邻车道、对向车道、交叉路口
  • 相对速度:相对车速、TTC(碰撞时间)、THW(车头时距)

我建议你在设计场景时,至少定义清楚目标车的初始位置、速度和意图。比如“目标车在自车前方50m,以80km/h匀速行驶,5s后以3m/s²减速并向右变道”——这就很清晰了。

3.4.3 环境要素

环境要素是ADAS测试里最容易“翻车”的地方。为什么?因为环境条件对传感器的影响太大了。

环境类别 参数 对系统的影响
光照 白天、黄昏、夜晚、逆光、隧道出入口 摄像头性能下降、目标检测延迟
天气 晴天、阴天、雨、雪、雾、霾 雷达衰减、激光雷达散射、摄像头模糊
温度 高温、低温、温差变化 传感器校准漂移、电池性能下降
电磁干扰 强电磁场、雷达互干扰 雷达误检测、通信延迟

我的一个教训:

有一次我们在测试AEB功能,白天跑了一百多组用例全部通过。结果晚上复测时,同样的场景,AEB的触发距离差了将近5米。后来分析发现,是摄像头在低光照条件下对目标的测距精度下降了。从那以后,我要求所有AEB测试必须覆盖白天和夜晚两种光照条件。

3.4.4 自车行为要素

自车行为描述的是“我们自己这辆车在干什么”。

  • 自车速度:初始速度、目标速度、速度变化率
  • 自车位置:在哪个车道、距离车道线距离
  • 自车状态:ACC开启/关闭、LKA开启/关闭、转向灯状态
  • 驾驶员行为:是否接管、是否踩刹车、是否打方向盘

这里有个容易忽略的点:自车的初始状态。比如测试LKA(车道保持辅助),如果自车一开始就骑在车道线上,那系统可能直接触发报警,而不是正常的居中控制。所以,场景里一定要写明自车的初始横向位置。

3.5 场景要素关系图

下面这张图,是我自己总结的场景四要素关系。你可以把它当作场景设计的“检查清单”。

ADAS测试场景四要素关系图 测试场景 道路要素 交通要素 环境要素 自车行为 四要素缺一不可 每个要素至少定义3个关键参数 类型·车道·几何·路面 数量·类型·行为·位置 光照·天气·温度·电磁 速度·位置·状态·驾驶员

你看,四个要素像四个支柱,共同支撑起一个完整的测试场景。任何一个要素定义不清,场景就是“瘸腿”的。

3.6 小结

这一章我们讲了三个核心概念:

  • 测试场景:由道路、交通、环境、自车行为四要素组成的“故事背景”
  • 测试用例:在场景基础上,加上输入、步骤、预期结果的“具体剧本”
  • 场景与用例的关系:一对多,场景是复用的基础,用例是执行的单元

记住一句话:

场景定义“世界是什么样的”,用例定义“我们要怎么测这个世界”。

先有场景,再有用例。场景不全,用例白写。