[发明专利]一种基于深度神经网络的软件缺陷定位方法有效
申请号: | 201910368699.X | 申请日: | 2019-05-05 |
公开(公告)号: | CN110109835B | 公开(公告)日: | 2021-03-30 |
发明(设计)人: | 徐玲;王备;帅鉴航;何健军;杨梦宁;张小洪;杨丹;葛永新;洪明坚;王洪星;黄晟;陈飞宇 | 申请(专利权)人: | 重庆大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06K9/62;G06N3/04;G06N3/08 |
代理公司: | 重庆晟轩知识产权代理事务所(普通合伙) 50238 | 代理人: | 杨晓磊 |
地址: | 400044 *** | 国省代码: | 重庆;50 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本申请公开了一种基于深度神经网络的软件缺陷定位方法(DMF‑BL),该方法主要从缺陷报告和代码文件等文本数据中提取了文本相似度、结构信息相似度、基于协同过滤算法的缺陷报告相似度、基于缺陷修复历史的相似度和类名相似度五个特征,并利用深度神经网络来整合这些特征,从而捕获特征之间的非线性关系。同时,该方法在六个项目中的23000个缺陷报告上评估了软件缺陷定位的能力,结果表明,不管是Top 1、5和10中成功定位缺陷的准确率还是平均精度均值(MAP),DMF‑BL的性能都要优于目前的缺陷定位技术。 | ||
搜索关键词: | 一种 基于 深度 神经网络 软件 缺陷 定位 方法 | ||
【主权项】:
1.基于深度神经网络的软件缺陷定位方法,其特征在于,包括如下步骤:S1:收集待测软件的相关数据访问缺陷跟踪系统获取软件的缺陷报告,使用GIT工具获取软件的代码文件及API文档;S2:数据预处理对S1中收集的缺陷报告进行预处理得到如下数据:缺陷报告集合
每个缺陷报告
xi代表缺陷报告中的一个单词,缺陷报告集合B的个数记为db;缺陷报告修复时间向量
tl表示缺陷报告
修复的时间;缺陷报告提交时间向量
tsl表示缺陷报告bl提交的时间;对S1中获得的代码文件进行预处理得到如下数据:代码文件集合
每个代码文件
yi代表代码文件中的一个单词,代码文件集合S的个数记为ds;代码文件的名称向量
单词snm表示代码文件
的名称;对S1中获取的API文档进行预处理得到如下数据:API文档集合
zk代表API文档的一个单词;API文档的名称向量
dan表示API文档
的名称;每个缺陷报告
对应一组标签
tagi表示缺陷报告
所对应的代码文件的名称;其中l、m、n,i、j和k均为正整数;S3:为每个代码文件添加对应的API描述遍历代码文件集合S,对于每一个
遍历向量
若j=n时,yj=dan,则构成集合
其中
S4:提取如下五个特征S41:文本相似度分别构造缺陷报告向量空间
和和代码文件的向量空间
用于记录单词和单词出现的次数,
和
初始化为空集;遍历缺陷报告集合B,对于每一个向量
都将其添加到向量空间
中;遍历集合S′,对于每一个向量
都将其添加到向量空间
中;对于
和
保留单词出现次数较多的单词,舍去其余记录的单词,得到新的向量空间V′B和V′S;将
和
收尾相连形成新的词汇向量
将相同的单词仅保留一个,并将单词出现的次数合并;记di是缺陷报告集合B中包含单词xi的向量的数量,单词xi对应的逆文档频率
遍历缺陷报告集合B,对于每一个向量
设向量
为
在向量空间
上的映射,大小为nbs,若xi属于向量空间
单词xi在向量
中出现的次数记为
则单词xi在向量
中出现的词频
单词xi对应的权重大小
记dj是集合S′中包含单词yj的向量的数量,单词yj对应的逆文档频率
遍历集合S′,对于每一个向量
设向量
为
在向量空间
上的映射,大小为nst,若yj属于向量空间
单词yj在向量
中出现的次数记为fj,则单词yj在向量
中出现的词频
单词yj对应的权重大小![]()
遍历缺陷报告集合B和集合S′,对于每个向量组
令Nterm为向量
的长度,缺陷报告
和代码文件
的文本相似度
S42:基于协同过滤算法的缺陷报告相似度遍历代码文件集合S,对每一个代码文件
建立逆标签集合Cm,并初始化Cm为空集;遍历缺陷报告集合B,对于每一个缺陷报告
对应的标签
将
与
进行对比,若
便把向量
添加至集合Cm中;遍历缺陷报告集合B和代码文件集合S,对于每个向量组
遍历集合Cm,若
计算
与
的余弦相似度,得相似度向量
其中simn表示
与
的余弦相似度;将向量
按从大到小的顺序排列,得到
其中每个元素已做正则化处理
计算缺陷报告
和代码文件
的基于协同过滤算法的缺陷报告相似度![]()
这里n≤3;S43:基于缺陷修复历史的相似度新建代码文件修复事件集合![]()
表示代码文件
被修复的历程,初始化为空向量;遍历缺陷报告集合B,对于每一个缺陷报告
都有其对应的tl和
若
则在向量
中添加元素tl;遍历集合F,对于每一个向量
将元素从晚到早顺序排列,得
遍历向量
和集合F,对于每个缺陷报告
和代码文件
若
对应的提交时间为tsl,
对应的修复事件向量为
将
中大于tsl的元素删除,得
计算缺陷报告
和代码文件
的基于缺陷修复历史的相似度
p为正整数,上述K值根据软件缺陷报告提交的频率决定;S44:类名相似度遍历缺陷报告集合B和向量
对于每一个缺陷报告
和代码文件名称snm,若
记缺陷报告
和代码文件
的类名相似度
反之,记
将类名相似度
归一化;S45:结构信息相似度将缺陷报告集合B拆分为集合Summary和集合Description,其中Summary是缺陷报告中的summary,记
Description是缺陷报告中的description,记
则
将代码文件集合S拆分成四个集合Class、Method、Var和Comment,Class是缺陷报告中的class,Method是缺陷报告中的method,Var是缺陷报告中var,Comment是缺陷报告中的comment,记![]()
则![]()
遍历缺陷报告集合B和代码文件集合S,对于缺陷报告
和代码文件
使用简单共有词方法计算如下文本相似度:![]()
![]()
计算缺陷报告
和代码文件
的结构信息相似度
S5:CNN非线性组合S51:使用步骤S4中的五个特征构造训练数据集,对于每一个缺陷报告
有5×ds个特征值,构造特征值矩阵
缺陷报告
对应的标签为
S52:构建卷积神经网络权重初始化采用标准正态分布;C1:卷积层共有12个卷积核和12个偏移量,其中5×1的卷积核3个,分别为
得矩阵
大小为1×ds;4×1的卷积核3个,分别为
得矩阵
大小为2×ds;3×1的卷积核3个,分别为
得矩阵
大小为3×ds;2×1的卷积核3个,分别为
得矩阵
大小为4×ds;C2:池化层采用单列最大池化策略;C3:采用矩阵拼接的形式构建新矩阵,共得到如下4个矩阵
是由
拼接而成,大小为4×ds;
是由
拼接而成,大小为4×ds;
是由
拼接而成,大小为4×ds;
是由
拼接而成,大小为4×ds;C4:卷积层共有3个卷积核
和3个偏移量,卷积核大小为3×1,得12个矩阵,大小都为2×ds;C5:卷积层共有3个卷积核
和3个偏移量,卷积核大小为2×1,得36个矩阵,大小都为1×ds;C6:全连接层,权重矩阵为
偏移向量B6,![]()
C7:分类,将C6展开得
得缺陷报告
的预测值向量Yl满足
其中,
误差函数:
采用梯度下降法更新参数;S6:对于新的缺陷报告
通过S4计算5个特征值,构建特征矩阵,利用S5已训练好的CNN模型,得出对应预测值向量
对
到
进行大小排序,得可能具有缺陷的代码文件列表,排名越靠前可能性越大。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于重庆大学,未经重庆大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201910368699.X/,转载请声明来源钻瓜专利网。
- 上一篇:一种测试报告自动生成装置及方法
- 下一篇:网页端的操作回放方法和系统