一种基于马尔可夫模型的软件错误定位系统及错误定位方法.pdf

上传人:1*** 文档编号:4256129 上传时间:2018-09-12 格式:PDF 页数:18 大小:3.30MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310308553.9

申请日:

2013.07.20

公开号:

CN103455417A

公开日:

2013.12.18

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 11/36申请日:20130720|||公开

IPC分类号:

G06F11/36

主分类号:

G06F11/36

申请人:

中国科学院软件研究所

发明人:

张震宇; 刘畅; 张云乾

地址:

100190 北京市海淀区中关村南四街4号

优先权:

专利代理机构:

北京科迪生专利代理有限责任公司 11251

代理人:

成金玉;杨学明

PDF下载: PDF下载
内容摘要

一种基于马尔可夫模型的软件错误定位系统及错误定位方法,属于软件调试技术领域,由测试信息获取模块、自定制模块、图形交互界面模块、一步转移概率矩阵模块、错误定位模块、错误修正模块、数据库模块组成,具体步骤包括:测试信息获取模块编写执行测试用例获取测试信息;自定制模块构建错误定位技术备选集,划分错误类型;一步转移概率矩阵模块计算一步转移概率矩阵;错误定位模块预测当前的错误类型,选择相应的错误定位技术进行错误定位,计算备选集中各技术定位错误的代价,进而确定当前错误的类型并更新一步转移概率矩阵和错误历史序列;错误修正模块修正定位到的错误,继续进行错误定位或结束。本发明更快、更准确地实现了软件错误定位。

权利要求书

权利要求书
1.  一种基于马尔可夫模型的软件错误定位系统,其特征在于包括:测试信息获取模块、自定制模块、图形交互界面模块、一步转移概率矩阵模块、错误定位模块、错误修正模块和数据库模块;其中:
测试信息获取模块:用户使用编译系统软件对被测试程序进行插装,统计程序语句执行次数等信息;同时编写并运行测试用例,将获得的测试用例执行成功与否、程序每个语句执行的次数的测试信息保存到excel文件中,excel文件中的测试信息通过图形交互界面模块将测试信息存储到数据库模块的数据库中;
自定制模块:用户注册用户账号,登录定位系统,然后用户构建错误定位技术备选集,根据备选集划分错误类型,用户选择或添加被测试程序版本信息;自定制模块的具体实施是用户通过图形交互界面模块与数据库模块交互配合完成的;
图形交互界面模块:负责用户沟通测试信息获取模块、自定制模块、一步转移概率矩阵模块、错误定位模块、错误修正模块及数据库模块,具体实现其余各模块对数据库的操作;用户登录自己的账号,如没有账号则需注册新的账号;用户根据自定制模块构建的错误定位技术备选集在图形交互界面选择或添加相应的错误定位技术,根据自定制模块确定错误定位的程序版本;图形交互界面显示一步转移概率矩阵模块的一步转移概率矩阵;图形交互界面显示错误定位模块预测的当前错误的类型及确定当前错误的真实类型,并在确定当前错误类型后更新数据库中的错误历史序列,进而触发一步转移概率矩阵模块更新一步转移概率矩阵的事件,即时显示在图形交互界面上;
一步转移概率矩阵模块:根据数据库模块存储的错误历史序列和自定制模块构建的存储于数据库中的错误定位技术备选集,计算获得一步转移概率矩阵信息,在图形交互界面模块进行显示;
错误定位模块:结合一步转移概率矩阵模块的一步转移概率矩阵信息和测试信息获取模块获取并在数据库模块中存储的测试信息,预测当前错误的类型并选择相应的错误定位技术定位错误,计算备选集中各错误定位技术定位当前错误的代价,确定当前错误的真实类型,更新数据库中的错误历史序列,触发更新一步转移概率矩阵模块一步转移概率矩阵的事件;
错误修正模块:根据错误定位模块定位到的错误的位置,结合错误修正方法修正错误,然后进行新一轮的测试,直到程序中没有错误;
数据库模块:存储测试信息获取模块获取的测试信息、自定制模块构建的错误定位技术 备选集、程序错误历史序列信息和用户注册信息等。

2.  一种基于马尔可夫模型的软件错误定位方法,其特征在于实现步骤如下:
(1)测试信息获取:用户使用编译系统软件对被测程序进行插装,编写并运行测试用例,统计运行测试用例获得的测试用例成功执行与否、语句执行次数等测试信息,将统计获得的测试信息保存到excel文件中,通过图形交互界面保存到数据库中;
(2)自定制信息:用户注册/登录进入系统,用户登录后选择/添加错误定位技术构成错误定位技术备选集,根据构建的错误定位技术备选集划分错误类型,选择/添加被定位的程序及版本;用户信息、错误定位技术备选集信息和被测试程序版本信息通过图形交互界面保存到数据库中;
(3)信息存储:保存在excel文件中的测试信息通过图形交互界面保存到数据库相应的表中,用户通过在图形交互界面上的操作完成用户注册/登录、错误定位技术备选集构建和程序版本的选择/添加操作,并将相应的自定制信息保存到数据库。
(4)一步转移概率矩阵:根据数据库中存储的程序错误历史序列,建立一步转移概率矩阵。错误定位完成后,更新数据库中的错误历史序列同时触发更新一步转移概率矩阵的事件,更新一步转移概率矩阵;
(5)错误定位:根据一步转移概率矩阵信息、错误历史序列信息和错误定位技术备选集信息,预测当前错误的类型;选择相应的错误定位技术,结合数据库中的测试信息,计算在该错误定位技术下,程序每条语句包含错误的可疑度,生成可疑度列表;参考生成的可疑度列表,确定程序中错误的位置,计算获得错误定位技术备选集中所有错误定位技术对应的程序可疑度列表;确定当前错误的真实类型;
(6)修正错误:根据前面定位到的错误的位置,用户使用错误修正方法在源程序上修正错误,修正错误后继续进行测试如仍有错误则开始新一轮的错误定位,如没有错误则错误定位结束。

说明书

