4. 问题复现的基本概念
在智能驾驶路测中,发现一个异常只是起点,真正决定问题能否被修复的,是它能否被稳定地“请回来”。复现(Reproduction)指的是在受控条件下,让同一问题再次出现的过程。它把一次偶发的路测现象,转化为可观察、可测量、可反复验证的工程对象。没有复现,问题定位就只能依赖猜测;有了复现,团队才能把“我见过一次”变成“我随时能让你看到”。
4.1 可复现性定义
可复现性(Reproducibility)是指:给定相同的初始条件、相同的输入序列和相同的系统配置,问题能够以可预期的方式再次出现。它包含三个层次的含义:
- 条件可描述:问题发生时的场景、参数、版本、环境能够被完整记录,而不是“大概在某个路口”。
- 过程可重放:输入数据(如感知结果、CAN 信号、时间戳)能够按原始时序重新注入系统。
- 结果可判定:复现成功与否有明确的判据,例如同一帧出现相同误检、同一时刻发生相同接管。
在工程实践中,可复现性通常用一个可量化的指标来衡量:复现率。它等于成功复现次数除以总尝试次数。复现率越高,说明问题越“确定”,定位成本越低;复现率越低,说明问题越依赖隐藏条件,需要更精细的采集与回放手段。
4.2 复现等级
根据复现的稳定程度和所需条件,业界通常把复现分为若干等级。等级越高,问题越容易被工程化处理。下表给出一种常见的五级划分:
| 等级 | 名称 | 典型特征 | 复现率参考 | 定位难度 |
|---|---|---|---|---|
| L1 | 不可复现 | 仅有一次路测记录,无法再次触发 | < 5% | 极高 |
| L2 | 概率性复现 | 多次尝试中偶尔出现,条件不明确 | 5% ~ 50% | 高 |
| L3 | 条件性复现 | 在特定场景或参数下稳定出现 | 50% ~ 90% | 中 |
| L4 | 确定性复现 | 相同输入下每次必现 | > 90% | 低 |
| L5 | 最小化复现 | 已裁剪到最小输入集,仍稳定触发 | ≈ 100% | 极低 |
从 L1 到 L5,本质上是一个“不断缩小条件空间”的过程。L5 是定位工程师最希望达到的状态:输入最小、路径最短、因果最清晰。
4.3 确定性复现与概率性复现
确定性复现(Deterministic Reproduction)指在相同输入和相同配置下,问题每次都会出现。它通常对应软件逻辑缺陷、固定阈值越界、状态机死锁等“必然性”问题。确定性复现的定位效率最高,因为工程师可以反复运行、逐步裁剪输入,直到找到触发条件。
概率性复现(Probabilistic Reproduction)则指问题只在部分尝试中出现,往往与并发时序、资源竞争、传感器噪声、随机初始化或环境扰动有关。概率性复现的难点在于:每次运行的条件并不完全一致,工程师看到的“相同”可能只是表面相同。此时需要引入统计方法,记录每次运行的完整上下文,并通过大量重复实验来估计复现率及其置信区间。
4.4 复现率评估指标
复现率不是简单的“成功次数 / 总次数”,在工程中需要结合置信度和样本量来评估。常用指标包括:
- 点估计复现率:R = n_success / n_total,最直观,但样本少时波动大。
- 置信区间:用二项分布或 Wilson 区间给出复现率的范围,避免“3 次成功 2 次”就下结论。
- 首次复现耗时:从开始尝试到第一次成功复现所消耗的时间或里程,反映问题被“抓住”的效率。
- 最小复现输入规模:触发问题所需的最短数据片段或最少信号数量,越小越好。
- 复现稳定性:连续多轮复现中,结果是否保持一致,用于区分“真复现”和“碰巧相似”。
下面是一段用于记录复现实验的日志片段示例,包含版本、场景、尝试次数和结果:
repro_id: REP-2024-0417-003
sw_version: ADAS_2.7.3-rc1
scenario: urban_left_turn_cyclist_cutin
input_source: rosbag_20240416_142233.bag
attempts: 20
success: 17
repro_rate: 0.85
confidence_95: [0.62, 0.97]
first_success_attempt: 3
min_input_duration: 8.4s
notes: 触发条件与雨天路面反光相关,需保留摄像头曝光参数
4.5 核心原理与流程
复现的基本流程可以概括为“记录—回放—判定—收敛”四个环节。记录阶段要尽可能完整地保存场景输入、系统状态和版本信息;回放阶段要保证时间同步和信号顺序一致;判定阶段要定义清晰的通过/失败标准;收敛阶段则通过裁剪输入、调整参数,把复现等级从 L2/L3 提升到 L4/L5。
4.6 案例与场景
某项目在城区路测中发现:车辆在左转时偶发对横穿骑行者误制动。第一次路测只记录到一次,属于 L1。团队随后补充采集了同一路口的 20 次通行数据,其中 6 次触发,复现率约 30%,进入 L2。通过分析发现,触发与雨天路面反光导致摄像头曝光异常有关。固定曝光参数并回放同一段 rosbag 后,20 次中 18 次触发,复现率提升到 90%,达到 L4。最后裁剪出 8.4 秒的关键片段,仍能稳定触发,进入 L5。整个过程从“不可复现”收敛到“最小化复现”,定位时间从预计两周缩短到三天。
4.7 常见误区与复盘
误区一:把“相似现象”当成“同一问题”。 两次误制动可能由不同原因引起,必须通过版本、场景、信号对比确认因果一致。
误区二:样本量过小就下结论。 3 次尝试 2 次成功,不能直接说复现率 67%,应给出置信区间并继续实验。
误区三:只记录结果,不记录条件。 缺少版本、参数、时间同步信息,回放时无法重建原始因果链。
误区四:忽视概率性问题的统计特性。 概率性复现需要多轮实验和条件对比,不能靠单次运行判断。
复盘时建议回答三个问题:问题当前处于哪个复现等级?复现率及其置信区间是多少?下一步是补充记录、调整回放条件,还是裁剪输入以提升等级?把这三个问题写进复现报告,才能让定位工作有方向、有节奏、有收敛。