Page 259 - 《软件学报》2025年第10期
P. 259

4656                                                      软件学报  2025  年第  36  卷第  10  期


                    在每个测试配置中, 图       5  的投影图绘制尺度一致, 越趋近蓝色的区域, 表示分布密度越高, 表示这部分的样本
                 越趋同. 反之, 越趋近黄色的区域, 表示分布密度越低, 也表示这部分样本的差异性越大                        (亦即越多样). 趋黄色的区
                 域越大, 表示整体样本的多样性越好. 从图            5  可以看出, IIFuzzing  的  GMM  投影面积和黄色区域面积都大于基线方
                 法, 在  RL+CARLA  和  MARL+CoopNavi 测试配置中更加明显, 说明      IIFuzzing  可以探测到更多样的失效事故.
                    问题  3  评价结论: IIFuzzing  在同样的测试时间内, 可以探索更大的测试空间, 并触发更多样的失效事故.
                  4.5.4    干预点设置的合理性   (RQ4)
                    第  3.4  节我们介绍了设置干预点的方法. 由于数据非常不均衡, 我们要兼顾预测双侧的召回率, 期望在尽可能
                 放行非惰性序列的前提下, 减少惰性序列的放行执行, 以减少测试资源消耗. 具体地, 在每个测试配置中, 分别以其
                 最大时间步长     M (见表  1) 的  20% (亦即  20%M) 为起点, 每增加  20%  为间隔, 共设  5  个观测点. 图  6  详细展示了不
                 同干预点   InertS-Pred@IIFuzzing  预测双侧的召回率.


                                                            R nis  R is
                   1.1                   1.1                   1.1                   1.1
                   0.8                   0.8                   0.8                   0.8
                  召回率  0.5              召回率  0.5              召回率  0.5              召回率  0.5

                   0.2                   0.2                   0.2                   0.2
                  −0.1                  −0.1                  −0.1                  −0.1
                      20  40  60  80  100   20  40  60  80  100   20  40  60  80  100   20  40  60  80  100
                          干预点 (%)               干预点 (%)               干预点 (%)               干预点 (%)
                         (a) RL+CARLA          (c) IL+CARLA        (b) RL+BipedalWalker  (d) MARL+CoopNavi
                                           图 6 IIFuzzing  不同干预点的惰性预测召回率

                    由于   4  个测试配置的差异很大, 我们可以看到惰性序列预测性能随时间进展并没有一致性的趋势, 按照第
                 3.4  节介绍的方法, 基于实验结果, 红圈标记的点是本方法选择的干预点, 其中                   RL+BipedalWalker, 双侧召回率平均
                 值最高的点在     80%  处为  55%), 但在  20%  处双侧的平均召回率为      51.4%, 相差在  5%  以内, 所以, 我们选择靠前的
                 时间点   20%  处作为干预点, 其他    3  个测试配置中, 都是选择的双侧平均最高点.
                    为了验证干预点的合理性, 我们分析在干预点的状态序列分布. 对所有执行到干预点的测试序列, 基于第                                 3.3
                 节介绍的聚类模型做聚类, 然后将聚类后的分布向量输入算法                    t-SNE [48] 做降维处理并可视化展示在二维平面, 图        7
                 分别展示了各测试配置中的分布情况. 其中不同的颜色表示聚类后的不同类簇, 特别地, 灰色表示离群点, 亦即认
                 为可能会触发失效事故的状态簇; 圆点表示最终未触发失效事故的测试序列, 即惰性序列, 三角表示最终实际触发
                 失效事故的测试序列, 即非惰性序列. 我们可以看到: 1) 在干预点, 大多数的测试序列为惰性序列; 2) 惰性状态序
                 列通常分布在簇中心的高密度区域, 而非惰性序列则分布在外围的低密度区域; 3) IIFuzzing                       识别出的离群点      (即
                 灰色标记) 确实可以定位到分布于外围的低密度区域, 说明干预点的设置是合理的.


                                        80                   40
                   75                   60                                         40
                   50                   40                   20
                   25                   20                                         20
                                         0                    0
                   0                   −20                                          0
                  −25                  −40                  −20                   −20
                  −50                  −60                                        −40
                  −75                  −80                  −40
                   −100  −75  −50  −25  0  25  50  75  −80  −60  −40  −20  0  20  40  60  80  −40  −30  −20  −10  0  10  20  30  40  −40  −20  0  20  40  60
                         (a) RL+CARLA         (b) IL+CARLA       (c) RL+BipedalWalker  (d) MARL+CoopNavi
                        (干预点=40%M)           (干预点=20%M)            (干预点=20%M)            (干预点=20%M)
                                             图 7 在干预点的状态序列密度聚类分布

                    问题  4  评价结论: 测试状态序列在干预点已经呈现比较清晰的密度分布, 惰性和非惰性序列分布于明显不同
                 的聚类, IIFuzzing  干预点的选择方法是合理的.
   254   255   256   257   258   259   260   261   262   263   264