[发明专利]基于神经网络的模糊测试方法及计算机可读存储介质有效
申请号: | 202011459487.1 | 申请日: | 2020-12-11 |
公开(公告)号: | CN112463638B | 公开(公告)日: | 2022-09-20 |
发明(设计)人: | 肖喜;李毅;夏树涛;郑海涛;江勇;陆孺牛 | 申请(专利权)人: | 清华大学深圳国际研究生院 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/04;G06N3/08 |
代理公司: | 深圳新创友知识产权代理有限公司 44223 | 代理人: | 孟学英 |
地址: | 518055 广东省深圳市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 神经网络 模糊 测试 方法 计算机 可读 存储 介质 | ||
1.一种基于神经网络的模糊测试方法,其特征在于,包括如下步骤:
S1:改进模糊测试工具中的边的哈希计算过程使得每条所述边的哈希值不同,得到改进后的模糊测试工具;
S2:基于所述改进后的模糊测试工具生成的覆盖信息作为训练集对神经网络进行训练;
S3:依据临近边信息挑选出测试用例,程序边对,利用训练完成的所述神经网络计算出输出神经元对输入的梯度,并根据所述梯度的绝对值的大小确定输入中的关键字节,从而对关键字节进行变异生成测试用例集合;
S4:使用所述测试用例集进行模糊测试;
步骤S1中,哈希计算时,为每一个到达块选定一系列参数,而不是每一条边;具体如下:
对于只有一个前驱的基本块,直接为这条边分配一个与其他边的哈希值不冲突的数值,并存储在该边的到达块中,而不用使用Fmul公式为边计算一个哈希值;
对于有多个前驱的基本块,动态地计算基本块中的参数值;在这一计算过程,将那些使用Fmul公式能够计算出唯一哈希值的基本块归为已解决的基本块集合中,否则,归为未解决的基本块集合;
对于未解决集合中的基本块,为其边A→B引入另一个哈希算法:
Fhash(cur,prev):hash_table_lookup(cur,prev)
其中,prev和cur分别是基本块A和B的编号值,通过该哈希算法构建一个哈希表,对所有以未解决的基本块结尾的边使用不同于其他边的唯一哈希值。
2.如权利要求1所述的基于神经网络的模糊测试方法,其特征在于,所述神经网络是前向全连接神经网络,采用所述前向全连接神经网络对程序分支行为进行近似。
3.如权利要求2所述的基于神经网络的模糊测试方法,其特征在于,采用了基于梯度的搜索变异模式对关键字节进行变异,具体包括:
S31:依据所述梯度的绝对值降序排列输入中的字节;
S32:将所述字节划分成多个组,同一组中的字节在变异阶段一同变异;对于所述组中的字节数量从2开始,然后指数增长该字节数量;在执行过程中,进行多轮迭代,每轮迭代依据每个字节对应梯度的符号选定变异方向,每次变异的步长为1。
4.如权利要求1-3任一所述的基于神经网络的模糊测试方法,其特征在于,还包括:
S5:在所述模糊测试的过程中,所述神经网络的行为与预期行为不匹配时,对所述神经网络进行精炼;
所述精炼包括:当前训练集中能触发程序新分支的种子先被保留,在新的所述测试用例生成后,识别出能达到新的程序覆盖的测试用例,将所述测试用例与保留的种子合并形成新的训练集;
所述神经网络根据所述新的训练集重新训练,学习新的程序状态,更新网络结构。
5.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-4任一所述方法的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学深圳国际研究生院,未经清华大学深圳国际研究生院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011459487.1/1.html,转载请声明来源钻瓜专利网。