说明书一种基于马尔可夫模型的软件错误定位系统及错误定位方法
技术领域
本发明属于软件调试技术领域,采用马尔可夫过程建立错误类型预测模型,根据预测结果从错误定位技术备选集中选择相应的错位定位技术来实施。
背景技术
计算机的应用日益广泛,但是计算机软件远没有达到零错误的要求。提高软件质量已经成为软件工程领域亟待解决的重要问题。调试软件错误首先需要定位错误定位。统计错误定位技术通过分析动态程序行为来定位程序错误,对程序单元的可疑度进行预测。将运行失败测试用例取得的频谱信息与运行成功测试用例取得的频谱之间的差异性作为程序单元的可疑度评价的指标。当前大多数基于程序频谱的错误定位技术都是针对某种类型的程序单元及其程序频谱信息来建立统计模型。然而,目前的软件错误定位技术通常针对某种错误类型或程序单元而设计,在定位某类错误时具有稳定的准确性,但无一被证明具有一般意义的有效性。在现代软件研制过程中,受到新的开发技术、开发过程及编程环境等的影响,程序特征和错误类型愈来愈多。这种情况下,如果随机选择一种错误定位技术,可能会导致定位错误的效果不理想,而选择所有的定位技术进行尝试,代价过大。于是,如何选择一个最佳的错误定位技术就成了亟待解决的问题。
与此同时,由实践经验可知,单元测试中发现的错误的类型和属性是相关的。因此,当某种错误定位技术能够准确定位某个错误时,对于同一待测程序中存在的其他错误也具有较好的效果。基于以上情况,本发明提出了集成多错误定位技术进行错误定位的方法,对基于不同类型频谱的错误定位技术的结果进行集成,有效地提高定位效果。
本发明在此基础之上,将多个错误定位技术作为备选集,在单元测试环境中使用马尔可夫模型预测错误类型并选择合适的技术来实施,相比以往的单技术方法能够更准确地定位到软件错误。
发明内容
本发明技术解决问题:克服现有技术的不足,提供一种基于马尔可夫模型的软件错误定位方法,更快、更准确地实现了软件错误定位。
本发明技术的解决方案是:一种基于马尔可夫模型的软件错误定位系统,如图1所示, 包括:
测试信息获取模块:用户(测试工程师)使用gcc(gcov)或llvm等编译系统软件对被测试程序进行插装,统计程序语句执行次数等信息。用户(测试工程师)编写并运行测试用例,将获得的测试用例执行成功与否、程序每个语句执行的次数等测试信息保存到excel文件中,然后将excel文件中的测试信息通过图形交互界面模块存储到数据库模块的数据库中。进行错误定位的首先要运行测试用例,根据有无失败的测试用例判断程序中有无错误,需不需要进一步实施错误定位。
自定制模块:本发明系统及发明方法,需要用户注册用户账号,登录进入错误定位系统。在自定制模块中,用户选择错误定位技术构成错误定位技术备选集,并在图形交互界面中选择这些错误定位技术,如系统中尚没有某些错误定位技术,用户可通过图形交互界面添加这些错误定位技术到数据库,最终将错误定位技术备选集保存到数据库中。因本发明方法解决的问题是现在不存在一种错误定位技术能够普遍高效的定位错误,因而在选择错误定位技术组成备选集时,不做特别的要求,选择当前一些定位错误效果较佳的错误定位技术即可,这点体现本发明方法的普遍适用性。结合备选集中的错误定位技术将软件中出现的错误分类,鉴于不同技术在定位不同类型错误时的准确度不同,花费的代价不同,且目前尚无通用的错误类型描述手段,本发明不失一般性地使用错误定位技术来对错误进行分类。在自定制模块需用户在图形界面上确定被定位的程序及其版本,并保存到数据库中。自定制模块的具体实施是用户通过图形交互界面模块与数据库模块之间配合完成的。
图形交互界面模块:图形交互界面模块负责用户沟通测试信息获取模块、自定制模块、一步转移概率矩阵模块、错误定位模块、错误修正模块及数据库模块,具体实现其余各模块对数据库的操作。图形交互界面模块具体完成以下工作:用户登录自己的账号,如没有账号则需注册新的账号;用户根据自定制模块构建的错误定位技术备选集在图形交互界面选择或添加相应的错误定位技术,根据自定制模块确定要进行错误定位的程序版本,选择相应版本的程序进行错误定位;图形交互界面显示一步转移概率矩阵模块中的一步转移概率矩阵;图形交互界面显示错误定位模块预测的当前错误的类型并进一步确定当前错误的类型,确定当前错误类型后更新数据库中的错误历史序列,进而触发一步转移概率矩阵模块中更新一步转移概率矩阵的事件,并及时显示在图形交互界面上。
一步转移概率矩阵模块:一步转移概率矩阵模块根据数据库模块存储的错误历史序列和自定制模块构建的错误定位技术备选集,计算获得一步转移概率矩阵并在图形交互界面模块进行显示。当第一次使用本系统定位错误时,因错误历史序列为空,我们将备选集中的错误定位技术同等看待赋予相同的概率。
错误定位模块:错误定位模块结合一步转移概率矩阵模块的一步转移概率矩阵信息和测试信息获取模块获取并在数据库模块中保存的测试信息,预测当前错误的类型并选择相应的错误定位技术定位错误,然后计算备选集中各错误定位技术定位当前错误的代价,花费代价最小的错误定位技术即是当前错误的真实类型,确定当前错误真实类型后,更新数据库模块中数据库中的错误历史序列,触发更新一步转移概率矩阵模块一步转移概率矩阵的事件。
错误修正模块:错误修正模块根据错误定位模块定位到的错误的位置,结合业界使用的错误修正方法修正错误,然后进行新一轮的测试,直到程序中没有错误。
数据库模块:数据库模块中存储着测试信息获取模块中获取的测试信息、自定制模块中构建的错误定位技术备选集、程序错误历史序列信息和用户注册信息等。
基于马尔可夫模型的软件错误定位方法,实现流程如图2所示,具体步骤如下:
(1)测试信息获取:用户(测试工程师)使用gcc与gcov或llvm等编译系统软件对被测程序进行插装,编写运行测试用例,统计运行测试用例获得的测试用例成功执行与否、语句执行次数等测试信息。将统计获得的测试信息保存到excel文件中,通过图形交互界面模块保存到数据库模块中的数据库中。
(2)自定制信息:使用本发明系统需要用户登录进入系统,如没有账号需先进行注册。用户登录后需要选择错误定位技术构成错误定位技术备选集,如用户要添加新的错误定位技术,可通过图形交互界面进行添加。用户根据构建的错误定位技术备选集将错误类型分类。用户在进行错误定位前需要确定被定位的程序及其版本,如第一次使用本发明系统则添加相应的程序名称。上述用户信息、错误定位技术备选集信息和被测试程序版本信息均通过图形交互界面保存到数据库模块的数据库中。
(3)信息存储:前两个步骤获取的测试信息和用户自定制的信息均通过图形交互界面模块的图形交互界面存储到数据库模块的数据库中。保存在excel文件中的测试信息通过图形交互界面保存到数据库相应的表中。用户通过在图形交互界面上的操作完成用户注册/登录、错误定位技术备选集构建和程序版本选择/添加,同时将相应的自定制信息保存到数据库模块的数据库中。
(4)一步转移概率矩阵:根据数据库模块存储的程序的错误历史序列,使用本发明方法提供的算法建立一步转移概率矩阵。当第一次实施错误定位时,因无错误历史序列,我们做特殊处理,具体见后面详细论述。错误定位完成后,更新数据库中的错误历史序列同时触发更新一步转移概率矩阵的事件,进而更新一步转移概率矩阵,使得一步转移概率矩阵总对应最新定位到的错误。
(5)错误定位:根据一步转移概率矩阵模块的一步转移概率矩阵信息和数据库模块中 的错误历史序列信息和错误定位技术备选集信息,预测当前错误的类型。然后选择和当前错误类型相应的错误定位技术,结合数据库模块中数据库中的测试信息,计算在该错误定位技术下,程序每条语句含有错误的可疑度,生成可疑度列表。参考生成的可疑度列表,从前往后在源程序中查找程序错误,最终确定程序的位置。计算错误定位技术备选集中所有错误定位技术对应的程序可疑度列表,比较错误所在程序中的位置在各错误定位技术对应的可疑度列表中的位置,位置最靠前的可疑度列表对应的错误定位技术所对应的错误类型即是当前错误的真实类型。
(6)错误修正:根据前面定位到的错误的位置,用户(测试工程师)使用业界使用的错误修正方法在源程序上修正错误。修正错误后继续进行测试如仍有错误则开始新一轮的错误定位,如没有错误则错误定位结束。
本发明与现有技术相比的优点在于:
(1)本发明实现的一种基于马尔科夫模型的错误定位系统,将测试信息获取、错误定位、错误修正等等通过数据库与图形交互界面联系在一起,能够高效的定位错误,同时还提供了友好的操作界面。
(2)本发明在分析单元测试的特性及预测软件错误类型可行性的基础上,采用马尔可夫过程建立预测模型,根据预测的错误类型从错误定位备选集中选择相应的错误定位技术来实施错误定位,能更快的定位到程序中存在的软件错误,更快地实现软件错误定位。
(3)由实践经验可知,单元测试中发现的错误的类型和属性是相关的。因此,当某种错误定位技术能够准确定位某个错误时,对于同一待测程序中存在的其他错误也具有较好的效果,对基于不同类型频谱的错误定位技术的结果进行集成,有效地提高定位效果。
(4)本发明将多个错误定位技术作为备选集,在单元测试环境中使用马尔可夫模型预测错误类型并选择合适的技术来实施,不需考虑错误的内在逻辑和语言特性,实现无偏差的预测错误类型,相比以往使用单个错误定位技术的方法能够更准确地定位到软件错误。
附图说明
图1为本发明错误定位系统的组成框图;
图2为本发明错误定位方法的实现流程图;
图3为实验程序中本发明方法使用Tarantula、FOnly组成备选集的定位效果示意图;
图4为实验程序中本发明方法使用CBI、SOBER组成备选集的定位效果示意图;
图5为实验程序中本发明方法使用DES-CBI、DES-SOBER组成备选集的定位效果示意图;
图6为真实程序中本发明方法使用Tarantula、FOnly组成备选集的定位效果示意图;
图7为真实程序中本发明方法使用CBI、SOBER组成备选集的定位效果示意图;
图8为真实程序中本发明方法使用DES-CBI、DES-SOBER组成备选集的定位效果示意图。
具体实施方式
如图1所示,本发明一种基于马尔科夫模型的软件错误定位系统由7个模块组成:测试信息获取模块、自定制模块、图形交互界面模块、一步转移概率矩阵模块、错误定位模块、错误修正模块和数据库模块。
整体实现过程如下:
(1)测试信息获取:用户(测试工程师)使用gcc与gcov或llvm等编译系统软件对被测程序进行插装,编写运行测试用例,统计运行测试用例获得的测试用例成功执行与否、语句执行次数等测试信息。将统计获得的测试信息保存到excel文件中,通过图形交互界面模块保存到数据库模块中的数据库中。
(2)自定制信息:使用本发明系统需要用户登录进入系统,如没有账号需先进行注册。用户登录后需要选择错误定位技术构成错误定位技术备选集,如用户要添加新的错误定位技术,可通过图形交互界面进行添加。用户根据构建的错误定位技术备选集将错误类型分类。用户在进行错误定位前需要选择被定位的版本的程序,如第一次使用本发明系统则添加相应的程序名称。上述用户信息、错误定位技术备选集信息和被测试程序版本信息均通过图形交互界面保存到数据库模块的数据库中。
(3)信息存储:前两个步骤获取的测试信息和用户自定制的信息均通过图形交互界面模块的图形交互界面存储到数据库模块的数据库中。保存在excel文件中的测试信息通过图形交互界面保存到数据库相应的表中。用户通过在图形交互界面上的操作完成用户注册/登录、错误定位技术备选集构建和程序版本选择/添加,同时将相应的自定制信息保存到数据库模块的数据库中。
(4)一步转移概率矩阵:根据数据库模块存储的程序的错误历史序列,使用本发明方法提供的算法建立一步转移概率矩阵。当第一次实施错误定位时,因无错误历史序列,我们做特殊处理,具体见后面详细论述。错误定位完成后,更新数据库中的错误历史序列同时触发更新一步转移概率矩阵的事件,进而更新一步转移概率矩阵,使得一步转移概率矩阵总对应最新定位到的错误。
(5)错误定位:根据一步转移概率矩阵模块的一步转移概率矩阵信息和数据库模块中的错误历史序列信息和错误定位技术备选集信息,预测当前错误的类型。然后选择和当前错误类型相应的错误定位技术,结合数据库模块中数据库中的测试信息,计算在该错误定位技术下,程序每条语句含有错误的可疑度,生成可疑度列表。参考生成的可疑度列表,从前往后在源程序中查找程序错误,最终确定程序的位置。计算错误定位技术备选集中所有错误定 位技术对应的程序可疑度列表,比较错误所在程序中的位置在各错误定位技术对应的可疑度列表中的位置,位置最靠前的可疑度列表对应的错误定位技术所对应的错误类型即是当前错误的真实类型。
(6)错误修正:根据前面定位到的错误的位置,用户(测试工程师)使用业界使用的错误修正方法在源程序上修正错误。修正错误后继续进行测试如仍有错误则开始新一轮的错误定位,如没有错误则错误定位结束。
各模块的具体实现过程如下:
1、测试信息获取模块
由于本发明系统及发明方法是针对不存在普遍高效的错误定位技术,而提出的将已有的错误定位技术组成备选集的基于马尔可夫模型的软件错误定位系统及定位方法,因而本发明系统及方法不解决测试用例编写运行获取测试信息等方面的工作,但本系统能够工作的前提是用户(测试工程师)按照业界常规的编写执行测试用例获取测试信息。自动化错误定位技术实质是根据测试用例执行成功与否与语句被执行的次数计算每个语句的可疑度,最终将程序所有的语句按照可疑度降序排列生成一个可疑度列表。为获得每个语句执行的次数,可以使用gcc编译程序时结合gcov一起工作(具体看gcc和gcov的用户手册),或者使用llvm编译系统来获得,或其他的一些获得语句执行次数的工具。将这些测试信息保存在excel文件中:每个测试用例对应一个excel表格,每个excel表格中存储程序每个语句是否被该测试用例执行通过,及该测试用例成功与否等信息,所有的测试用例的表格保存为一个excel文件,即为当前程序版本的测试信息。Excel文件中存储的测试信息通过图形交互界面模块存储到数据库模块的数据库中。
2、自定制模块
本发明系统需要用户注册登录来实施错误定位。用户通过图形交互界面与数据库系统交互后,如登录成功,会获得数据库中存储的与该用户关联的一些信息,如该用户存储的错误定位技术、该用户已测试的不同的程序和不同版本的程序以及相应的错误历史序列等信息。用户(测试工程师)使用这些信息通过图形交互界面模块来实现自定制模块的错误定位技术备选集构建、错误类型划分及程序和程序版本的选择等任务。自定制模块中用户(测试工程师)选择已有的自动错误定位技术组成错误定位技术备选集,实际实现是用户通过图形交互界面模块选择已添加过的错误定位技术,或者添加新的错误定位技术,然后选择这中间的多个错误定位技术组成备选集。自定制模块中划分错误类型是结合备选集中的错误定位技术将软件中出现的错误分类,鉴于不同技术在定位不同类型错误时的准确度不同,花费的代价不同,且目前尚无通用的错误类型描述手段,本发明不失一般性地使用错误定位技术来对错误 进行分类。当错误定位技术备选集S为T1,T2…,Tm(Ti表示第i个错误定位技术),则错误类型分别用T1,T2…,Tm标示。如当Ti定位当前错误代价最小,即当前错误所在程序位置在Ti对应的可疑度列表位置最靠前的地方,则当前错误类型即为Ti。错误历史序列即为定位修正的错误的类型序列,通过图形交互界面模块保存到数据库中。当用户(测试工程师)第一次使用本系统时错误历史序列为空。用户在该模块通过图形交互界面确定程序及程序的版本等信息。自定制模块主要功能是设计相应的错误定位信息及错误定位策略,具体实施由图形交互界面模块和数据库模块配合完成。
3、图形交互界面模块
图形交互界面模块实现图形交互界面,可以选择开发成客户端形式,也可选择网页的形式,本发明系统的实现选择客户端模式,使用C#开发完成。图形交互界面是沟通各模块的桥梁,尤其是其余模块与数据库模块的数据交互。数据库模块的数据库系统是基础,其余模块(除图形交互界面模块与数据库模块)是具体如何使用数据库中的数据来高效定位程序中错误的策略,图形交互界面模块的图形交互界面是外在表现形式。图形交互界面的具体实现是:用户在主界面登录系统(如没有账号需先进行注册)。登陆后主界面会显示该用户已定位错误的程序及对应的程序版本,及已添加的错误定位技术。在主界面用户可以选择程序及程序版本,也可以添加新的程序来定位;用户可以选择已有的错误定位技术构成错误定位技术备选集,也可添加新的错误定位技术结合已有的错误定位技术构成备选集,或完全使用新添加的错误定位技术构成备选集;选择或添加程序及程序版本后,用户可将excel文件中的测试信息通过主界面保存到数据库中以供下面定位错误使用;以上这些完成后点击错误定位按钮会弹出新的图形交互界面,在新的界面上会显示已选择版本程序的一步转移概率矩阵和错误历史序列;点击预测错误类型按钮会显示根据一步转移概率矩阵和上个错误类型预测的错误类型;预测出错误类型后选择相应的错误定位技术定位错误,将该位置信息输入交互界面点击确定真实类型即可确定当前错误的真实类型;确定当前错误的真实类型后点击更新按钮即可更新一步转移概率矩阵和错误历史序列。
4、一步转移概率矩阵模块
一步转移概率矩阵模块使用数据库中存储的错误历史序列及错误定位技术备选集等信息计算获得一步转移概率矩阵,如当错误定位技术备选集S为T1,T2…,Tm,有m个错误定位技术,错误历史序列Q为表示第j个错误的类型为,对应的错误定位技术为)有n-1个错误,则定位第n个错误时对应的一步转移概率矩阵P为:

