论文发表在ESEC/FSE2022(CCF A会议)上,作者单位:Macquarie University, Meta, Purdue University
本文对自动驾驶系统测试的当前实践和需求进行了实证研究,总结了ADS 从业者的七种常见做法和四种常见需求,此外,我们对 SE 社区的相关 ADS 测试研究进行了文献综述,并评估了现有工作可以在多大程度上满足这些工业需求。最后,提出了四个未来方向,以构建更好的自动驾驶系统测试工具支持。
自动驾驶展现出改革现代交通的巨大潜力。 然而其可靠性和安全性引起了很多关注和担忧。 与传统软件系统相比,自动驾驶系统(ADS)通常使用深度神经网络和基于逻辑的模块。 这种新范式给软件测试带来了独特的挑战。 尽管最近开发了新的 ADS 测试技术,但尚不清楚这些技术在多大程度上满足了 ADS 从业者的需求。 为了填补这一空白,我们提出了第一个全面的研究来确定 ADS 测试的当前实践和需求。 我们对 10 家自动驾驶公司的开发人员进行了半结构化访谈,并对 100 名从事过自动驾驶系统的开发人员进行了调查。 通过对访谈和调查数据的系统分析,揭示了自动驾驶测试的 7 个常见做法和 4 个新兴需求。 通过全面的文献综述,我们对现有的 ADS 测试技术进行了分类,并分析了 ADS 研究与从业者需求之间的差距。 最后,我们为 SE 研究人员提出了几个未来的方向,例如开发测试简化技术来加速基于模拟的 ADS 测试。
目前,软件工程(SE)领域的研究者提出了许多测试技术来提高ADS的安全性和可靠性,但对于ADS测试的新兴需求、现有的ADS测试技术在多大程度上满足ADS从业者的需求缺乏全面的了解。 为了弥补这一差距,我们结合定性访谈研究、大规模调查和文献综述来调查以下三个研究问题:
RQ1:ADS 测试的工业实践有哪些?
RQ2: ADS 测试的新需求是什么?
RQ3: 现有的 ADS 测试技术在多大程度上满足了工业需求?
具体的研究过程见论文,下面摘录研究得出的重要结论。
(1)多模块ADS。在工业界广泛使用,比如Apollo。感知模块和预测模块主要使用深度神经网络,路径规划模块和控制模块使用传统的基于逻辑的程序。
(2)端到端的ADS。在工业界使用较少,因为无法处理复杂的驾驶场景,有泛化性的问题。
结论1:大多数 ADS 从业者表示,他们致力于多模块 ADS,而不是端到端驾驶模型。 因此,多模块ADS在未来的研究中值得更多关注。
(1)测试目标
70% 的受访者和超过 68% 的调查参与者表示,他们的驾驶系统至少使用四种传感器中的三种,例如摄像头、激光雷达、雷达、GPS。 这种多模态的传感器数据使得生成测试用例变得更加困难。 例如,来自具有不同采样频率的不同传感器的数据需要同步(例如,通过时间戳)。 此外,当转换一种类型的传感器数据(例如添加对象)时,其他类型的传感器数据必须一致更新。
结论2:除了测试控制逻辑外,ADS 开发人员还需要构建驾驶记录片段,以测试 DL 模型,该模型将多模态传感器数据作为输入,而不仅仅是道路图像。
(2)测试指标(test metrics)
有两位采访参与者指出:一致性是他们测试车道检测模型时的指标之一,如视频帧中前后帧的车道检测结果应该一致。
结论3:在 ADS 中测试感知模型时,ADS 从业人员不仅使用常见的模型性能指标,如准确性和 IoU,还使用定制的指标,如一致性。
(1)基于场景的测试
图 2 显示了我们调查中报告的常见测试驾驶场景。 包括变道(76%)、跟随其他车辆(72%)、左转或右转(69%)等常见驾驶场景,以及十字路口(33%)、环岛(超过55个)等特殊路段。 %)。 雨天(44%)和下雪天(33%)等天气也被考虑在内。 最后,紧急制动和碰撞等危险驾驶场景也分别有 28% 和 21% 的调查参与者进行过。
图 3 显示了调查中报告的这些驾驶场景的来源。 80%和57%的调查参与者表示,这些场景是基于常见的现实驾驶场景和驾驶体验。 54% 的调查参与者表示,他们参考了 CityScapes、ApolloScape 和 Waymo 开放数据集 等公共基准。 40%的调查参与者表示他们参考了交通法律法规。 23% 的人表示他们参考了交通事故报告。
结论4:ADS 从业人员根据实际驾驶场景、公共数据集、交通法规和碰撞报告设计各种驾驶场景,以便在现场测试 ADS。
(2)道路测试
图4显示,只有8%的参与者进行了10万公里以上的道路测试,其中11%的参与者进行了1万至5万公里的道路测试。
结论5:道路测试被认为对于确保 ADS 的可靠性和稳健性至关重要,但考虑到成本问题,只有一小部分 ADS 从业者进行了长距离的道路测试。
(3)测试指标
结论6:现实测试中使用的测试指标更多地关注系统级性能(如准确度、泛化性、乘客体验、鲁棒性),而不仅仅是模型准确性。
结论7:仿真测试被广泛采用作为现实世界测试的补充。 另外,作为回归测试的一部分,它特别被用来测试新的提交。
测试指标包括:泛化性、乘客体验、鲁棒性、系统延迟。因为仿真测试平台没有硬件延迟,所以系统延迟很少被考虑
本节总结了访谈和调查中确定的 ADS 测试的四个新需求。 图 6 显示了调查参与者对这些需求重要性的认同。 68%、63%、51% 和 48% 的调查参与者认为需求 4、需求 1、需求 3 和需求 2 重要或非常重要。
需求一:识别可能的边缘场景
需求二:加快测试速度
需求三:研发构造复杂驾驶场景的工具
需求四:研发给数据打标签的工具
我们综述了42篇针对ADS测试的论文(分类如下图),并提出了针对四个需求的未来研究方向。
(1)对于基于本体论和基于变异关系的方法:除了通过仿射变换和天气条件构造场景,可以探索生成更复杂的场景,如并道、超车
(2)对于基于搜索的方法:为现实、复杂的驾驶场景定义易于处理的搜索空间和适应度函数始终具有挑战性。 作为未来的方向,如何从现有的碰撞报告、交通规则和道路驾驶记录中得出新的安全要求是值得研究的。 此类要求可用于生成新的适应度函数或改进现有的适应度函数,以扩大更多关键任务测试场景的搜索空间。
(3)针对多模态的ADS系统的测试:所有访谈参与者和 69% 的调查参与者现在都在开发多模块 ADS。 这些多模块 ADS 将多种类型的传感器数据作为输入。 然而,大多数测试生成技术仅生成道路图像数据。 因此,如何为新的驾驶场景生成多模态传感器数据是值得研究的
(1)使用回归测试中的测试选择的方法来减少多余的测试场景、或者测试优先级排序的方法给测试场景设定优先级。比如,在高速公路上,汽车一般走直线且保持恒定速度,所以复现自然驾驶数据中特殊的部分,如变道,可以减少测试场景。
(2)除了使用基于相似度的测试评价指标,还可以使用基于置信度的测试评价指标,如DeepGini[2]使用Gini不纯度来度量输入被错误分类的可能性,给高Gini不纯度的测试用例设置高优先级。
(3)针对多模块ADS系统设计测试评价指标:现有算法多测试端到端的自动驾驶模型或者仅测试自动驾驶的路径规划模块,如果扩展到多模块的自动驾驶模型,需要考虑如何把多个测试评价指标结合起来,比如神经元覆盖、惊讶充分度、路径覆盖等,以捕捉不同模块的交互关系。一个可能的解决方法是使用多目标优化建模,搜索一个最小测试用例集,它既能使得多种测试评价指标都最大化。
(1)使用NLP和CV的技术,从文本或视频数据中构造场景。现有方法中,Gambi等人[3]提出了一种名为 AC3R 的自动化方法,该方法可以将碰撞报告解析为模拟环境中的驾驶场景。 具体来说,AC3R利用NLP技术从碰撞报告中提取关键信息(例如交通参与者和驾驶行为),并将碰撞信息转换为Lua脚本来控制交通参与者并生成相应的碰撞场景。 AC3R 仅限于一些简单的碰撞场景,例如两辆车追尾碰撞。 此外,由于碰撞报告通常遵循严格的叙述标准,AC3R 可能很难将自由形式的驾驶场景描述转换为可执行的驾驶场景。
(2)提出高层次的领域特定语言(domain-specific DSL),使得编程更容易。现有方法中,Du等人[4]提出了一种新的建模语言,描述各种驾驶场景中的规范,以进行形式验证。 虽然这种新语言不直接用于构建新的测试用例,但它可以改编为用于测试生成的领域特定语言(DSL)。我们还在网上进行了更广泛的搜索,发现其他研究社区在满足这一需求方面做出了一些努力。例如,Scenic 是一种概率编程语言,使开发人员只需几行代码即可生成复杂的交通拥堵场景。
在所有四种新兴需求中,数据标签工具支持的需求在调查研究中获得了最高的重要性评级。 68% 的调查参与者认为这一需求非常重要或重要。 我们只找到了一篇试图解决这一需求的 SE 论文 [5]。
未来方向:
(1)哪些数据需要打标签:现有论文[5]提出了一个惊讶度充分性(surprise adequacy)的指标,这是一个简单的指标,用于量化 DNN 输入的令人惊讶的程度,以指导选择新的道路图像进行标记。 结果令人鼓舞——可以节省 30% 到 50% 的手动标记成本,而对评估准确性的影响可以忽略不计。 然而,减少标签数量无助于提高标签质量。
(2)如何提高标签质量。
(3)数据清洗。比如输入确认和异常值检测方法。传统的数据清洗方法需要用户定义一些规则来作为限制条件,但对于传感器数据来说很难定义这样的规则。传统软工领域中有很多方法能识别failure-inducing的输入,可以迁移到自动驾驶测试中。
本文对自动驾驶系统测试的当前实践和需求进行了实证研究。
通过访谈研究和大规模调查,我们确定了 ADS 从业者的七种常见做法和四种常见需求。 这些发现让人们深入了解 ADS 从业者如何在实践中测试自动驾驶系统以及他们认为哪些工具支持有帮助。
此外,我们对 SE 社区的相关 ADS 测试研究进行了文献综述,并评估了现有工作可以在多大程度上满足这些工业需求。 我们发现,尽管 SE 社区广泛调查了一种需求,即识别可能的边缘场景(需求一),但其他三种需求的调查还不够。 此外,大多数现有工作都是针对端到端驱动模型设计的,而多模块驱动系统现在被广泛采用。
基于这些差距,我们提出了四个未来方向,以构建更好的自动驾驶系统测试工具支持。 我们相信SE研究人员有很多研究机会,因此呼吁对这些未来的方向给予更多的关注和努力。
[1] Testing of Autonomous Driving Systems: Where Are We and Where Should We Go?
[2] DeepGini: prioritizing massive tests to enhance the robustness of deep neural networks
[3] AC3R: Automatically Reconstructing Car Crashes from Police Reports
[4] Towards Verified Safety-critical Autonomous Driving Scenario with ADSML
[5] Reducing dnn labelling cost using surprise adequacy: An industrial case study for autonomous driving