本文是软件工程论文,本文主要研究自然语言描述的重复缺陷报告检测问题,使用循环神经网络模型,对缺陷报告进行文本相似度分析,最终得到两个报告的相似结果。综上,本文主要完成了以下工作:(1)分析缺陷报告的特点,选中开源软件Eclipse某一时间段的缺陷报告集作为数据源。针对数据特征进行了对比分析,与前人相比本文多采用了系统和平台两个特征,并针对两个特征进行了对比实验,实验结果证明新增特征能够提升4%左右模型的准确率。(2)对实验数据进行爬取,规范化数据,将处理好的数据输入BPEmb得到预处理的子词嵌入向量,最终共获得14511个缺陷报告,组成正样本3395对,负样本3628对。(3)当今的软件开发和维护是多人协作,人机协作的过程。在软件的开发测试过程中,每天都有许多的缺陷提交至管理平台,有些是手动录入,有些是自动化测试工具的提交,由于人员的专业程度不同,所处环境不同,表达不同,机器与自然语言的不同,对同一个缺陷的描述会不同,新增的缺陷报告也会有所不同,因此造成了许多重复的缺陷报告上传。
.....
1绪论
传统的软件测试多依托于手工执行,测试工作的质量与效率受到了一定程度的制约,并且手工进行的测试工作不能确保精确与全面。在此背景下,很多自动化测试工具及测试方法产生。自动化测试就是通过测试工具、测试脚本或者云测平台对相关需求产物自动开展测试工作,其测试过程是按照测试工程师制定的计划进行。自动化测试的优势不仅可以加快测试的速度,而且自动化测试可测试的范围比手工测试更广泛,对于人工操作无法完成或手工操作难以完成的测试场景,自动化测试可以完成(彭迪,2018)。优质准确的缺陷报告对提升软件质量和开发效率有着极大的帮助,经研究发现人工识别开源项目中50%的重复缺陷需要耗费半天的人力,大量的缺陷报告提交会导致浪费大量处理人员的精力,带来不必要的人力物力的消耗。随着自动化水平的不断进步,自动化测试已被广泛的应用,在手工测试上已释放出了许多人力,但是目前重复缺陷检测与自动识别在主流的缺陷管理系统领域的应用仍不广泛,仅部分主流管理系统有针对搜索的缺陷重复检测功能,但是由于其搜索功能是基于简单的SQL搜索,对于阻止重复缺陷的产生作用很小。
...
2相关理论基础
2.1软件缺陷
缺陷是指软件中留存的种种不期望出现的现象问题等,包括需求与评审时不一致、产品实际设计与评审时不同、代码编写问题和软件不符合用户实际使用习惯,用户体验差等(夏启明,2010)。软件缺陷根据产品角度的不同,对它的解释也略有不同,从内部看软件缺陷是在开发过程中,维护过程中产生的问题;从外部看,是系统未实现某种功能。缺陷可能存在与需求文档中或者开发过程中,甚至是运营过程中。广义上讲缺陷就是软件未满足用户的需要,不符合用户的操作场景。导致缺陷存在的原因复杂多样,一旦发现缺陷就需要尽快的定位问题,找到根因并推进相应的人员去解决。缺陷存在影响程度和优先级两个重要属性,它们是根据对用户的影响程度及需要解决的优先级得出的。缺陷的严重级别是指缺陷对软件功能的影响程度,在缺陷管理系统中会将缺陷严重等级划分为:有阻碍的、紧要的、严重的、一般的、次要的和无关紧要的几个级别。而优先级是指解决问题的优先程度,一般分为P0,P1,P2,P3,P4几个级别,数字越小代表优先级别越尚。
2.2软件缺陷报告
缺陷报告是缺陷的载体,是记录缺陷信息的文档,在项目管理的某些环节中使用。在软件开发及维护的过程中产生的各种缺陷信息组成了软件缺陷报告,软件缺陷报告对软件缺陷的发现及解决起着至关重要的作用(蒋欣志,2013)。由于承载缺陷报告的系统不同,缺陷报告的组成元素会略有差异,但是其主要元素在各个系统间都存在。表2.1中对比了Jira,Bugzilla,Bugfree三个系统中,缺陷报告的特征,表中“否”代表该系统的缺陷报告中不存在该字段,“是”代表该缺陷报告中存在此字段。本文的实验过程使用了python语言下的TensorFlow框架,实现了循环神经网络结构。TensorFlow是由谷歌公司研发出来的深度学习框架,于2015年开源供大家使用,其主要用于研究机器学习和深度神经网络。TensorFlow实质是一个符号数学系统,其基于数据流编程。TensorFlow的特点是,可以将计算表示成一个数据流图。数据流图是用结点和线的有向结构,用于描述数学计算。TensorFlow具有高度灵活,可移植,支持多语言,支持自动求微积分,性能最优化等特点。TensorFlow中包括了卷积神经网络,循环神经网络等模型。
3基于LSTM的重复缺陷报告检测...................17
3.1实验环境...................17
3.2数据源...................17
3.3数据预处理...................18
3.4基于LSTM模型的实验设计.............20
4重复缺陷自动识别管理系统的设计与实现...................37
4.1系统分析与设计...................37
4.2系统实现...................39
4.3系统测试...................46
4.4本章小结...................48
5结论与展望.................49
....
4重复缺陷自动识别管理系统的设计与实现
4.1系统分析与设计
按照需求分析,将系统划分为4大模块,缺陷管理模块,重复缺陷报告识别模块,角色管理模块,系统配置模块。(1)缺陷管理模块:能够对缺陷进行增、删、改、查的操作,支持用户在系统中新增缺陷及处理人员对缺陷进行流转,并且支持本地文件的上传,下载功能。(2)重复缺陷报告识别模块:本模块将系统中记录的缺陷以一定格式将两个缺陷报告进行拼接,输出到本地,之后利用python进行缺陷报告数据的预处理,之后输入缺陷识别模型进行判别,所有数据的结果均回传给数据库。由于识别重复缺陷需要将系统中的缺陷遍历配对,当系统中存在的缺陷数较大时,对性能有很大的挑战,并且将新录入的缺陷与很久之前的问题进行重复对比,意义不大,因此指定当天时间23:59:59秒到前一天00:00:00的数据。(3)角色管理模块:本模块主要用于管理用户信息,管理员权限可以对其他用户进行权限发放与回收,普通用户能够查看,修改自己的个人信息页,管理员有权限修改重复缺陷识别模块的配置及元数据的配置。(4)系统配置模块:本模块主要用于元数据信息的维护,提供新增缺陷基础数据配置的能力。
4.2系统实现
本小节对系统进行详细分析和设计,主要实现的功能模块包括:缺陷管理模块,重复缺陷识别模块,角色管理模块,系统配置模块。每模块都通过数据库结构,后台逻辑,前端实现来进行阐述。该模块是结合笫三章的模型,将笫S章的实验模型以定时任务的方式应用于系统中。其生要的流程为,将缺陷管理系统中一段时间的缺陷检索出来,保存至本地,之后调用python脚本对数据进行预处理,将数据两两完全匹配后,输入到模型进行相似度计算,之后利用python与MySQL的交互能力,将结果存到系统的数据库中。最后系统筛选出与某个缺陷相似度最高的5个缺陷,显示于该缺陷的详情页,方便缺陷负责人定位问题以及查找相似的缺陷蠢息。筛选缺陷的规则为相似度大于0.5的缺陷报告,当推荐的缺陷报告总数大于5个时,按相似度从高到低只显示5个,不足5个时,显示相似度大于0.5的全部缺陷报告》该模块主要以定时任务的方式去实现,每天00:00:00—01:00:00自动执行上述流程的脚本,缺陷的范围选定为前两天00:00:00—23:59:59创建的缺陷。检测的流程圈如4.6所示
.....
5结论与展望
如何自动识别重复缺陷报告,减少处理重复缺陷花费的成本是近年来重复缺陷领域研究的重点问题。之后为了说明加入Attention机制的BI—LSTM模型对实验效果的影响,完成了基于传统LSTM模型及BI—LSTM模型的对比。最终加入Attention机制的BI—LSTM模型在Eclipse数据集中取得了91.21%的准确率,93.15%的召回率,91.14%的F1值。据统计Mozilla重复缺陷报告的总数占总缺陷的23%左右,平台上的重复缺陷报告达20%—40%。当产品比较复杂或者对产品的质量要求比较严格时,此产品的测试和调试需要花费总人力的一半及以上。比喻维的准确率高7%左右,但是低于近两年来其他学者提出的LDA主题检测模型,通过对LDA模型的对比分析,对本文模型提出了可改进的建议及后续研究方向。对传统LSTM模型及BI—LSTM模型进行各参数实验,找到模型的最优状态。当模型采用元数据,模型训练轮次达到10次,标题长度选定为40,描述长度选定为125,采用参数共享时,BI—LSTM模型效果达到最优。因此本文开展缺陷报告重复检测方法的研究,基于研究模型建立缺陷管理系统,实现重复缺陷报告的自动识别,对软件质量管理过程中人力的节省与修复时间的缩短是有重要意义的。
参考文献(略)