其中,Pu,v表示在出现类型u错误后紧接着出现类型v错误的条件概率。特别地,Pu,u表示连续两次出现类型u的错误的条件概率。pu,v计算方法如下:

nu,v表示第j个错误类型为u,第j+1个错误类型为的个数。表示在错误历史记录中,错误类型u后跟别的错误类型的个数(包括跟着u类型的错误)。
当第一次定位程序中错误时,由于没有错误历史序列信息,不知道类型u错误后紧接着出现类型v错误的概率Pu,v,因我们选择m个错误定位技术组成备选集,将一步转移概率矩阵的各项均初始化为1m。一步转移概率矩阵P此时为:

一步转移概率矩阵模块通过图形交互界面模块使用数据库模块中数据库的错误历史序列数据,结合本发明方法提供的算法计算获得一步转移概率矩阵,并在图形交互界面上进行显示,为错误定位模块预测错误类型提供理论和数据依据,并被错误定位模块确定的真实类型更新(实际是更新数据库中的错误历史序列,然后使用新的错误历史序列计算新的一步转移概率矩阵)。
5、错误定位模块
错误定位模块使用一步转移概率矩阵模块中的一步转移概率矩阵信息、数据库中错误历史序列信息和错误定位技术备选集等信息实现对程序错的误定位。
(1)根据错误历史序列中上一个错误的类型,结合一步转移概率矩阵,预测当前错误的类型;如第n-1个错误类型为,则查看一步转移概率矩阵中sn-1行中概率值最小的元素 所在的列所对应的错误定位技术即为预测的第n个错误的类型,用Cn表示预测的第n个(当前的)错误类型。
(2)根据预测的当前错误(第n个错误)的类型Cn,从错误定位技术备选集中选择相应的错误定位技术,使用该错误定位技术的计算程序语句包含错误的可疑度计算公式,结合数据库模块的数据库中存储的测试信息,计算当前版本程序在该错误定位技术下,程序中各语句包含错误的可疑度(具体用0~1间的小数表示,越接近1则可疑度越大,反之则越小),生成该错误定位技术下当前版本程序的可疑度列表,用表示。
(3)用户(测试工程师)参考可疑度列表,从前往后即从可疑度语句最大的地方开始,在程序源代码上查找错误,最终确定错误的位置,用w表示;
(4)使用备选集中每个错误定位技术,结合数据库中存储的测试信息,计算当前版本程序在不同错误定位技术下的程序错误可疑度列表;
(5)根据(3)确定的错误的位置w,确定当前错误的真实类型:查看错误所在位置在各错误定位技术对应的可疑度列表的位置,当错误位置最靠前的可疑度列表对应的错误定位技术即是当前错误的真实类型,用表示。
(6)通过图形交互界面更新数据库中的错误历史序列,系统触发更新一步转移概率矩阵的事件,更新一步转移概率矩阵模块的一步转移概率矩阵。
错误定位模块的实现结合了测试信息获取模块,自定制模块、图形交互界面模块、数据库模块和一步转移概率矩阵模块,是该系统实现错误定位功能的主要模块。
6、错误修正模块
错误修正模块根据错误定位模块定位到的错误的位置,结合业界使用的错误修正方法修正错误(本发明方法及系统主要是实现错误定位,提供错误修正模块是因本发明方法的错误定位不是定位一个错误即结束,而是迭代的定位错误的过程,在定位下个错误前,需先修正当前错误,以免烦扰下个错误的定位),然后编写执行测试用例进行新一轮的测试,如有失败的测试用例(用户(测试工程师)认为当前版本的程序中仍存在必须修正的错误),则继续使用本发明方法及系统定位错误,如没有失败的测试用例(用户(测试工程师)认为当前版本的程序不包含必须修正的错误),结束该版本程序的错误定位,如开发新的版本后可接着本版本继续定位错误。
7、数据库模块
数据库模块是本发明系统的基础,存储着测试用例获取模块的测试信息、自定制模块的用户信息及相应的程序版本信息、错误定位技术备选集信息和错误定位模块确定的错误历史 序列信息。测试信息获取模块、自定制模块、一步转移概率矩阵模块和错误定位模块通过图形交互界面模块与数据库进行交互。数据库模块中的数据库的表格有用户信息表、程序信息表(整个数据库有一个表)、程序测试用例表(程序包含的测试用例,每个版本程序有一个表)、测试用例信息表(每个测试用例对应的程序测试信息、每个测试用例一个表格)和程序错误历史序列表(每个程序一个表格)。用户信息表的属性有:用户ID、用户名和用户密码;程序信息表的属性有:程序ID、程序名、程序版本、用户ID;程序测试用例表:程序ID和测试用例表名;测试用例表:程序行号、是否被执行过和测试用例执行成功与否。数据库模块的操作通过图形交互界面实现。数据库系统可选择SQL server或mysql等,本发明系统在具体实现时选择了SQL server2008实现。
效果检验
为了验证本发明的错误定位效果,采用Siemens程序包和Unix工具程序,将多种同类定位技术作为实验的比较对象,对该发明进行验证和比较。基于实验中错误定位技术的不同类型和不同粒度级别,设计了六个实验对本发明进行多维评估。用于实验的错误定位技术详细信息如表1所示。
表1.用于实验的错误定位技术(名称、作者、年代、出处、类型、粒度级别)

