CN117171010A - 模糊测试用例生成方法、装置、设备及介质 - Google Patents

模糊测试用例生成方法、装置、设备及介质 Download PDF

Info

Publication number
CN117171010A
CN117171010A CN202310955244.4A CN202310955244A CN117171010A CN 117171010 A CN117171010 A CN 117171010A CN 202310955244 A CN202310955244 A CN 202310955244A CN 117171010 A CN117171010 A CN 117171010A
Authority
CN
China
Prior art keywords
test case
vector
fuzzy
cases
test
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310955244.4A
Other languages
English (en)
Inventor
王文
李泽儒
李沁园
刘煦健
孙歆
汪自翔
秦中元
王译锋
侯虎成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Southeast University
Electric Power Research Institute of State Grid Zhejiang Electric Power Co Ltd
Original Assignee
Southeast University
Electric Power Research Institute of State Grid Zhejiang Electric Power Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Southeast University, Electric Power Research Institute of State Grid Zhejiang Electric Power Co Ltd filed Critical Southeast University
Priority to CN202310955244.4A priority Critical patent/CN117171010A/zh
Publication of CN117171010A publication Critical patent/CN117171010A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明公开了一种模糊测试用例生成方法,涉及深度学习技术领域,用于解决现有训练样本数量少,长短不一,存在着较多低质量、内容重复的问题,该方法包括以下步骤:通过模糊测试工具实时生成初始模糊测试用例;通过聚类对所述测试用例进行数据筛选;将筛选后的所述测试用例读取为二进制流,并进行归一化处理得到测试用例向量;对所述测试用例向量进行线性插值处理,得到合成向量;将所述测试用例向量及所述合成向量输入生成对抗网络进行模型训练并生成多样化模糊测试用例。本发明还公开了一种模糊测试用例生成装置、电子设备和计算机存储介质。本发明通过对对测试用例向量化,并进行线性插值处理,进而提高了训练样本的质量和数量。

Description

