Page 252 - 《软件学报》2025年第10期
P. 252
吴泊逾 等: 干扰惰性序列的连续决策模型模糊测试 4649
等任务中得到应用.
3 干扰惰性序列的模糊测试方法——IIFuzzing
模糊测试虽然通过种子变异力求触发更多的缺陷或者失效事故, 但由于根本上是黑盒测试, 对于连续决策算
法这类决策过程长, 环境不确定性很强的智能模型, 初始状态很难影响到后续的决策序列, 其探索失效事故的能力
是非常有限的, 实践中通常大多数的测试序列都没有触发失效事故.
为了解决连续决策智能算法在模糊测试时, 未考虑 SDM 决策过程内部的状态, 导致测试耗时且触发失效事
故效能不够的问题, 本文提出了通过干预连续决策过程, 预测并中止惰性测试序列的方法——IIFuzzing. 方法的框
架如图 2 所示. IIFuzzing 采用经典的模糊测试范式, 包括 4 个主要组件: 1) 仿真测试组件, 基于 MDP 构建仿真测
试环境, 并执行测试, 触发事故或执行完一次任务为一轮测试. 2) 模糊测试框架, 包括初始状态生成器和反馈分析
算法, 其中初始状态生成器从种子库选择初始状态, 并进行种子变异. 反馈分析算法建立序列评价方法, 识别具有
触发失效事故潜力的状态加入种子状态库, 回馈给算法模型学习. 3) 惰性序列预测模型, 基于历史数据构建惰性序
列预测模型, 预测并中止惰性序列执行. 4) 干预点设置, 基于实验方法设置合理的干预点, 在控制风险的前提下尽
量减少测试资源消耗.
中止并进入下一轮测试
初始种子
集合 初始状态
State s 0
初始状态生成器 被测智能算法 (SDM-Agent)
Y
N
惰性序列? 预测情性序列
新状态 多轮测试 一个决 状态 State s t+1
种子 动作 Action a t 策序列
奖励 Reward r t+1
聚类状态序列
N
状态序列{s 1 ,s 2 ,...,s n } 状态 Y 状态序列
反馈分析 State s t s t+1 干预点? 归一化状态序列
累计奖励 r State{s 1 ,s 2 ,...,s t+1 }
测试环境
惰性序列预测模型 (InertS-Pred)
图 2 IIFuzzing 方法的框架
3.1 仿真测试组件
连续决策智能算法的核心是将算法 (SDM-Agent) 和需要交互的环境建模为 MDP, 并利用强化学习、模仿学
习等算法基于任务需求学习出最优的决策策略, IIFuzzing 构建待测算法和相关环境的交互仿真组件, 给定测试的
初始状态, 被测智能算法根据预定策略和逐步优化的策略执行动作, 进入下一状态并获得奖励, 驱动任务执行直到
发生失效事故 (如碰撞)、完成任务或者执行最大时间步 M. 由于不同任务的耗时不同, M 是 IIFuzzing 的超参数,
在测试实践中, 根据测试资源、环境、任务耗时等, 由测试专家根据经验确定.
3.2 模糊测试框架
IIFuzzing 基于通用的模糊测试框架, 主要包括初始状态种子选择、种子变异和反馈分析.
3.2.1 初始状态生成器
初始状态生成器的目的是通过种子选择和变异为测试生成尽可能触发失效事故的初始状态. IIFuzzing 建立和
维护一个种子语料库, 语料库的初始值通过在 MDP 的合法状态空间中随机采样初始状态获得, 也可以是历史的
种子库. 在测试过程中, 通过反馈分析, 还可以增加新的种子. 借鉴传统软件模糊测试中的“种子能量” (表征该种子
[9]
的变异次数, 能量越高表明该种子变异次数越多, 反之变异次数越少) [34] 的思想, 我们利用“灵敏度 (Sensitivity)” 基
于历史数据评估各测试序列的初始状态揭示失效事故的可能性. 具体地, 向初始状态 s 0 (种子) 添加随机扰动 ∆s,