1、按照错误版本的顺序对错位定位技术进行书序排列,使用生成的错误序列来模拟软件测试过程;
2、使用前j个错误作为错误定位的历史记录,建立一步转移概率矩阵,预测当前的错误类型;
3、根据预测的错误类型选择适当的定位技术,错误定位后,确定真实的错误类型;
4、使用预测正确率(Correctness)、查准率(Precision)和查全率(Recall)来评估错误类型预测的准确度了。用定位代价(Expenses)评估错误定位的准确度。
通过试验的观察结果的观察与分析,结合表2得出结论:
表2.错误定位方法效果总结

图3至图8中,横坐标表示错误序列,纵坐标表示不同定位技术定位错误的准确度,用Expense评价指标度量。图中的圆形、三角形、方形和叉分别表示不同错误定位技术的准确度。连线表示本发明方法对错误类型的预测以及对相应的方法的选用。
图3表示了Tarantula、FOnly及本发明方法在定位实验程序中的41个错误时的定位代价。结果显示用本发明方法在41次预测中,26次预测正确,15次预测错误,正确率为63.7%,查准率为61.3%,查全率为61.3%。Tarantula的定位代价为14.9%,FOnly的定位代价为16.4%,本发明方法的定位代价为14.1%。结果表明本发明比单独使用Tarantula或FOnly技术的定位代价小。
图4显示在试验程序中本发明方法比单独使用CBI或SOBER的定位代价小。
图5显示在试验程序中本发明方法比单独使用DES-CBI的定位代价小,但是比单独使用DES-SOBER的定位代价大。
图6显示在真实程序中本发明比单独使用Tarantula或FOnly技术的定位代价小。
图7显示在真实程序中本发明比单独使用CBI定位代价大,但比使用SOBER定位代价小。
图8显示在真实程序中本发明比单独使用DES-CBI或DES-SOBER技术的定位代价大。
综上所述,本发明适合应用于基于语句的错误定位技术、相同类型的错误定位技术和相同粒度级别的错误定位技术,应用于基于谓词的错误定位技术时有效,更适用于粗粒度的错误定位技术。
本发明采用马尔可夫过程建立预测模型,根据判定的错误类型从错误定位备选集中选择合适的错误定位技术来实施错误定位,能更快更准确地定位到程序中存在的软件错误。
以上所述,仅为本发明部分具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域的人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。本发明未详细阐述部分属于本领域公知技术。

一种基于马尔可夫模型的软件错误定位系统及错误定位方法.pdf_第1页
第1页 / 共18页
一种基于马尔可夫模型的软件错误定位系统及错误定位方法.pdf_第2页
第2页 / 共18页
一种基于马尔可夫模型的软件错误定位系统及错误定位方法.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《一种基于马尔可夫模型的软件错误定位系统及错误定位方法.pdf》由会员分享,可在线阅读,更多相关《一种基于马尔可夫模型的软件错误定位系统及错误定位方法.pdf(18页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103455417 A (43)申请公布日 2013.12.18 C N 1 0 3 4 5 5 4 1 7 A *CN103455417A* (21)申请号 201310308553.9 (22)申请日 2013.07.20 G06F 11/36(2006.01) (71)申请人中国科学院软件研究所 地址 100190 北京市海淀区中关村南四街4 号 (72)发明人张震宇 刘畅 张云乾 (74)专利代理机构北京科迪生专利代理有限责 任公司 11251 代理人成金玉 杨学明 (54) 发明名称 一种基于马尔可夫模型的软件错误定位系统 及错误定位方法 (57) 摘要 一。

2、种基于马尔可夫模型的软件错误定位系统 及错误定位方法,属于软件调试技术领域,由测试 信息获取模块、自定制模块、图形交互界面模块、 一步转移概率矩阵模块、错误定位模块、错误修正 模块、数据库模块组成,具体步骤包括:测试信息 获取模块编写执行测试用例获取测试信息;自定 制模块构建错误定位技术备选集,划分错误类型; 一步转移概率矩阵模块计算一步转移概率矩阵; 错误定位模块预测当前的错误类型,选择相应的 错误定位技术进行错误定位,计算备选集中各技 术定位错误的代价,进而确定当前错误的类型并 更新一步转移概率矩阵和错误历史序列;错误修 正模块修正定位到的错误,继续进行错误定位或 结束。本发明更快、更准确。

3、地实现了软件错误定 位。 (51)Int.Cl. 权利要求书2页 说明书10页 附图5页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书10页 附图5页 (10)申请公布号 CN 103455417 A CN 103455417 A 1/2页 2 1.一种基于马尔可夫模型的软件错误定位系统,其特征在于包括:测试信息获取模 块、自定制模块、图形交互界面模块、一步转移概率矩阵模块、错误定位模块、错误修正模块 和数据库模块;其中: 测试信息获取模块:用户使用编译系统软件对被测试程序进行插装,统计程序语句执 行次数等信息;同时编写并运行测试用例,将获得的测试用例执行。

4、成功与否、程序每个语句 执行的次数的测试信息保存到excel文件中,excel文件中的测试信息通过图形交互界面 模块将测试信息存储到数据库模块的数据库中; 自定制模块:用户注册用户账号,登录定位系统,然后用户构建错误定位技术备选集, 根据备选集划分错误类型,用户选择或添加被测试程序版本信息;自定制模块的具体实施 是用户通过图形交互界面模块与数据库模块交互配合完成的; 图形交互界面模块:负责用户沟通测试信息获取模块、自定制模块、一步转移概率矩阵 模块、错误定位模块、错误修正模块及数据库模块,具体实现其余各模块对数据库的操作; 用户登录自己的账号,如没有账号则需注册新的账号;用户根据自定制模块构建。

5、的错误定 位技术备选集在图形交互界面选择或添加相应的错误定位技术,根据自定制模块确定错误 定位的程序版本;图形交互界面显示一步转移概率矩阵模块的一步转移概率矩阵;图形交 互界面显示错误定位模块预测的当前错误的类型及确定当前错误的真实类型,并在确定当 前错误类型后更新数据库中的错误历史序列,进而触发一步转移概率矩阵模块更新一步转 移概率矩阵的事件,即时显示在图形交互界面上; 一步转移概率矩阵模块:根据数据库模块存储的错误历史序列和自定制模块构建的存 储于数据库中的错误定位技术备选集,计算获得一步转移概率矩阵信息,在图形交互界面 模块进行显示; 错误定位模块:结合一步转移概率矩阵模块的一步转移概率。

6、矩阵信息和测试信息获取 模块获取并在数据库模块中存储的测试信息,预测当前错误的类型并选择相应的错误定位 技术定位错误,计算备选集中各错误定位技术定位当前错误的代价,确定当前错误的真实 类型,更新数据库中的错误历史序列,触发更新一步转移概率矩阵模块一步转移概率矩阵 的事件; 错误修正模块:根据错误定位模块定位到的错误的位置,结合错误修正方法修正错误, 然后进行新一轮的测试,直到程序中没有错误; 数据库模块:存储测试信息获取模块获取的测试信息、自定制模块构建的错误定位技 术备选集、程序错误历史序列信息和用户注册信息等。 2.一种基于马尔可夫模型的软件错误定位方法,其特征在于实现步骤如下: (1)测。

7、试信息获取:用户使用编译系统软件对被测程序进行插装,编写并运行测试用 例,统计运行测试用例获得的测试用例成功执行与否、语句执行次数等测试信息,将统计获 得的测试信息保存到excel文件中,通过图形交互界面保存到数据库中; (2)自定制信息:用户注册/登录进入系统,用户登录后选择/添加错误定位技术构成 错误定位技术备选集,根据构建的错误定位技术备选集划分错误类型,选择/添加被定位 的程序及版本;用户信息、错误定位技术备选集信息和被测试程序版本信息通过图形交互 界面保存到数据库中; (3)信息存储:保存在excel文件中的测试信息通过图形交互界面保存到数据库相应 权 利 要 求 书CN 10345。

8、5417 A 2/2页 3 的表中,用户通过在图形交互界面上的操作完成用户注册/登录、错误定位技术备选集构 建和程序版本的选择/添加操作,并将相应的自定制信息保存到数据库。 (4)一步转移概率矩阵:根据数据库中存储的程序错误历史序列,建立一步转移概率矩 阵。错误定位完成后,更新数据库中的错误历史序列同时触发更新一步转移概率矩阵的事 件,更新一步转移概率矩阵; (5)错误定位:根据一步转移概率矩阵信息、错误历史序列信息和错误定位技术备选集 信息,预测当前错误的类型;选择相应的错误定位技术,结合数据库中的测试信息,计算在 该错误定位技术下,程序每条语句包含错误的可疑度,生成可疑度列表;参考生成的可。

9、疑度 列表,确定程序中错误的位置,计算获得错误定位技术备选集中所有错误定位技术对应的 程序可疑度列表;确定当前错误的真实类型; (6)修正错误:根据前面定位到的错误的位置,用户使用错误修正方法在源程序上修正 错误,修正错误后继续进行测试如仍有错误则开始新一轮的错误定位,如没有错误则错误 定位结束。 权 利 要 求 书CN 103455417 A 1/10页 4 一种基于马尔可夫模型的软件错误定位系统及错误定位方 法 技术领域 0001 本发明属于软件调试技术领域,采用马尔可夫过程建立错误类型预测模型,根据 预测结果从错误定位技术备选集中选择相应的错位定位技术来实施。 背景技术 0002 计算机。

10、的应用日益广泛,但是计算机软件远没有达到零错误的要求。提高软件质 量已经成为软件工程领域亟待解决的重要问题。调试软件错误首先需要定位错误定位。统 计错误定位技术通过分析动态程序行为来定位程序错误,对程序单元的可疑度进行预测。 将运行失败测试用例取得的频谱信息与运行成功测试用例取得的频谱之间的差异性作为 程序单元的可疑度评价的指标。当前大多数基于程序频谱的错误定位技术都是针对某种类 型的程序单元及其程序频谱信息来建立统计模型。然而,目前的软件错误定位技术通常针 对某种错误类型或程序单元而设计,在定位某类错误时具有稳定的准确性,但无一被证明 具有一般意义的有效性。在现代软件研制过程中,受到新的开发。

11、技术、开发过程及编程环境 等的影响,程序特征和错误类型愈来愈多。这种情况下,如果随机选择一种错误定位技术, 可能会导致定位错误的效果不理想,而选择所有的定位技术进行尝试,代价过大。于是,如 何选择一个最佳的错误定位技术就成了亟待解决的问题。 0003 与此同时,由实践经验可知,单元测试中发现的错误的类型和属性是相关的。因 此,当某种错误定位技术能够准确定位某个错误时,对于同一待测程序中存在的其他错误 也具有较好的效果。基于以上情况,本发明提出了集成多错误定位技术进行错误定位的方 法,对基于不同类型频谱的错误定位技术的结果进行集成,有效地提高定位效果。 0004 本发明在此基础之上,将多个错误定。

12、位技术作为备选集,在单元测试环境中使用 马尔可夫模型预测错误类型并选择合适的技术来实施,相比以往的单技术方法能够更准确 地定位到软件错误。 发明内容 0005 本发明技术解决问题:克服现有技术的不足,提供一种基于马尔可夫模型的软件 错误定位方法,更快、更准确地实现了软件错误定位。 0006 本发明技术的解决方案是:一种基于马尔可夫模型的软件错误定位系统,如图1 所示,包括: 0007 测试信息获取模块:用户(测试工程师)使用gcc(gcov)或llvm等编译系统软件对 被测试程序进行插装,统计程序语句执行次数等信息。用户(测试工程师)编写并运行测试 用例,将获得的测试用例执行成功与否、程序每个。

13、语句执行的次数等测试信息保存到excel 文件中,然后将excel文件中的测试信息通过图形交互界面模块存储到数据库模块的数据 库中。进行错误定位的首先要运行测试用例,根据有无失败的测试用例判断程序中有无错 误,需不需要进一步实施错误定位。 说 明 书CN 103455417 A 2/10页 5 0008 自定制模块:本发明系统及发明方法,需要用户注册用户账号,登录进入错误定位 系统。在自定制模块中,用户选择错误定位技术构成错误定位技术备选集,并在图形交互界 面中选择这些错误定位技术,如系统中尚没有某些错误定位技术,用户可通过图形交互界 面添加这些错误定位技术到数据库,最终将错误定位技术备选集保。

14、存到数据库中。因本发 明方法解决的问题是现在不存在一种错误定位技术能够普遍高效的定位错误,因而在选择 错误定位技术组成备选集时,不做特别的要求,选择当前一些定位错误效果较佳的错误定 位技术即可,这点体现本发明方法的普遍适用性。结合备选集中的错误定位技术将软件中 出现的错误分类,鉴于不同技术在定位不同类型错误时的准确度不同,花费的代价不同,且 目前尚无通用的错误类型描述手段,本发明不失一般性地使用错误定位技术来对错误进行 分类。在自定制模块需用户在图形界面上确定被定位的程序及其版本,并保存到数据库中。 自定制模块的具体实施是用户通过图形交互界面模块与数据库模块之间配合完成的。 0009 图形交互。

15、界面模块:图形交互界面模块负责用户沟通测试信息获取模块、自定制 模块、一步转移概率矩阵模块、错误定位模块、错误修正模块及数据库模块,具体实现其余 各模块对数据库的操作。图形交互界面模块具体完成以下工作:用户登录自己的账号,如没 有账号则需注册新的账号;用户根据自定制模块构建的错误定位技术备选集在图形交互界 面选择或添加相应的错误定位技术,根据自定制模块确定要进行错误定位的程序版本,选 择相应版本的程序进行错误定位;图形交互界面显示一步转移概率矩阵模块中的一步转移 概率矩阵;图形交互界面显示错误定位模块预测的当前错误的类型并进一步确定当前错误 的类型,确定当前错误类型后更新数据库中的错误历史序列。

16、,进而触发一步转移概率矩阵 模块中更新一步转移概率矩阵的事件,并及时显示在图形交互界面上。 0010 一步转移概率矩阵模块:一步转移概率矩阵模块根据数据库模块存储的错误历史 序列和自定制模块构建的错误定位技术备选集,计算获得一步转移概率矩阵并在图形交互 界面模块进行显示。当第一次使用本系统定位错误时,因错误历史序列为空,我们将备选集 中的错误定位技术同等看待赋予相同的概率。 0011 错误定位模块:错误定位模块结合一步转移概率矩阵模块的一步转移概率矩阵 信息和测试信息获取模块获取并在数据库模块中保存的测试信息,预测当前错误的类型并 选择相应的错误定位技术定位错误,然后计算备选集中各错误定位技术。

17、定位当前错误的代 价,花费代价最小的错误定位技术即是当前错误的真实类型,确定当前错误真实类型后,更 新数据库模块中数据库中的错误历史序列,触发更新一步转移概率矩阵模块一步转移概率 矩阵的事件。 0012 错误修正模块:错误修正模块根据错误定位模块定位到的错误的位置,结合业界 使用的错误修正方法修正错误,然后进行新一轮的测试,直到程序中没有错误。 0013 数据库模块:数据库模块中存储着测试信息获取模块中获取的测试信息、自定制 模块中构建的错误定位技术备选集、程序错误历史序列信息和用户注册信息等。 0014 基于马尔可夫模型的软件错误定位方法,实现流程如图2所示,具体步骤如下: 0015 (1)。

18、测试信息获取:用户(测试工程师)使用gcc与gcov或llvm等编译系统软件对 被测程序进行插装,编写运行测试用例,统计运行测试用例获得的测试用例成功执行与否、 语句执行次数等测试信息。将统计获得的测试信息保存到excel文件中,通过图形交互界 面模块保存到数据库模块中的数据库中。 说 明 书CN 103455417 A 3/10页 6 0016 (2)自定制信息:使用本发明系统需要用户登录进入系统,如没有账号需先进行注 册。用户登录后需要选择错误定位技术构成错误定位技术备选集,如用户要添加新的错误 定位技术,可通过图形交互界面进行添加。用户根据构建的错误定位技术备选集将错误类 型分类。用户在。

19、进行错误定位前需要确定被定位的程序及其版本,如第一次使用本发明系 统则添加相应的程序名称。上述用户信息、错误定位技术备选集信息和被测试程序版本信 息均通过图形交互界面保存到数据库模块的数据库中。 0017 (3)信息存储:前两个步骤获取的测试信息和用户自定制的信息均通过图形交互 界面模块的图形交互界面存储到数据库模块的数据库中。保存在excel文件中的测试信息 通过图形交互界面保存到数据库相应的表中。用户通过在图形交互界面上的操作完成用户 注册/登录、错误定位技术备选集构建和程序版本选择/添加,同时将相应的自定制信息保 存到数据库模块的数据库中。 0018 (4)一步转移概率矩阵:根据数据库模。

20、块存储的程序的错误历史序列,使用本发明 方法提供的算法建立一步转移概率矩阵。当第一次实施错误定位时,因无错误历史序列,我 们做特殊处理,具体见后面详细论述。错误定位完成后,更新数据库中的错误历史序列同时 触发更新一步转移概率矩阵的事件,进而更新一步转移概率矩阵,使得一步转移概率矩阵 总对应最新定位到的错误。 0019 (5)错误定位:根据一步转移概率矩阵模块的一步转移概率矩阵信息和数据库模 块中的错误历史序列信息和错误定位技术备选集信息,预测当前错误的类型。然后选择和 当前错误类型相应的错误定位技术,结合数据库模块中数据库中的测试信息,计算在该错 误定位技术下,程序每条语句含有错误的可疑度,生。

21、成可疑度列表。参考生成的可疑度列 表,从前往后在源程序中查找程序错误,最终确定程序的位置。计算错误定位技术备选集中 所有错误定位技术对应的程序可疑度列表,比较错误所在程序中的位置在各错误定位技术 对应的可疑度列表中的位置,位置最靠前的可疑度列表对应的错误定位技术所对应的错误 类型即是当前错误的真实类型。 0020 (6)错误修正:根据前面定位到的错误的位置,用户(测试工程师)使用业界使用的 错误修正方法在源程序上修正错误。修正错误后继续进行测试如仍有错误则开始新一轮的 错误定位,如没有错误则错误定位结束。 0021 本发明与现有技术相比的优点在于: 0022 (1)本发明实现的一种基于马尔科夫。

22、模型的错误定位系统,将测试信息获取、错误 定位、错误修正等等通过数据库与图形交互界面联系在一起,能够高效的定位错误,同时还 提供了友好的操作界面。 0023 (2)本发明在分析单元测试的特性及预测软件错误类型可行性的基础上,采用马 尔可夫过程建立预测模型,根据预测的错误类型从错误定位备选集中选择相应的错误定位 技术来实施错误定位,能更快的定位到程序中存在的软件错误,更快地实现软件错误定位。 0024 (3)由实践经验可知,单元测试中发现的错误的类型和属性是相关的。因此,当某 种错误定位技术能够准确定位某个错误时,对于同一待测程序中存在的其他错误也具有较 好的效果,对基于不同类型频谱的错误定位技。

23、术的结果进行集成,有效地提高定位效果。 0025 (4)本发明将多个错误定位技术作为备选集,在单元测试环境中使用马尔可夫模 型预测错误类型并选择合适的技术来实施,不需考虑错误的内在逻辑和语言特性,实现无 说 明 书CN 103455417 A 4/10页 7 偏差的预测错误类型,相比以往使用单个错误定位技术的方法能够更准确地定位到软件错 误。 附图说明 0026 图1为本发明错误定位系统的组成框图; 0027 图2为本发明错误定位方法的实现流程图; 0028 图3为实验程序中本发明方法使用Tarantula、FOnly组成备选集的定位效果示意 图; 0029 图4为实验程序中本发明方法使用CB。

24、I、SOBER组成备选集的定位效果示意图; 0030 图5为实验程序中本发明方法使用DES-CBI、DES-SOBER组成备选集的定位效果示 意图; 0031 图6为真实程序中本发明方法使用Tarantula、FOnly组成备选集的定位效果示意 图; 0032 图7为真实程序中本发明方法使用CBI、SOBER组成备选集的定位效果示意图; 0033 图8为真实程序中本发明方法使用DES-CBI、DES-SOBER组成备选集的定位效果示 意图。 具体实施方式 0034 如图1所示,本发明一种基于马尔科夫模型的软件错误定位系统由7个模块组成: 测试信息获取模块、自定制模块、图形交互界面模块、一步转移。

25、概率矩阵模块、错误定位模 块、错误修正模块和数据库模块。 0035 整体实现过程如下: 0036 (1)测试信息获取:用户(测试工程师)使用gcc与gcov或llvm等编译系统软件对 被测程序进行插装,编写运行测试用例,统计运行测试用例获得的测试用例成功执行与否、 语句执行次数等测试信息。将统计获得的测试信息保存到excel文件中,通过图形交互界 面模块保存到数据库模块中的数据库中。 0037 (2)自定制信息:使用本发明系统需要用户登录进入系统,如没有账号需先进行注 册。用户登录后需要选择错误定位技术构成错误定位技术备选集,如用户要添加新的错误 定位技术,可通过图形交互界面进行添加。用户根据。

26、构建的错误定位技术备选集将错误类 型分类。用户在进行错误定位前需要选择被定位的版本的程序,如第一次使用本发明系统 则添加相应的程序名称。上述用户信息、错误定位技术备选集信息和被测试程序版本信息 均通过图形交互界面保存到数据库模块的数据库中。 0038 (3)信息存储:前两个步骤获取的测试信息和用户自定制的信息均通过图形交互 界面模块的图形交互界面存储到数据库模块的数据库中。保存在excel文件中的测试信息 通过图形交互界面保存到数据库相应的表中。用户通过在图形交互界面上的操作完成用户 注册/登录、错误定位技术备选集构建和程序版本选择/添加,同时将相应的自定制信息保 存到数据库模块的数据库中。 。

27、0039 (4)一步转移概率矩阵:根据数据库模块存储的程序的错误历史序列,使用本发明 方法提供的算法建立一步转移概率矩阵。当第一次实施错误定位时,因无错误历史序列,我 说 明 书CN 103455417 A 5/10页 8 们做特殊处理,具体见后面详细论述。错误定位完成后,更新数据库中的错误历史序列同时 触发更新一步转移概率矩阵的事件,进而更新一步转移概率矩阵,使得一步转移概率矩阵 总对应最新定位到的错误。 0040 (5)错误定位:根据一步转移概率矩阵模块的一步转移概率矩阵信息和数据库模 块中的错误历史序列信息和错误定位技术备选集信息,预测当前错误的类型。然后选择和 当前错误类型相应的错误定。

28、位技术,结合数据库模块中数据库中的测试信息,计算在该错 误定位技术下,程序每条语句含有错误的可疑度,生成可疑度列表。参考生成的可疑度列 表,从前往后在源程序中查找程序错误,最终确定程序的位置。计算错误定位技术备选集中 所有错误定位技术对应的程序可疑度列表,比较错误所在程序中的位置在各错误定位技术 对应的可疑度列表中的位置,位置最靠前的可疑度列表对应的错误定位技术所对应的错误 类型即是当前错误的真实类型。 0041 (6)错误修正:根据前面定位到的错误的位置,用户(测试工程师)使用业界使用的 错误修正方法在源程序上修正错误。修正错误后继续进行测试如仍有错误则开始新一轮的 错误定位,如没有错误则错。

29、误定位结束。 0042 各模块的具体实现过程如下: 0043 1、测试信息获取模块 0044 由于本发明系统及发明方法是针对不存在普遍高效的错误定位技术,而提出的将 已有的错误定位技术组成备选集的基于马尔可夫模型的软件错误定位系统及定位方法,因 而本发明系统及方法不解决测试用例编写运行获取测试信息等方面的工作,但本系统能够 工作的前提是用户(测试工程师)按照业界常规的编写执行测试用例获取测试信息。自动 化错误定位技术实质是根据测试用例执行成功与否与语句被执行的次数计算每个语句的 可疑度,最终将程序所有的语句按照可疑度降序排列生成一个可疑度列表。为获得每个语 句执行的次数,可以使用gcc编译程序。

30、时结合gcov一起工作(具体看gcc和gcov的用户手 册),或者使用llvm编译系统来获得,或其他的一些获得语句执行次数的工具。将这些测试 信息保存在excel文件中:每个测试用例对应一个excel表格,每个excel表格中存储程序 每个语句是否被该测试用例执行通过,及该测试用例成功与否等信息,所有的测试用例的 表格保存为一个excel文件,即为当前程序版本的测试信息。Excel文件中存储的测试信息 通过图形交互界面模块存储到数据库模块的数据库中。 0045 2、自定制模块 0046 本发明系统需要用户注册登录来实施错误定位。用户通过图形交互界面与数据库 系统交互后,如登录成功,会获得数据库。

31、中存储的与该用户关联的一些信息,如该用户存储 的错误定位技术、该用户已测试的不同的程序和不同版本的程序以及相应的错误历史序列 等信息。用户(测试工程师)使用这些信息通过图形交互界面模块来实现自定制模块的错误 定位技术备选集构建、错误类型划分及程序和程序版本的选择等任务。自定制模块中用户 (测试工程师)选择已有的自动错误定位技术组成错误定位技术备选集,实际实现是用户通 过图形交互界面模块选择已添加过的错误定位技术,或者添加新的错误定位技术,然后选 择这中间的多个错误定位技术组成备选集。自定制模块中划分错误类型是结合备选集中的 错误定位技术将软件中出现的错误分类,鉴于不同技术在定位不同类型错误时的。

32、准确度不 同,花费的代价不同,且目前尚无通用的错误类型描述手段,本发明不失一般性地使用错误 说 明 书CN 103455417 A 6/10页 9 定位技术来对错误进行分类。当错误定位技术备选集S为T 1 ,T 2 ,T m (T i 表示第i个错误 定位技术),则错误类型分别用T 1 ,T 2 ,T m 标示。如当T i 定位当前错误代价最小,即当前错 误所在程序位置在T i 对应的可疑度列表位置最靠前的地方,则当前错误类型即为T i 。错误 历史序列即为定位修正的错误的类型序列,通过图形交互界面模块保存到数据库中。当用 户(测试工程师)第一次使用本系统时错误历史序列为空。用户在该模块通过图。

33、形交互界面 确定程序及程序的版本等信息。自定制模块主要功能是设计相应的错误定位信息及错误定 位策略,具体实施由图形交互界面模块和数据库模块配合完成。 0047 3、图形交互界面模块 0048 图形交互界面模块实现图形交互界面,可以选择开发成客户端形式,也可选择网 页的形式,本发明系统的实现选择客户端模式,使用C#开发完成。图形交互界面是沟通 各模块的桥梁,尤其是其余模块与数据库模块的数据交互。数据库模块的数据库系统是基 础,其余模块(除图形交互界面模块与数据库模块)是具体如何使用数据库中的数据来高效 定位程序中错误的策略,图形交互界面模块的图形交互界面是外在表现形式。图形交互界 面的具体实现是。

34、:用户在主界面登录系统(如没有账号需先进行注册)。登陆后主界面会显 示该用户已定位错误的程序及对应的程序版本,及已添加的错误定位技术。在主界面用户 可以选择程序及程序版本,也可以添加新的程序来定位;用户可以选择已有的错误定位技 术构成错误定位技术备选集,也可添加新的错误定位技术结合已有的错误定位技术构成备 选集,或完全使用新添加的错误定位技术构成备选集;选择或添加程序及程序版本后,用户 可将excel文件中的测试信息通过主界面保存到数据库中以供下面定位错误使用;以上这 些完成后点击错误定位按钮会弹出新的图形交互界面,在新的界面上会显示已选择版本程 序的一步转移概率矩阵和错误历史序列;点击预测错。

35、误类型按钮会显示根据一步转移概率 矩阵和上个错误类型预测的错误类型;预测出错误类型后选择相应的错误定位技术定位错 误,将该位置信息输入交互界面点击确定真实类型即可确定当前错误的真实类型;确定当 前错误的真实类型后点击更新按钮即可更新一步转移概率矩阵和错误历史序列。 0049 4、一步转移概率矩阵模块 0050 一步转移概率矩阵模块使用数据库中存储的错误历史序列及错误定位技术备选 集等信息计算获得一步转移概率矩阵,如当错误定位技术备选集S为T 1 ,T 2 ,T m ,有m个错 误定位技术,错误历史序列Q为表示第j个错误的类型为,对应的错 误定位技术为)有n-1个错误,则定位第n个错误时对应的一。

36、步转移概率矩阵P为: 0051 0052 其中,P u,v 表示在出现类型u错误后紧接着出现类型v错误的条件概率。特别地, P u,u 表示连续两次出现类型u的错误的条件概率。p u,v 计算方法如下: 0053 说 明 书CN 103455417 A 7/10页 10 0054 n u,v 表示第j个错误类型为u,第j+1个错误类型为的个数。表示 在错误历史记录中,错误类型u后跟别的错误类型的个数(包括跟着u类型的错误)。 0055 当第一次定位程序中错误时,由于没有错误历史序列信息,不知道类型u错误后 紧接着出现类型v错误的概率P u,v ,因我们选择m个错误定位技术组成备选集,将一步转移。

37、 概率矩阵的各项均初始化为1m。一步转移概率矩阵P此时为: 0056 0057 一步转移概率矩阵模块通过图形交互界面模块使用数据库模块中数据库的错误 历史序列数据,结合本发明方法提供的算法计算获得一步转移概率矩阵,并在图形交互界 面上进行显示,为错误定位模块预测错误类型提供理论和数据依据,并被错误定位模块确 定的真实类型更新(实际是更新数据库中的错误历史序列,然后使用新的错误历史序列计 算新的一步转移概率矩阵)。 0058 5、错误定位模块 0059 错误定位模块使用一步转移概率矩阵模块中的一步转移概率矩阵信息、数据库中 错误历史序列信息和错误定位技术备选集等信息实现对程序错的误定位。 006。

