模糊测试用例生成方法及装置

文档序号:32481658发布日期:2022-12-09 23:03阅读:171来源:国知局
模糊测试用例生成方法及装置

1.本发明涉及深度生成网络技术领域,尤其涉及一种模糊测试用例生成方法。


背景技术:

2.模糊测试(fuzzing)技术作为漏洞挖掘最有效的手段之一,近年来一直是众多安全研究人员发现漏洞的首选技术。
3.在传统的模糊测试用例生成工作中,测试用例的格式需要依靠人工分析,费时费力。
4.基于此,现有技术开始通过生成对抗网络技术智能化地从待测程序的真实输入中学习到该程序所接受的用例格式,以减轻模糊测试中测试用例生成的人力负担。
5.但是生成对抗网络在训练时容易遇到训练不稳定、收敛速度慢、生成多样性低的问题;不仅如此,传统的基于生成对抗网络的技术在使用时,只能以随机向量作为输入交给生成器,其测试用例的生成过程难以引导。这些缺点使得生成对抗网络技术用于模糊测试时的性能受到了制约。


技术实现要素:

6.为了克服现有技术的不足,本发明的目的之一在于提供一种模糊测试用例生成方法,通过在传统生成对抗网络的基础上引入编码器和解码器,优化了模型的可引导性和多样性。
7.本发明的目的之一采用以下技术方案实现:
8.一种模糊测试用例生成方法,包括以下步骤:
9.根据原始测试用例,得到训练数据集;
10.构建差分自编码器的生成对抗网络模型;,
11.将所述训练数据集输入所述生成对抗网络模型进行训练,得到训练好的生成对抗网络模型;
12.将所述训练数据集输入训练好的所述生成对抗网络模型生成测试用例。
13.进一步地,根据原始测试用例,得到训练数据集,包括以下步骤:
14.对所述原始测试用例进行基础模糊测试,去除变异用例,得到待转换数据集;
15.将所述待转换数据集归一化为数值向量x;
16.为所述数值向量x匹配提升标签c,将所述数值向量和所述提升标签对应组成所述训练数据集《x,c》,所述提升标签表示对代码覆盖率或异常发现数的提升结果。
17.进一步地,将所述待转换数据集归一化为数值向量x,包括以下步骤:
18.以二进制方式读取所述带转换数据集中的测试用例,记录最大用例字节长度l;
19.为所有所述测试用例添加零字节,使每个所述测试用例的长度都为l;
20.将所述测试用例中每4比特数据转化为16进制,得到整数向量;
21.将所述整数向量归一化得到所述数值向量x。
22.进一步地,所述生成对抗网络模型包括编码器、生成器、解码器、判别器与分类器,其中,所述生成器作为所述生成对抗网络模型的解码器;
23.构建差分自编码器的生成对抗网络模型,包括以下步骤:
24.构建编码器,所述编码器包括1个估计层及2个采样层,所述估计层包括3层全连接层,所述采样层包括2层全连接层;
25.构建解码器、判别器及分类器,所述解码器、所述判别器及所述分类器包括5层全连接层及全连接输出层;
26.加载损失函数,完成所述生成对抗网络的构建。
27.进一步地,所述全连接层之间通过batchnorm进行数据处理,使用leakyrelu作为激活函数;所述全连接输出层的激活函数为sigmoid函数。
28.进一步地,所述损失函数为:
[0029][0030][0031][0032][0033]
其中,x,x
p
分别为真实输入用例、真实用例经编码再解码重构生成用例和由随机编码向量解码生成的测试用例;表示数学期望,pf表示由解码器生成的测试用例所服从的概率分布,d表示判别器的判别结果;为分类器、编码器、解码器和判别器的损失函数;λ
1~4
为损失函数权重;分别为编码器的kl散度、生成器的重构损失、生成器与分类器均值特征匹配损失、生成器与判别器的均值特征匹配损失,计算满足公式:
[0034][0035][0036][0037][0038]
其中,p(z|x)为编码器对输入为x时,输出样本z的分布后验估计;x
p
~pz表示x
p
服从由编码器解码随机特征得到的随机样本分布;表示x
p
服从真实样本经编码器和解
码器处理后的重构样本的分布;x~pr表示x服从真实样本的概率分布;m为神经网络训练的训练批数;fc,fd分别为分类器和判别器对应模型的特征提取映射函数。
[0039]
进一步地,将所述训练数据集输入所述生成对抗网络模型进行训练,包括以下步骤:
[0040]
初始化模型权重;
[0041]
根据分类器损失函数,训练所述分类器;
[0042]
固定所述编码器和所述解码器参数,抽取部分所述训练数据集,生成与抽取数量相同的重构样本及随机样本,对所述判别器进行训练,以所述判别器可识别出真实样本为训练目标;
[0043]
固定所述判别器参数,训练所述编码器和解码器,以所述判别器无法区分真实样本及所述解码器生成的重构样本与随机样本为训练目标;
[0044]
重复进行所述判别器、所述编码器及所述解码器的训练,当所述判别器无法区分所述解码器生成的测试用例和真实用例时,停止训练。
[0045]
进一步地,将所述训练数据集输入训练好的所述生成对抗网络模型生成测试用例,包括:
[0046]
对所述训练数据集中的每个测试用例x,输入所述编码器得到特征向量z,通过所述解码器解码所述特征向量,得到重构测试用例;
[0047]
随机从所述训练数据集中抽取1对测试用例x1、x2,输入所述编码器得到特征向量z1、z2,并线性组合所述特征向量,线性组合满足公式:
[0048]
z1=enc(x1),
[0049]
z2=enc(x2),
[0050]
α~u(0,1),
[0051][0052]
其中,α为服从均匀分布的随机数,通过所述解码器对组合后的特征进行解码,得到组合测试用例;
[0053]
从标准正态分布中采样得到随机数,将所述随机数作为特征向量并输入所述解码器,生成直接测试用例。
[0054]
进一步地,还包括:
[0055]
筛选出相同覆盖率所述测试用例的最小子集,并合并为新测试用例;
[0056]
将所述新测试用例添加至所述模糊测试工具的待变异队列;
[0057]
通过所述模糊测试工具,将所述测试用例及所述新测试用例输入待测程序。
[0058]
本发明的目的之二在于提供一种模糊测试用例生成装置,通过构建差分自编码器,实现测试用例可引导性。
[0059]
本发明的目的之二采用以下技术方案实现:
[0060]
一种模糊测试用例生成装置,其特征在于,其包括:
[0061]
数据集生成模块,用于根据原始测试用例,得到训练数据集;
[0062]
构建模块,用于构建差分自编码器的生成对抗网络模型;将所述训练数据集输入所述生成对抗网络模型进行训练,得到训练好的生成对抗网络模型;
[0063]
生成模块,用于将所述训练数据集输入训练好的所述生成对抗网络模型生成测试
用例。
[0064]
相比现有技术,本发明的有益效果在于:
[0065]
本发明提供了一种基于生成对抗网络的模糊测试用生成方法,能够批量生成与待测程序的真实输入具有相似格式的测试用例,生成的测试用例更多样化,可以减轻传统测试用例生成工作中需要消费大量人力进行人工格式分析的工作。本发明在生成对抗网络的基础上,引入编码器模块,并将生成器复用为解码器,利用编码器在编码时对特征的提取能力,提高生成对抗网络在生成测试用例时的引导能力。本方法所提出的生成对抗网络在训练时稳定性高,使生成对抗网络更易收敛、所生成的测试用例更多样化,能够提高模糊测试的代码覆盖率和异常发现数。
附图说明
[0066]
图1是实施例一的模糊测试用例生成方法的流程图;
[0067]
图2是实施例一的原始测试用例浴池里方法的流程图;
[0068]
图3是实施例一的测试方法的流程图;
[0069]
图4是实施例二的模糊测试用例生成装置的结构框图。
具体实施方式
[0070]
以下将结合附图,对本发明进行更为详细的描述,需要说明的是,以下参照附图对本发明进行的描述仅是示意性的,而非限制性的。各个不同实施例之间可以进行相互组合,以构成未在以下描述中示出的其他实施例。
[0071]
实施例一
[0072]
实施例一提供了一种模糊测试用例生成方法,旨在通过深度生成技术,批量生成与待测程序的真实输入具有相似格式的测试用例,以减轻传统测试用例生成工作中需要消费大量人力进行人工格式分析的工作,在生成对抗网络中加入编码器和解码器,使得模型可以对测试用例进行引导。
[0073]
使用原始的生成对抗网络(gan)神经网络时,生成过程需要给生成器网络一个随机数,然后获取到生成的内容,这一步的缺陷在于无法知道输入的随机数会得到什么样的生成结果。当切换为vae-gan后,交给生成器子网络的向量从随机数变为了特征向量,也叫做隐向量,特征向量具有实际意义,可通过调整特征向量进而引导生成所需要的用例。换言之,vae-gan模型的引用使得安全测试人员通过可引导的方式生成测试用例,并提供了通过操作特征空间中的特征向量而生成所需用例的方法(即本实施例中所提出的三种生成方法,其中除直接法外都是对特征向量进行操作的)。
[0074]
原始的gan容易遇到模式坍塌的情况,即gan的生成器学会了训练数据中的n类数据的m类数据(m《《n),而因为所生成的数据可以骗过判别器了,所以生成器不会再学习其他类别数据的信息,只使用这m类数据信息了。模式坍塌的情况使生成对抗网络的生成类别多样性大大降低,且影响到了其收敛的速度。vae-gan由于需要再编码器-生成器的vae过程中学习每一个训练数据的特征情况,因而具有解码功能的生成器需要能生成每个类型的测试用例,这有效地缓解了生成对抗网络所会遇到的模式坍塌问题。
[0075]
综上,普通的生成对抗网络(gan)只有生成器和判别器,没有编码器和解码器,因
此难以对输入特征进行控制和引导。如果在生成器前添加编码器,相当于为gan添加了差分自编码器(vae)模块。这样编码器、生成器训练就是vae差分自编码器的表征学习训练。
[0076]
此外,普通gan的生成是盲目无引导的生成方法,它直接从标准正态分布中取随机向量输入到生成器里,难以得到输入和输出的关系;添加了vae后,给生成器,即解码器的输入就成了特征向量,特征向量和生成的内容之间就可以通过模型进行控制和引导。
[0077]
测试用例(testcases)属于专业术语,与语料集(corpus,)、种子(seed)、测试输入(test inputs)、测试样本(test samples)属于近义词。其在模糊测试时的表现可以显示出测试用例的增益效果情况,以挖掘待测程序的漏洞。
[0078]
根据以上原理,请参照图1所示,一种模糊测试用例生成方法,包括以下步骤:
[0079]
s1、根据原始测试用例,得到训练数据集;
[0080]
s1中需要将原始测试用例转换为向量和标签数据集的形式,以便输入模型进行测试。
[0081]
本实施例中通过传统模糊测试工具afl(american fuzzy lop)二进制程序模糊测试工具对原始测试用例进行模糊测试,去除变异用例。其工作过程主要为:
[0082]
从源码编译程序时进行插桩,以记录代码覆盖率(code coverage);
[0083]
选择一些输入文件,作为初始测试集加入输入队列(queue);
[0084]
将队列中的文件按一定的策略进行“突变”;
[0085]
如果经过变异文件更新了覆盖范围,则将其保留添加到队列中;
[0086]
上述过程会一直循环进行,期间触发了crash的文件会被记录下来。
[0087]
本实施例中预处理过程具体过程请参照图2所示,对原始测试用例进行用例预处理,得到训练数据集,包括以下步骤:
[0088]
s11、对所述原始测试用例进行基础模糊测试,去除变异用例,得到待转换数据集;
[0089]
s11需要向afl测试工具提供原始测试用例及经插桩编译的待测程序,使用afl进行变异、检测运行等基础模糊测试工作,测试时间可以根据需求进行设定,例如5小时,并去除得到的变异用例,得到待转换数据集。
[0090]
s12、将所述待转换数据集归一化为数值向量x;
[0091]
s12中,将s11得到的待转换数据集作为字节数组,并归一化为可输入神经网络的数据向量x。
[0092]
具体地,转换过程包括:
[0093]
以二进制方式读取所述带转换数据集中的测试用例,记录最大用例字节长度l;
[0094]
为所有所述测试用例添加零字节,使每个所述测试用例的长度都为l;
[0095]
将所述测试用例中每4比特数据转化为16进制,得到整数向量;
[0096]
将所述整数向量归一化得到所述数值向量x。
[0097]
转化为16进制具体包括以二进制方式读取训练集中的所有测试用例文件,在二进制流中将每4比特数据转化为对应的16进制数,得到长度为2l,每个元素值在[0,15]区间内的整数向量x0;将向量x0中的每一个元素除以15.0,得到归一化后的数值向量x(x∈[0,1]
2l
)。x即为输入至神经网络中的数值向量。
[0098]
s13、为所述数值向量x匹配提升标签c,将所述数值向量和所述提升标签对应组成所述训练数据集《x,c》,所述提升标签表示对代码覆盖率或异常发现数的提升结果。
[0099]
s13中数值向量对应提升表情指的是,数值向量x对应待转换数据集中测试用例对应的代码覆盖率或异常发现数的提升结果,如果有提升,则其值为1,否则为0。
[0100]
测试用例为模糊测试工具afl带来代码覆盖率或异常发现数的提升效果,可通过运行afl得到。运行afl后,能够从其结果目录的queue目录中得到afl对各测试用例可得到的分支覆盖情况的描述,并且可在crashes和hangs目录中得到对异常发现数有增益的用例。
[0101]
s2、构建差分自编码器的生成对抗网络模型;
[0102]
s2中构建模型主要包括编码器、解码器、判别器、分类器和损失函数的构建,原始生成对抗网络模型的生成器即解码器。
[0103]
具体地,所述生成对抗网络模型包括编码器、生成器、解码器、判别器与分类器,其中,所述生成器作为所述生成对抗网络模型的解码器;
[0104]
构建差分自编码器的生成对抗网络模型,包括以下步骤:
[0105]
构建编码器,所述编码器包括1个估计层及2个采样层,所述估计层包括3层全连接层,所述采样层包括2层全连接层;
[0106]
构建解码器、判别器及分类器,所述解码器、所述判别器及所述分类器包括5层全连接层及全连接输出层;
[0107]
加载损失函数,完成所述生成对抗网络的构建。
[0108]
其中,全连接层之间通过batchnorm进行数据处理,使用leakyrelu作为激活函数;平行的采样层最后连接至全连接的输出层,全连接输出层的激活函数为sigmoid函数;每个全连接层包含128个神经元。
[0109]
上述估计层在正向传播时估计输入为x~pr、输出为编码z~p(z|x)时,估计p(z|x)的均值μ与方差的对数logσ2,采样层通过线性变换将标准正态分布n(o,i)的随机量∈映射为应服从正态分布n(μ,σ2)的编码z,即:
[0110]
μ,logσ2=est(x),
[0111]
∈~n(o,i),
[0112]
z=μ+σ∈,
[0113]
其中,est是编码器估计层的正向传播过程;z为采样曾经线性变换重采样后的编码结果,pr表示输入x所服从的概率分布;p(z|x)表示给定输入为x的情况下,编码z的概率分布。
[0114]
上述的解码器负责将服从正态分布n(μ,σ2)的编码z重新解码为测试用例文件即其中dec表示解码器;判别器负责鉴别一个用例样本是训练数据集中的样本,还是由解码器生成的样本;分类器负责分类训练数据集样本x中的c标签。
[0115]
上述的损失函数为:
[0116][0117][0118][0119]
[0120]
其中,x,x
p
分别为真实输入用例、真实用例经编码再解码重构生成用例和由随机编码向量解码生成的测试用例;表示数学期望,pf表示由解码器生成的测试用例所服从的概率分布,d表示判别器的判别结果;为分类器、编码器、解码器和判别器的损失函数;λ
1~4
为损失函数权重;分别为编码器的kl散度、生成器的重构损失、生成器与分类器均值特征匹配(mean feature matching)损失、生成器与判别器的均值特征匹配损失,计算满足公式:
[0121][0122][0123][0124][0125]
其中,p(z|x)为编码器对输入为x时,输出样本z的分布后验估计;x
p
~pz表示x
p
服从由编码器解码随机特征得到的随机样本分布;表示x
p
服从真实样本经编码器和解码器处理后的重构样本的分布;x~pr表示x服从真实样本的概率分布;m为神经网络训练的训练批数;fc,fd分别为分类器和判别器对应模型的特征提取映射函数,即由输入层至内部最后一层全连接层的网络映射。
[0126]
需要说明的是,本实施例的生成器使用平均特征损失函数替代了现有技术的二元分类损失,损失函数任务不再是“骗过”判别器,而是生成相似于判别器所提取的、倚重的特征信息。平均特征损失函数是对生成器任务的间接转换,能够有效地降低模式坍塌问题对生成质量的影响,也即提高了生成的测试用例的多样性。
[0127]
此外,相比于其他的被广泛使用的、用于解决模式坍塌的生成对抗网络wgan,本实施例中所使用的损失函数不需要像wgan一样计算或估计生成用例集与真实用例集间的wasserstein距离,计算该距离需要耗费比较高的计算性能,且仍需要面对模式坍塌问题。本实施例所提出的损失函数计算复杂度小(不需要计算判别器梯度并设置惩罚项),因此收敛速度更快,也可以保证生成测试用例的多样性。
[0128]
s3、将所述训练数据集输入所述生成对抗网络模型进行训练;
[0129]
s3具体包括:
[0130]
初始化模型权重;
[0131]
根据分类器损失函数,训练所述分类器;
[0132]
固定所述编码器和所述解码器参数,抽取部分所述训练数据集,生成与抽取数量相同的重构样本及随机样本,对所述判别器进行训练,以所述判别器可识别出真实样本为训练目标;训练判别器以使对真实样本判别为1,对重构样本和随机生成的样本判别为0;
[0133]
固定所述判别器参数,训练所述编码器和解码器,以所述判别器无法区分真实样本及所述解码器生成的重构样本与随机样本为训练目标;
[0134]
重复进行所述判别器、所述编码器及所述解码器的训练,当所述判别器无法区分所述解码器生成的测试用例和真实用例时,停止训练。
[0135]
s4、将所述训练数据集输入训练好的所述生成对抗网络模型生成测试用例;
[0136]
为了增加测试用例的多样性,本实施例通过三种方法生成测试用例,包括重构法、组合法及直接法。
[0137]
具体包括:
[0138]
对所述训练数据集中的每个测试用例x,输入所述编码器得到特征向量z,通过所述解码器解码所述特征向量,得到重构测试用例;
[0139]
随机从所述训练数据集中抽取1对测试用例x1、x2,输入所述编码器得到特征向量z1、z2,并线性组合所述特征向量,线性组合满足公式:
[0140]
z1=enc(x1),
[0141]
z2=enc(x2),
[0142]
α~u(0,1),
[0143][0144]
其中,α为服从均匀分布的随机数,通过所述解码器对组合后的特征进行解码,得到组合测试用例;
[0145]
从标准正态分布中采样得到随机数,将所述随机数作为特征向量并输入所述解码器,生成直接测试用例。
[0146]
上述三种方法生成测试用例的次数可以根据需求进行设定,当然,若数量过少,就无法体现出神经网络所能生成的用例多样性,若用例生成过多,afl会浪费相当多的资源、算力去变异每一个测试用例。用例次数例如使用重构法为训练数据集的每个测试用例重构5次、使用组合法和直接法生成测试用例各1000个。
[0147]
请参照图3所示,生成测试用例后,还需要输入待测程序中,分析测试用例在待测程序中的执行情况,记录待测程序执行的异常情况,以挖掘待测程序的漏洞。具体包括:
[0148]
s51、筛选出相同覆盖率所述测试用例的最小子集,并合并为新测试用例;
[0149]
上述筛选通过afl-cmin工具对每种方法生成的测试用例进行用例筛选,筛选出其具有相同覆盖率的最小子集,再合并为待新增的测试用例。afl-cmin工具属于模糊测试领域常用的测试工具,其工作过程和原理属于常规技术手段,本实施例不对此加以赘述。
[0150]
s52、将所述新测试用例添加至所述模糊测试工具的待变异队列;
[0151]
s53、通过所述模糊测试工具,将所述测试用例及所述新测试用例输入待测程序。
[0152]
上述的测试通过模糊测试工具注入待测程序实现,并在待测程序中运行、监测程序的运行情况。
[0153]
当然,本实施例所描述的生成对抗网络可以周期地训练、优化。每个周期训练好的生成对抗网络,在生成测试用例后,将被待测程序执行效果明显的生成的测试用例加入到
下一个周期的训练集中,优化生成对抗网络的生成能力。
[0154]
实施例二
[0155]
实施例二公开了一种对应上述实施例的模糊测试用例生成方法对应的装置,为上述实施例的虚拟装置结构,请参照图4所示,包括:
[0156]
数据集生成模块210,用于根据原始测试用例,得到训练数据集;
[0157]
构建模块220,用于构建差分自编码器的生成对抗网络模型;将所述训练数据集输入所述生成对抗网络模型进行训练,得到训练好的生成对抗网络模型;
[0158]
生成模块230,用于将所述训练数据集输入训练好的所述生成对抗网络模型生成测试用例。
[0159]
优选地,根据原始测试用例,得到训练数据集,包括以下步骤:
[0160]
对所述原始测试用例进行基础模糊测试,去除变异用例,得到待转换数据集;
[0161]
将所述待转换数据集归一化为数值向量x;
[0162]
为所述数值向量x匹配提升标签c,将所述数值向量和所述提升标签对应组成所述训练数据集《x,c》,所述提升标签表示对代码覆盖率或异常发现数的提升结果。
[0163]
优选地,将所述待转换数据集归一化为数值向量x,包括以下步骤:
[0164]
以二进制方式读取所述带转换数据集中的测试用例,记录最大用例字节长度l;
[0165]
为所有所述测试用例添加零字节,使每个所述测试用例的长度都为l;
[0166]
将所述测试用例中每4比特数据转化为16进制,得到整数向量;
[0167]
将所述整数向量归一化得到所述数值向量x。
[0168]
优选地,所述生成对抗网络模型包括编码器、生成器、解码器、判别器与分类器,其中,所述生成器作为所述生成对抗网络模型的解码器;
[0169]
构建差分自编码器的生成对抗网络模型,包括以下步骤:
[0170]
构建编码器,所述编码器包括1个估计层及2个采样层,所述估计层包括3层全连接层,所述采样层包括2层全连接层;
[0171]
构建解码器、判别器及分类器,所述解码器、所述判别器及所述分类器包括5层全连接层及全连接输出层;
[0172]
加载损失函数,完成所述生成对抗网络的构建。
[0173]
优选地,所述全连接层之间通过batchnorm进行数据处理,使用leakyrelu作为激活函数;所述全连接输出层的激活函数为sigmoid函数。
[0174]
所述损失函数为:
[0175][0176][0177][0178][0179]
其中,x,x
p
分别为真实输入用例、真实用例经编码再解码重构生成用例和由随机编码向量解码生成的测试用例;表示数学期望,pf表示由解码器生成的测试用例所服从的概率分布,d表示判别器的判别结果;为分类器、编码器、解码器和判别器的
损失函数;λ
1~4
为损失函数权重;分别为编码器的kl散度、生成器的重构损失、生成器与分类器均值特征匹配损失、生成器与判别器的均值特征匹配损失,计算满足公式:
[0180][0181][0182][0183][0184]
其中,p(z|x)为编码器对输入为x时,输出样本z的分布后验估计;x
p
~pz表示x
p
服从由编码器解码随机特征得到的随机样本分布;表示x
p
服从真实样本经编码器和解码器处理后的重构样本的分布;x~pr表示x服从真实样本的概率分布;m为神经网络训练的训练批数;fc,fd分别为分类器和判别器对应模型的特征提取映射函数。
[0185]
优选地,将所述训练数据集输入所述生成对抗网络模型进行训练,包括以下步骤:
[0186]
初始化模型权重;
[0187]
根据分类器损失函数,训练所述分类器;
[0188]
固定所述编码器和所述解码器参数,抽取部分所述训练数据集,生成与抽取数量相同的重构样本及随机样本,对所述判别器进行训练,以所述判别器可识别出真实样本为训练目标;
[0189]
固定所述判别器参数,训练所述编码器和解码器,以所述判别器无法区分真实样本及所述解码器生成的重构样本与随机样本为训练目标;
[0190]
重复进行所述判别器、所述编码器及所述解码器的训练,当所述判别器无法区分所述解码器生成的测试用例和真实用例时,停止训练。
[0191]
优选地,将所述训练数据集输入训练好的所述生成对抗网络模型生成测试用例,包括:
[0192]
对所述训练数据集中的每个测试用例x,输入所述编码器得到特征向量z,通过所述解码器解码所述特征向量,得到重构测试用例;
[0193]
随机从所述训练数据集中抽取1对测试用例x1、x1,输入所述编码器得到特征向量z1、z2,并线性组合所述特征向量,线性组合满足公式:
[0194]
z1=enc(x1),
[0195]
z2=enc(x2),
[0196]
α~u(0,1),
[0197][0198]
其中,α为服从均匀分布的随机数,通过所述解码器对组合后的特征进行解码,得到组合测试用例;
[0199]
从标准正态分布中采样得到随机数,将所述随机数作为特征向量并输入所述解码器,生成直接测试用例。
[0200]
优选地,还包括:
[0201]
筛选出相同覆盖率所述测试用例的最小子集,并合并为新测试用例;
[0202]
将所述新测试用例添加至所述模糊测试工具的待变异队列;
[0203]
通过所述模糊测试工具,将所述测试用例及所述新测试用例输入待测程序。
[0204]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本技术实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言java和直译式脚本语言javascript等。
[0205]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0206]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0207]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0208]
尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1