模糊测试用例生成方法、装置、设备及介质
技术领域
本发明涉及深度学习技术领域,尤其涉及一种面向二进制程序的模糊测试用例生成方法、装置、设备及介质。
背景技术
模糊测试(Fuzz Testing)是一种自动化的软件测试技术,其核心是自动或半自动的生成随机数据输入到应用程序中,同时监控程序的异常情况,如崩溃、代码断言失败,以此发现可能的程序错误,如内存泄漏。
现有的模糊测试用例基于生成模型得到,不能准确地生成样本的格式结构,对于高度结构化的输入种子,生成的样本在尝试还原其格式结构时,在许多字节上易出现偏差。此外,目前主流的使用生成对抗网络的生成方法,在训练生成结构复杂的样本时,容易出现不收敛的情况。再次,当进行深度学习模型训练时,所使用的训练集大多来源于真实场景收集与模糊工具变异生成,此类训练样本往往数量较少,长短不一,存在着较多低质量、内容重复的样本,严重影响着模型的训练效果。
发明内容
为了克服现有技术的不足,本发明的目的之一在于提供一种模糊测试用例生成方法,其通过对测试用例向量化,并进行线性插值处理,进而获取多样化的测试用例。
本发明的目的之一采用以下技术方案实现:
一种模糊测试用例生成方法,包括以下步骤:
通过模糊测试工具生成初始模糊测试用例;
通过聚类对所述测试用例进行数据筛选;
将筛选后的所述测试用例读取为二进制流,并进行归一化处理得到测试用例向量;
对所述测试用例向量进行线性插值处理,得到合成向量;
将所述测试用例向量及所述合成向量输入生成对抗网络进行模型训练并生成多样化模糊测试用例。
进一步地,所述模糊测试工具为AFL++。
进一步地,所述聚类为kmeans聚类。
进一步地,通过聚类对所述测试用例进行数据筛选,包括:
计算所述初始模糊测试用例字节数;
通过kmeans方法对所述测试用例字节数进行聚类,得到聚类簇;
选取所述聚类簇中测试用例数最多的簇C,若簇C的用例数量小于总用例数量的70%,则令聚类中心数减1,重新聚类直到簇C用例数大于等于总用例数量的70%;
丢弃其余用例,仅保留簇C。
进一步地,将筛选后的所述测试用例读取为二进制流,并进行归一化处理得到测试用例向量,包括:
将筛选后的所述测试用例读取为二进制流,并记录所述测试用例中最大字节长度L;
通过补0的方式将所有所述二进制流长度填充至L;
将所述二进制流中每4比特转化为16进制;
归一化得到测试用例向量xi,i∈(1,N),其中,N为用例向量的总数。
进一步地,对所述测试用例向量进行线性插值处理,得到合成向量,包括:
选取归一化得到的测试用例向量及随机测试用例向量,进行线性插值,得到合成向量。
进一步地,所述生成对抗网络包括编码器、生成器及判别器;
所述编码器包括1个用于隐向量映射的全连接层、2个堆叠的transformer网络块及3个用于采样的全连接层;
所述生成器包括1个用于隐向量映射的全连接层、2个堆叠的transformer网络块、2个用于生成空间映射的全连接层及“Sigmoid”激活函数层;
所述判别器包括5个交替连接的全连接层、归一化(LayerNormalization)层及用于计算输出的全连接层。
本发明的目的之二在于提供一种模糊测试用例生成装置,其通过对测试用例向量化,进而结合生成对抗网络输出多样化测试用例。
本发明的目的之二采用以下技术方案实现:
一种模糊测试用例生成装置,其包括:
用例生成模块,用于通过模糊测试工具生成初始模糊测试用例;
数据处理模块,用于通过聚类对所述测试用例进行数据筛选;将筛选后的所述测试用例读取为二进制流,并进行归一化处理得到测试用例向量;并对所述测试用例向量进行线性插值处理,得到合成向量;
结果输出模块,用于将所述测试用例向量及所述合成向量输入生成对抗网络进行模型训练并生成多样化模糊测试用例。
本发明的目的之三在于提供执行发明目的之一的电子设备,其包括处理器、存储介质以及计算机程序,所述计算机程序存储于存储介质中,所述计算机程序被处理器执行时实现上述的模糊测试用例生成方法。
本发明的目的之四在于提供存储发明目的之一的计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的模糊测试用例生成方法。
相比现有技术,本发明的有益效果在于:
本发明提出一种面向二进制程序的模糊测试用例生成方法,可实时收集测试用例,本发明将生成对抗网络的训练和生成过程同步进行,实现多样化测试用例的持续生成;生成对抗网络的训练集和输入数据结合本发明数据筛选及合成向量等数据与数理,一方面解决了深度学习模型易受到小数量、大差异的“异常样本”的干扰的问题,另一方面,可以丰富测试样本的多样性,扩充测试样本的变异点,有利于深度学习模型学习到更大的输入空间,可以提升深度学习模型的训练稳定性。不仅增加了训练样本的质量和数量,还使测试用例生成精度高、格式保留完整。
附图说明
图1是实施例一模糊测试用例生成方法的流程图;
图2是实施例一聚类方法的流程图;
图3是实施例一的生成对抗网络结构示意图;
图4是实施例二的模糊测试用例生成装置的结构框图;
图5是实施例三的电子设备的结构框图。
具体实施方式
以下将结合附图,对本发明进行更为详细的描述,需要说明的是,以下参照附图对本发明进行的描述仅是示意性的,而非限制性的。各个不同实施例之间可以进行相互组合,以构成未在以下描述中示出的其他实施例。
实施例一
实施例一提供了一种模糊测试用例生成方法,旨在神经网络分析模糊测试用例格式,生成与之相似的用例,提高测试效率。
现有的对模糊测试样本生成的研究在模糊测试样本预处理中主要采用工具生成初始模糊测试用例,后读取为二进制流并归一化。本实施例的方法会在其基础上添加数据筛选、数据增加步骤以优化后续测试样本生成效果。
数据筛选的目的,是因为深度学习模型对于小数量、差异大的“异常样本”十分敏感,而这些样本在模糊测试工具的生成结果中无法避免地会出现,本实施例采用Kmeans聚类这一种高效方法,可以去除大部分“异常样本”。
进行数据增强主要可以丰富测试样本的多样性,进行线性插值后生成的测试用例添加后,有利于深度学习模型学习到测试用例更大的输入空间,可以提升深度学习模型的训练稳定性。
本实施例的方法原理在于,使用工具生成输入用例,对生成的用例通过数据筛选与数据增强进行预处理,得到适合深度网络输入的向量化数据;再使用基于编码-解码结构的生成对抗网络进行训练,结合该网络的自注意力机制,自动化地分析输入用例的结构信息,并生成测试用例。
请参照图1所示,一种模糊测试用例生成方法,其特征在于,包括以下步骤:
S1、通过模糊测试工具实时生成初始模糊测试用例;
本实施例中模糊测试工具选择为传统模糊测试工具的整合包AFL++,以尽可能的增加测试用例生成的丰富度。当然,也可以使用其他模糊测试工具。
S2、通过聚类对所述测试用例进行数据筛选;
请参照图2所示,S2具体包括:
S21、计算所述初始模糊测试用例字节数;
S21即计算所有测试用例的字节数,以便于后续的聚类。
S22、通过kmeans方法对所述测试用例字节数进行聚类,得到聚类簇;
例如,将聚类中心数用k表示,初始值取5。
S23、选取所述聚类簇中测试用例数最多的簇C,若簇C的用例数量小于总用例数量的70%,则令聚类中心数减1,重新聚类直到簇C用例数大于等于总用例数量的70%;
S24、丢弃其余用例,仅保留簇C。
上述kmeans聚类方法属于常见的聚类方法,因此本实施例不对其原理进行赘述。选用kmeans聚类方法的原因在于kmeans实现简单,收敛速度块,结果相较于不进行聚类更具优势。
S3、将筛选后的所述测试用例读取为二进制流,并进行归一化处理得到测试用例向量;
S3具体包括:
将筛选后的所述测试用例读取为二进制流,并记录所述测试用例中最大字节长度L;
通过补0的方式将所有所述二进制流长度填充至L;
将所述二进制流中每4比特转化为16进制;
归一化得到测试用例向量xi,i∈(1,N),其中,N为用例向量的总数。
上述归一化指的是将16进制数除以15。
S4、对所述测试用例向量进行线性插值处理,得到合成向量;
S4包括:
选取归一化得到的测试用例向量及随机测试用例向量,进行线性插值,得到合成向量;即选取用例向量xi,随机选取另一个用例向量xj与其进行线性插值:xn=λxi+(1-λ)xj,得到合成向量xn,λ默认取0.2,共生成N个合成向量;
得到上述合成向量后,训练集的生成包括:将所述合成向量与所示测试用例向量合并得到生成对抗网络训练集;即将合成向量与用例向量一起打乱,组成训练集,训练集总数为2N。
S5、将所述测试用例向量及所述合成向量输入生成对抗网络进行模型训练并生成多样化模糊测试用例。
S5还包括:先判断是否存在已经构建好的生成对抗网络模型,若存在则进行用例生成,否则进行模型训练。生成对抗网络模型请参照图3所示,本实施例改进了网络结构,使模型可以更适应模糊样本的文本特性,生成出更符合原始用例结构,更容易通过待测程序格式检查的用例,从而提高模糊测试工具对有效用例生成的效率,更快发现漏洞。
用例生成包括:
读取曾经构建好的生成对抗网络模型,分别设置子模型损失函数:
编码器损失函数:
生成器损失函数:
判别器损失函数:
其中代表损失函数,z为随机噪声,x为真实用例,/>为生成器生成的虚假用例,μ和∈为编码器输出的用例均值与方差,/>代表计算均值,z~Pz(z)指从隐向量分布中采样,x~Pdata指从原始测试样本分布中采样,D代表判别器输出,G代表生成器输出。
上述模型的训练过程包括:
构建编码器,编码器由1个用于隐向量映射的全连接层;2个堆叠的transformer网络块(后简称trans块)和3个用于采样的全连接层构成;
构建生成器,生成器由1个用于隐向量映射的全连接层;2个堆叠的trans块,2个用于生成空间映射的全连接层和“Sigmoid”激活函数层构成;
构建判别器,判别器由5个交替连接的全连接层和层归一化层(LayerNormalization),以及用于计算输出的全连接层构成。
上述的trans块由1个使用残差连接的自注意力层、1个层归一化层和1个使用残差连接的全连接层构成。
分别设置子模型损失函数。
上述的模型训练结束后悔进行保存,以便于下次的读取和使用。
需要说明的是,当生成测试用例后,还包括将测试用例不断地添加到模糊测试工具的用例库中,模糊测试工具将自行从中选取优质用例作为输入,来进行模糊测试。重复进行S1-S5直至模糊测试结果满足要求。例如满足漏洞发现数足够多或超过指定运行时间。同时,模型不断被优化以拟合最新的测试样本。
实施例二
实施例二公开了一种对应上述实施例的模糊测试用例生成方法对应的装置,为上述实施例的虚拟装置结构,请参照图4所示,包括:
用例生成模块310,用于通过模糊测试工具实时生成初始模糊测试用例;
数据处理模块320,用于通过聚类对所述测试用例进行数据筛选;将筛选后的所述测试用例读取为二进制流,并进行归一化处理得到测试用例向量;并对所述测试用例向量进行线性插值处理,得到合成向量;
结果输出模块330,用于将所述测试用例向量及所述合成向量输入生成对抗网络进行模型训练并生成多样化模糊测试用例。
优选地,所述模糊测试工具为AFL++。
优选地,所述聚类为kmeans聚类。
优选地,将筛选后的所述测试用例读取为二进制流,并进行归一化处理得到测试用例向量,包括:
将筛选后的所述测试用例读取为二进制流,并记录所述测试用例中最大字节长度L;
通过补0的方式将所有所述二进制流长度填充至L;
将所述二进制流中每4比特转化为16进制;
归一化得到测试用例向量xi,i∈(1,N),其中,N为用例向量的总数。
优选地,所述生成对抗网络包括编码器、生成器及判别器;
所述编码器包括1个用于隐向量映射的全连接层、2个堆叠的transformer网络块及3个用于采样的全连接层;
所述生成器包括1个用于隐向量映射的全连接层、2个堆叠的transformer网络块、2个用于生成空间映射的全连接层及“Sigmoid”激活函数层;
所述判别器包括5个交替连接的全连接层、归一化(LayerNormalization)层及用于计算输出的全连接层。
实施例三
图5为本发明实施例三提供的一种电子设备的结构示意图,如图5所示,该电子设备包括处理器410、存储器420、输入装置430和输出装置440;计算机设备中处理器410的数量可以是一个或多个,图5中以一个处理器410为例;电子设备中的处理器410、存储器420、输入装置430和输出装置440可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储器420作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的模糊测试用例生成方法对应的程序指令/模块。处理器410通过运行存储在存储器420中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述实施例一的模糊测试用例生成方法。
存储器420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器420可进一步包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置430可用于接收输入的用户身份信息、测试用例信息等。输出装置440可包括显示屏等显示设备。
实施例四
本发明实施例四还提供一种包含计算机可执行指令的存储介质,该存储介质可用于计算机执行模糊测试用例生成方法,该方法包括:
通过模糊测试工具实时生成初始模糊测试用例;
通过聚类对所述测试用例进行数据筛选;
将筛选后的所述测试用例读取为二进制流,并进行归一化处理得到测试用例向量;
对所述测试用例向量进行线性插值处理,得到合成向量;
将所述测试用例向量及所述合成向量输入生成对抗网络进行模型训练并生成多样化模糊测试用例。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的模糊测试用例生成方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台电子设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述基于模糊测试用例生成方法装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。