38、0 (1)根据错误历史序列中上一个错误的类型,结合一步转移概率矩阵,预测当前错 误的类型;如第n-1个错误类型为,则查看一步转移概率矩阵中s n-1 行中概率值最小的 元素所在的列所对应的错误定位技术即为预测的第n个错误的类型,用C n 表示预测的第n 个(当前的)错误类型。 0061 (2)根据预测的当前错误(第n个错误)的类型C n ,从错误定位技术备选集中选择 相应的错误定位技术,使用该错误定位技术的计算程序语句包含错误的可疑度计算公式, 结合数据库模块的数据库中存储的测试信息,计算当前版本程序在该错误定位技术下,程 序中各语句包含错误的可疑度(具体用01间的小数表示,越接近1则可疑度越。

39、大,反之 则越小),生成该错误定位技术下当前版本程序的可疑度列表,用表示。 0062 (3)用户(测试工程师)参考可疑度列表,从前往后即从可疑度语句最大的地方 开始,在程序源代码上查找错误,最终确定错误的位置,用w表示; 0063 (4)使用备选集中每个错误定位技术,结合数据库中存储的测试信息,计算当前版 本程序在不同错误定位技术下的程序错误可疑度列表; 0064 (5)根据(3)确定的错误的位置w,确定当前错误的真实类型:查看错误所在位置 说 明 书CN 103455417 A 10 8/10页 11 在各错误定位技术对应的可疑度列表的位置,当错误位置最靠前的可疑度列表对应的错误 定位技术即。

