一种基于传统特征和语义特征结合的缺陷预测方法技术

技术编号:30754129 阅读:13 留言:0更新日期:2021-11-10 12:07
本发明专利技术涉及一种基于传统特征和语义特征结合的缺陷预测方法。本发明专利技术首先使用javalang从程序源代码中提取出关键性节点,将节点信息通过CBOW模型进行语义特征的训练,其次对语义特征进行降维以平衡语义特征和传统特征的维度差异,降维后的语义特征再和传统特征线性组合,然后使用smote进行类不平衡的处理,最后构建深度学习模型学习组合特征的关联关系,挖掘对于模型预测更有价值的特征,得到一个用于软件缺陷预测分类的模型。本发明专利技术解决了语义特征和传统特征更有效的结合的问题,利用组合特征更准确的预测出有缺陷的模块,帮助测试经理寻找软件的缺陷,降低软件开发成本。降低软件开发成本。降低软件开发成本。

【技术实现步骤摘要】
一种基于传统特征和语义特征结合的缺陷预测方法


[0001]本专利技术是对同项目跨版本的软件缺陷预测的一种学习方法,旨在使用该技术以后预测缺陷数据集内的缺陷样本,帮助测试人员更有效地定位缺陷和分配测试资源,从而降低软件测试的成本。

技术介绍

[0002]软件缺陷预测在软件测试中起着重要的作用,80%的缺陷往往存在于20%的代码块中,软件缺陷预测技术可以帮助定位到有缺陷的部分,提高软件测试的效率。根据软件缺陷预测的粒度不同可以分为模块级、文件级和变更级缺陷预测。以前的WPDP研究中大多采用的是基于传统度量特征来构建机器学习模型,如代码行(LOC)、基于运算符和操作数的Halstead度量以及面向对象程序的CK度量等。然而这些度量通常无法区分具有不同语义的程序,不能捕获程序的语义信息和度量指标之间的潜在关联,这可能限制软件缺陷预测的性能。
[0003]伴随着深度学习的发展,越来越多的研究利用深度学习技术从源代码中获取语义信息将其作为特征来构建模型。研究表明,深度学习模型可以有效的捕获程序的语义信息,程序语义特征更加注重代码提供的细节信息,缺少传统特征所具备模块全局的信息,可以考虑将两者进行结合以获得多元的特征表达,但是语义特征和传统特征的差异较大,如何更加有效的结合是本专利技术的重点,得到更有助于提高软件缺陷预测性能的结合特征。

技术实现思路