Claims (10)

1.一种模糊测试用例生成方法,其特征在于,包括以下步骤:
通过模糊测试工具实时生成初始模糊测试用例;
通过聚类对所述测试用例进行数据筛选;
将筛选后的所述测试用例读取为二进制流,并进行归一化处理得到测试用例向量;
对所述测试用例向量进行线性插值处理,得到合成向量;
将所述测试用例向量及所述合成向量输入生成对抗网络进行模型训练并生成多样化模糊测试用例。
2.如权利要求1所述的模糊测试用例生成方法,其特征在于,所述模糊测试工具为AFL++。
3.如权利要求1所述的模糊测试用例生成方法,其特征在于,所述聚类为kmeans聚类。
4.如权利要求3所述的模糊测试用例生成方法,其特征在于,通过聚类对所述测试用例进行数据筛选,包括:
计算所述初始模糊测试用例字节数;
通过kmeans方法对所述测试用例字节数进行聚类,得到聚类簇;
选取所述聚类簇中测试用例数最多的簇C,若簇C的用例数量小于总用例数量的70%,则令聚类中心数减1,重新聚类直到簇C用例数大于等于总用例数量的70%;
丢弃其余用例,仅保留簇C。
5.如权利要求1所述的模糊测试用例生成方法,其特征在于,将筛选后的所述测试用例读取为二进制流,并进行归一化处理得到测试用例向量,包括:
将筛选后的所述测试用例读取为二进制流,并记录所述测试用例中最大字节长度L;
通过补0的方式将所有所述二进制流长度填充至L;
将所述二进制流中每4比特转化为16进制;
归一化得到测试用例向量xi,i∈(1,N),其中,N为用例向量的总数。
6.如权利要求1或5所述的模糊测试用例生成方法,其特征在于,对所述测试用例向量进行线性插值处理,得到合成向量,包括:
选取归一化得到的测试用例向量及随机测试用例向量,进行线性插值,得到合成向量。
7.如权利要求1所述的模糊测试用例生成方法,其特征在于,所述生成对抗网络包括编码器、生成器及判别器;
所述编码器包括1个用于隐向量映射的全连接层、2个堆叠的transformer网络块及3个用于采样的全连接层;
所述生成器包括1个用于隐向量映射的全连接层、2个堆叠的transformer网络块、2个用于生成空间映射的全连接层及“Sigmoid”激活函数层;
所述判别器包括5个交替连接的全连接层、归一化层及用于计算输出的全连接层。
8.一种模糊测试用例生成装置,其特征在于,其包括:
用例生成模块,用于通过模糊测试工具实时生成初始模糊测试用例;
数据处理模块,用于通过聚类对所述测试用例进行数据筛选;将筛选后的所述测试用例读取为二进制流,并进行归一化处理得到测试用例向量;并对所述测试用例向量进行线性插值处理,得到合成向量;
结果输出模块,用于将所述测试用例向量及所述合成向量输入生成对抗网络进行模型训练并生成多样化模糊测试用例。
9.一种电子设备,其包括处理器、存储介质以及计算机程序,所述计算机程序存储于存储介质中,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的模糊测试用例生成方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的模糊测试用例生成方法。
CN202310955244.4A 2023-07-31 2023-07-31 模糊测试用例生成方法、装置、设备及介质 Pending CN117171010A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310955244.4A CN117171010A (zh) 2023-07-31 2023-07-31 模糊测试用例生成方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310955244.4A CN117171010A (zh) 2023-07-31 2023-07-31 模糊测试用例生成方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN117171010A true CN117171010A (zh) 2023-12-05

