基于深度学习模糊测试的循环代码测试数据生成方法技术

技术编号:38710110 阅读:20 留言:0更新日期:2023-09-08 14:53
本发明专利技术公开了一种基于深度学习模糊测试的循环代码测试数据生成方法,包括:利用循环代码在深度学习模型上的输出不确定性指导具备高不确定性的循环代码种子数据的选择;设计9种变异规则以实现对循环代码的不同类型的变异;分析各神经元与深度学习模型错误决策逻辑的相关程度;以最大化神经元覆盖率和错误行为数量作为联合优化目标,对优化目标建模,将目标函数的导数作为梯度,选择变异规则对种子进行变异,并利用梯度进行迭代变异;实现选择出的循环代码种子数据的变异,以完成循环代码测试数据的生成。本发明专利技术利用循环代码在深度学习模型上的分类输出概率以及相关神经元信息设计优化目标,以有效指导循环代码的变异。以有效指导循环代码的变异。以有效指导循环代码的变异。

【技术实现步骤摘要】
基于深度学习模糊测试的循环代码测试数据生成方法


[0001]本专利技术属于深度学习测试数据生成领域,具体涉及一种基于深度学习模糊测试的循环代码测试数据生成方法。

技术介绍

[0002]随着深度学习技术的迅猛发展,基于大量代码数据训练好的深度学习模型被广泛应用于自动驾驶、人脸识别、语音识别等多种领域。基于深度学习模糊测试的循环代码测试数据生成方法及系统利用深度学习和模糊测试相结合的技术,旨在生成高质量的循环代码用以测试深度学习模型。循环代码是计算机程序中最常见的结构之一,循环的正确性对程序的正确性至关重要。循环代码的测试是软件测试的重要组成部分。在循环代码测试中,一个循环通常被认为是一个循环体(loop body)和一个循环条件(loop condition)的组合,循环体内的代码会被执行多次,直到循环条件不再成立。传统的测试方法往往只覆盖代码的部分执行路径,循环代码的测试尤其容易出现遗漏。
[0003]为了提高循环代码测试的覆盖率和效率,近年来基于深度学习模糊测试的循环代码测试方法逐渐受到了研究者们的关注。传统的模糊测试是一种黑盒测试方法,通过随机生成输入数据来发现程序中的漏洞和错误。在基于模糊测试的循环代码测试中,测试数据生成器会随机生成一组输入数据,并将其作为循环体的执行输入。测试数据生成器还会根据循环条件的特性,生成一组满足循环条件的输入数据。通过这种方式,测试数据生成器可以在尽可能少的测试数据下,覆盖循环代码的所有执行路径。而基于深度学习模糊测试的循环代码测试方法将深度学习技术与传统模糊测试技术相结合,通过自动学习循环代码的特征和规律,生成随机的、异常的循环代码测试数据来测试深度学习模型的鲁棒性。目前已有的基于深度学习模糊测试的循环代码测试数据生成方法主要通过随机生成一些循环代码测试数据来测试相应的深度学习模型的准确性。
[0004]与传统的测试数据生成方法相比,基于深度学习模糊测试的循环代码测试数据生成方法具有以下优点:(1)可以生成大量的测试数据,覆盖更多的模型决策路径,发现模型中更多潜在的边界条件和异常情况,从而提高测试有效性。(2)可以在不需要深入了解代码结构和算法的情况下,利用深度学习模型提取循环代码特征进行测试。(3)可以减少循环代码测试数据生产的时间和成本。
[0005]但是,基于深度学习模糊测试的循环代码测试数据生成方法也存在以下问题:(1)测试数据质量难以保证;随机生成的测试数据可能无法覆盖模型所有的决策路径,甚至可能忽略了一些重要的测试数据。(2)由于模糊测试是基于随机性的,因此测试数据的生成是不确定的,可能会导致重复生成相同的测试数据或生成无效的测试数据。
[0006]因此,亟需涉及一种高效的基于深度学习模糊测试的循环代码测试数据生成方法,改进模糊测试以减少测试数据生成的随机性,并结合深度学习技术设计变异规则来保证生成的测试数据的质量以及效率,实现循环代码测试数据生成。该技术不仅可以生成高质量的循环代码用于测试深度学习模型,而且具有较好的适应性和灵活性,适用于多种应
用场景。

技术实现思路

