Page 146 - 《软件学报》2021年第7期
P. 146
2064 Journal of Software 软件学报 Vol.32, No.7, July 2021
用遗传算法的思想,将测试场景量化,引入不同的变异算子来得到最优的测试用例.Schultz 等人 [23] 将场景定义
为场景初始条件和一连串的出错规则,场景初始条件包含了车辆的初始位置、初始速度、初始行驶角度等等,
初始条件会在模拟器启动时进行载入,将其作为依据初始化场景.每个出错规则包含一系列的触发器和错误类
型,当一个规则中的所有触发器都被触发时,则标志着发生了由这个规则定义的错误.Schultz 等人通过遗传算法
不断生成测试场景,通过模拟器验证生成的场景的优劣,并指导遗传算法进一步生成测试场景,如此往复,直至
到达设置的循环次数.
Fig.5 Summary of test case generation methods for dicision module
图 5 决策模块测试用例生成方法汇总
Tuncali 等人 [24] 将寻找致错场景的问题转换为最小化函数问题,即在给定的虚拟环境、车辆、无关物体和
环境信息下,设定一个鲁棒性函数,进而寻找能够最小化鲁棒性函数的输入参数,即寻找指定的场景初始设置、
车辆和物体设置.Tuncali 等人认为,鲁棒性函数的选取对于能否快速、准确地找到致错场景起着至关重要的作
用.为了找到导致车辆碰撞的临界场景,Tuncali 等人使用碰撞时间(TTC)和车辆相对速度之和作为鲁棒性函数
的定义.Tuncali 等人认为,这样的鲁棒性函数能够更有效地找到导致车辆碰撞的致错场景.
Mullins 等人 [25] 提出了一种智能搜索和识别测试用例的方法,能够有效地筛选并生成自治系统的性能临界
测试用例.该方法分为两个主要阶段:搜索和识别.在搜索阶段,通过使用自适应采样或主动学习方法选择自主
系统仿真运行的新测试用例.该过程利用高斯回归来建模自治系统的性能,并优先选择可能指示性能边界的区
域,充分覆盖边界区域,同时最小化模拟的数量.在识别阶段,将搜索阶段产生的测试用例利用无监督的聚类演
算法来辨识场景的性能模式,将测试用例按其性能模式分类,识别出性能模式之间的边界,为执行自治系统的不
同底层决策过程的多目标无人水下航行任务生成一组测试用例.
Koren 等人 [26] 将基于场景的自动驾驶测试问题转换为了马尔可夫决策问题,并设计了相应的奖励函数,奖
励函数将每次测试的输出转化为奖励值,并以此作为依据指导测试用例生成器.该团队采用了两种方法作为测
试用例生成器,第 1 种是蒙特卡洛决策树搜索算法,另一种是深度强化学习算法.蒙特卡洛决策树算法通过奖励
值生成新的随机种子并生成场景参数,深度强化学习则利用奖励值生成新的高斯分布,进而得到场景参数.该团
队将这两种测试用例生成器应用到压力测试当中,利用马尔可夫决策模型,不断生成新的测试场景.
相比于生成整个测试场景,一些学者致力于生成基于图片的测试用例,一方面基于图片的测试用例更加灵
活;另一方面,决策模块在关键帧的决策行为决定了整个场景的决策行为,因此,基于图片的测试用例也能很好
地测试决策模块的性能.在基于图片的测试用例生成方法中,软件工程中的回归测试和蜕变测试被广泛应用,同
一场景在不同的天气、背景下,决策模块应当采取一致的行为,这与回归测试和蜕变测试的思路不谋而合.基于
此,Alhaija 等人 [34] 提出了新的测试用例生成方法,即使用计算机视觉手段生成合成的强化测试用例以提升模型
准确率.该团队认为,一个完整的自动驾驶场景图片需由 3 部分组成,即高清 3D 车模型、周围环境地图和真实物
理环境渲染(光照、反射等).文献[34]提供了算法,将平面照片改为鸟瞰图,在鸟瞰图中挑选车辆可以选择的位点,
并采样放置车辆,对车辆模型在环境地图的条件下进行渲染.经过实验验证,该算法合成的图片有更高的质量,
且在合成图片上训练的模型相比原始数据能够达到更高的精度.