Page 150 - 《软件学报》2021年第7期
P. 150
2068 Journal of Software 软件学报 Vol.32, No.7, July 2021
所包含的区域面积为负值.基于这两种目标函数,该团队通过不断使用进化算法找到致错的测试用例.在之前工
作的基础上,该团队于 2008 年的研究 [39] 加入了对协助制动模块的测试.与先前的进化算法相似,该团队加入了
针对协助自动的目标函数的定义:目标车速度,由碰撞时间和刹车制动力的乘积的积分得到.刹车制动力由驾驶
员和协助制动模块共同决定.
Abdessalem 等人在 2016 年提出的方法 [45] 中使用多目标搜索的方式来指导测试用例的生成.为了生成能够
导致错误的边缘测试用例,该团队定义了 3 部分目标函数:(1) 最小化车辆和行人的欧式距离,他们认为,该距离
越小,相关的场景越容易出错;(2) 最小化行人和危险区域的距离,危险区域的定义为待测车辆前方一定距离内
的矩形区域,即待测车辆即将通过的区域;(3) 最小化碰撞时间(TTC).为了解决在模拟环境中计算上述 3 个目标
函数的低效率问题,该团队设计了一个替代模型,并使用已有的模拟环境数据来训练替代模型,使得替代模型能
够预测出目标函数的输出.该团队将替代模型应用到 NSGAII 算法中,不断进行搜索,进而生成更多边缘测试
用例.
Abdessalem 等人在之前的针对行人检测视觉系统(PeVi)的研究后,又提出了针对高级驾驶辅助系统中自动
紧急刹车、自适应巡航控制、行人保护、交通标志检测等模块的基于多目标搜索的测试方法 [46] .该团队为搜索
算法定义了 3 种距离:(1) 覆盖距离.由于功能重写模块是白盒的,他们采用分支覆盖的标准来衡量功能重写模
块,并以此为依据定义了覆盖距离;(2) 错误距离.错误距离表示测试用例与安全标准之间的距离,若测试用例越
有可能发生错误,则错误距离就越近;(3) 致错重写距离.致错重写距离标志着由功能重写模块引发的距离,若某
个测试用例所致错误的发生不是由于功能模块发生了错误,而是由于功能重写模块发生了错误的优先级覆盖,
则该测试用例具有较低的错误距离.他们通过最小化上述 3 个距离来指导多目标搜索算法,不断生成测试用例.
Abdessalem 等人在 2018 年提出的方法 [40] 仍使用多目标搜索算法来生成测试用例,与以往方法不同,他们引
入了决策树分类模型来得到更加精准的关键场景.将目标函数定义为:(1) 行人与车辆的距离;(2) 碰撞时间,通
过最小化行人与车辆的距离并最大化碰撞时间,来获得更准确的测试用例.在 NSGA-II 算法的基础上,文献[40]
使用决策树模型,通过定义不同参数的范围规范出满足关键场景的特征空间,并得到含有较大比例的关键场景
的聚类.在每次迭代的过程中,决策树模型能够在保证关键场景占比较高的情况下简化搜索空间,使得搜索算法
能够找到更精准的测试用例.
类似于上述基于搜索的方式生成测试用例的方法,Gambi 等人 [54] 将视频游戏中生成连续内容的技术和搜
索算法相结合,设计并实现了一种针对自动驾驶系统中自动巡线模块的自动化测试方法,该方法旨在生成更有
效的测试场景.他们首先将视频游戏中的连续内容生成技术应用到场景衍生中,根据一定的规则生成道路网络.
接下来使用车辆行驶轨迹和车道线中央的距离作为目标函数进行搜索,并通过变异得到新的测试用例.变异方
法包括道路片段变异、切断并分别组合两段道路以及道路迁移覆盖.Gambi 等人使用 BeamNG.research 作为模
拟器,对方法进行了测试.实验结果表明,该方法能够有效地生成测试用例并且暴露出与安全相关的问题.
4 整车测试
相比于针对个别模块的测试,许多学者将研究目标放在了整车测试上.基于整车的测试不考虑单独模块或
者某个功能,而是对整个自动驾驶系统做出综合判断.因此基于整车的测试不考虑具体哪个模块发生了错误.针
对整车的测试往往使用场景作为测试用例,在虚拟环境中进行测试.关于场景的定义,Ulbrich 等人 [55] 给出过总
结.他们整理了多篇关于场面(scene)、情景(situation)和场景(scenario)定义的文章,并对这 3 个概念总结出了一
个整体的描述.Scene 由环境、动态物体、所有参与者和观察者以及上述物体之间的关系组成.Situation 总是从
一个物体的主观视角出发,根据某个信息的选择,依据某个短暂且临时的目标从 Scene 中衍生出来.与 Scene 相
比,Situation 中的物体往往是与主观物体相关的.Scenario 包含了 Scene,同时还有一些相关物体的动作、事件、
目标以及属性.Scenario、功能范围、系统边界和期待行为共同组成为一个用例(use-case).本文提到的场景均为
Scenario.
目前,国内外针对测试场景的定义给出了相关的标准 [56] .测试场景要素往往分为测试车辆要素、静态环境