一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种映射关系制导的循环代码模糊测试方法

2022-11-12 20:39:57 来源:中国专利 TAG:

技术特征:
1.一种映射关系制导的循环代码模糊测试方法,其特征在于,包括:s1:输入被测项目,插桩循环代码结构,编译并输出被测程序;s2:输入初始测试用例并进行变异,将变异后的测试用例加入到测试用例队列,发送到所述被测程序运行,判断所述测试用例队列是否满足模糊测试终止条件,若满足,则输出覆盖情况统计表;若不满足,则对所述测试用例队列中的测试用例进行变异,生成子代测试用例,以满足所述模糊测试终止条件;s3:输入所述覆盖情况统计表,训练深度学习模型并反向计算权重距离和,构建并输出所述测试用例的字节序列与循环代码结构覆盖情况之间的映射关系;s4:基于所述映射关系,对与所述循环代码结构覆盖情况对应的所述测试用例中的相应字节序列进行变异,生成子代测试用例;s5:将s4所述子代测试用例作为所述s2被测程序的输入,进行模糊测试,直到满足所述模糊测试终止条件,输出模糊测试报告。2.根据权利要求1所述的一种映射关系制导的循环代码模糊测试方法,其特征在于,s1具体为:s1-1:输入所述被测项目;s1-2:读取并遍历所述被测项目的测试对象序列,判断该测试对象object
i
是否为循环代码结构,若是,则执行步骤s1-3;否则执行步骤s1-4;s1-3:对所述测试对象object
i
执行插桩,插桩完成后执行步骤s1-4;s1-4:判断测试对象序列是否全部遍历,若全部遍历则执行s1-5,否则执行s1-2;s1-5:将插桩后的被测项目编译为被测程序;s1-6:输出所述被测程序。3.根据权利要求1所述的一种映射关系制导的循环代码模糊测试方法,其特征在于,s2具体为:s2-1:输入所述初始测试用例和所述被测程序,将初始测试用例加入到测试用例队列中;s2-2:判断是否满足所述模糊测试终止条件,若尚未满足所述终止条件则执行步骤s2-3,否则执行s2-13;s2-3:将所述测试用例队列中的测试用例进行变异,将生成的子代测试用例加入到测试用例队列中;s2-4:从所述测试用例队列中依次读取队列中的子代测试用例,将子代测试用例发送至所述被测程序,作为所述被测程序的输入,直到所述测试用例队列为空;s2-5:运行所述被测程序并收集每条所述子代测试用例的覆盖情况;s2-6:遍历所述子代测试用例,若所述子代测试用例尚未被完全遍历则执行s2-7,否则执行s2-2;s2-7:读取所述测试用例队列te中的第i个子代测试用例t
i
,以及所述子代测试用例t
i
对应的覆盖情况;s2-8:判断所述子代测试用例t
i
是否触发崩溃,若触发崩溃则执行步骤s2-10,否则执行s2-9;s2-9:判断所述子代测试用例t
i
是否覆盖到更多循环代码结构,若覆盖到更多循环代码
则执行s2-11,否则执行s2-5;s2-10:将所述子代测试用例t
i
保存到本地;s2-11:将所述子代测试用例t
i
加入到测试用例队列;s2-12:将所述子代测试用例以及对应的覆盖情况保存到覆盖情况统计表中;执行s2-6;s2-13:输出覆盖情况统计表。4.根据权利要求1所述的一种映射关系制导的循环代码模糊测试方法,其特征在于,s3具体为:s3-1:输入由测试用例集te=(t1,t2,

,t
n
)
t
和测试用例的覆盖情况集s=(s1,s2,

,s
n
)
t
组成的所述覆盖情况统计表;其中,n为所述测试用例数量,te中的元素为所述测试用例,s中的元素为所述测试用例的覆盖情况;s3-2:将所述测试用例集te和所述测试用例的覆盖情况集s转化为深度学习模型可以识别的训练数据;t
i
为第i个测试用例,将所述测试用例集te=(t1,t2,

,t
n
)
t
中的测试用例t
i
进行二进制转化,选择前k个二进制字节作为所述测试用例t
i
的二进制字节序列,t
i
=(x
i,1
,x
i,2
,

,x
i,k
);得到所述测试用例t
i
的特征矩阵m
feature
:其中,k由使用者决定,为将所述测试用例转化为二进制字节,所选择的字节数量;s
i
则为所述测试用例t
i
作为被测程序的输入时各个循环代码结构的覆盖情况,s
i
=(y
i,1
,y
i,2
,

,y
i,m
),其中,m为被测项目中循环代码结构的数量;基于所述s
i
,可得到所述测试用例t
i
作为被测程序的输入时各个循环代码结构的覆盖情况的的标签矩阵m
label
;;其中,y
i,j
为测试用例t
i
作为输入时第j个循环代码结构object
j
的覆盖情况;s3-3:基于所述特征矩阵m
feature
和所述标签矩阵m
label
训练深度学习模型;模型的训练数据由n对二元组构成,第i对二元组为特征矩阵和标签矩阵中的第i行,分别作为特征向量和标签向量,其中1≤i≤n;深度学习模型采用全连接神经网络模型;s3-4:对训练好的深度神经网络模型n进行反向计算,n的输入层x由k个神经元组成,x=(x1,x2,

,x
k
),其中,k为特征的数量,为选取的所述测试用例字节序列长度;n的输出层y由m个神经元组成组成,y=(y1,y2,

,y
m
),其中,m为标签的数量,为循环代码结构的数量;对于输出层的每一个神经元y
j
以及输入层的每一个神经元x
i
,可通过公式(4)计算y
j
与每一个x
i
之间的权重距离和;
公式(4)中的u
i,j
为输出层神经元y
j
与输入层神经元x
i
之间的权重距离和;p为x
i
与y
j
之间的神经元连接路径的数量,对于全连接神经网络,p可通过公式(5)计算;其中,d表示深度神经网络n中隐藏层的层数;sizeoflayer(index)表示第index层隐藏层的神经元数量,将各隐藏层的神经元数量累乘,可得到从输入层神经元x
i
到输出层神经元y
j
之间连接路径的数量;公式(4)中的为输入层神经元x
i
与输出层神经元y
j
之间的第l条神经元路径所构成的权重坐标,每个坐标即为神经元路径中的每一个权重,由输入层到输出层的顺序依次将权重值作为坐标轴上的数值,构建为权重坐标,权重坐标的具体形式可通过公式(6)计算;其中,x
i
和y
j
分别为任意输入层和输出层的神经元,ξ
l
(s)为第l条神经元连接路径中的第s个神经元,即x
i
、o
1:h
、o
2:u
、o
d:k
和y
j
,d为深度神经网络模型中的隐藏层层数,为神经元o
k:h
与下一层神经元o
k 1:u
之间的权重值;将权重值按照由输入层到输出层的顺序排列,可得到一组表示x
i
到y
j
之间神经元路径的权重坐标;权重坐标中的第s个坐标值使用表示,其中0≤s≤d;公式(4)中的表示权重坐标和权重坐标之间的距离,采用公式(7)中的欧几里得距离进行计算;s3-5:基于公式(4)得到的所述权重距离和构建所述测试用例的字节序列与循环代码结构覆盖情况之间的映射关系m;其中,u
i,j
表示输出层神经元y
j
与输入层神经元x
i
之间的权重距离和,k为输入层的神经元数量,也是选取的所述测试用例字节序列长度,m表示输出层的神经元数量,也是循环代码结构的数量;s3-6:输出所述映射关系m。5.根据权利要求1所述的一种映射关系制导的循环代码模糊测试方法,其特征在于,s4具体为:s4-1:输入所述覆盖情况统计表;s4-2:根据适应度函数计算种子测试用例的适应度;
s4-3:输入所述测试用例的字节序列与循环代码结构覆盖情况之间的映射关系m;s4-4:结合所述映射关系m中权重距离和,分配所述测试用例的字节序列的变异概率并选择变异位置;s4-5:根据所述变异位置变异所述测试用例,生成所述子代测试用例;s4-6:输出所述子代测试用例。

技术总结
本发明公开了一种映射关系制导的循环代码模糊测试方法,应用于软件测试领域,包括:将测试用例不断变异,输入到测试用例队列,发送至经插桩循环代码结构得到的被测程序运行,当满足模糊测试终止条件时输出覆盖情况统计表;训练深度学习模型并反向计算权重距离和,构建并输出测试用例的字节序列与循环代码结构覆盖情况之间的映射关系;基于映射关系,对与循环代码结构覆盖情况对应的测试用例中的相应字节序列分配变异概率并进行变异,生成子代测试用例,并将其作为被测程序的输入,进行模糊测试,直到满足模糊测试终止条件,输出模糊测试报告。本方法基于映射关系对测试用例字节序列进行变异,能够针对性地生成提高循环代码结果覆盖率的测试用例。果覆盖率的测试用例。果覆盖率的测试用例。


技术研发人员:崔展齐 杨慧文 郑丽伟
受保护的技术使用者:北京信息科技大学
技术研发日:2022.09.02
技术公布日:2022/11/11
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献