Family

ID=88938316

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310955244.4A Pending CN117171010A (zh) 2023-07-31 2023-07-31 模糊测试用例生成方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN117171010A (zh)

Similar Documents

Publication Publication Date Title
US11915104B2 (en) Normalizing text attributes for machine learning models
CN111932445A (zh) 对风格迁移网络的压缩方法及风格迁移方法、装置和系统
CN111611488B (zh) 基于人工智能的信息推荐方法、装置、电子设备
CN113435509A (zh) 基于元学习的小样本场景分类识别方法及系统
CN115965058B (zh) 神经网络训练方法、实体信息分类方法、装置及存储介质
CN111967964B (zh) 银行客户端网点的智能推荐方法及装置
CN111881972B (zh) 一种黑产用户识别方法及装置、服务器、存储介质
CN113052225A (zh) 基于聚类算法和时序关联规则的报警收敛方法及装置
CN113704389A (zh) 一种数据评估方法、装置、计算机设备及存储介质
CN117315331A (zh) 一种基于gnn和lstm的动态图异常检测方法及系统
CN117789754A (zh) 一种音频事件检测模型生成方法、装置、设备及存储介质
CN116861187A (zh) 一种岩性识别模型训练方法、岩性识别方法及相关装置
CN117171010A (zh) 模糊测试用例生成方法、装置、设备及介质
CN115906927A (zh) 基于人工智能的数据访问分析方法、系统及云平台
CN116089713A (zh) 推荐模型训练方法、推荐方法、装置及计算机设备
CN115982634A (zh) 应用程序分类方法、装置、电子设备及计算机程序产品
CN111654853B (zh) 一种基于用户信息的数据分析方法
CN102117380B (zh) 简化基于矩阵的Boosting算法的系统及方法
CN114678114A (zh) 应用于智慧医疗的大数据挖掘评估方法及大数据挖掘系统
CN109308565B (zh) 人群绩效等级识别方法、装置、存储介质及计算机设备
CN113657501A (zh) 模型自适应训练方法、装置、设备、介质及程序产品
CN110968690B (zh) 词语的聚类划分方法和装置、设备以及存储介质
CN113344023A (zh) 一种代码推荐方法、装置及系统
CN115587297A (zh) 构建图像识别模型和图像识别的方法、装置、设备及介质
CN112613521A (zh) 基于数据转换的多层次数据分析系统及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination