计算机论文:一种新的基于Ngram模型的重复软件缺陷报告检测方法
软件开发维护过程中产生的缺陷报告中常常出现大量的重复缺陷报告。自动准确地检测出重复缺陷报告,将为软件缺陷的分派、修正、再测试等工作节约大量宝贵的开发维护成本。文章基于传统的向量空间模型检测方法,提出一种新的基于N-gram模型的重复缺陷报告检测方法,文中第2小节中详细介绍了该方法的细节。通过在小数据集上的实验,明确了在使用该方法检测重复缺陷报告时,参数N取345,利用全句法仅针对缺陷报告的概要信息进行相似度计算将取得较好的效果。
最终使用一个含有453条Firefox缺陷报告的数据集对该方法进行了验证。实验证明N-gram模型法与向量空间模型法相比,重复缺陷的查全率(RecallRate)提高了25%~55%。
软件缺陷报告是软件开发维护工作中产生的重要软件质量数据之一,随着软件规模的增长软件缺陷数据库日益庞大。目前许多大型软件都采用多人并行测试的方法,该方法有效提高了软件测试效率,但同时也使得软件缺陷数据库中的重复缺陷报告迅速增加,在开源软件中该问题尤为突出。针对开源软件Firefox的软件缺陷数据的统计分析表明重复(Duplicate)缺陷的比例高达3%。如果能够准确地自动检测重复缺陷报告,将会大幅度节省宝贵的软件开发维护成本。
目前,研究者已经提出了一些方法进行重复软件缺陷报告的自动检测,主要通过基于向量空间模型(VectorSpaceMode,l简称VSM)的文本相似度计算实现。RunesonP等人提出了用自然语言处理技术(NaturalLanguageProcessing,简称NLP)检测重复缺陷。他们针对SonyEricssonMobileCom-munications进行了案例验证,结果表明约有23的重复缺陷报告可以被正确地检测到。WangXY等人在其研究基础之上,提出了一种将自然语言信息与执行信息结合起来检测重复缺陷的新方法。通过对Firefox缺陷库的验证对比实验表明,该新方法可以检测到67%~93%的重复缺陷,而若仅使用自然语言信息只能检测到43%~72%的重复缺陷。现有的重复报告缺陷检测技术如果仅利用缺陷文本信息,查全率比较低,而利用文本信息与执行信息结合虽然可以提高重复缺陷的查全率,但由于执行信息需要单独获取,成本增加、操作复杂而且有的缺陷报告可能获取不到执行信息。
本文针对以上不足,提出了一种低成本、操作简单、查全率高的新方法:基于N-gram模型的重复软件缺陷报告检测方法。通过对Firefox缺陷库的验证表明,该方法与传统的VSM方法相比,重复缺陷报告的查全率提高了25%~55%。文中首先对该方法的相关背景知识进行介绍,其次详细说明了该方法的具体内容,最后通过实验结果进行比较,验证了本文的结论。
相关背景知识软件缺陷报告软件缺陷报告的形式虽然千变万化,但其处理流程和报告核心内容都基本相同。软件缺陷报告等:一种新的基于N-gram模型的重复软件缺陷报告检测方法本都是用自然语言描述的文本信息,其内容主要包括:发现人、发现时间、重要程度、优先级、缺陷概述、缺陷详细现象、重现步骤以及其它相关附件等。
以具有代表性的软件缺陷管理软件Bugzilla为例说明,Bugzilla记录的缺陷中的自然语言信息主要包括概述(summary)和详细描述(description)。一个缺陷被提交确认(open)之后,其最终的处理意见(resolution)可能有如下几种:已修改的(Fixed),不是问题(Invalid),无法修改(Wontfix),以后版本解决(Later),保留(Remind),重复(Duplicate),无法重现(Worksforme)。本文重点关注重复类型的缺陷。N-gram模型N-gram模型是基于词汇的语言识别中常用的一种语言模型。一个N-gram是指某个给定句子中由n个项目组成的子序列。此处的项目根据不同的应用可以是字母,单词或者词组。以一个缺陷报告的概述为例说明如下:
本文采用的N-gram方法是在此基础上进行了一定的改进,详细说明参看2.5小节。基于N-gram模型的重复软件缺陷检测方法本文提出的基于N-gram模型的方法并不是直接对软件缺陷报告的原始文本进行处理,而是首先利用传统的基于VSM方法中的自然语言预处理方法对原始文本进行预处理,包括分句分词,词根获取,同义词置换以及停用词去除。对预处理之后的缺陷报告文本再利用N-gram法计算文本相似度,然后在指定建议列表长度(TopListSize)情况下,计算重复缺陷报告的查全率。本文的研究对象主要是英文缺陷报告,但该方法并不局限于英文,它具有通用性,对中文进行必要的预处理后也可以使用。
分句分词分句是指分离一段文本中的若干个句子,分词则是针对每个句子,分离其中的单词。整个分句分词的难点在于对标点符号的处理。同义词置换不同的人即使表达相同的意思,也可能会使用不同的词汇,因此对同义词进行置换可以有效提高重复缺陷报告的查全率。本文置换的同义词分为2大类:Firefox特有的同义词。首先对Firefox的缺陷数据库进行了统计,将Firefox特有的高频同义词进行了置换。例如Control+Tab这一个快捷键就有多种不同的表达,如Control-Tab,Ctrl+Tab,Ctrl-Tab,CtrlTab等等。非Firefox特有的常用同义词。例如:crash->dump,show->display等等。
停用词去除自然语言中有很多没有实际含义的共通词,例如the,this,a等,如果不加以去除往往会影响文本相似度的判断,所以通过一个stopwordslist将这些词去除。除了通用的stopwordslist之外,本文还添加了软件缺陷报告中常出现的一些停用词,例如a-ttach、log等。需要注意的是停用词列表的大小对重复缺陷报告的查全率有一定的影响。
实验实验数据集选择为了便于与已有的研究结果进行对比,本文选用广泛作为实验数据集的开源软件Firefox的缺陷数据库进行实验验证。在具体选择数据时,考虑了2个因素:在一个软件的主要版本发布后通常会有一个频繁的缺陷修正期间;检索重复目标缺陷报告时,往往最有效的期间是该目标缺陷报告对应的源缺陷报告提交的前5天以内。
根据上述原则,本文选择了针对Firefox于2861~2891连续3个月内新提交的缺陷报告。由于Firefox在16日发布了其3.1版本,所以我们将2861~28716之间的缺陷报告作为已经存在的缺陷报告,将其后的部分作为新的缺陷报告。
一种新的基于N-gram模型的重复软件缺陷报告检测方法是一种有效的低成本、操作简单且查全率高的重复软件缺陷检测方法。本文提出的N-gram法虽然比传统的基于余弦定理的VSM法的重复缺陷的查全率提高很多,但是与文献提出的利用自然语言信息与执行信息共同得到的重复缺陷的查全率相比还有差距,尚需进一步研究。
编辑推荐:
下载Word文档
温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)
点击加载更多评论>>