首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种面向Move语言虚拟机的模糊测试方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:北京航空航天大学

摘要:本发明公开了一种面向Move语言虚拟机的模糊测试方法,属于软件测试技术领域:首先,针对Move语言虚拟机,通过调用接口函数确定目标测试接口;并根据给定的语法规则,手动构建初始测试样例;分别构建目标测试接口需要的两类非字节码参数;然后,将目标测试接口分别与AFL进行对接,对Move语言虚拟机进行模糊测试,收集能够触发目标测试程序出现崩溃和超时的测试样例作为训练数据集;生成对抗网络使用Wasserstein距离作为优化目标,综合考虑WGAN和DCGAN提出的约束条件,得到种子生成模型;使用训练数据集进行训练,得到新的初始测试样例;AFL随机变异产生新的输入测试样例,继续收集崩溃和超时的输入样例优化种子生成模型;本发明提高了模糊测试工具的性能。

主权项:1.一种面向Move语言虚拟机的模糊测试方法,其特征在于,具体步骤如下:步骤一、针对Diem区块链的语言组件Move语言虚拟机,通过调用脚本执行和模块发布两个接口函数,确定目标测试接口;步骤二、根据Move语言给定的语法规则,手动构建初始测试样例,使其满足将语法规则全部覆盖;步骤三、在本地以目录的形式模拟Diem区块链的全局存储,构建目标测试接口需要的实现存储功能的第一类非字节码参数;第一类非字节码参数实现本地存储的步骤如下:步骤301、判断本地存储是否存在编译目录和存储目录,若不存在,则创建相应的目录;如果存在,进入步骤302;步骤302、判断是否选择发布Move语言的标准库函数或和Diem区块链定义的常用模块,如果是,则进入步骤303,否则进入步骤306;步骤303、采用递归操作,将要发布的标准库函数或和常用模块,所依赖的所有模块和资源进行发布;步骤304、判断选择发布内容的源代码目录是否存在,如果是,对源代码目录不再进行重复发布,进入步骤305;否则,采用递归操作,对源代码目录下的所有内容在编译目录下进行发布;步骤305、判断是否选择发布二进制形式,如果是,将源代码目录下的所有文件内容进行编译,并从中筛选出没有发布的模块将其以二进制的形式在编译目录下进行发布,进入步骤306;否则,直接进入步骤306;步骤306、将编译目录下的所有二进制文件反序列化,挑选出其中未发布的模块进行序列化,并且将其以二进制形式发布在存储目录下;步骤四、构建Move语言虚拟机解释运行字节码参数时需要接收的第二类非字节码参数;步骤五、当初始测试样例和目标测试接口的两类非字节码参数全部构建完成之后,将目标测试接口分别与AFL进行对接,并对Move语言虚拟机进行模糊测试,收集能够触发目标测试程序出现崩溃和超时的测试样例;步骤六、对收集到的测试用例进行预处理,作为训练数据集;步骤七、生成对抗网络使用Wasserstein距离作为优化目标,生成器和判别器的结构综合考虑WGAN和DCGAN提出的约束条件,得到种子生成模型;预处理过程如下:基于Wassertein距离,本发明设计的生成对抗网络的损失函数为: Pr表示真实数据的概率分布,Pg表示生成器的概率分布,fwx表示真实数据在判别器中的输出,gθz表示生成器的输出,z表示随机噪声,w表示判别器中的参数,W表示判别器中的所有参数,Prz是随机噪声符合的分布;约束条件如下:1在每次更新了判别器的参数之后,会对判别器的参数进行截取,使其不超过一个[-c,c]的固定范围;2在生成模型中使用小数步长卷积代替池化操作,在判别模型中采用步长卷积代替池化操作;3在生成器和判别器中使用批正则化;4在生成器中,输出层使用sigmoid函数进行激活,除了输出层之外的其余层使用ReLU函数进行激活;5在判别器中,输出层不再采用sigmoid函数进行激活,除输出层之外的其余层都使用带泄漏的ReLU函数进行激活;步骤八、使用训练数据集对种子生成模型进行训练,得到新的初始测试样例;步骤九、AFL通过对新的初始测试样例进行随机变异产生新的输入测试样例,经过Move语言虚拟机执行后,AFL继续收集能够触发目标测试程序出现崩溃和超时的输入样例,返回步骤六,将其作为训练数据继续优化种子生成模型。

全文数据:

权利要求:

百度查询: 北京航空航天大学 一种面向Move语言虚拟机的模糊测试方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。