Page 154 - 《软件学报》2021年第7期
P. 154
2072 Journal of Software 软件学报 Vol.32, No.7, July 2021
统.因为现有的需求覆盖严重依赖于需求说明书,它能够有效地应用于基于需求说明书的验证软件,却不能应用
于现实场景下的软件确认.这意味着需求覆盖很难发现真实场景中不常见的错误,从而造成测试中的疏漏.相较
而言,情境覆盖会更加可靠,更加细致,也会考虑更多的实际情况.Alexander 等人提出了宏观和微观两种常见的
覆盖选择方式,并由 Hawkins 等人 [75] 在用例研究中给出了详细的例证.在用例研究中,Hawkins 等人建立了虚拟
地图,选定自动驾驶汽车的初始位置和目的地,并在地图上放置障碍物和其他交通参与者,检测在车辆前进路线
中是否会出现危险的交通情况.该团队选取了 3 个距离标准作为情境覆盖的指标,实验结果表明,这种情境覆盖
标准可比随机方法指导发现更多危险场景,但是效果有限.因为所选取的覆盖标准可能与危险相关性不强,因此
覆盖标准的选取可能会对实验造成很大影响.
Situation 是由交通参与元素和相关参数组成的,在实际测试中,若覆盖所有可能的组合结果,则会出现指数
爆炸的问题.Cheng 等人 [76] 提出了量化的 k 投影覆盖率,要求将数据集投影到任意选择的 k 条件形成的超平面
时,以不小于关联权重的数据点数覆盖每个类别,该指标大大减少了所需测试的场景数量.相较在每个类中至少
覆盖一个数据点的朴素铺盖度量指标,该覆盖率指标解决了不同情况相对重要性的问题.此外,Cheng 等人开发
了一种高效编码到 0~1 整数的方法,该方法允许增量地创建场景以最大程度地扩大覆盖范围.但该指标对于较
大的 k 值,要实现完整的投影覆盖范围仍然面临一定的挑战.
根据 Schuldt 等人 [23] 的定义,场景是由几个 scene 组成的长时间片段,通常具有一定的时效性和动态性.因此,
对场景的覆盖难以量化.现有的覆盖框架仍局限于以枚举的方式实现覆盖最大化.相关研究 [77,78] 中的枚举方式
虽然简单,但是需要测试人员具有一定的经验,且容易造成漏选和遗忘.
目前比较有效的量化场景覆盖方法是将场景抽象成图进行覆盖.Iqbal 等人 [79] 提出了动态测试世界的方法,
他们使用 UML 类图构建参与者与其关系的结构模型,将交通参与者的行为抽象扩展为有限状态机(CEFSM),
然后通过使用图覆盖标准以覆盖动态世界模型来生成抽象世界行为测试用例(AWBTC).实验结果表明,可执行
测试用例的数量取决于生成的测试数据数量及执行中涉及的参与者过程数量.该方法将传统软件测试图覆盖
中的边覆盖、节点覆盖和路径覆盖方法引入到自动驾驶测试之中.
在自动驾驶测试过程中,通过在模拟环境和封闭测试设施中设计适当的方案,可以减少进行道路测试的工
作量.利用模拟或封闭设施测试的主要优势是为每个运行设计域生成测试方案库.Feng 等人 [80,81] 为具有不同运
行设计域(ODD)、联网自动化车辆模型和性能指标的测试方案库生成的问题提出了一个公用框架,在给定运行
设计域的情况下,测试场景库被定义为可用于联网自动化车辆测试的关键方案集.该团队利用机动性挑战和暴
露频率组合的辅助目标函数等指标,结合发生频率和机动性,评估场景的重要性和危险性,以便采样到更重要、
更有测试意义的场景,尽可能地覆盖到各种危险场景,将现实世界中发生概率较高的场景且机动性挑战较高的
场景优先用于联网自动化车辆的测试.
5 数据集与模拟器
为了更好地支持该领域的研究人员,本文总结了相关文献中的数据集和模拟器的使用情况,并标注了数据
集的规模以及出处,结果见表 1 和表 2.
Table 1 Summary of datasets
表 1 数据集
名称 数据集规模 引用文献 出处
KITTI 180G 路况采集视频 [17,14,27,34] [82]
GTSRB 51 840 张图片 [6] [9]
UCF-101 13 320 个视频,101 个动作类别 [11] [83]
HMDB-51 6 766 个视频,51 个动作类别 [11] [84]
BIRD 60k [11] [11]
Sim200k (10k,50k) 200k (10k,50k) [13] [14]
Cityscapes 5 000 张高质量图片和 20 000 张粗略注解图片 [14] [85]
Udacity 与使用版本有关 [2729] [86]
Dave testing dataset 45 568 张图片 [27] [87]