40、是当前错误的真实类型,用表示。 0065 (6)通过图形交互界面更新数据库中的错误历史序列,系统触发更新一步转移概 率矩阵的事件,更新一步转移概率矩阵模块的一步转移概率矩阵。 0066 错误定位模块的实现结合了测试信息获取模块,自定制模块、图形交互界面模块、 数据库模块和一步转移概率矩阵模块,是该系统实现错误定位功能的主要模块。 0067 6、错误修正模块 0068 错误修正模块根据错误定位模块定位到的错误的位置,结合业界使用的错误修正 方法修正错误(本发明方法及系统主要是实现错误定位,提供错误修正模块是因本发明方 法的错误定位不是定位一个错误即结束,而是迭代的定位错误的过程,在定位下个错误前。

41、, 需先修正当前错误,以免烦扰下个错误的定位),然后编写执行测试用例进行新一轮的测 试,如有失败的测试用例(用户(测试工程师)认为当前版本的程序中仍存在必须修正的错 误),则继续使用本发明方法及系统定位错误,如没有失败的测试用例(用户(测试工程师) 认为当前版本的程序不包含必须修正的错误),结束该版本程序的错误定位,如开发新的版 本后可接着本版本继续定位错误。 0069 7、数据库模块 0070 数据库模块是本发明系统的基础,存储着测试用例获取模块的测试信息、自定制 模块的用户信息及相应的程序版本信息、错误定位技术备选集信息和错误定位模块确定的 错误历史序列信息。测试信息获取模块、自定制模块、。

42、一步转移概率矩阵模块和错误定位模 块通过图形交互界面模块与数据库进行交互。数据库模块中的数据库的表格有用户信息 表、程序信息表(整个数据库有一个表)、程序测试用例表(程序包含的测试用例,每个版本 程序有一个表)、测试用例信息表(每个测试用例对应的程序测试信息、每个测试用例一个 表格)和程序错误历史序列表(每个程序一个表格)。用户信息表的属性有:用户ID、用户名 和用户密码;程序信息表的属性有:程序ID、程序名、程序版本、用户ID;程序测试用例表: 程序ID和测试用例表名;测试用例表:程序行号、是否被执行过和测试用例执行成功与否。 数据库模块的操作通过图形交互界面实现。数据库系统可选择SQL s。

43、erver或mysql等,本 发明系统在具体实现时选择了SQL server2008实现。 0071 效果检验 0072 为了验证本发明的错误定位效果,采用Siemens程序包和Unix工具程序,将多种 同类定位技术作为实验的比较对象,对该发明进行验证和比较。基于实验中错误定位技术 的不同类型和不同粒度级别,设计了六个实验对本发明进行多维评估。用于实验的错误定 位技术详细信息如表1所示。 0073 表1.用于实验的错误定位技术(名称、作者、年代、出处、类型、粒度级别) 0074 说 明 书CN 103455417 A 11 9/10页 12 0075 1、按照错误版本的顺序对错位定位技术进行书。

44、序排列,使用生成的错误序列来模 拟软件测试过程; 0076 2、使用前j个错误作为错误定位的历史记录,建立一步转移概率矩阵,预测当前 的错误类型; 0077 3、根据预测的错误类型选择适当的定位技术,错误定位后,确定真实的错误类 型; 0078 4、使用预测正确率(Correctness)、查准率(Precision)和查全率(Recall)来评 估错误类型预测的准确度了。用定位代价(Expenses)评估错误定位的准确度。 0079 通过试验的观察结果的观察与分析,结合表2得出结论: 0080 表2.错误定位方法效果总结 0081 0082 图3至图8中,横坐标表示错误序列,纵坐标表示不同定。

45、位技术定位错误的准确 度,用Expense评价指标度量。图中的圆形、三角形、方形和叉分别表示不同错误定位技术 的准确度。连线表示本发明方法对错误类型的预测以及对相应的方法的选用。 0083 图3表示了Tarantula、FOnly及本发明方法在定位实验程序中的41个错误时的 定位代价。结果显示用本发明方法在41次预测中,26次预测正确,15次预测错误,正确率 为63.7%,查准率为61.3%,查全率为61.3%。Tarantula的定位代价为14.9%,FOnly的定位 代价为16.4%,本发明方法的定位代价为14.1%。结果表明本发明比单独使用Tarantula或 FOnly技术的定位代价小。

46、。 0084 图4显示在试验程序中本发明方法比单独使用CBI或SOBER的定位代价小。 说 明 书CN 103455417 A 12 10/10页 13 0085 图5显示在试验程序中本发明方法比单独使用DES-CBI的定位代价小,但是比单 独使用DES-SOBER的定位代价大。 0086 图6显示在真实程序中本发明比单独使用Tarantula或FOnly技术的定位代价 小。 0087 图7显示在真实程序中本发明比单独使用CBI定位代价大,但比使用SOBER定位 代价小。 0088 图8显示在真实程序中本发明比单独使用DES-CBI或DES-SOBER技术的定位代价 大。 0089 综上所述,。

47、本发明适合应用于基于语句的错误定位技术、相同类型的错误定位技 术和相同粒度级别的错误定位技术,应用于基于谓词的错误定位技术时有效,更适用于粗 粒度的错误定位技术。 0090 本发明采用马尔可夫过程建立预测模型,根据判定的错误类型从错误定位备选集 中选择合适的错误定位技术来实施错误定位,能更快更准确地定位到程序中存在的软件错 误。 0091 以上所述,仅为本发明部分具体实施方式,但本发明的保护范围并不局限于此,任 何熟悉本领域的人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在 本发明的保护范围之内。本发明未详细阐述部分属于本领域公知技术。 说 明 书CN 103455417 A 13 1/5页 14 图1 说 明 书 附 图CN 103455417 A 14 2/5页 15 图2 说 明 书 附 图CN 103455417 A 15 3/5页 16 图3 图4 说 明 书 附 图CN 103455417 A 16 4/5页 17 图5 图6 说 明 书 附 图CN 103455417 A 17 5/5页 18 图7 图8 说 明 书 附 图CN 103455417 A 18 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1