掌桥专利:专业的专利平台
掌桥专利
首页

一种深度学习变异算子约简方法

文献发布时间:2023-06-19 12:14:58


一种深度学习变异算子约简方法

技术领域

本发明属于软件测试中的深度学习软件测试领域,尤其适用于深度学习软件测试中测试充分性评估领域。其目的是在深度学习测试集质量评估中,过滤冗余变异算子,减少冗余变异体的生成,从而减少测试开销,是一种提高深度学习软件充分测试性能的有效方法。

背景技术

深度学习通过建立、模拟人脑中的神经元结构,形成特殊的神经网络,对输入的数据进行特征提取与识别,能很好地建立从低维数据到高维数据的特征映射。近年来,它掀起了互联网人工智能领域的热潮,已广泛应用于图像识别、自然语言处理、恶意软件检测等领域。但其广泛运用的背后存在着一个不可忽视的问题——深度学习技术应用实现的模型往往会发生一些预料之外的错误,如:在前方存在行人的情况下,深度学习自动驾驶软件未将其归类为“人”,从而导致发生车祸;某地警务人员根据监控中罪犯面部特征锁定犯罪嫌疑人,致使真正罪犯逃逸。类似这样的错误还有很多,但经调查研究发现,错误发生的很重要一个原因是系统测试质量不高。

提高测试集质量对提升系统测试质量、尽早发现模型缺陷有着非常重要的促进作用。国内外已经研究出很多有效的方法,变异测试就是其中一种。变异测试是一种传统的基于引入缺陷的测试技术,可提供“变异充分性评分”的测试标准。由于深度学习网络依赖全新的、数据驱动的编程范式,其内部逻辑由训练数据所决定,所以不能直接应用传统软件方法进行测试。深度学习系统的变异测试方法提出了深度学习变异算子,但经实验证明,利用该方法生成的一系列变异体存在冗余的情况,测试成本高昂。

本发明提出了一种深度学习变异算子约简方法。本发明的基本思想为:为每个变异算子建立一个预测模型,预测在当前程序或模型下该变异算子是否适用,从而遴选出能更准确反映变异得分的变异算子子集。首先,利用原模型集和变异算子集生成一系列变异体进行变异测试,提取测试过程中的产生的数据特征;然后,提取测试特征数据,为每个变异算子建立特征矩阵;再通过特征矩阵为每个变异算子建立预测模型;最后向各预测模型输入待测模型或程序,过滤不符合要求的变异算子,从而实现了变异算子约简。

通过本发明的深度学习变异算子约简方法,可以过滤冗余变异算子、减少变异体测试执行开销,从而提升测试效率,节省深度学习软件研发时间。

发明内容

本发明提出了一种深度学习变异算子约简方法,通过此方法可以有效地解决由变异算子冗余生成大量等价或冗余变异体,从而降低测试成本开销,改善测试不充分的问题。

为达成上述目标,本发明提出一种深度学习变异算子约简方法。首先,利用变异算子为每个源模型生成一系列变异体进行变异测试,通过数据清洗、数据归一化的方法进行特征信息提取,为每一个变异体建立变异特征矩阵MATRIX_MM;然后,对所有变异特征矩阵MATRIX_MM进行数据整理,为每一个变异算子建立算子特征矩阵MATRIX_OP;再基于此矩阵,利用BP神经网络构建模型的方法,为每个变异算子建立一个预测模型PRE_MODEL;最后将待测程序特征输入每个预测模型,最终得到适合该待测程序的变异算子子集。具体而言,该方法包括下列步骤。

1)特征信息提取。给定原始模型集M={M

本步骤的目的是从每个变异体的测试数据中提取对变异得分影响较大的充分性特征数据,形成特征向量,再根据同一模型在不同变异算子作用下的特征向量,构建该模型对应的变异特征矩阵。对于原始模型集M中的任一模型M

其中1≤i≤n。为每一个原模型构建变异特征矩阵,建立变异特征矩阵集合MATRIX_SET={MATRIX_MM

2)算子标签生成。给定变异特征矩阵集合MATRIX_SET,依次提取每个特征矩阵的相同行,建立算子特征矩阵MATRIX_OP。其中第j个变异算子的算子特征矩阵可表示如下:

其中1≤j≤k。再对该算子特征矩阵进行Min-Max标准化,实现归一化处理,所有的特征数据值将映射到[0,1]之间。Min-Max标准化计算公式可表示如下:

其中,x表示待计算数据,x_min表示数据x所在列的最小值,x_max表示数据x所在列的最大值,x’表示标准化后的结果。最终形成归一化处理后的算子特征矩阵集合MATRIX_OP。

3)预测模型建立。给定算子特征矩阵集合MATRIX_OP,根据每个算子特征矩阵信息,利用BP神经网络构建预测模型。BP神经网络包括输入层、隐藏层、输出层,可以通过样本数据训练,不断修正网络权值和阈值。在选取隐藏层神经元数量选择上参考如下经验公式:

其中n表示输入神经元个数,m表示输出神经元个数,1≤b≤10且b为常数。当变异算子所有的特征数据样本输入模型完成或被训练模型的全局误差为0时,结束训练过程。训练得到的模型即为该变异算子对应的预测模型PRE_MODEL。根据变异算子矩阵集合MATRIX_OP中变异算子op

4)变异算子约简。给定待测模型M

进一步,其中上述步骤1)的具体步骤如下:

步骤1)-1:起始状态;

步骤1)-2:输入原始模型集M={M

步骤1)-3:初始化变异特征矩阵集MATRIX_SET=Φ;

步骤1)-4:遍历原始模型集M,选择其中一个模型M

步骤1)-5:初始化变异特征矩阵MATRIX_MM=Φ;

步骤1)-6:遍历变异算子集OP,依次选择其中一个变异算子op

步骤1)-7:利用模型M

步骤1)-8:利用测试数据集T和变异体mutant进行编译测试,得到变异得分mut_score;

步骤1)-9:提取编译测试中特征数据构建特征向量a,用六元组表示为

步骤1)-10:将特征向量a加入变异特征矩阵MATRIX_MM;

步骤1)-11:判断变异算子集OP是否遍历完成,若是则执行下一步,否则执行步骤1)-6;

步骤1)-12:将变异特征矩阵MATRIX_MM加入变异特征矩阵集MATRIX_SET;

步骤1)-13:判断原始模型集M是否遍历完成,若是则执行下一步,否则执行步骤1)-4;

步骤1)-14:输出变异特征矩阵集MATRIX_SET;

步骤1)-15:结束状态。

进一步,其中上述步骤2)的具体步骤如下:

步骤2)-1:初始状态;

步骤2)-2:输入变异特征矩阵集MATRIX_SET;

步骤2)-3:初始化算子特征矩阵集MATRIX_OP=Φ,index=0;

步骤2)-4:初始化算子特征矩阵MATRIX_op=Φ;

步骤2)-5:遍历变异特征矩阵集MATRIX_SET,依次取出所有变异特征矩阵第index行,加入算子特征矩阵MATRIX_op;

步骤2)-6:index=index+1;

步骤2)-7:将矩阵MATRIX_op加入集合MATRIX_OP;

步骤2)-8:判断index和k的大小(判断变异特征矩阵所有行是否遍历完成),若大于则执行下一步,否则执行步骤2)-4;

步骤2)-9:利用Min-Max标准化对算子特征矩阵集MATRIX_OP进行归一化处理;

步骤2)-10:输出算子特征矩阵集MATRIX_OP;

步骤2)-11:结束状态。

进一步,其中上述步骤3)的具体步骤如下:

步骤3)-1:初始状态;

步骤3)-2:输入算子特征矩阵集MATRIX_OP;

步骤3)-3:初始化预测模型集PRE_MODEL=Φ;

步骤3)-4:遍历算子特征矩阵集MATRIX_OP,依次选择特征矩阵MATRIX_op;

步骤3)-5:初始化BP-神经网络模型P_MODEL;

步骤3)-6:遍历特征矩阵MATRIX_op的每一行,前五个数据作为输入样本,最后一个数据作为输出样本;

步骤3)-7:计算隐藏层、输出层的输入与输出;

步骤3)-8:利用输出样本和实际输出计算反向误差;

步骤3)-9:修正神经网络中各层权重;

步骤3)-10:计算全局误差;

步骤3)-11:判断变异算子所有的特征数据样本输入模型是否完成或被训练模型的全局误差是否为0,若是则执行下一步,否则执行步骤3)-6;

步骤3)-12:将P_MODEL加入预测模型集PRE_MODEL;

步骤3)-13:判段算子特征矩阵集是否遍历完成,若是则执行下一步,否则执行步骤3)-4;

步骤3)-14:输出预测模型集PRE_MODEL;

步骤3)-15:结束状态。

进一步,其中上述步骤4)的具体步骤如下:

步骤4)-1:初始状态;

步骤4)-2:输入待测模型M

步骤4)-3:提取特征数据信息,构成五元组

步骤4)-4:对五元组进行归一化处理;

步骤4)-5:依次遍历预测模型,向模型输入归一化处理后的五元组;

步骤4)-6:根据被选中预测模型输出判断是否使用该预测模型对应的变异算子,若是则执行下一步,否则在变异算子集OP中删除该变异算子;

步骤4)-7:判断预测模型是否遍历完成,若是则执行下一步,否则执行步骤4)-5;

步骤4)-8:输出约简后的变异算子集OP;

步骤4)-9:结束状态。

附图说明

图1为本发明实施中一种深度学习变异算子约简方法的流程图。

图2为图1中特征信息提取的流程图。

图3为图1中算子标签生成的流程图。

图4为图1中预测模型建立的流程图。

图5为图1中变异算子约简的流程图。

具体实施方式

为了更了解本发明的技术内容,特举具体实施例、附图式说明如下:

图1为本发明实施中一种深度学习变异算子约简方法的流程图。

一种深度学习变异算子约简方法,其特征在于,包括下列步骤。

S1特征信息提取,通过原始模型集和变异算子集生成一系列变异体,再利用测试集和变异体进行编译测试。提取测试过程中产生的充分性特征数据信息,包括模型的相同输入输出层数、权重稀疏度、权重分布、变异算子作用域、变异算子作用效果、变异得分。将每个变异体中提取出的特征信息构建为特征向量,同一模型生成的变异体构建的特征向量组合为变异特征矩阵,所有模型的变异特征矩阵构建为变异特征矩阵集。

S2算子标签生成,将变异特征矩阵集中各矩阵相同行的特征向量进行组合,组合的结果为各个变异算子对应的算子特征矩阵;再对各算子特征矩阵进行归一化处理,处理后的矩阵即为相应变异算子的标签,是值在[0,1]的算子特征矩阵。

S3预测模型建立,每个变异算子给定算子特征矩阵,矩阵的每一行前五个数据为输入样本,最后一个为输出样本;通过构建BP神经网络模型,利用样本数据进行计算、训练,最终每个变异算子可以得到对应的预测模型。

S4变异算子约简,给定待测模型、变异算子集、预测模型集,提取特征信息包括模型相同输入输出层数、权重稀疏度、权重分布、变异算子作用域、变异算子作用效果,通过预测结果判断各变异算子是否应用于该模型的变异测试中,从而得到合适的变异算子子集。

图2为特征信息提取的流程图。利用给定的原始模型集、测试数据集、变异算子集生成变异体、进行变异测试,再提取测试过程中产生的充分性特征数据信息,构建特征信息向量,并为各模型生成变异特征矩阵,具体步骤如下:

步骤1:起始状态;步骤2:输入原始模型集M={M

图3为算子标签生成的流程图。利用给定的变异特征矩阵集,根据各矩阵中特征向量的信息,为各变异算子生成相应的算子特征矩阵。再通对算子特征矩阵进行归一化处理,处理后的矩阵即为变异算子的标签。具体步骤如下:

步骤1:初始状态;步骤2:输入变异特征矩阵集MATRIX_SET;步骤3:初始化算子特征矩阵集MATRIX_OP=Φ,index=0;步骤4:初始化算子特征矩阵MATRIX_op=Φ;步骤5:遍历变异特征矩阵集MATRIX_SET,依次取出所有变异特征矩阵第index行,加入算子特征矩阵MATRIX_op;步骤6:index=index+1;步骤7:将矩阵MATRIX_op加入集合MATRIX_OP;步骤8:判断index和k的大小(判断变异特征矩阵所有行是否遍历完成),若大于则执行下一步,否则执行步骤4;步骤9:利用Min-Max标准化对算子特征矩阵集MATRIX_OP进行归一化处理;步骤10:输出算子特征矩阵集MATRIX_OP;步骤11:结束状态。

图4为预测模型建立的流程图。给定算子特征矩阵集,针对每个变异算子对应的算子特征矩阵,通过BP神经网络模型的建立方法,为每个变异算子构建预测模型,生成预测模型集。具体步骤如下:

步骤1:初始状态;步骤2:输入算子特征矩阵集MATRIX_OP;步骤3:初始化预测模型集PRE_MODEL=Φ;步骤4:遍历算子特征矩阵集MATRIX_OP,依次选择特征矩阵MATRIX_op;步骤5:初始化BP-神经网络模型P_MODEL;步骤6:遍历特征矩阵MATRIX_op的每一行,前五个数据作为输入样本,最后一个数据作为输出样本;步骤7:计算隐藏层、输出层的输入与输出;步骤8:利用输出样本和实际输出计算反向误差;步骤9:修正神经网络中各层权重;步骤10:计算全局误差;步骤11:判断变异算子所有的特征数据样本输入模型是否完成或被训练模型的全局误差是否为0,若是则执行下一步,否则执行步骤6;步骤12:将P_MODEL加入预测模型集PRE_MODEL;步骤13:判段算子特征矩阵集是否遍历完成,若是则执行下一步,否则执行步骤4;步骤14:输出预测模型集PRE_MODEL;步骤15:结束状态。

图5为变异算子约简的流程图。给定预测模型集、待测模型、变异算子集提取特征数据,向每一个预测模型输入提取的特征数据信息,根据预测结果判断变异算子是否使用,从而得到变异算子子集。具体步骤如下:

步骤1:初始状态;步骤2:输入待测模型M

综上所述,本发明解决了目前深度学习变异算子存在的冗余问题,从而使得深度学习变异测试中冗余或等价变异体数量降低、变异得分更为准确,更进一步减小了测试开销、节省了测试时间、提高了测试效率。

相关技术
  • 一种深度学习变异算子约简方法
  • 基于自适应约简阈值的物联网感知数据约简系统及方法
技术分类

06120113228883