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

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

                 最小数量的测试用例以确保对所有组合进行测试.然而,覆盖数组仅能对离散变量的选取进行指导,所以提出第
                 3 种方法使用覆盖数组评估离散变量并使用模拟退火搜索连续变量.实验结果表明,覆盖数组和模拟退火生成
                 的测试用例在保证覆盖范围的同时拥有更低的鲁棒性.
                    Rocklage [66] 提出了一种对自动驾驶汽车进行验证的方法.他们引入了一个新的验证空间概念,该概念基于
                 时空状态网格来生成动态交通参与者的运动.时空状态网格基于车辆所在空间的高清地图或人为手动操作绘
                 制,网格中格点表示位置-时间元组,这个空间一开始是稀疏的,但是,随着车辆遇到新的情况,它变得越来越密集.
                 研究人员可以对形成的有向图应用深度优先、广度优先或回溯等算法测试图形边缘与本车计划轨迹相交的场
                 景,并逐步覆盖验证空间.他们建议自动驾驶车辆的一般控制体系结构中添加一个新的安全模块,安全模块将使
                 用验证空间数据库中的信息来确定当前情况是否得到验证及当前情况附近的连续区域被覆盖的程度.他们使
                 用人类睡觉时做梦这一现象进行类比,建议自动驾驶车辆在停车时“睡觉”,自动驾驶车辆的安全模块还包含一
                 个仿真模块,用来在“睡觉”时模拟白天无法自动处理的情况和场景.该验证方法的优势在于可以通过迭代达到
                 L5 自动化水平,车辆能够将干预请求发送给驾驶员,从而消除驾驶员始终处于循环状态的需求.
                    Aramrattana 等人 [67] 提出了一种用于测试和评估协作智能交通系统(C-ITS)应用程序的仿真框架,该框架结
                 合了驾驶、交通和网络模拟器.协作智能交通系统(C-ITS)的目标是更安全、更高效的交通系统.他们给出了协
                 作式自适应巡航控制(CACC)应用程序的示例,并将其用于仿真框架的测试,分别为单排车辆增大车距、双排车
                 辆合并为单排车辆、驾驶员驾驶 3 种场景.测试结果说明了在循环过程中使用人工驱动程序测试不同控制策略
                 的能力和仿真框架的灵活性,并证明了仿真框架中的模拟器是同步的.他们还认为,由于涉及人类驾驶员切换驾
                 驶模式,交通模拟器未考虑横向加速度以及仿真框架正确性验证等原因导致该框架中的每个仿真器都没有被
                 充分利用.
                 4.2   测试用例生成
                    针对整车测试的测试场景生成方法主要以结合真实场景数据为主,通过一系列的转化和衍生方法生成新
                 的仿真场景.部分学者也尝试使用基于搜索的方法、基于回归测试的方法和基于多实体(agency)的方法来生成
                 相关测试场景.Zhang 等人、Gambi 等人、Fremont 等人结合了真实场景来生成测试用例.
                    Zhang 等人 [57] 提出了一种基于视点图像序列的自动驾驶测试用例生成方法.首先,使用 GPS 坐标确定场景
                 要素的地理空间位置,使用车载摄像机获取路面上任意一点的图像数据,然后将其与 GPS 获取的视点位置序列
                 相结合,得到视点图像序列.按照时间顺序组织视点图像序列,引入道路 GIS 数据,通过道路网络确定道路的三维
                 几何信息,并进一步进行视图转换,将交通场景可视化,生成自动驾驶测试用例.
                    Gambi 等人  [68] 提出了使用基于碰撞报告的自动碰撞场景构造器 AC3R 来生成测试用例,其生成过程分为
                 4 个阶段:信息提取、轨迹规划、仿真生成及测试生成.其中,信息提取阶段通过语法相关性分析,计算碰撞描述
                 的每个语句中每对单词之间的语法相关性,并匹配特定领域的本体(如环境、交通参与者、行为及事故),提取道
                 路属性及车辆属性,将文本中的概念充分映射到撞车场景的细节.在轨迹规划阶段,AC3R 将冲击点放在参考坐
                 标空间的原点上,并为每个模拟车辆的每个驾驶动作设置一个新的航路点,不断添加航路点至包含所有驾驶行
                 为,最后调整冲击点的位置并更新道路几何形状,创建出车祸的抽象表示.仿真生成阶段则使用了专门用于模拟
                 交通事故的仿真引擎 BeamNG.research,使得 AC3R 能够使用在规划虚拟汽车轨迹时计算出的几何数据,从而以程
                 序方式生成道路并放置路标,生成可在驾驶模拟器中实现车祸动态的代码.并在测试生成阶段,由模拟中导出测试
                 用例.
                    Fremont 等人  [61]  使用形式化语言来描述仿真测试的过程,通过形式化测试场景和安全因子并使用
                 VERIFAI [68] 工具对相关形式化表示进行验证,区分出安全和不安全的测试用例,进一步通过聚类算法选择出合
                 适的测试用例进行虚拟场景测试.他们使用 pulley-based 4Active surfboard platform(SB)来模拟行人,以将选择出
                 来的测试场景转换成为真实的整车测试.
                    Rocklage 等人 [69] 提出了一种在虚拟仿真环境中为自动驾驶回归测试自动生成测试用例的方法,着重研究
                 了生成其他交通参与者的运动而不损失一般性的问题.该团队将组合交互测试方法与一个简单的轨迹规划器
   147   148   149   150   151   152   153   154   155   156   157