Page 257 - 《软件学报》2025年第10期
P. 257
4654 软件学报 2025 年第 36 卷第 10 期
并多触发 16.7%–54.5% 的失效事故. 在 MARL+CoopNavi 配置中, IIFuzzing 的优势最为明显, 这是因为该测试配
置中, 失效事故序列的比例非常低, 所以 IIFuzzing 中止不能触发失效事故的惰性序列, 对测试效能的提升就更加
明显. 我们同时也观察到, 在 4 种测试配置中, IIFuzzing 所触发的失效事故的比率并没有明显改变, 这也是一个非
常有意义的结果, 说明 IIFuzzing 并非盲目追求执行更多的测试序列, 而是在遵循被测模型缺陷密度自然属性的前
提下, 尽可能多快好省地揭示那些引发失效事故的缺陷.
表 2 IIFuzzing 和基线方法的测试性能
RL+CARLA IL+CARLA RL+BipedalWalker MARL+CoopNavi
测试方法
#Test #Crash #Test #Crash #Test #Crash #Test #Crash
MDPFuzz 1 117 35 1 023 42 4 806 60 70 664 11
1 491 45 1 208 50 6 143 70 144 016 17
IIFuzzing
(+33.5%) (+28.6%) (+18.1%) (+19.0%) (+27.8%) (+16.7%) (+103.8%) (+54.5%)
图 4 展示了 IIFuzzing 在不同测试配置下找到的独特失效事故的示例. 例如图 4(a) 展示的是在自动驾驶任务
中, 目标车辆在十字路口试图左转, 但由于纵向车道先行右转的 NPC 车辆阻碍了视线, 导致目标车辆未能发现紧
随其后的试图直行的 NPC 车辆, 从而发生了碰撞; 图 4(b) 展示的同样是在自动驾驶任务中, 目标车辆在变道超车
时, 由于相邻车道的两个 NPC 车辆运行速度不稳定, 导致预留的超车空间狭小, 最终导致目标车辆与后车发生碰
撞; 图 4(c) 展示的则是控制双足机器人穿越障碍到达终点的任务, 由于生成的场景包含连续的树桩以及不同大小
的坑, 复杂的场景导致目标智能体摔倒; 图 4(d) 展示的是在合作导航任务中, 3 个目标智能体试图到达目的地时,
由于 NPC 智能体的突然转向导致与其中之一发生碰撞. 上述这些测试场景由于涉及的环境因素 (障碍物、NPC
智能体) 较多, 对目标智能体的挑战性更大, 但往往需要经过多次探索才有可能生成. 相较于 MDPFuzz, IIFuzzing
的工作原理在于尽可能跳过惰性序列 (非失效序列), 而对非惰性序列 (失效序列) 不进行操作, 从而节省测试资源
进行更广的探索. 正因如此 IIFuzzing 在发现失效事故的严重程度上不存在明显差异, 而是在发现失效事故的数量
和多样性上占据明显优势.
目标车辆 NPC 车辆 碰撞 运动轨迹 目标智能体 NPC 智能体 运动轨迹
障碍物 目的地 碰撞 地图边缘
目标智能体
树桩
坑
草地
(a) RL+CARLA (b) IL+CARLA (c) RL+BipedalWalker (d) MARL+CoopNavi
图 4 IIFuzzing 发现的失效事故示例
问题 1 评价结论: IIFuzzing 在同样的测试时间内, 可以执行更多的测试序列, 并触发更多的失效事故. 且其优
势随测试时间增加更加明显.
4.5.2 IIFuzzing 预测惰性状态序列的准确性 (RQ2)
IIFuzzing 的性能关键依赖其预测惰性状态序列的准确性, 从表 1 我们可以看到, 仿真测试中, 能触发失效事故
的测试序列非常稀疏, 数据极不平衡, 只考虑预测模型的单边精确率和召回率是不合适的. 同时, IIFuzzing 的目标
是在尽可能不损失缺陷探测能力的前提下中止惰性序列的执行. 所以, 对于 IIFuzzing 的惰性预测模型 InertS-Pred,
我们首先追求惰性序列预测的准确率, 放宽其召回率. 也就是说宁可放过惰性序列继续执行消耗资源, 也减少误报
带来的中止了有可能触发事故的测试序列执行的风险. 在非惰性序列一侧, InertS-Pred 则期望尽可能高的召回率,
亦即期望非惰性序列不会被提前中止, 以免损害探测失效事故的能力. 表 3 展示了 InertS-Pred@IIFuzzing 的实验
结果. 我们可以看到在 4 个测试配置中, 有 2 测试配置的惰性序列预测准确率都达到了 100%, 其他也在 97% 以
上, 非惰性序列的召回率在 66.7%–100%, 特别在两个强化学习算法中, 可以达到 100% 的惰性序列预测准确率和