[0007]针对于上述现有技术的不足,本专利技术的目的在于提供一种基于深度学习模糊测试的循环代码测试数据生成方法,以解决现有的循环代码生成技术效率低下且难以收集到罕见循环代码以暴露其带来的模型缺陷问题;本专利技术利用模糊测试思想,设计基于不确定性的种子数据选择策略,筛选出高质量的循环代码作为种子数据,对循环代码种子测试数据进行变异,生成新的循环代码作为测试数据,指导DL系统暴露更多的缺陷问题,以提高缺陷检测效率。
[0008]为达到上述目的,本专利技术采用的技术方案如下:
[0009]本专利技术的一种基于深度学习模糊测试的循环代码测试数据生成方法,步骤如下:
[0010]1)利用循环代码在深度学习模型上的输出不确定性指导具备高不确定性的循环代码种子数据的选择;
[0011]2)针对循环代码设计9种变异规则以实现对循环代码的不同类型的变异;
[0012]3)通过设计具备可解释性的神经元选择方法,分析各个神经元与深度学习模型错误决策逻辑的相关程度,选择相关程度高的神经元作为目标神经元;
[0013]4)以最大化目标神经元覆盖率和错误行为数量作为联合优化目标,对联合优化目标建模,将目标函数的导数作为梯度,选择变异规则对种子进行变异,并利用梯度进行迭代变异;
[0014]5)根据步骤2)中的变异规则、步骤3)中的神经元选择方法及步骤4)中优化目标,实现步骤1)中选择出的循环代码种子数据的变异,以完成循环代码测试数据的生成。
[0015]进一步地,所述步骤1)具体包括:
[0016]11)将循环代码测试数据按照其所属循环类型划分为不同类别的集合;
[0017]12)在每个测试数据集合中,利用词嵌入方法Word2Vec将循环代码测试数据转化为向量,获取循环代码的原始特征,将其输入到深度学习模型中进一步抽取其最后一层的输出向量;
[0018]13)利用步骤12)中提取的输出向量,将深度学习模型分类问题简化为一个衡量测试集合杂质的问题;对测试数据的不确定性定义如下:给定一个测试数据t,以及测试数据t在被测模型上的输出向量P
t
=<p
t,1
,p
t,2
,...,p
t,N
>,利用测试数据t在被测模型上的输出向量值P
t
,计算测试数据的输出纯度并进一步得到输出不纯度ξ(t),用于衡量测试数据t在被测模型上的输出不确定性;ξ(t)的计算公式如下:
[0019][0020]式中,p
t,i
为t属于类别i的概率;N为循环代码测试数据集的总类别数目;
[0021]14)依据步骤13)计算各个类别集合中的每个循环代码测试数据在模型输出上的不确定性,分别将各个类别集合中循环代码测试数据依据不确定性值分别从大到小依次排序,并从各个排序集合中均匀选择排序在前的,具有高不确定性的循环代码数据作为种子数据。
[0022]进一步地,所述步骤2)中的9种变异规则具体包括:
[0023]21)改变循环变量的步长或方向;
[0024]22)改变循环终止条件;
[0025]23)改变循环体中的操作或表达式;
[0026]24)插入、删除或替换循环体中的语句;
[0027]25)改变循环体中的变量引用;
[0028]26)改变循环体中的函数调用;
[0029]27)改变循环体中的常量值;
[0030]28)将循环体中的语句移动到循环外部,或将循环外部的语句移动到循环体内部;
[0031]29)将循环体中的语句复制一份并执行两次,或将循环体中的语句删除一部分。
[0032]进一步地,所述步骤2)具体还包括:9种变异规则通过任意两两组合构成组合变异规则;单一变异规则和组合变异规则可用来产生一系列变异体,用于测试深度学习模型的鲁棒本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于深度学习模糊测试的循环代码测试数据生成方法,其特征在于,步骤如下:1)利用循环代码在深度学习模型上的输出不确定性指导具备高不确定性的循环代码种子数据的选择;2)针对循环代码设计9种变异规则以实现对循环代码的不同类型的变异;3)通过设计具备可解释性的神经元选择方法,分析各神经元与深度学习模型错误决策逻辑的相关程度,选择相关程度高的神经元作为目标神经元;4)以最大化目标神经元覆盖率和错误行为数量作为联合优化目标,对联合优化目标建模,将目标函数的导数作为梯度,选择变异规则对种子进行变异,并利用梯度进行迭代变异;5)根据步骤2)中的变异规则、步骤3)中的神经元选择方法及步骤4)中优化目标,实现步骤1)中选择出的循环代码种子数据的变异,以完成循环代码测试数据的生成。2.根据权利要求1所述的基于深度学习模糊测试的循环代码测试数据生成方法,其特征在于,所述步骤1)具体包括:11)将循环代码测试数据按照其所属循环类型划分为不同类别的集合;12)在每个测试数据集合中,利用词嵌入方法Word2Vec将循环代码测试数据转化为向量,获取循环代码的原始特征,将其输入到深度学习模型中进一步抽取其最后一层的输出向量;13)利用步骤12)中提取的输出向量,将深度学习模型分类问题简化为一个衡量测试集合杂质的问题;对测试数据的不确定性定义如下:给定一个测试数据t,以及测试数据t在被测模型上的输出向量P
t
=<p
t,1
,p
t,2
,...,p
t,N
>,利用测试数据t在被测模型上的输出向量值P
t
,计算测试数据的输出纯度并进一步得到输出不纯度ξ(t),用于衡量测试数据t在被测模型上的输出不确定性;ξ(t)的计算公式如下:式中,p
t,i
为t属于类别i的概率;N为循环代码测试数据集的总类别数目;14)依据步骤13)计算各个类别集合中的每个循环代码测试数据在模型输出上的不确定性,分别将各个类别集合中循环代码测试数据依据不确定性值分别从大到小依次排序,并从各个排序集合中均匀选择排序在前的,具有高不确定性的循环代码数据作为种子数据。3.根据权利要求1所述的基于深度学习模糊测试的循环代码测试数据生成方法,其特征在于,所述步骤2)中的9种变异规则具体包括:21)改变循环变量的步长或方向;22)改变循环终止条件;23)改变循环体中的操作或表达式;24)插入、删除或替换循环体中的语句;25)改变循环体中的变量引用;26)改变循环体中的函数调用;27)改变循环体中的常量值;28)将循环体中的语句移动到循环外部,或将循环外部的语句移动到循环体内部;
29)将循环体中的语句复制一份并执行两次,或将循环体中的语句删除一部分。4.根据权利要求3所述的基于深度学习模糊测试的循环代码测试数据生成方法,其特征在于,所述步骤2)具体还包括:9种变异规则通过任意两两组合构成组合变异规则;单一变异规则和组合变异规则可用来产生一...

【专利技术属性】
技术研发人员:陶传奇李丽郭虹静
申请(专利权)人:南京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1