基于联合依赖概率建模的软件错误定位方法技术

技术编号:8907063 阅读:200 留言:0更新日期:2013-07-11 04:44
基于联合依赖概率建模的软件错误定位方法,本发明专利技术涉及计算机程序分析领域。本发明专利技术是要解决传统的软件错误定位方法定位精度低的问题,而提供了基于联合依赖概率建模的软件错误定位方法。步骤1:分别执行正确测试用例和错误测试用例,并分别对正确测试用例和错误测试用例建立联合依赖概率模型;步骤2:在步骤1的基础上,根据联合依赖概率模型,计算每个节点的可疑度;步骤3:将错误定位信息按可疑度进行降序排列,可疑度高的节点认定为更有可能出错的节点,即完成了对基于联合依赖概率建模的软件的错误进行定位。本发明专利技术应用于计算机程序分析领域。

【技术实现步骤摘要】

本专利技术涉及计算机程序分析领域。
技术介绍
随着计算机软件被广泛应用于经济、军事、商业等各个领域中,其可靠性问题日益得到人们的广泛重视。然而随着软件系统越来越复杂,软件经常不像人们预期的那样运行,换句话说,软件不总是可靠地运行,对计算机应用系统带来不利影响,甚至造成巨大的经济损失和灾难性的后果。因此,保证软件的高质量、高可靠性已成为系统开发和维护工作的一个不可或缺的重要方面。导致软件不可靠的一个主要原因是程序源代码中的错误。程序设计是一项复杂的活动,很难推导程序中所有可能的执行路径,以及预见可能影响程序或被程序影响的环境因素。即使程序看起来正确执行,仍然可能存在极少情况下或特定条件满足时的错误。因此软件错误是目前亟需解决的一个问题。软件测试和调试是软件开发过程中的重要阶段,它们协同工作可以有效识别并消除软件错误:测试用于暴露软件错误,调试用于消除这些软件错误。然而软件调试过程中消除软件错误的速度往往跟不上软件测试过程中发现软件错误的速度。目前已有很多自动化软件测试工具,然而,软件调试却大多采用人工分析的方法,这是一项很困难并且耗时的任务,因为:(1)首先要定位软件中的错误。在某些情况下,当开发人员在程序执行过程中发现软件错误时,可能已经离错误点很远了,需要花费大量的时间和精力来查找引起错误产生的程序代码。(2)其次要理解软件错误。定位软件错误仅仅是软件调试第一步,接下来必须通过适当地修改程序源代码来消除语句中的错误。在有些情况下,如何适当地修改语句不是很明显,需要开发人员人工分析调试环境来理解为什么某个语句是错误的,然后,寻找一种方法来修改代码中的错误,并且避免在修改过程中引入新的错误。如果能实现软件自动化调试,即由计算机自动找到程序代码中的错误位置、分析错误原因、进而自动纠正错误,则可以更有效地确保软件可靠性。软件错误自动定位通过计算机来分析程序源代码或运行过程中产生的运行时状态,计算并分析程序中的异常情况,并将其独立出来作为可疑代码。将与软件错误无关的代码自动过滤掉,仅保留需要进一步调试的相关代码,可以缩小错误代码搜索的范围,来辅助开发人员更快地识别错误语句,有效提高调试的效率。因此,本专利技术目旨在针对软件可靠性实际应用背景和需求,研究软件错误自动定位,为软件调试和软件错误修正奠定理论基础,提高软件质量、确保软件高可靠性、提高软件的可理解和可维护性。
技术实现思路
本专利技术是要解决传统的软件错误定位方法定位精度低的问题,而提供了。包括以下步骤:步骤1:分别执行正确测试用例和错误测试用例,并分别对正确测试用例和错误测试用例建立联合依赖概率模型;步骤2:在步骤I的基础上,根据联合依赖概率模型,计算每个节点的可疑度;步骤3:将错误定位信息按可疑度进行降序排列,可疑度高的节点认定为更有可能出错的节点,即完成了对基于联合依赖概率建模的软件的错误进行定位。专利技术效果:本专利技术的基本思想是:节点的联合依赖可以很好的表示在不同执行状态下节点与其父节点之间的数据依赖关系,有助于进行错误定位。如果某个节点的联合依赖关系在错误测试用例执行过程中出现的频率较高,而在正确测试用例执行过程中出现的频率较低或没有出现,则该节点的联合依赖关系很可能是错误的。根据这一思想计算各语句的联合依赖关系的可疑度,进而有效定位软件错误。本专利技术的,能够有效定位与数据依赖相关的软件错误。与错误定位方法SB1、SOBER、Tarantula相比,定位精度可提高15%以上,适用于大规模程序代码的错误定位
附图说明图1是本专利技术的方法的流程示意图2是具体实施方式一建立联合依赖概率模型示意图3是具体实施方式一程序控制流图和数据依赖图实例示意图4是具体实施方式一程序控制依赖路径和数据依赖路径实例示意图。具体实施方式具体实施方式一:结合图1 图4说明本实施方式:本实施方式的包括以下步骤:步骤1:分别执行正确测试用例和错误测试用例,并分别对正确测试用例和错误测试用例建立联合依赖概率模型;步骤2:在步骤I的基础上,根据联合依赖概率模型,计算每个节点的可疑度;步骤3:将错误定位信息按可疑度进行降序排列,可疑度高的节点认定为更有可能出错的节点,即完成了对基于联合依赖概率建模的软件的错误进行定位。本实施方式中,图3左侧上部分为程序void distance O,左侧下部分为此程序所对应的数据依赖图,右侧为此程序所对应的控制流图4左侧为运行的测试用例,中间部分为执行测试用例时所获得的控制依赖路径,右侧部分为执行测试用例时所获得的数据依赖路径;例如,对于控制依赖路径中的5 (true),表示节点5被执行,且被执行时的状态为true ;对于数据依赖路径中的5 (true,),表示节点5被执行时,执行状态为true,数据依赖于节点I和节点2,且数据依赖变量分别为i和η ;本实施方式步骤E中例如n(5(true, ))表示在数据依赖路径中5 (true, )出现的次数,η(5 (true))表示节点5的状态为true出现的总次数。本实施方式效果:本实施方式的基本思想是:节点的联合依赖可以很好的表示在不同执行状态下节点与其父节点之间的数据依赖关系,有助于进行错误定位。如果某个节点的联合依赖关系在错误测试用例执行过程中出现的频率较高,而在正确测试用例执行过程中出现的频率较低或没有出现,则该节点的联合依赖关系很可能是错误的。根据这一思想计算各语句的联合依赖关系的可疑度,进而有效定位软件错误。本实施方式的,能够有效定位与数据依赖相关的软件错误。与错误定位方法SB1、SOBER、Tarantula相比,定位精度可提高15%以上,适用于大规模程序代码的错误定位
具体实施方式二:本实施方式与具体实施方式一不同的是:所述建立联合依赖概率模型的方法具体为:A、首先为程序建立控制流图,然后记录语句间的控制依赖关系;B、再为程序建立数据依赖图,然后分别记录语句间的数据依赖关系;C、然后通过运行测试用例,插装捕获节点的控制依赖路径和数据依赖路径;D、根据控制流图和节点的控制依赖路径,计算每个节点的状态依赖概率;其中,所述每个节点被执行的概率记为P (node),对于分支节点在被执行概率的基础上记录状态为true和false的概率,记为P (node (true))和P (node (false));所述每个节点,根据下式计算节点node被执行的概率P (node):权利要求1.,其特征在于包括以下步骤: 步骤1:分别执行正确测试用例和错误测试用例,并分别对正确测试用例和错误测试用例建立联合依赖概率模型; 步骤2:在步骤I的基础上,根据联合依赖概率模型,计算每个节点的可疑度; 步骤3:将错误定位信息按可疑度进行降序排列,可疑度高的节点认定为更有可能出错的节点,即完成了对基于联合依赖概率建模的软件的错误进行定位。2.根据权利要求1所述的,其特征在于所述建立联合依赖概率模型的方法具体为: A、首先为程序建立控制流图,然后记录语句间的控制依赖关系; B、再为程序建立数据依赖图,然后分别记录语句间的数据依赖关系; C、然后通过运行测试用例,插装捕获节点的控制依赖路径和数据依赖路径; D、根据控制流图和节点的控制依赖路径,计算每个节点的状态依赖概率; 其中,所述每个节点被执行的概本文档来自技高网
...

【技术保护点】
基于联合依赖概率建模的软件错误定位方法,其特征在于基于联合依赖概率建模的软件错误定位方法包括以下步骤:步骤1:分别执行正确测试用例和错误测试用例,并分别对正确测试用例和错误测试用例建立联合依赖概率模型;步骤2:在步骤1的基础上,根据联合依赖概率模型,计算每个节点的可疑度;步骤3:将错误定位信息按可疑度进行降序排列,可疑度高的节点认定为更有可能出错的节点,即完成了对基于联合依赖概率建模的软件的错误进行定位。

【技术特征摘要】

【专利技术属性】
技术研发人员:苏小红龚丹丹马培军王甜甜赵玲玲王煜
申请(专利权)人:哈尔滨工业大学
类型:发明
国别省市:

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

1