[0004]本专利技术是探究传统特征与语义特征之间更好的结合方式,以提高软件缺陷预测性能。在数据预处理阶段使用词嵌入技术学习语义特征,通过降维减少语义特征的维度后与传统特征结合,从数据层面上解决了语义特征与传统特征的初步结合。在通过深度学习模型学习两类特征之间的关联关系,提取出对于模型预测更有价值的特征,从模型的层面进一步对语义特征和传统特征深度结合。
[0005]本专利技术针对的是文件级的软件缺陷预测,即一个文件是一个样本,从文件中提取特征用于训练与预测。除此之外,软件缺陷预测技术还可以分为项目内软件缺陷预测 (WPDP)和跨项目软件缺陷预测(CPDP)。本专利技术针对的是WPDP,来自程序旧版本的数据集被用来建立缺陷预测模型,然后该模型被用来预测新版本的数据集。
[0006]本专利技术方法具体包括以下步骤:
[0007]步骤1)基于源代码提取特征结点,基于javalang项目将java源程序解析成抽象语法树,从根结点遍历抽象语法树,从中抽取出三大类的特征结点。将一个源文件转换成一个非数值序列样本。三大类的特征结点;如下:
[0008]1)方法调用和类实例创建结点;表示为方法名或者类名。
[0009]2)声明结点;包括方法声明结点、类型声明结点、枚举声明结点,用其值表示。
[0010]3)控制流结点。包括while、try、catch、if、throw、for,用结点类型表示。
[0011]步骤2)特征结点语义训练;
[0012]构建连续词袋模型,将同一个项目的两个版本通过步骤1抽取特征结点,将低版本的作为训练集,高版本作为测试集。将两个版本的特征结点序列输入到CBOW模型当中训练,该模型会自动的利用特征结点的上下文关系来迭代更新,获得特征结点对应的词向量。
[0013]CBOW模型训练结束后会得到一个词典,里面保存着特征结点与其对应的词向量的关系。训练集和测试集中的特征结点根据词典进行映射,得到数值样本。
[0014]由于每个文件中抽取出的特征结点数量不一致,导致映射后的数值样本长度不同,所以给定参数m,将样本长度大于m的部分删去,小于m的部分以0补齐,得到语义特征。
[0015]步骤3)特征降维,将步骤2得到的语义特征通过变分自动编码器进行降维,得到降维后的语义特征。
[0016]步骤4)特征结合;
[0017]语义特征包含了源代码中的语义信息,传统特征包含了代码行、程序复杂度等代码中的统计信息。将两者结合可以得到更完整的文件级的信息特征表示。
[0018]特征结合采用early fusion,在特征角度上进行融合,进行不同特征的链接,即语义特征线性组合传统特征得到组合后的特征。
[0019]步骤5)类不平衡处理,软件缺陷数据集存在类不平衡的问题,对组合特征进行 smote过采样,使有缺陷样本和无缺陷样本数量一致。
[0020]步骤6)构建模型与模型训练,采用一维卷积神经网络对组合特征进行进一步的学习,再结合上LR进行模型的训练。
[0021]采用一维卷积神经网络对结合的特征进行进一步的学习,再结合上LR进行模型的训练;卷积神经网络使用卷积核来实现共享参数,加快训练的速度。另一方面,卷积核起到了特征提取的作用,在整个模型训练的过程中,对于预测准确率有提升的特征会被放大,将组合特征通过卷积神经网络学习这两类特征之间的关联关系,提取出对于模型预测更有价值的特征,提高软件缺陷预测的准确率。
[0022]模型的整体架构由输入层、卷积层、池化层、全连接层和逻辑回归层组成,经过不同的超参数调整,得出以下具体的每一层的细节:
[0023]1).输入层:输入层结点的数量等于结合后的样本的维度;
[0024]2).第一层卷积层:输入层是序列样本,卷积核选择n*1,使用8个3*1的卷积核,激活函数选择relu;
[0025]3).第一层池化层:将上一层之后的数据做2*1的最大池化。
[0026]4).第二层卷积层:使用了16个3*1的卷积核,激活函数选择relu。
[0027]5).第二层池化层:将上一层之后的数据做2*1的最大池化。
[0028]6).全连接层:将池化后的数据全连接,全连接层单元个数选择1024。激活函数选择relu。这一层加入了dropout,用于防止过拟合。
[0029]7).逻辑回归层:利用逻辑回归模型对全连接层的输出进行分类。输出输入样本是缺陷的概率。
[0030]步骤7:模型训练;
[0031]所述的模型训练的具体实施如下:
[0032]加入了正则化:为了避免模型过度拟合,使模型收敛更快,对卷积层和全连接层增
加了L2正则化。
[0033]在模型的训练阶段,使用步骤5得到的训练集样本和标签分批次的输入到构建好的模型中进行训练。由于是二分类问题,所以使用交叉熵计算模型的损失,公式如下:
[0034][0035]x表示样本,p(x)表示该样本的正确标签,q(x)表示该样本的预测结果。训练的目标是使H(p,q)尽可能的小。
[0036]同时为了防止过拟合,将上述公式结合L2正则表达式作为损失函数,并使用Adam 优化器算法对训练过程进行优化。
[0037]模型训练结束后,将测试集样本预处理后输入到模型中,即可得到模型预测的标签。
[0038]本专利技术的有益效果:
[0039]1、该技术采用VAE对高维度少样本的程序语义特征进行降维,以解决程序语义特征维度爆炸和特征冗余问题,同时由于语义特征与传统特征的维度差异较大,直接将两者进行结合会本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于传统特征和语义特征结合的缺陷预测方法,其特征在于包含如下步骤:步骤1)基于源代码提取特征结点;步骤2)特征结点语义训练;步骤3)特征降维;步骤4)特征结合;将降维后的语义特征与传统特征结合;步骤5)类不平衡处理;步骤6)构建训练模型;步骤7)模型训练。2.根据权利要求1所述的基于传统特征和语义特征结合的缺陷预测方法,其特征在于步骤1所述的基于源代码提取特征结点的具体如下:将java源程序解析成抽象语法树,从根结点遍历抽象语法树,从中抽取出三大类的特征结点;如下:1)方法调用和类实例创建结点;表示为方法名或者类名;2)声明结点;包括方法声明结点、类型声明结点、枚举声明结点,用其值表示;3)控制流结点;包括while、try、catch、if、throw、for,用结点类型表示。3.根据权利要求1所述的基于传统特征和语义特征结合的缺陷预测方法,其特征在于步骤2所述的特征结点语义训练的具体如下:构建连续词袋模型,将同一个项目的两个版本通过步骤1抽取特征结点,将低版本的作为训练集,高版本作为测试集;将两个版本的特征结点序列输入到CBOW模型当中训练,该模型会自动的利用特征结点的上下文关系来迭代更新,获得特征结点对应的词向量;CBOW模型训练结束后会得到一个词典,里面保存着特征结点与其对应的词向量的关系;训练集和测试集中的特征结点根据词典进行映射,得到数值样本;由于每个文件中抽取出的特征结点数量不一致,导致映射后的数值样本长度不同,所以给定参数m,将样本长度大于m的部分删去,小于m的部分以0补齐,得到语义特征。4.根据权利要求1所述的基于传统特征和语义特征结合的缺陷预测方法,其特征在于步骤3所述的特征降维的具体如下:通过自动变分编码器对数据进行降维处理;将步骤2得到的语义特征通过VAE进行降维,得到降维后的语义特征。5.根据权利要求1所述的基于传统特征和语义特征结合的缺陷预测方法,其特征在于步骤4所述的特征结合的具体如下:特征结合采用early fusion,在特征角度上进行融合,进行不同特征的链接,即语义特征线性组合传统特征得到组合后的特征。6.根据权利要求1所述的基于传统特征和语义特征结合的缺陷预测方法,其特征在于步骤5所述的类不平衡处理的具体如下:软件缺...

【专利技术属性】
技术研发人员:王兴起龚森林魏丹陈滨
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:

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

1