一种基于程序结构影响感知的软件错误定位方法

文档序号:6630314阅读:187来源:国知局
一种基于程序结构影响感知的软件错误定位方法
【专利摘要】本发明公开了一种基于程序结构影响感知的软件错误定位方法,步骤包括:提取程序集中各版本的程序语句的覆盖信息—错误语句在所有失败的程序执行中运行的次数和语句在所有成功的程序执行中运行的次数,选择某种可疑度函数,计算错误语句的可疑度;统计程序错误版本中各语句的可疑度值;构造程序结构对当前使用的错误定位方法的影响函数,利用该影响函数对可疑度函数进行校正和优化;在程序后续版本的错误定位过程中,根据程序的每条语句的运行特征,利用上述校正和优化之后的可疑度函数,计算每条语句的可疑度,然后根据可疑值从大到小对语句进行排序,根据此顺序对程序语句逐条排查,定位程序中的错误。本发明提高了错误定位的准确度。
【专利说明】一种基于程序结构影响感知的软件错误定位方法

【技术领域】
[0001] 本发明涉及一种基于程序结构影响感知的软件错误定位方法,属于软件测试技术 领域。

【背景技术】
[0002] 软件在日常生活中的应用越来越广泛。随着软件功能和架构的复杂化,想要在软 件产品中彻底避免软件错误的出现,仍然是很困难的。软件错误,即导致软件实际运行的结 果和预期的运行结果不相符的那些因素,这些错误的存在,导致软件相应的功能丧失。软件 调试是用于修改软件错误的常用手段,是一项十分重要但又代价很大的工程,它通常包括 三个步骤:错误的定位、错误的修复和对错误修复后的再确认。其中,错误的定位是最为重 要也是最为费时和费力的过程。
[0003] 语句级别的统计错误定位方法通过收集每条语句在程序执行失败或成功时的运 行信息来分析和评估该语句存在错误的可疑程度。举例来说,若某条语句总是在失败的程 序执行中被运行,而从未在成功的程序执行中被运行过,那么,它很可能是和软件错误相关 的。在此类统计错误定位方法中,通常采用可疑度函数来评估语句存在错误的可能性。
[0004] 在进行错误定位时,首先需要多次执行程序,统计失败测试用例的条数m和语句 Si的覆盖次数failed(Si),以及成功测试用例的条数m'和语句的覆盖S i次数passed(Si); 然后根据可疑度函数来评估每条语句存在错误的可能性,按照可疑值从大到小对语句进行 排序;最后根据这个排序来逐个查找程序中的错误。对于目前的大部分可疑度函数(如 Tarantula、Jaccard、0chiai、0chiai2)而言,一条语句S i的可疑度Rt (Si)只与两个变量有 关一一该语句在失败的程序执行中运行的次数failed(Si)和该语句在成功的程序执行中 运行的次数passed (Si)。
[0005] 然而,单纯地利用failed(Si)和passed(Si)来评估语句可疑度的方法与实际情况 相差甚远,在进行错误定位时,受程序结构的影响,某些语句在计算可疑度值时总是具有较 高的可疑度值,而有些语句总是具有较低的可疑度值。这些都可能会造成软件开发者反复 多次地查看正确的程序片段,反而漏掉了一些难以察觉的错误。目前这种错误定位的方法 很低,很难用于工业界。本发明考虑程序结构对可疑度值的影响,以对初始的可疑度值进行 校正和优化,提供了 一种准确度更高的错误定位方法。


【发明内容】

[0006] 本发明技术解决问题:克服现有技术的不足,提供一种基于程序结构影响感知的 软件错误定位方法,本发明考虑了实际编程中程序结构对错误定位方法的影响,提出了一 个通用的错误定位校正和优化策略,用以感知程序结构对错误定位效果的影响并予以消 除,以至于可疑函数更加符合语言特性和实际情况,从而提高了错误定位的准确度。
[0007] 本发明技术解决方案:一种基于程序结构影响感知的软件错误定位方法,统计在 软件错误定位过程中程序实体的历史可疑度值并进行分析,构造程序结构对程序实体可疑 度值的影响函数,进而校正和优化当前的可疑度函数,在后续错误定位过程中消除程序结 构对错误定位效果的影响,使得可疑度函数更加遵循程序的语言特性,从而提高错误定位 的准确度。
[0008] 具体实现步骤如下:
[0009] (1)提取程序集中各版本的程序语句的覆盖信息,即错误语句在失败的程序执行 中运行的次数和语句在成功的程序执行中运行的次数;
[0010] (2)选择某种可疑度函数,计算错误语句的可疑度;
[0011] (3)统计程序错误版本中各语句的可疑度值,以估算程序结构对错误定位方法的 影响;
[0012] (4)构造程序结构对当前使用的错误定位方法的影响函数,利用该影响函数对可 疑度函数进行校正和优化;
[0013] (5)在程序后续各版本的错误定位过程中,根据程序的每条语句的运行特征,利用 步骤(4)中所述的策略不断校正和优化可疑度函数,然后计算每条语句的可疑度,然后根 据可疑值从大到小对语句进行排序,根据此顺序对程序语句逐条排查,定位程序中的错误。
[0014] 所述步骤(4)中使用简单移动平均法来构造程序结构对错误定位方法的影响函 数。
[0015] 本发明不限定具体的错误定位方法,其他的错误定位方法也可以应用;
[0016] 本发明不限定具体的估算方法,其它估算方法也可以应用。
[0017] 本发明与现有技术相比的优点在于:
[0018](1)本发明应用于软件错误定位过程中,通过统计程序历史错误版本中各语句的 可疑度值并进行分析,估算程序结构对语句可疑度值的影响函数,进而校正和优化当前的 可疑度函数,在后续错误定位过程中消除程序结构对错误定位效果的影响。
[0019] (2)本发明统计程序实体的历史可疑度值,便于分析程序结构对其影响。另外, 本发明通过简单移动平均法得到程序结构对可疑度函数的影响,用于校正和优化可疑度函 数,并生成最终的可疑度函数,从而提高了软件错误定位的准确度。

【专利附图】

【附图说明】
[0020] 图1为本发明方法的实现流程图;
[0021] 图2为基于程序结构影响感知的软件错误定位方法分别应用于Tarantula与 Jaccard方法上的效果对比图。

【具体实施方式】
[0022] 基于程序结构影响感知的软件错误定位方法的步骤主要为图1所示的四个步骤, 第五个步骤是对于整个方法的优化:
[0023] (1)提取该程序版本在执行过程中的覆盖信息,即程序语句在失败的程序执行中 运行的次数和语句在成功的程序执行中运行的次数;
[0024] (2)选择某种可疑度函数,如下所述的Tarantula和Jaccard可疑度计算函数,来 计算错误语句的可疑度; CN104317707A 说明书 3/4 页
[0025]

【权利要求】
1. 一种基于程序结构影响感知的软件错误定位方法,其特征在于实现步骤如下: (1) 提取程序集中各版本的程序语句的覆盖信息,即错误语句在失败的程序执行中运 行的次数和语句在成功的程序执行中运行的次数; (2) 选择某种可疑度函数,计算错误语句的可疑度; (3) 统计程序错误版本中各语句的可疑度值,以估算程序结构对错误定位方法的影 响; (4) 构造程序结构对当前使用的错误定位方法的影响函数,利用该影响函数对可疑度 函数进行校正和优化; (5) 在程序后续版本的错误定位过程中,根据程序的每条语句的运行特征,利用步骤 (4)中校正和优化之后的可疑度函数,计算每条语句的可疑度,然后根据可疑值从大到小对 语句进行排序,根据此顺序对程序语句逐条排查,定位程序中的错误。
2. 根据权利要求1所述的基于程序结构影响感知的软件错误定位方法,其特征在于: 所述步骤(4)中使用简单移动平均法来构造程序结构对错误定位方法的影响函数。
【文档编号】G06F11/36GK104317707SQ201410546645
【公开日】2015年1月28日 申请日期:2014年10月15日 优先权日:2014年10月15日
【发明者】李恒, 张震宇, 刘畅 申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1