CN115455423B - 模糊测试用例生成方法及装置 - Google Patents
模糊测试用例生成方法及装置 Download PDFInfo
- Publication number
- CN115455423B CN115455423B CN202211005472.7A CN202211005472A CN115455423B CN 115455423 B CN115455423 B CN 115455423B CN 202211005472 A CN202211005472 A CN 202211005472A CN 115455423 B CN115455423 B CN 115455423B
- Authority
- CN
- China
- Prior art keywords
- encoder
- test case
- decoder
- training
- data set
- 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.)
- Active
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 199
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000012549 training Methods 0.000 claims abstract description 106
- 239000013598 vector Substances 0.000 claims abstract description 77
- 230000006870 function Effects 0.000 claims description 47
- 238000009826 distribution Methods 0.000 claims description 29
- 238000005070 sampling Methods 0.000 claims description 17
- 238000010276 construction Methods 0.000 claims description 13
- 230000002159 abnormal effect Effects 0.000 claims description 8
- 230000004913 activation Effects 0.000 claims description 8
- 238000013528 artificial neural network Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 8
- 238000012216 screening Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 5
- 238000009827 uniform distribution Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000035772 mutation Effects 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000003042 antagnostic effect Effects 0.000 description 2
- 230000008485 antagonism Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000013256 Gubra-Amylin NASH model Methods 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000013101 initial test Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明公开了一种模糊测试用例生成方法,涉及深度生成网络技术领域,用于解决现有不能控制输入向量特征,无法生成特定测试用例的问题,该方法包括以下步骤:根据原始测试用例,得到训练数据集;构建差分自编码器的生成对抗网络模型;将所述训练数据集输入所述生成对抗网络模型进行训练,得到训练好的生成对抗网络模型;将所述训练数据集输入训练好的所述生成对抗网络模型生成测试用例。本发明通过构建差分自编码器生成对抗网络模型,进而使生成对抗网络更易收敛、所生成的测试用例更多样化,能够提高模糊测试的代码覆盖率和异常发现数。
Description
技术领域
本发明涉及深度生成网络技术领域,尤其涉及一种模糊测试用例生成方法。
背景技术
模糊测试(Fuzzing)技术作为漏洞挖掘最有效的手段之一,近年来一直是众多安全研究人员发现漏洞的首选技术。
在传统的模糊测试用例生成工作中,测试用例的格式需要依靠人工分析,费时费力。
基于此,现有技术开始通过生成对抗网络技术智能化地从待测程序的真实输入中学习到该程序所接受的用例格式,以减轻模糊测试中测试用例生成的人力负担。
但是生成对抗网络在训练时容易遇到训练不稳定、收敛速度慢、生成多样性低的问题;不仅如此,传统的基于生成对抗网络的技术在使用时,只能以随机向量作为输入交给生成器,其测试用例的生成过程难以引导。这些缺点使得生成对抗网络技术用于模糊测试时的性能受到了制约。
发明内容
为了克服现有技术的不足,本发明的目的之一在于提供一种模糊测试用例生成方法,通过在传统生成对抗网络的基础上引入编码器和解码器,优化了模型的可引导性和多样性。
本发明的目的之一采用以下技术方案实现:
一种模糊测试用例生成方法,包括以下步骤:
根据原始测试用例,得到训练数据集;
构建差分自编码器的生成对抗网络模型;
将所述训练数据集输入所述生成对抗网络模型进行训练,得到训练好的生成对抗网络模型;
将所述训练数据集输入训练好的所述生成对抗网络模型生成测试用例。
进一步地,根据原始测试用例,得到训练数据集,包括以下步骤:
对所述原始测试用例进行基础模糊测试,去除变异用例,得到待转换数据集;
将所述待转换数据集归一化为数值向量x;
为所述数值向量x匹配提升标签c,将所述数值向量和所述提升标签对应组成所述训练数据集<x,c>,所述提升标签表示对代码覆盖率或异常发现数的提升结果。
进一步地,将所述待转换数据集归一化为数值向量x,包括以下步骤:
以二进制方式读取所述带转换数据集中的测试用例,记录最大用例字节长度L;
为所有所述测试用例添加零字节,使每个所述测试用例的长度都为L;
将所述测试用例中每4比特数据转化为16进制,得到整数向量;
将所述整数向量归一化得到所述数值向量x。
进一步地,所述生成对抗网络模型包括编码器、生成器、解码器、判别器与分类器,其中,所述生成器作为所述生成对抗网络模型的解码器;
构建差分自编码器的生成对抗网络模型,包括以下步骤:
构建编码器,所述编码器包括1个估计层及2个采样层,所述估计层包括3层全连接层,所述采样层包括2层全连接层;
构建解码器、判别器及分类器,所述解码器、所述判别器及所述分类器包括5层全连接层及全连接输出层;
加载损失函数,完成所述生成对抗网络的构建。
进一步地,所述全连接层之间通过BatchNorm进行数据处理,使用LeakyReLU作为激活函数;所述全连接输出层的激活函数为Sigmoid函数。
进一步地,所述损失函数为:
其中,x,xp分别为真实输入用例、真实用例经编码再解码重构生成用例和由随机编码向量解码生成的测试用例;/>表示数学期望,Pf表示由解码器生成的测试用例所服从的概率分布,D表示判别器的判别结果;/>为分类器、编码器、解码器和判别器的损失函数;λ1~4为损失函数权重;/>分别为编码器的KL散度、生成器的重构损失、生成器与分类器均值特征匹配损失、生成器与判别器的均值特征匹配损失,计算满足公式:
其中,p(z|x)为编码器对输入为x时,输出样本z的分布后验估计;xp~Pz表示xp服从由编码器解码随机特征得到的随机样本分布;表示xp服从真实样本经编码器和解码器处理后的重构样本的分布;x~Pr表示x服从真实样本的概率分布;m为神经网络训练的训练批数;fC,fD分别为分类器和判别器对应模型的特征提取映射函数。
进一步地,将所述训练数据集输入所述生成对抗网络模型进行训练,包括以下步骤:
初始化模型权重;
根据分类器损失函数,训练所述分类器;
固定所述编码器和所述解码器参数,抽取部分所述训练数据集,生成与抽取数量相同的重构样本及随机样本,对所述判别器进行训练,以所述判别器可识别出真实样本为训练目标;
固定所述判别器参数,训练所述编码器和解码器,以所述判别器无法区分真实样本及所述解码器生成的重构样本与随机样本为训练目标;
重复进行所述判别器、所述编码器及所述解码器的训练,当所述判别器无法区分所述解码器生成的测试用例和真实用例时,停止训练。
进一步地,将所述训练数据集输入训练好的所述生成对抗网络模型生成测试用例,包括:
对所述训练数据集中的每个测试用例x,输入所述编码器得到特征向量z,通过所述解码器解码所述特征向量,得到重构测试用例;
随机从所述训练数据集中抽取1对测试用例x1、x2,输入所述编码器得到特征向量z1、z2,并线性组合所述特征向量,线性组合满足公式:
z1=Enc(x1),
z2=Enc(x2),
α~U(0,1),
从标准正态分布中采样得到随机数,将所述随机数作为特征向量并输入所述解码器,生成直接测试用例。
进一步地,还包括:
筛选出相同覆盖率所述测试用例的最小子集,并合并为新测试用例;
将所述新测试用例添加至所述模糊测试工具的待变异队列;
通过所述模糊测试工具,将所述测试用例及所述新测试用例输入待测程序。
本发明的目的之二在于提供一种模糊测试用例生成装置,通过构建差分自编码器,实现测试用例可引导性。
本发明的目的之二采用以下技术方案实现:
一种模糊测试用例生成装置,其特征在于,其包括:
数据集生成模块,用于根据原始测试用例,得到训练数据集;
构建模块,用于构建差分自编码器的生成对抗网络模型;将所述训练数据集输入所述生成对抗网络模型进行训练,得到训练好的生成对抗网络模型;
生成模块,用于将所述训练数据集输入训练好的所述生成对抗网络模型生成测试用例。
相比现有技术,本发明的有益效果在于:
本发明提供了一种基于生成对抗网络的模糊测试用生成方法,能够批量生成与待测程序的真实输入具有相似格式的测试用例,生成的测试用例更多样化,可以减轻传统测试用例生成工作中需要消费大量人力进行人工格式分析的工作。本发明在生成对抗网络的基础上,引入编码器模块,并将生成器复用为解码器,利用编码器在编码时对特征的提取能力,提高生成对抗网络在生成测试用例时的引导能力。本方法所提出的生成对抗网络在训练时稳定性高,使生成对抗网络更易收敛、所生成的测试用例更多样化,能够提高模糊测试的代码覆盖率和异常发现数。
附图说明
图1是实施例一的模糊测试用例生成方法的流程图;
图2是实施例一的原始测试用例浴池里方法的流程图;
图3是实施例一的测试方法的流程图;
图4是实施例二的模糊测试用例生成装置的结构框图。
具体实施方式
以下将结合附图,对本发明进行更为详细的描述,需要说明的是,以下参照附图对本发明进行的描述仅是示意性的,而非限制性的。各个不同实施例之间可以进行相互组合,以构成未在以下描述中示出的其他实施例。
实施例一
实施例一提供了一种模糊测试用例生成方法,旨在通过深度生成技术,批量生成与待测程序的真实输入具有相似格式的测试用例,以减轻传统测试用例生成工作中需要消费大量人力进行人工格式分析的工作,在生成对抗网络中加入编码器和解码器,使得模型可以对测试用例进行引导。
使用原始的生成对抗网络(GAN)神经网络时,生成过程需要给生成器网络一个随机数,然后获取到生成的内容,这一步的缺陷在于无法知道输入的随机数会得到什么样的生成结果。当切换为VAE-GAN后,交给生成器子网络的向量从随机数变为了特征向量,也叫做隐向量,特征向量具有实际意义,可通过调整特征向量进而引导生成所需要的用例。换言之,VAE-GAN模型的引用使得安全测试人员通过可引导的方式生成测试用例,并提供了通过操作特征空间中的特征向量而生成所需用例的方法(即本实施例中所提出的三种生成方法,其中除直接法外都是对特征向量进行操作的)。
原始的GAN容易遇到模式坍塌的情况,即GAN的生成器学会了训练数据中的n类数据的m类数据(m<<n),而因为所生成的数据可以骗过判别器了,所以生成器不会再学习其他类别数据的信息,只使用这m类数据信息了。模式坍塌的情况使生成对抗网络的生成类别多样性大大降低,且影响到了其收敛的速度。VAE-GAN由于需要再编码器-生成器的VAE过程中学习每一个训练数据的特征情况,因而具有解码功能的生成器需要能生成每个类型的测试用例,这有效地缓解了生成对抗网络所会遇到的模式坍塌问题。
综上,普通的生成对抗网络(GAN)只有生成器和判别器,没有编码器和解码器,因此难以对输入特征进行控制和引导。如果在生成器前添加编码器,相当于为GAN添加了差分自编码器(VAE)模块。这样编码器、生成器训练就是VAE差分自编码器的表征学习训练。
此外,普通GAN的生成是盲目无引导的生成方法,它直接从标准正态分布中取随机向量输入到生成器里,难以得到输入和输出的关系;添加了VAE后,给生成器,即解码器的输入就成了特征向量,特征向量和生成的内容之间就可以通过模型进行控制和引导。
测试用例(testcases)属于专业术语,与语料集(corpus,)、种子(seed)、测试输入(test inputs)、测试样本(test samples)属于近义词。其在模糊测试时的表现可以显示出测试用例的增益效果情况,以挖掘待测程序的漏洞。
根据以上原理,请参照图1所示,一种模糊测试用例生成方法,包括以下步骤:
S1、根据原始测试用例,得到训练数据集;
S1中需要将原始测试用例转换为向量和标签数据集的形式,以便输入模型进行测试。
本实施例中通过传统模糊测试工具AFL(American fuzzy lop)二进制程序模糊测试工具对原始测试用例进行模糊测试,去除变异用例。其工作过程主要为:
从源码编译程序时进行插桩,以记录代码覆盖率(Code Coverage);
选择一些输入文件,作为初始测试集加入输入队列(queue);
将队列中的文件按一定的策略进行“突变”;
如果经过变异文件更新了覆盖范围,则将其保留添加到队列中;
上述过程会一直循环进行,期间触发了crash的文件会被记录下来。
本实施例中预处理过程具体过程请参照图2所示,对原始测试用例进行用例预处理,得到训练数据集,包括以下步骤:
S11、对所述原始测试用例进行基础模糊测试,去除变异用例,得到待转换数据集;
S11需要向AFL测试工具提供原始测试用例及经插桩编译的待测程序,使用AFL进行变异、检测运行等基础模糊测试工作,测试时间可以根据需求进行设定,例如5小时,并去除得到的变异用例,得到待转换数据集。
S12、将所述待转换数据集归一化为数值向量x;
S12中,将S11得到的待转换数据集作为字节数组,并归一化为可输入神经网络的数据向量x。
具体地,转换过程包括:
以二进制方式读取所述带转换数据集中的测试用例,记录最大用例字节长度L;
为所有所述测试用例添加零字节,使每个所述测试用例的长度都为L;
将所述测试用例中每4比特数据转化为16进制,得到整数向量;
将所述整数向量归一化得到所述数值向量x。
转化为16进制具体包括以二进制方式读取训练集中的所有测试用例文件,在二进制流中将每4比特数据转化为对应的16进制数,得到长度为2L,每个元素值在[0,15]区间内的整数向量x0;将向量x0中的每一个元素除以15.0,得到归一化后的数值向量x(x∈[0,1]2L)。x即为输入至神经网络中的数值向量。
S13、为所述数值向量x匹配提升标签c,将所述数值向量和所述提升标签对应组成所述训练数据集<x,c>,所述提升标签表示对代码覆盖率或异常发现数的提升结果。
S13中数值向量对应提升表情指的是,数值向量x对应待转换数据集中测试用例对应的代码覆盖率或异常发现数的提升结果,如果有提升,则其值为1,否则为0。
测试用例为模糊测试工具AFL带来代码覆盖率或异常发现数的提升效果,可通过运行AFL得到。运行AFL后,能够从其结果目录的queue目录中得到AFL对各测试用例可得到的分支覆盖情况的描述,并且可在crashes和hangs目录中得到对异常发现数有增益的用例。
S2、构建差分自编码器的生成对抗网络模型;
S2中构建模型主要包括编码器、解码器、判别器、分类器和损失函数的构建,原始生成对抗网络模型的生成器即解码器。
具体地,所述生成对抗网络模型包括编码器、生成器、解码器、判别器与分类器,其中,所述生成器作为所述生成对抗网络模型的解码器;
构建差分自编码器的生成对抗网络模型,包括以下步骤:
构建编码器,所述编码器包括1个估计层及2个采样层,所述估计层包括3层全连接层,所述采样层包括2层全连接层;
构建解码器、判别器及分类器,所述解码器、所述判别器及所述分类器包括5层全连接层及全连接输出层;
加载损失函数,完成所述生成对抗网络的构建。
其中,全连接层之间通过BatchNorm进行数据处理,使用LeakyReLU作为激活函数;平行的采样层最后连接至全连接的输出层,全连接输出层的激活函数为Sigmoid函数;每个全连接层包含128个神经元。
上述估计层在正向传播时估计输入为x~Pr、输出为编码z~P(z|x)时,估计P(z|x)的均值μ与方差的对数logσ2,采样层通过线性变换将标准正态分布N(O,I)的随机量∈映射为应服从正态分布N(μ,σ2)的编码z,即:
μ,logσ2=Est(x),
∈~N(O,I),
z=μ+σ∈,
其中,Est是编码器估计层的正向传播过程;z为采样曾经线性变换重采样后的编码结果,Pr表示输入x所服从的概率分布;P(z|x)表示给定输入为x的情况下,编码z的概率分布。
上述的解码器负责将服从正态分布N(μ,σ2)的编码z重新解码为测试用例文件即/>其中Dec表示解码器;判别器负责鉴别一个用例样本是训练数据集中的样本,还是由解码器生成的样本;分类器负责分类训练数据集样本x中的c标签。
上述的损失函数为:
其中,x,xp分别为真实输入用例、真实用例经编码再解码重构生成用例和由随机编码向量解码生成的测试用例;/>表示数学期望,Pf表示由解码器生成的测试用例所服从的概率分布,D表示判别器的判别结果;/>为分类器、编码器、解码器和判别器的损失函数;λ1~4为损失函数权重;/>分别为编码器的KL散度、生成器的重构损失、生成器与分类器均值特征匹配(Mean Feature Matching)损失、生成器与判别器的均值特征匹配损失,计算满足公式:
其中,p(z|x)为编码器对输入为x时,输出样本z的分布后验估计;xp~Pz表示xp服从由编码器解码随机特征得到的随机样本分布;表示xp服从真实样本经编码器和解码器处理后的重构样本的分布;x~Pr表示x服从真实样本的概率分布;m为神经网络训练的训练批数;fC,fD分别为分类器和判别器对应模型的特征提取映射函数,即由输入层至内部最后一层全连接层的网络映射。
需要说明的是,本实施例的生成器使用平均特征损失函数替代了现有技术的二元分类损失,损失函数任务不再是“骗过”判别器,而是生成相似于判别器所提取的、倚重的特征信息。平均特征损失函数是对生成器任务的间接转换,能够有效地降低模式坍塌问题对生成质量的影响,也即提高了生成的测试用例的多样性。
此外,相比于其他的被广泛使用的、用于解决模式坍塌的生成对抗网络WGAN,本实施例中所使用的损失函数不需要像WGAN一样计算或估计生成用例集与真实用例集间的Wasserstein距离,计算该距离需要耗费比较高的计算性能,且仍需要面对模式坍塌问题。本实施例所提出的损失函数计算复杂度小(不需要计算判别器梯度并设置惩罚项),因此收敛速度更快,也可以保证生成测试用例的多样性。
S3、将所述训练数据集输入所述生成对抗网络模型进行训练;
S3具体包括:
初始化模型权重;
根据分类器损失函数,训练所述分类器;
固定所述编码器和所述解码器参数,抽取部分所述训练数据集,生成与抽取数量相同的重构样本及随机样本,对所述判别器进行训练,以所述判别器可识别出真实样本为训练目标;训练判别器以使对真实样本判别为1,对重构样本和随机生成的样本判别为0;
固定所述判别器参数,训练所述编码器和解码器,以所述判别器无法区分真实样本及所述解码器生成的重构样本与随机样本为训练目标;
重复进行所述判别器、所述编码器及所述解码器的训练,当所述判别器无法区分所述解码器生成的测试用例和真实用例时,停止训练。
S4、将所述训练数据集输入训练好的所述生成对抗网络模型生成测试用例;
为了增加测试用例的多样性,本实施例通过三种方法生成测试用例,包括重构法、组合法及直接法。
具体包括:
对所述训练数据集中的每个测试用例x,输入所述编码器得到特征向量Z,通过所述解码器解码所述特征向量,得到重构测试用例;
随机从所述训练数据集中抽取1对测试用例x1、x2,输入所述编码器得到特征向量Z1、Z2,并线性组合所述特征向量,线性组合满足公式:
Z1=Enc(x1),
Z2=Enc(x2),
a~U(0,1),
从标准正态分布中采样得到随机数,将所述随机数作为特征向量并输入所述解码器,生成直接测试用例。
上述三种方法生成测试用例的次数可以根据需求进行设定,当然,若数量过少,就无法体现出神经网络所能生成的用例多样性,若用例生成过多,AFL会浪费相当多的资源、算力去变异每一个测试用例。用例次数例如使用重构法为训练数据集的每个测试用例重构5次、使用组合法和直接法生成测试用例各1000个。
请参照图3所示,生成测试用例后,还需要输入待测程序中,分析测试用例在待测程序中的执行情况,记录待测程序执行的异常情况,以挖掘待测程序的漏洞。具体包括:
S51、筛选出相同覆盖率所述测试用例的最小子集,并合并为新测试用例;
上述筛选通过afl-cmin工具对每种方法生成的测试用例进行用例筛选,筛选出其具有相同覆盖率的最小子集,再合并为待新增的测试用例。afl-cmin工具属于模糊测试领域常用的测试工具,其工作过程和原理属于常规技术手段,本实施例不对此加以赘述。
S52、将所述新测试用例添加至所述模糊测试工具的待变异队列;
S53、通过所述模糊测试工具,将所述测试用例及所述新测试用例输入待测程序。
上述的测试通过模糊测试工具注入待测程序实现,并在待测程序中运行、监测程序的运行情况。
当然,本实施例所描述的生成对抗网络可以周期地训练、优化。每个周期训练好的生成对抗网络,在生成测试用例后,将被待测程序执行效果明显的生成的测试用例加入到下一个周期的训练集中,优化生成对抗网络的生成能力。
实施例二
实施例二公开了一种对应上述实施例的模糊测试用例生成方法对应的装置,为上述实施例的虚拟装置结构,请参照图4所示,包括:
数据集生成模块210,用于根据原始测试用例,得到训练数据集;
构建模块220,用于构建差分自编码器的生成对抗网络模型;将所述训练数据集输入所述生成对抗网络模型进行训练,得到训练好的生成对抗网络模型;
生成模块230,用于将所述训练数据集输入训练好的所述生成对抗网络模型生成测试用例。
优选地,根据原始测试用例,得到训练数据集,包括以下步骤:
对所述原始测试用例进行基础模糊测试,去除变异用例,得到待转换数据集;
将所述待转换数据集归一化为数值向量x;
为所述数值向量x匹配提升标签c,将所述数值向量和所述提升标签对应组成所述训练数据集<x,c>,所述提升标签表示对代码覆盖率或异常发现数的提升结果。
优选地,将所述待转换数据集归一化为数值向量x,包括以下步骤:
以二进制方式读取所述带转换数据集中的测试用例,记录最大用例字节长度L;
为所有所述测试用例添加零字节,使每个所述测试用例的长度都为L;
将所述测试用例中每4比特数据转化为16进制,得到整数向量;
将所述整数向量归一化得到所述数值向量x。
优选地,所述生成对抗网络模型包括编码器、生成器、解码器、判别器与分类器,其中,所述生成器作为所述生成对抗网络模型的解码器;
构建差分自编码器的生成对抗网络模型,包括以下步骤:
构建编码器,所述编码器包括1个估计层及2个采样层,所述估计层包括3层全连接层,所述采样层包括2层全连接层;
构建解码器、判别器及分类器,所述解码器、所述判别器及所述分类器包括5层全连接层及全连接输出层;
加载损失函数,完成所述生成对抗网络的构建。
优选地,所述全连接层之间通过BatchNorm进行数据处理,使用LeakyReLU作为激活函数;所述全连接输出层的激活函数为Sigmoid函数。
所述损失函数为:
其中,x,xp分别为真实输入用例、真实用例经编码再解码重构生成用例和由随机编码向量解码生成的测试用例;/>表示数学期望,Pf表示由解码器生成的测试用例所服从的概率分布,D表示判别器的判别结果;/>为分类器、编码器、解码器和判别器的损失函数;λ1~4为损失函数权重;/>分别为编码器的KL散度、生成器的重构损失、生成器与分类器均值特征匹配损失、生成器与判别器的均值特征匹配损失,计算满足公式:
其中,p(z|x)为编码器对输入为x时,输出样本z的分布后验估计;xp~Pz表示xp服从由编码器解码随机特征得到的随机样本分布;表示xp服从真实样本经编码器和解码器处理后的重构样本的分布;x~Pr表示x服从真实样本的概率分布;m为神经网络训练的训练批数;fC,fD分别为分类器和判别器对应模型的特征提取映射函数。
优选地,将所述训练数据集输入所述生成对抗网络模型进行训练,包括以下步骤:
初始化模型权重;
根据分类器损失函数,训练所述分类器;
固定所述编码器和所述解码器参数,抽取部分所述训练数据集,生成与抽取数量相同的重构样本及随机样本,对所述判别器进行训练,以所述判别器可识别出真实样本为训练目标;
固定所述判别器参数,训练所述编码器和解码器,以所述判别器无法区分真实样本及所述解码器生成的重构样本与随机样本为训练目标;
重复进行所述判别器、所述编码器及所述解码器的训练,当所述判别器无法区分所述解码器生成的测试用例和真实用例时,停止训练。
优选地,将所述训练数据集输入训练好的所述生成对抗网络模型生成测试用例,包括:
对所述训练数据集中的每个测试用例x,输入所述编码器得到特征向量z,通过所述解码器解码所述特征向量,得到重构测试用例;
随机从所述训练数据集中抽取1对测试用例x1、x2,输入所述编码器得到特征向量z1、z2,并线性组合所述特征向量,线性组合满足公式:
z1=Enc(x1),
z2=Enc(x2),
α~U(0,1),
从标准正态分布中采样得到随机数,将所述随机数作为特征向量并输入所述解码器,生成直接测试用例。
优选地,还包括:
筛选出相同覆盖率所述测试用例的最小子集,并合并为新测试用例;
将所述新测试用例添加至所述模糊测试工具的待变异队列;
通过所述模糊测试工具,将所述测试用例及所述新测试用例输入待测程序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (9)
1.一种模糊测试用例生成方法,其特征在于,包括以下步骤:
根据原始测试用例,得到训练数据集;
构建差分自编码器的生成对抗网络模型;将所述训练数据集输入所述生成对抗网络模型进行训练,得到训练好的生成对抗网络模型;
将所述训练数据集输入训练好的所述生成对抗网络模型生成测试用例;
所述生成对抗网络模型包括编码器、生成器、解码器、判别器与分类器,其中,所述生成器作为所述生成对抗网络模型的解码器;
构建差分自编码器的生成对抗网络模型,包括以下步骤:
构建编码器,所述编码器包括1个估计层及2个采样层,所述估计层包括3层全连接层,所述采样层包括2层全连接层;
构建解码器、判别器及分类器,所述解码器、所述判别器及所述分类器包括5层全连接层及全连接输出层;
加载分类器、编码器、解码器和判别器的损失函数,完成所述生成对抗网络的构建。
2.如权利要求1所述的模糊测试用例生成方法,其特征在于,根据原始测试用例,得到训练数据集,包括以下步骤:
对所述原始测试用例进行基础模糊测试,去除变异用例,得到待转换数据集;
将所述待转换数据集归一化为数值向量x;
为所述数值向量x匹配提升标签c,将所述数值向量和所述提升标签对应组成所述训练数据集<x,c>,所述提升标签表示对代码覆盖率或异常发现数的提升结果。
3.如权利要求2所述的模糊测试用例生成方法,其特征在于,将所述待转换数据集归一化为数值向量x,包括以下步骤:
以二进制方式读取所述待转换数据集中的测试用例,记录最大用例字节长度L;
为所有所述测试用例添加零字节,使每个所述测试用例的长度都为L;
将所述测试用例中每4比特数据转化为16进制,得到整数向量;
将所述整数向量归一化得到所述数值向量x。
4.如权利要求1所述的模糊测试用例生成方法,其特征在于,所述全连接层之间通过BatchNorm进行数据处理,使用LeakyReLU作为激活函数;所述全连接输出层的激活函数为Sigmoid函数。
5.如权利要求1所述的模糊测试用例生成方法,其特征在于,所述损失函数为:
其中,分别为真实输入用例、真实用例经编码再解码重构生成用例和由随机编码向量解码生成的测试用例;/>表示数学期望,Pf表示由解码器生成的测试用例所服从的概率分布,D表示判别器的判别结果;/>为分类器、编码器、解码器和判别器的损失函数;λ1~4为损失函数权重;/>分别为编码器的KL散度、生成器的重构损失、生成器与分类器均值特征匹配损失、生成器与判别器的均值特征匹配损失,计算满足公式:
6.如权利要求1所述的模糊测试用例生成方法,其特征在于,将所述训练数据集输入所述生成对抗网络模型进行训练,包括以下步骤:
初始化模型权重;
根据分类器损失函数,训练所述分类器;
固定所述编码器和所述解码器参数,抽取部分所述训练数据集,生成与抽取数量相同的重构样本及随机样本,对所述判别器进行训练,以所述判别器可识别出真实样本为训练目标;
固定所述判别器参数,训练所述编码器和解码器,以所述判别器无法区分真实样本及所述解码器生成的重构样本与随机样本为训练目标;
重复进行所述判别器、所述编码器及所述解码器的训练,当所述判别器无法区分所述解码器生成的测试用例和真实用例时,停止训练。
7.如权利要求1所述的模糊测试用例生成方法,其特征在于,将所述训练数据集输入训练好的所述生成对抗网络模型生成测试用例,包括:
对所述训练数据集中的每个测试用例x,输入所述编码器得到特征向量z,通过所述解码器解码所述特征向量,得到重构测试用例;
随机从所述训练数据集中抽取1对测试用例x1、x2,输入所述编码器得到特征向量z1、z2,并线性组合所述特征向量,线性组合满足公式:
z1=Enc(x1),
z2=Enc(x2),
α~U(0,1),
从标准正态分布中采样得到随机数,将所述随机数作为特征向量并输入所述解码器,生成直接测试用例。
8.如权利要求1所述的模糊测试用例生成方法,其特征在于,还包括:
筛选出相同覆盖率所述测试用例的最小子集,并合并为新测试用例;
将所述新测试用例添加至所述模糊测试工具的待变异队列;
通过所述模糊测试工具,将所述测试用例及所述新测试用例输入待测程序。
9.一种模糊测试用例生成装置,其特征在于,其包括:
数据集生成模块,用于根据原始测试用例,得到训练数据集;
构建模块,用于构建差分自编码器的生成对抗网络模型;将所述训练数据集输入所述生成对抗网络模型进行训练,得到训练好的生成对抗网络模型;
生成模块,用于将所述训练数据集输入训练好的所述生成对抗网络模型生成测试用例;
所述的构建模块中,所述生成对抗网络模型包括编码器、生成器、解码器、判别器与分类器,其中,所述生成器作为所述生成对抗网络模型的解码器;
所述的构建模块中,构建差分自编码器的生成对抗网络模型,包括以下步骤:构建编码器,所述编码器包括1个估计层及2个采样层,所述估计层包括3层全连接层,所述采样层包括2层全连接层;构建解码器、判别器及分类器,所述解码器、所述判别器及所述分类器包括5层全连接层及全连接输出层;加载分类器、编码器、解码器和判别器的损失函数,完成所述生成对抗网络的构建。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211005472.7A CN115455423B (zh) | 2022-08-22 | 2022-08-22 | 模糊测试用例生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211005472.7A CN115455423B (zh) | 2022-08-22 | 2022-08-22 | 模糊测试用例生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115455423A CN115455423A (zh) | 2022-12-09 |
CN115455423B true CN115455423B (zh) | 2023-07-07 |
Family
ID=84298676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211005472.7A Active CN115455423B (zh) | 2022-08-22 | 2022-08-22 | 模糊测试用例生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115455423B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021088935A1 (zh) * | 2019-11-05 | 2021-05-14 | 中国科学院深圳先进技术研究院 | 对抗网络架构的优化方法、图像描述生成方法和系统 |
CN112925710A (zh) * | 2021-02-26 | 2021-06-08 | 西南民族大学 | 一种基于梯度下降优化的模糊测试方法 |
CN113468071A (zh) * | 2021-07-23 | 2021-10-01 | 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) | 模糊测试用例生成方法、系统、计算机设备及存储介质 |
CN113626324A (zh) * | 2021-08-04 | 2021-11-09 | 北京航空航天大学 | 一种面向Move语言虚拟机的模糊测试方法 |
CN114064471A (zh) * | 2021-11-11 | 2022-02-18 | 中国民用航空总局第二研究所 | 一种基于生成对抗网络的Ethernet/IP协议模糊测试方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0809443D0 (en) * | 2008-05-23 | 2008-07-02 | Wivenhoe Technology Ltd | A Type-2 fuzzy based system for handling group decisions |
-
2022
- 2022-08-22 CN CN202211005472.7A patent/CN115455423B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021088935A1 (zh) * | 2019-11-05 | 2021-05-14 | 中国科学院深圳先进技术研究院 | 对抗网络架构的优化方法、图像描述生成方法和系统 |
CN112925710A (zh) * | 2021-02-26 | 2021-06-08 | 西南民族大学 | 一种基于梯度下降优化的模糊测试方法 |
CN113468071A (zh) * | 2021-07-23 | 2021-10-01 | 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) | 模糊测试用例生成方法、系统、计算机设备及存储介质 |
CN113626324A (zh) * | 2021-08-04 | 2021-11-09 | 北京航空航天大学 | 一种面向Move语言虚拟机的模糊测试方法 |
CN114064471A (zh) * | 2021-11-11 | 2022-02-18 | 中国民用航空总局第二研究所 | 一种基于生成对抗网络的Ethernet/IP协议模糊测试方法 |
Non-Patent Citations (1)
Title |
---|
基于QRNN的网络协议模糊测试用例过滤方法;胡志濠等;《计算机科学》;第318-324页 * |
Also Published As
Publication number | Publication date |
---|---|
CN115455423A (zh) | 2022-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kalash et al. | Malware classification with deep convolutional neural networks | |
CN110008710B (zh) | 基于深度强化学习和程序路径插桩的漏洞检测方法 | |
Alfaro et al. | Adabag: An R package for classification with boosting and bagging | |
CN109408389B (zh) | 一种基于深度学习的代码缺陷检测方法及装置 | |
Harvey et al. | Automated feature design for numeric sequence classification by genetic programming | |
CN110704840A (zh) | 一种基于卷积神经网络cnn的恶意软件检测方法 | |
CN114692156B (zh) | 内存片段恶意代码入侵检测方法、系统、存储介质及设备 | |
CN109656818B (zh) | 一种软件密集系统故障预测方法 | |
CN112699045A (zh) | 一种基于多种群遗传算法的软件测试用例生成方法 | |
CN113076545A (zh) | 一种基于深度学习的内核模糊测试序列生成方法 | |
CN112905188A (zh) | 一种基于生成式对抗gan网络的代码翻译方法及系统 | |
CN115563610A (zh) | 入侵检测模型的训练方法、识别方法和装置 | |
CN114662386A (zh) | 一种轴承故障诊断方法及系统 | |
CN115577357A (zh) | 一种基于堆叠集成技术的Android恶意软件检测方法 | |
CN117437494A (zh) | 一种图像分类方法、系统、电子设备及存储介质 | |
CN113421546B (zh) | 基于跨被试多模态的语音合成方法及相关设备 | |
Stando et al. | The effect of balancing methods on model behavior in imbalanced classification problems | |
CN115455423B (zh) | 模糊测试用例生成方法及装置 | |
Alfaro-Cid et al. | Genetic programming and serial processing for time series classification | |
Bai et al. | Two-step ensemble under-sampling algorithm for massive imbalanced data classification | |
CN111581640A (zh) | 一种恶意软件检测方法、装置及设备、存储介质 | |
CN114510715B (zh) | 模型的功能安全测试方法、装置、存储介质及设备 | |
Sridhar et al. | A Two Tier Iterative Ensemble Method To Tackle Imbalance In Multiclass Classification | |
CN113836027B (zh) | 一种使用生成式网络进行失败测试用例生成的方法 | |
CN113314206B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |