(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号(43)申请公布日(21)申请号201910312163.6(22)申请日2019.04.18(71)申请人上海大学地址200444上海市宝山区上大路99号(72)发明人付敬奇 曹一帆 易慕白 张越 沈仁亮 (74)专利代理机构上海上大专利事务所(普通合伙)31205代理人陆聪明(51)Int.Cl.H04L12/26(2006.01)G06N20/00(2019.01)G06F11/36(2006.01)H04L29/06(2006.01)(54)发明名称一种变分自编码的模糊测试测试用例生成方法(57)摘要本发明公开了一种变分自编码的模糊测试测试用例生成方法,包括以下步骤:A、针对不同的测试对象,采集符合测试对象协议格式的通信数据作为训练样本;B、通过VAE的编码器,提取得到训练数据样本的特征空间;C、提出三种生成策略,并根据三种数据生成策略,生成对应的特征空间;D、根据生成的新的特征空间,通过VAE的解码器,生成新的测试用例。该方法可以应用于多种不同的工控网络协议,而不是针对某一种协议。其最大特点是通过机器学习的方法学习样本数据的特征,并根据特征以及VAE技术生成新的测试用例,避免了传统模糊测试生成测试用例时需要测试人员熟练掌握协议相关知识,极大减少了测试人员的负担,增加了测试的效率以及范围。权利要求书1页说明书4页附图2页CN110113227A2019.08.09CN110113227A1.一种变分自编码的模糊测试测试用例生成方法,其特征在于,包括以下步骤:步骤A、针对不同的测试对象,采集符合测试对象协议格式的通信数据作为训练数据样本;步骤B、通过变分自编码器的编码器部分,提取得到训练数据样本的特征空间;根据不同的样本数据类型得到两类特征空间:第一类特征空间为通信中正常数据的特征空间,第二类为通信中异常数据的特征空间;步骤C、提出三种生成策略:生成策略一为生成正常数据分布之外的数据作为模糊测试测试的测试用例;生成策略二为生成异常数据分布之内的数据作为模糊测试测试的测试用例;生成策略三为生成正常数据分布与异常数据分布之间的数据作为模糊测试测试的测试用例;根据三种数据生成策略,生成三种不同的新的特征空间;步骤D、根据生成的三种不同的新的特征空间,通过变分自编码器的解码器部分,生成新的数据,该数据即为新的测试用例。2.根据权利要求1所述的变分自编码的模糊测试测试用例生成方法,其特征在于:所述步骤A中的不同的测试对象为工业控制网络中各种通讯协议,包括但不限于Modbus/TCP、Profinet、DeviceNet;采集符合测试对象协议格式的通信数据,包括通讯过程中产生的符合测试对象协议格式的正常数据以及异常数据,并将采集到的数据作为训练数据样本。3.根据权利要求1所述的变分自编码的模糊测试测试用例生成方法,其特征在于:所述步骤B中,第一类特征空间为训练数据样本为正常数据时,通过编码器得到正常数据的特征空间;第二类特征空间为训练数据为异常数据时,通过编码器得到的异常数据的特征空间。4.根据权利要求1所述的变分自编码的模糊测试测试用例生成方法,其特征在于:所述步骤C中,生三种不同的新的特征空间;第一种为在步骤B中得到的正常数据的特征空间之外随机采样,生成新的特征数据作为新的特征空间;第二种为在步骤B中的异常数据特征空间之内随机采样,生成新的特征数据作为新的特征空间;第三种为在步骤B中正常数据特征空间与异常数据特征空间之间随机采样作为新的特征空间。5.根据权利要求1所述的变分自编码的模糊测试测试用例生成方法,其特征在于:所述步骤D中,设计了两种变分自编码器的解码器,其作用是分别将三种不同的新的特征空间中的值重构生成符合三种新的特征空间的新数据作并为测试用例;解码器本质上是一种神经网络,其网络结构参数是用正常数据和异常数据分别训练得到的。权 利 要 求 书1/1页2CN110113227A2一种变分自编码的模糊测试测试用例生成方法技术领域[0001]本发明涉及一种模糊测试测试用例生成方法,具体为一种变分自编码的模糊测试测试用例生成方法,属于测试用例生成方法技术领域。背景技术[0002]模糊测试通过生成大量非正常数据,并将数据发送给测试对象,期望发现能够造成测试对象出现工作异常现象的数据。通过检测技术将异常数据记录分析,从而发现隐藏在工业网络中的漏洞。按照模糊测试的定义,其具体步骤可分为如下三步,如图1所示。模糊测试是一种灰盒测试,其不需要提前获得测试对象的全部源代码,但是需要生成能够被工控网络设备接受的非正常数据,因为工控网络设备会将不符合其协议格式的数据直接丢弃。因此模糊测试测试用例的生成是模糊测试的关键,如何生成能够造成测试目标工作异常的数据,常见的现象如造成测试目标拒绝服务,是模糊测试的目标,也是目前大多数研究的重点。[0003]变分自编码(Variational Autoencoder,VAE)是一种数据生成模型,由Kingma等人在2013年提出,后经过不断的发展,目前被广泛应用于图像生成领域。VAE作为无监督学习的一种,可以通过学习样本数据与隐编码空间以及隐编码空间与数据生成空间的特征映射,进而在输出端重构生成输入数据。因此,通过改变的数据样本的隐空间编码,并使用解码器将数据特征还原,从而可以根据要求重构生成新数据。VAE网络结构可以分为编码器部分(encoder)与解码器(decoder)部分,VAE的编码器部分与自编码器(AE)的编码器部分功能相同,都是通过深度网络提取样本数据的特征。VAE的解码器部分与自编码器的解码器部分同样功能相同,都是将提取的特征重构还原成原始数据。不同的是VAE在训练时加入噪声,使得解码器对噪声有鲁棒性,因此VAE可以将原始特征附近的特征还原成新数据,从而具有更好的“创造”能力。VAE网络结构如图2所示。[0004]目前,模糊测试测试用例生成方法主要有两种方式,基于变异的测试用例生成方法和基于生成的测试用例生成方法。基于变异的测试用例生成方法通过对工控网络中正常数据进行抓包,并对这些数据进行变异从而生成非正常数据。基于变异的测试用例生成方法不需要工控通信协议结构的相关内容,因此容易生成测试数据。但是由于基于变异的测试用例生成方法生成的数据会造成数据不符合通信协议格式,从而导致数据实际并没有发送到测试对象而是被丢弃。基于生成的测试用例生成方法通过对格式公开的协议,如Modbus /TCP、DNP3等进行解析,能够直接生成满足协议格式的测试用例。然后对测试用例的不同字段用不同的变异策略进行变异,生成能够被工控网络设备接受的非正常数据。基于生成的测试用例生成方法生成的数据可以直接被测试对象接收,拥有更高的接受率,因此是目前大多数研究的热点,但是,此方法需要研究人员熟练掌握协议相关知识,这极大增加了模糊测试的测试时间以及测试难度,而且对协议格式不公开的私有协议,无法生成测试用例。说 明 书1/4页3CN110113227A3发明内容[0005]本发明的目的在于为了解决上述问题,提供一种变分自编码的模糊测试测试用例生成方法。[0006]为达到上述目的,本发明采用以下技术方案:一种变分自编码的模糊测试测试用例生成方法,包括以下步骤:步骤A、针对不同的测试对象,采集符合测试对象协议格式的通信数据作为训练数据样本;步骤B、通过变分自编码器的编码器部分,提取得到训练数据样本的特征空间;根据不同的样本数据类型得到两类特征空间:第一类特征空间为通信中正常数据的特征空间,第二类为通信中异常数据的特征空间;步骤C、提出三种生成策略:生成策略一为生成正常数据分布之外的数据作为模糊测试测试的测试用例;生成策略二为生成异常数据分布之内的数据作为模糊测试测试的测试用例;生成策略三为生成正常数据分布与异常数据分布之间的数据作为模糊测试测试的测试用例;根据三种数据生成策略,生成三种不同的新的特征空间;步骤D、根据生成的三种不同的新的特征空间,通过变分自编码器的解码器部分,生成新的数据,该数据即为新的测试用例。[0007]所述步骤A中的不同的测试对象为工业控制网络中各种通讯协议,包括但不限于Modbus/TCP、Profinet、DeviceNet;采集符合测试对象协议格式的通信数据,包括通讯过程中产生的符合测试对象协议格式的正常数据以及异常数据,并将采集到的数据作为训练数据样本。[0008]所述步骤B中,第一类特征空间为训练数据样本为正常数据时,通过编码器得到正常数据的特征空间;第二类特征空间为训练数据为异常数据时,通过编码器得到的异常数据的特征空间。[0009]所述步骤C中,生三种不同的新的特征空间;第一种为在步骤B中得到的正常数据的特征空间之外随机采样,生成新的特征数据作为新的特征空间;第二种为在步骤B中的异常数据特征空间之内随机采样,生成新的特征数据作为新的特征空间;第三种为在步骤B中正常数据特征空间与异常数据特征空间之间随机采样作为新的特征空间。[0010]所述步骤D中,设计了两种变分自编码器的解码器,其作用是分别将三种不同的新的特征空间中的值重构生成符合三种新的特征空间的新数据作为测试用例。解码器本质上是一种神经网络,其网络结构参数是用正常数据和异常数据分别训练得到的。[0011]与现有技术相比,本发明的有益效果是:本发明方法可以应用到多种不同的工控网络协议当中去,而不是针对某一种协议。其最大特点是通过机器学习的方法学习到样本数据的特征,并根据特征以及生成策略,通过VAE技术生成新的测试用例,避免了传统模糊测试生成测试用例时需要测试人员熟练掌握协议相关知识,极大减少了测试人员的负担,增加了测试的效率以及范围。附图说明[0012]图1为模糊测试流程图。[0013]图2为本发明VAE数据生成模型网络结构图。说 明 书2/4页4CN110113227A4[0014]图3为本发明变分自编码的模糊测试测试用例生成方法步骤图。[0015]图4为Modbus协议结构图。具体实施方式[0016]以下将结合本发明在Modbus/TCP协议测试用例生成中的应用,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的对Modbus/TCP协议测试用例生成仅仅是本发明一部分实施例,而不是全部的实施例。[0017]如图3所示,一种变分自编码的模糊测试测试用例生成方法,包括以下步骤:步骤A、针对不同的测试对象,采集符合测试对象协议格式的通信数据作为训练数据样本。[0018]步骤B、通过变分自编码器的编码器(encoder)部分,提取得到训练数据样本的特征空间(code space)。根据不同的样本数据类型得到两类特征空间:第一类特征空间为通信中正常数据的特征空间,第二类为通信中异常数据的特征空间。[0019]步骤C、提出三种生成策略:生成策略一为生成正常数据分布之外的数据作为模糊测试测试的测试用例;生成策略二为生成异常数据分布之内的数据作为模糊测试测试的测试用例;生成策略三为生成正常数据分布与异常数据分布之间的数据作为模糊测试测试的测试用例;根据三种数据生成策略,生成三种不同的新的特征空间。[0020]步骤D、根据生成的三种不同的新的特征空间,通过变分自编码器的解码器(decoder)部分,重构生成新的数据,该数据即为新的测试用例。[0021]作为发明的一种技术优化方案,所述步骤A中的不同的测试对象为工业控制网络中各种通讯协议,如Modbus/TCP、Profinet、Device net等。采集符合测试对象协议格式的通信数据,包括通讯过程中产生的符合测试对象协议格式的正常数据以及异常数据,并将采集到的数据作为训练数据样本。[0022]作为发明的一种技术优化方案,所述步骤B中,第一类特征空间为训练数据样本为正常数据时,通过编码器得到正常数据的特征空间;第二类特征空间为训练数据为异常数据时,通过编码器得到的异常数据的特征空间。[0023]作为发明的一种技术优化方案,所述步骤C中,生三种不同的新的特征空间;第一种为在步骤B中得到的正常数据的特征空间之外