一种基于频繁子图挖掘的软件错误定位方法及处理装置制造方法及图纸

技术编号:17878737 阅读:47 留言:0更新日期:2018-05-06 00:36
本发明专利技术涉及软件测试技术领域,特别是一种基于频繁子图挖掘的软件错误定位方法及处理装置。该方法首先对测试用例获取软件中程序动态依赖关系生成的程序动态依赖图中的偶然正确性程序动态依赖图进行去除,再对去除偶然正确性的程序动态依赖图采用频繁子图算法进行挖掘,从而进行错误定位,并得出错误相关的程序上下文信息,为开发人员提供包含上下文的调试信息,有利于开发人员理解错误定位的结果,有利于提高错误定位的精度,解决了目前软件错误定位过程中错误定位效率低的问题。

A software fault location method based on Frequent Subgraph Mining and its processing device

The invention relates to the field of software testing technology, in particular to software fault location method and processing device based on frequent subgraph mining. This method first removes the dynamic dependency graph of the accidental correctness program in the dynamic dependency graph of the program dynamic dependency graph generated by the test case, and then uses the frequent subgraph algorithm to mine the dynamic dependency graph of the program that removes the accidental correctness, thus the error is located and the error related is obtained. The program context information provides the developer with context debugging information, which is beneficial to the developers to understand the error location results, improve the accuracy of the error location, and solve the problem of the low error location efficiency in the current software error positioning process.

【技术实现步骤摘要】
一种基于频繁子图挖掘的软件错误定位方法及处理装置
本专利技术涉及软件测试
,特别是一种基于频繁子图挖掘的软件错误定位方法及处理装置。
技术介绍
软件错误定位可以促进软件产业的健康发展,保障国家信息安全,软件质量的提升可以改善人们的生活和工作,显著推动国民经济和信息产业发展。随着软件规模和复杂程度的提高,软件错误出现的频率迅速上升,软件错误可能会给人类造成严重的经济损失和不利影响,软件错误定位为查找软件中错误提供了有效的方法。频繁子图挖掘是关联规则技术在图论上的应用,是数据挖掘中的一个活跃和重要的分支。在各种图模式中,频繁子结构可以在图集合中发现非常基本的模式,用来刻画图集合的特征,以发现有趣的模式。该技术反映了两个或多个事务之间存在一定的关联关系,其中一个事务就能通过其他的事务来预测,搜索所有事务以发现重复出现概率较高的有趣模式。运用频繁子图挖掘算法,可以挖掘出与错误语句高相关的信息,构造包含程序的上下文信息以有效地定位软件错误。本项目拟采用频繁子图挖掘算法来定位软件中的错误,并提供软件错误相关的上下文信息,方便开发人员定位错误。现有研究大部分考虑了程序执行的动态信息与程序执行失败的关联关系,但较少考虑错误定位的上下文信息,另有一部分方法大都使用统计方法计算程序实体的怀疑度,并按怀疑度大小排序,这类方法在定位单错误时的效果优于多错误的效果。目前,衡量错误定位的指标主要是错误可疑度的序列或集合,以此为依据检查错误,这种指标被目前的研究普遍采用,但这是一种较为理想化的结果,缺少定位错误的上下文信息。有中国专利公开号为CN104536882A的专利文献公开了一种基于频繁子图挖掘的错误定位方法,将程序的所有实体共同作为一个整体,通过图挖掘方法获取失败用例执行中的特征模式,进而实现更加准确且包含运行时上下文的自动化错误定位结果,其中利用熵值得到子图的信息增益,若子图g1包含g2,则移除g2,若出现误删,则会导致找不到错误语句,并且利用信息增益排序得到高可疑的k个频繁子图,提供给测试者定位错误,若错误语句不在前k个频繁子图,则找不到错误语句。在大型开源软件系统的错误定位研究领域中,主要存在的问题是缺乏定位错误的上下文信息。目前,软件错误定位技术的研究尚不完善,主要集中在如何缩小错误的可疑范围以及提高错误程序实体的排名顺序,开发人员在程序调试过程中通常需要了解错误相关的上下文环境来定位错误,开发人员无法获知某一时刻程序中变量的状态和依赖信息,无法快速理解错误发生时程序的状态和环境,导致无法找到错误语句,从而降低了程序调试的效率。
技术实现思路
本专利技术的目的是提供一种基于频繁子图挖掘的软件错误定位方法及处理装置,用以解决目前软件错误定位过程中错误定位效率低的问题。为实现上述目的,本专利技术一种基于频繁子图挖掘的软件错误定位方法,包括以下方法技术方案:方法方案一:一种基于频繁子图挖掘的软件错误定位方法,包括步骤如下:1)通过测试用例获取软件中程序动态依赖关系,并生成程序动态依赖图;2)选取程序的偶然正确性特征元素,并根据所述偶然正确性特征元素获取去除偶然正确性的程序动态依赖图;3)将去除偶然正确性的程序动态依赖图进行编码,并进行频繁子图挖掘得到k-频繁子图;4)根据所述k-频繁子图产生候选子图,根据候选子图的支持度得到频繁子图;5)根据所述频繁子图与错误结果的高关联关系进行错误定位。有益效果是,本方法方案一通过对程序动态依赖图采用频繁子图算法进行挖掘,并得出错误相关的程序上下文信息,为开发人员提供包含上下文的调试信息,有利于开发人员理解错误定位的结果,有利于提高错误定位的精度,解决了目前软件错误定位过程中错误定位效率低的问题。方法方案二:在方法方案一的基础上,步骤2)中偶然正确性特征元素的选取为根据偶然正确性元素的怀疑度值的大小排序,将序列的前θ部分作为偶然正确性特征元素,其中0<θ<1,公式如下:fcce={e|e∈cce∧θ*ranking(cce)},所述偶然正确性元素的选取要求为程序实体出现在失败测试的概率是1,而出现在成功测试中的概率大于零小于1。方法方案三:在方法方案二的基础上,步骤2)中根据偶然正确性特征元素对程序执行轨迹进行约简,并基于二路谱聚类识别偶然正确性测试用例,得到去除偶然正确性的程序动态依赖图。有益效果是,本方法方案三通过二路谱聚类识别偶然正确性测试用例,获取去除偶然正确性的程序动态依赖图,从而去除了偶然正确性对错误定位效率的影响,提高错误定位效率。方法方案四:在方法方案一、方法方案二或方法方案三的基础上,步骤3)中通过深度优先搜索(DFS)编码来表示一个去除偶然正确性的程序动态依赖图。方法方案五:在方法方案四的基础上,步骤3)对编码的去除偶然正确性的程序动态图采用基于模式增长的频繁子图挖掘算法gScan进行挖掘,得到k-频繁子图。方法方案六:在方法方案五的基础上,步骤4)中通过获取k-频繁子图,并按最右扩展规则来扩展子图;对k-频繁子图的DFS编码树进行最右路径扩展,每次添加一条边,得到(k+1)-候选子图;判断(k+1)-候选子图的支持度是否大于最小支持度,若小于,输出(k+1)-候选子图为频繁子图。本专利技术提供一种基于频繁子图挖掘的软件错误定位处理装置,包括以下装置技术方案:装置方案一:一种基于频繁子图挖掘的软件错误定位处理装置,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:1)通过测试用例获取软件中程序动态依赖关系,并生成程序动态依赖图;2)选取程序的偶然正确性特征元素,并根据所述偶然正确性特征元素获取去除偶然正确性的程序动态依赖图;3)将去除偶然正确性的程序动态依赖图进行编码,并进行频繁子图挖掘得到k-频繁子图;4)根据所述k-频繁子图产生候选子图,根据候选子图的支持度得到频繁子图;5)根据所述频繁子图与错误结果的高关联关系进行错误定位。装置方案二:在装置方案一的基础上,步骤2)中偶然正确性特征元素的选取为根据偶然正确性元素的怀疑度值的大小排序,将序列的前θ部分作为偶然正确性特征元素,其中0<θ<1,公式如下:fcce={e|e∈cce∧θ*ranking(cce)},所述偶然正确性元素的选取要求为程序实体出现在失败测试的概率是1,而出现在成功测试中的概率大于零小于1。装置方案三:在装置方案二的基础上,步骤2)中根据偶然正确性特征元素对程序执行轨迹进行约简,并基于二路谱聚类识别偶然正确性测试用例,得到去除偶然正确性的程序动态依赖图。装置方案四:在装置方案一、装置方案二或装置方案三的基础上,步骤3)中通过深度优先搜索(DFS)编码来表示一个去除偶然正确性的程序动态依赖图。装置方案五:在装置方案四的基础上,步骤3)对编码的去除偶然正确性的程序动态图采用基于模式增长的频繁子图挖掘算法gScan进行挖掘,得到k-频繁子图。装置方案六:在装置方案五的基础上,步骤4)中通过获取k-频繁子图,并按最右扩展规则来扩展子图;对k-频繁子图的DFS编码树进行最右路径扩展,每次添加一条边,得到(k+1)-候选子图;判断(k+1)-候选子图的支持度是否大于最小支持度,若小于,输出(k+1本文档来自技高网
...
一种基于频繁子图挖掘的软件错误定位方法及处理装置

【技术保护点】
一种基于频繁子图挖掘的软件错误定位方法,其特征在于,包括步骤如下:1)通过测试用例获取软件中程序动态依赖关系,并生成程序动态依赖图;2)选取程序的偶然正确性特征元素,并根据所述偶然正确性特征元素获取去除偶然正确性的程序动态依赖图;3)将去除偶然正确性的程序动态依赖图进行编码,并进行频繁子图挖掘得到k‑频繁子图;4)根据所述k‑频繁子图产生候选子图,根据候选子图的支持度得到频繁子图;5)根据所述频繁子图与错误结果的高关联关系进行错误定位。

【技术特征摘要】
1.一种基于频繁子图挖掘的软件错误定位方法,其特征在于,包括步骤如下:1)通过测试用例获取软件中程序动态依赖关系,并生成程序动态依赖图;2)选取程序的偶然正确性特征元素,并根据所述偶然正确性特征元素获取去除偶然正确性的程序动态依赖图;3)将去除偶然正确性的程序动态依赖图进行编码,并进行频繁子图挖掘得到k-频繁子图;4)根据所述k-频繁子图产生候选子图,根据候选子图的支持度得到频繁子图;5)根据所述频繁子图与错误结果的高关联关系进行错误定位。2.根据权利要求1所述的基于频繁子图挖掘的软件错误定位方法,其特征在于,步骤2)中偶然正确性特征元素的选取为根据偶然正确性元素的怀疑度值的大小排序,将序列的前θ部分作为偶然正确性特征元素,其中0<θ<1,公式如下:fcce={e|e∈cce∧θ*ranking(cce)},所述偶然正确性元素的选取要求为程序实体出现在失败测试的概率是1,而出现在成功测试中的概率大于零小于1。3.根据权利要求2所述的基于频繁子图挖掘的软件错误定位方法,其特征在于,步骤2)中根据偶然正确性特征元素对程序执行轨迹进行约简,并基于二路谱聚类识别偶然正确性测试用例,得到去除偶然正确性的程序动态依赖图。4.根据权利要求1、2或3所述的基于频繁子图挖掘的软件错误定位方法,其特征在于,步骤3)中通过深度优先搜索(DFS)编码来表示一个去除偶然正确性的程序动态依赖图。5.根据权利要求4所述的基于频繁子图挖掘的软件错误定位方法,其特征在于,步骤3)对编码的去除偶然正确性的程序动态图采用基于模式增长的频繁子图挖掘算法gScan进行挖掘,得到k-频繁子图。6.一种基于频繁子图挖掘的软件错误定位处理装置,包括存储...

【专利技术属性】
技术研发人员:曹鹤玲邓淼磊靳小波赵玉娟鞠小林高淼乔梦晴石建树
申请(专利权)人:河南工业大学
类型:发明
国别省市:河南,41

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

1