一种制造技术

技术编号:39856556 阅读:8 留言:0更新日期:2023-12-30 12:54
本发明专利技术公开了一种

【技术实现步骤摘要】
一种WAV测试用例生成方法


[0001]本专利技术属于模糊测试
,具体涉及一种
WAV
测试用例生成方法


技术介绍

[0002]模糊测试解决了人工测试代码带来的复杂低效的问题,其自动化的特点令其成为漏洞挖掘的首选技术

测试用例的质量决定了模糊测试的质量,所以测试用例生成技术是模糊测试的重要一环

[0003]目前对于结构化测试用例
WAV
的模糊测试,具有代表性的技术分别是
Learn&Fuzz、Smartseed

LangFuzz
;其中
Learn&Fuzz
使用循环神经网络
(Recursive Neural Network,RNN)
从给定的大型
WAV
语料库中学习结构化测试用例的语法和语义,最后实现
WAV
生成模型以生成足量测试用例

但生成的测试用例质量不佳,部分测试用例出现语法错误导致在程序的语法分析阶段就被过滤丢弃,降低了模糊测试的代码覆盖率;
Smartseed
构建生成模型来产生正确的测试用例

先用模糊测试工具
AFL
对程序进行模糊测试,并将可以引发唯一崩溃或者新路径的输入文件作为训练的数据

为了处理具有不固定格式或不固定大小的文件,把原始训练数据编码为通用矩阵

然后利用这些矩阵构建基于
Wasserstein
生成模型

利用生成模型产生新的矩阵,最后把矩阵转换为测试用例

在代码覆盖率实测时,该框架在简单的结构化文件
MP3
上取得了较好的效果,但对于结构较为复杂的
WAV
文件效果一般;
LangFuzz
在应对高结构化的测试用例时,使用用户给定的语法解析器处理测试用例,将测试用例切片为程序非终结符组成的块

在变异时该工具使用给定的解析器处理单个测试用例文件,用类型相似的非终结符块代替目标测试用例中的代码块

最终解决变异带来的文件结构可能会被破坏等问题

但生成的测试用例在实践中只提高了
10
%左右的代码覆盖率;综上所述,在应对
WAV
格式的测试用例时,均存在经模糊测试变异后语法质量差或者代码覆盖率不高等缺点


技术实现思路

[0004]本专利技术所要解决的技术问题便是针对上述现有技术的不足,提供一种
WAV
测试用例生成方法,它能够在模糊测试中有效提高语法格式质量,并且有较好的代码覆盖率

[0005]本专利技术所采用的技术方案是:一种
WAV
测试用例生成方法,包括以下步骤:
[0006](1)
构建
WAV
种子文件队列和模板文件;
[0007](2)

WAV
种子文件队列中随机选取一个
WAV
文件,并根据模板文件将
WAV
文件按照其文件结构划分为多个文件块,并将多个文件块拼接成树形结构;
[0008](3)
通过变异策略将拼接的树形结构进行变异,得到变异文件,再将变异文件送入被测的目标
WAV
程序中;若未触发新路径,则代表生成的测试用例无效,将测试用例丢弃;若触发新路径,则代表生成的测试用例有效,将测试用例加入到种子文件队列中

[0009]作为优选,步骤
(1)
中构建
WAV
种子文件队列可从
Github
上下载或者网上爬取获得

[0010]作为优选,所述模板文件采用
XML
文件表示,包括
DataModule
模块
、StateModule
模块
、Agent
模块和
Test
模块;其中
DataModule
模块用于定义
WAV
文件的各个结构,包括文件头

文件体

交叉引用表

文件尾;
StateModule
模块用于定义
DataModule
模块的行为;
Agent
模块为监控目标程序执行状态;
Test
模块用于指定使用
StateModel
模块

传送数据的方式

使用
Logger
标签捕获运行的结果

[0011]作为优选,步骤
(2)
中根据模板文件将
WAV
文件按照各部分结构抽象为可用
XML
文件描述的转化文件,再通过
Peach

File Cracker
组件将转化文件按照其文件结构划分成多个文件块

[0012]作为优选,将多个文件块拼接形成树形结构,包括读取每个文件块中的属性,再根据“左兄弟

右孩子”的表示方法将普通树转换为二叉树,得到树形结构

[0013]作为优选,步骤
(3)
中的变异策略包括文件块删除和文件块添加

[0014]作为优选,所述文件块删除为删除树形结构中的某个文件块;具体为,随机挑选出一个起始字节和末尾字节均发生偏移文件块作为删除的目标块,并获取起始字节偏移和末尾字节偏移,然后将目标块之后的内存拷贝至目标块的位置,最后在树形结构上递归删除目标块对应的子树,并根据获取的目标块的起始字节偏移和末尾字节的偏移调整相关文件块的起始字节偏移和末尾字节偏移

[0015]作为优选,所述文件块添加为在树形结构中当前种子文件中的某一块的末尾,添加另一种子文件的同类型文件块;具体为,从当前种子队列中随机挑选一个种子文件作为同类文件块添加的源种子文件,根据文件块头块的类型,从源种子文件中列举出同类型的文件块单链表,再随机挑选出一个尾块,在当前种子文件的缓冲区内腾出文件块头块末尾的内存空间,将尾块数据复制进去,并对种子文件大小进行调整

[0016]本专利技术的有益效果在于:本专利技术生成的
WAV
测试用例,较现有技术生成的测试用例,具有更佳的语法格式质量和更高的代码覆盖率,在目标测试程序
WAVPACK
中,发现代码覆盖率为
67.5


附图说明
[0017]图1为本专利技术的方法流程框图;
[0018]图2为本专利技术模板文件的结构框图;
[0019]图3为本专利技术文件本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种
WAV
测试用例生成方法,其特征在于:包括以下步骤:
(1)
构建
WAV
种子文件队列和模板文件;
(2)

WAV
种子文件队列中随机选取一个
WAV
文件,并根据模板文件将
WAV
文件按照其文件结构划分为多个文件块,并将多个文件块拼接成树形结构;
(3)
通过变异策略将拼接的树形结构进行变异,得到变异文件,再将变异文件送入被测的目标
WAV
程序中;若未触发新路径,则代表生成的测试用例无效,将测试用例丢弃;若触发新路径,则代表生成的测试用例有效,将测试用例加入到种子文件队列中
。2.
根据权利要求1所述的一种
WAV
测试用例生成方法,其特征在于:步骤
(1)
中构建
WAV
种子文件队列可从
Github
上下载或者网上爬取获得
。3.
根据权利要求1所述的一种
WAV
测试用例生成方法,其特征在于:所述模板文件采用
XML
文件表示,包括
DataModule
模块
、StateModule
模块
、Agent
模块和
Test
模块;其中
DataModule
模块用于定义
WAV
文件的各个结构,包括文件头

文件体

交叉引用表

文件尾;
StateModule
模块用于定义
DataModule
模块的行为;
Agent
模块为监控目标程序执行状态;
Test
模块用于指定使用
StateModel
模块

传送数...

【专利技术属性】
技术研发人员:崔艳鹏胡建伟郑星崔博
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1