Page 144 - 《软件学报》2021年第7期
P. 144

2062                                     Journal of Software  软件学报 Vol.32, No.7,  July 2021

                 方法对于分类现实世界图像是可行的,无需与真实训练数据集图像进行任何混合.
                    Dreossi 等人 [15] 使用由图像生成器、采样方法及可视化工具构成的框架来生成测试用例.通过在图像生成
                 器中布置基本对象(例如,道路背景和汽车)并调整图像参数(例如,亮度、对比度、饱和度)来获得图像.对象和图
                 像参数的所有可能配置都定义了一个修改空间,在 3D 修改空间中抽象出所考虑的特征空间,每个点都对应于特
                 定的图像.并且,根据用户需求采用不同的采样技术来为图像生成器提供修改点(如:均匀覆盖修改空间的采样
                 方法和基于主动优化的方法),以生成能够导致错误分类的测试用例,在确保抽象空间最佳覆盖范围的同时最大
                 程度地减少生成的测试用例数目.
                 2    决策模块

                    如果将感知模块比作自动驾驶系统的“眼睛”,那么决策模块就是自动驾驶系统当之无愧的“大脑”.在感知
                 模块感知到外界情况之后,自动驾驶系统会将多维度的感知信息传递给决策模块并进行数据融合.决策模块依
                 据当前的路况信息进行路线规划和控制,并向相关控制模块(如方向盘、刹车)发出信号.决策模块在自动驾驶系
                 统中担任着至关重要的角色,其依托环境感知和导航定位系统的输出信息,进行行为预测和路径规划.目前,自
                 动驾驶系统中大多使用基于数据的深度学习方法和基于运动模型的卡尔曼滤波器,对周围的人、车及物体进行
                 预测.在路径规划方面,较为成熟的方法有 Dijkstra 算法、Floyd 算法、A*算法、蚁群算法、基于分层网络的搜
                 索算法、神经网络算法、实时启发式搜索算法、模糊控制以及遗传算法                          [22] 等.
                    许多学者针对决策模块进行了测试,试图使用测试用例引导决策模块产生错误的决策.目前,主要有生成致
                 错场景  [2326] 、变异已有场景  [2729] 、预测场景置信度   [30] 和利用弹性行为   [31] 等方法.

                 2.1   相关研究现状
                    致错场景(fault scenario)表示能够使待测模块发生错误的场景,目前许多学者致力于研究能够快速找出高
                 效的致错场景进而使决策模块发生错误的判断.在寻找致错场景的过程中,一些优化算法和软件工程方法被应
                 用于其中,例如遗传算法和压力测试等.Schultz 等人             [23] 提出了一种用来检测无人机器(无人机)控制系统的自动
                 化方法,通过自动生成致错场景来验证无人机器的正确性.该团队认为,致错场景可以由机器初始条件(initial
                 conditions)和一连串的出错规则(rule)来定义,通过控制以上因素,就可以控制致错场景的生成.因,文献[23]中使
                 用遗传算法指导致错场景的生成,不断变化以上因素,找到真正使得控制器出错的场景.Schultz 等人使用
                 AUTOACE 作为模拟器,初始化了 100 种流行的致错场景,并迭代调用遗传算法 100 次,总共生成了 10 000 种场
                 景.实验结果表明,该方法能够有效地检测无人机器的控制系统.
                    Tuncali 等人 [24] 设计并实现了一个自动生成驾驶车辆测试场景的框架,旨在寻找自动驾驶测试场景中能够
                 导致碰撞的临界值,并定义了一个鲁棒性函数,用来表示一个场景的鲁棒性,该值越低,表示自动驾驶汽车在该
                 场景越有可能发生碰撞.该框架包含了 4 个部分:模拟器配置、模拟器引擎、S-TaLiRo 工具箱和鲁棒性函数.使
                 用 MatLab 中的工具箱 S-TaLiRo 来获得使鲁棒性函数最小化的参数,并以此结果来指导模拟器配置的修改,生
                 成下一个测试场景,并不断重复该过程,直至到达了模拟次数限制或者鲁棒性函数得到负值.Tuncali 等人设计了
                 一个由两辆待测车、一辆无关车组成的案例分析,实验结果表明,该框架在该案例下成功地检测出致错场景.
                    Mullins 等人 [25] 提出了一种用于搜索被测系统的性能临界测试用例的方法,利用自适应采样智能地搜索状
                 态空间中存在于不同性能边界上的测试场景.此外,使用无监督聚类技术,可以按场景的性能模式对场景进行分
                 组,根据对诊断自治系统行为变化的有效性进行排序.该团队选取多目标导航场景下运行的模拟无人水下航行
                 场景进行实验,令测试系统进行自适应搜索和边界识别.实验结果表明,该团队选择的搜索方法优于空间填充法
                 及 LOLA-Voronoi 自适应搜索    [32] 等方法,且在基于高斯过程回归(GPR)的搜索算法和聚类边界识别算法应用于
                 无人水下航行仿真的收敛性测试中,GPR 方法能够在 3 000 个样本内找到所有边界的情况,而拉丁超立方采样
                 方法需要大约 12 000 个样本.
                    Koren 等人  [26] 通过自适应压力测试的方法,不断引入随机因素,能够找到使自动驾驶汽车发生碰撞的场景.
                 在已有针对自适应压力测试的蒙特卡洛决策树搜索(Monte Carlo tree search)方法的基础上,该团队将问题转换
   139   140   141   142   143   144   145   146   147   148   149