Page 256 - 《软件学报》2025年第10期
P. 256
吴泊逾 等: 干扰惰性序列的连续决策模型模糊测试 4653
对于 RQ1 的实验, IIFuzzing 和基线方法 (MDPFuzz) 按照相同的标准测试配置, 即每个配置执行 3 次测试, 每
次 12 h [9,46] , 本文将汇报 3 次测试的平均结果.
对于 RQ2 的实验, IIFuzzing 在干预点预测到惰性序列后, 并不中止执行, 而是继续完成该轮 MDP 过程, 这样
我们知道被预测为惰性序列的测试, 后续是否真实触发了失效事故, 以此来评价 IIFuzzing 惰性预测模型 (InertS-
Pred) 的准确性.
对于 RQ3 的实验, 我们首先将 12 h 内所有的状态序列用表示学习模型做归一化表示 (参见第 3.3.1 节), 然后
将得到的表示向量送给高斯混合模型 (Gaussian mixture model, GMM) [47] 去拟合状态序列的分布, 最后, 我们可视
化 GMM 的分布, 通过比较覆盖区域, 来评估 IIFuzzing 和基线方法所执行的测试用例的多样性.
对于 RQ4 的实验, 对每个测试配置, 以其 M/5 作为间隔步长, 设置不同的干预点. 由于主要评价干预点对于惰性
预测准确性的影响, 所以和 RQ2 的实验类似, 实验中在干预点只做预测, 并不中止序列执行, 然后通过实际触发的失
效事故数据计算每个干预点的双侧召回率, 按照第 3.4 节的方法选择干预点, 然后分析在干预点测试状态序列的分布.
4.5 实验结果与分析
4.5.1 IIFuzzing 有效性和效率 (RQ1)
图 3 展示了 IIFuzzing 和基线方法在 4 个测试配置下随时间执行测试序列和触发失效事故的趋势. 可以看出
随时间进展, 在 4 个测试配置下, IIFuzzing 执行测试序列的数量和触发失效事故的数量与基线方法相比明显拉开
距离, 时间越长, 优势越明显.
50 1 200
1 400
40
1 200 40 1 000
30 1 000 30 800
#Crash 20 #Test 800 #Crash #Test 600
20
600
400
400
10 10
200 200
0 0 0 0
0 2 4 6 8 10 12 0 2 4 6 8 10 12 0 2 4 6 8 10 12 0 2 4 6 8 10 12
Time (h) Time (h) Time (h) Time (h)
(a) RL+CARLA (b) IL+CARLA
18
70 6 000 140 000
60 15 120 000
5 000
50 12 100 000
4 000
#Crash 40 #Test 3 000 #Crash 9 #Test 80 000
30
2 000 6 60 000
20 40 000
10 1 000 3 20 000
0 0 0 0
0 2 4 6 8 10 12 0 2 4 6 8 10 12 0 2 4 6 8 10 12 0 2 4 6 8 10 12
Time (h) Time (h) Time (h) Time (h)
(c) RL+BipedalWalker (d) MARL+CoopNavi
MDPFuzz IIFuzzing
图 3 IIFuzzing 和基线方法执行的测试序列和触发失效事故的效率
表 2 给出了 3 次 12 h 执行的测试序列的总数和触发失效事故的平均值, 其中#Test 表示执行的测试序列数,
#Crash 表示触发的失效事故数. 可以看出, IIFuzzing 在 4 个测试配置中, 可以多执行 18.1%–103.8% 的测试序列,

