Dance of the ADS: Orchestrating Failures through Historically-Informed Scenario Fuzzing

本文提出了名为 ScenarioFuzz 的基于场景的模糊测试方法,该方法利用历史测试数据与图神经网络优化种子筛选,在显著降低时间成本的同时大幅提升了错误场景的发现效率,并成功在六个自动驾驶系统中发现了 58 个漏洞。

Tong Wang, Taotao Gu, Huan Deng, Hu Li, Xiaohui Kuang, Gang Zhao

发布于 2026-03-11
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文介绍了一种名为 ScenarioFuzz 的新方法,专门用来给自动驾驶汽车(ADS)“找茬”和“体检”。

为了让你更容易理解,我们可以把自动驾驶系统想象成一位正在舞台上表演的“首席舞者”,而我们的目标就是设计各种高难度的舞蹈动作,看看这位舞者会不会在表演中摔倒、踩错拍子或者发生碰撞。

以下是用通俗语言和比喻对这篇论文核心内容的解读:

1. 核心问题:以前的“排练”太死板

以前的测试方法就像是一个死板的导演。导演手里拿着一本写好的剧本(预设场景),告诉舞者:“在这里左转,那里停一下,旁边有个路人走过。”

  • 缺点:剧本有限,排练次数多了,舞者就背熟了,不会出错了。但现实世界千变万化,如果只练这几个动作,一旦上了真路,遇到剧本里没有的情况(比如突然冲出一个穿红衣服的小孩),舞者可能就会慌神出事故。
  • 另一个极端:有些方法(如 Drivefuzz)是完全随机的。导演把舞者、路人、车都随机扔在舞台上。
    • 缺点:虽然随机,但经常会出现“路人站在马路中间不动”或者“车开进墙里”这种不合理的场景。这就像在排练时让演员在天花板上跳舞,虽然能测试出系统会不会晕,但大部分时间都在浪费精力,效率很低。

2. 我们的解决方案:ScenarioFuzz(场景模糊测试)

这篇论文提出的新方法,就像是一位懂历史的“编舞大师”。他不需要现成的剧本,而是通过观察过去的演出和舞台结构,自己即兴创作出既真实又充满挑战的舞蹈动作。

第一步:建立“动作库”(地图爬行技术)

  • 比喻:编舞大师不会凭空乱想,他会先去研究舞台的地图和结构(比如 OPENDRIVE 道路网络)。
  • 做法:系统会自动扫描地图,找出哪里是十字路口、哪里有红绿灯、哪里适合停车、哪里适合转弯。它把这些合理的“舞台位置”收集起来,形成一个种子库
  • 好处:这就像给舞者提供了合理的舞台边界,确保生成的场景是真实的(比如车不会开进河里,路人不会站在天上),解决了“随机乱丢”的问题。

第二步:疯狂“变奏”(变异策略)

有了基础动作(种子),系统开始进行两阶段的“变奏”

  1. 随机变奏:先大范围尝试,比如突然下雨、路人突然跑出来、车突然变道。
  2. 邻居变奏:如果刚才那个动作让舞者差点摔倒,系统就在这个动作的基础上微调(比如把雨下得更大一点,或者让路人跑得快一点),试图找到那个“临界点”。
  • 比喻:这就像教练不断调整难度,从“稍微有点滑”调整到“非常滑”,直到找到舞者最容易滑倒的那个点。

第三步:聪明的“评委”(图神经网络模型)

  • 痛点:如果每次变奏都让舞者真的上台演一遍,太费时间了。
  • 创新:作者训练了一个AI 评委(SEM 模型)。这个评委看过成千上万次的历史测试数据。
  • 做法:在让舞者上台前,先把新的“变奏动作”给评委看。评委根据历史经验预测:“这个动作大概率会让舞者摔倒!”
  • 结果:系统只把那些最可能出错的动作挑出来让舞者真正去演。这就像省去了 90% 的无效排练,只练那些真正有风险的环节。

第四步:复盘与总结(聚类分析)

  • 做法:当系统发现舞者真的摔倒了(出 Bug 了),它会记录下当时的所有细节(天气、路人位置、车速等)。
  • 创新:系统会自动把这些摔倒的案例进行分类。比如,它发现“穿红衣服的小孩在雨天横穿马路”是高频摔倒原因。
  • 成果:最终,他们总结出了 54 种 容易导致自动驾驶出错的“高危舞蹈动作”,并发现了 58 个 具体的系统漏洞(Bug)。

3. 效果如何?

  • 更快:因为用了“智能评委”筛选,测试时间平均减少了 60.3%
  • 更准:单位时间内发现的错误场景数量增加了 103%(翻了一倍多)。
  • 更真实:相比完全随机的方法,他们发现的 Bug 更多样化,不仅限于简单的碰撞,还包括了复杂的决策失误。

总结

这就好比以前我们是用盲盒去测试自动驾驶(随机扔东西看会不会坏),或者用老剧本(只练固定的动作)。
而这篇论文的方法是:

  1. 先研究舞台结构,确保动作合理(不瞎扔)。
  2. 用 AI 评委预测哪些动作最容易出错(不瞎练)。
  3. 集中火力攻击那些高风险的环节。

最终,他们成功地在自动驾驶系统还没上路之前,就通过“编排”各种复杂的意外场景,把潜在的隐患都挖了出来,让未来的自动驾驶更安全。