CN103455417B - 一种基于马尔可夫模型的软件错误定位***及错误定位方法 - Google Patents
一种基于马尔可夫模型的软件错误定位***及错误定位方法 Download PDFInfo
- Publication number
- CN103455417B CN103455417B CN201310308553.9A CN201310308553A CN103455417B CN 103455417 B CN103455417 B CN 103455417B CN 201310308553 A CN201310308553 A CN 201310308553A CN 103455417 B CN103455417 B CN 103455417B
- Authority
- CN
- China
- Prior art keywords
- mistake
- location
- module
- information
- transition probability
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Stored Programmes (AREA)
Abstract
一种基于马尔可夫模型的软件错误定位***及错误定位方法,属于软件调试技术领域,由测试信息获取模块、自定制模块、图形交互界面模块、一步转移概率矩阵模块、错误定位模块、错误修正模块、数据库模块组成,具体步骤包括:测试信息获取模块编写执行测试用例获取测试信息;自定制模块构建错误定位技术备选集,划分错误类型;一步转移概率矩阵模块计算一步转移概率矩阵;错误定位模块预测当前的错误类型,选择相应的错误定位技术进行错误定位,计算备选集中各技术定位错误的代价,进而确定当前错误的类型并更新一步转移概率矩阵和错误历史序列;错误修正模块修正定位到的错误,继续进行错误定位或结束。本发明更快、更准确地实现了软件错误定位。
Description
技术领域
本发明属于软件调试技术领域,采用马尔可夫过程建立错误类型预测模型,根据预测结果从错误定位技术备选集中选择相应的错位定位技术来实施。
背景技术
计算机的应用日益广泛,但是计算机软件远没有达到零错误的要求。提高软件质量已经成为软件工程领域亟待解决的重要问题。调试软件错误首先需要定位错误定位。统计错误定位技术通过分析动态程序行为来定位程序错误,对程序单元的可疑度进行预测。将运行失败测试用例取得的频谱信息与运行成功测试用例取得的频谱之间的差异性作为程序单元的可疑度评价的指标。当前大多数基于程序频谱的错误定位技术都是针对某种类型的程序单元及其程序频谱信息来建立统计模型。然而,目前的软件错误定位技术通常针对某种错误类型或程序单元而设计,在定位某类错误时具有稳定的准确性,但无一被证明具有一般意义的有效性。在现代软件研制过程中,受到新的开发技术、开发过程及编程环境等的影响,程序特征和错误类型愈来愈多。这种情况下,如果随机选择一种错误定位技术,可能会导致定位错误的效果不理想,而选择所有的定位技术进行尝试,代价过大。于是,如何选择一个最佳的错误定位技术就成了亟待解决的问题。
与此同时,由实践经验可知,单元测试中发现的错误的类型和属性是相关的。因此,当某种错误定位技术能够准确定位某个错误时,对于同一待测程序中存在的其他错误也具有较好的效果。基于以上情况,本发明提出了集成多错误定位技术进行错误定位的方法,对基于不同类型频谱的错误定位技术的结果进行集成,有效地提高定位效果。
本发明在此基础之上,将多个错误定位技术作为备选集,在单元测试环境中使用马尔可夫模型预测错误类型并选择合适的技术来实施,相比以往的单技术方法能够更准确地定位到软件错误。
发明内容
本发明技术解决问题:克服现有技术的不足,提供一种基于马尔可夫模型的软件错误定位方法,更快、更准确地实现了软件错误定位。
本发明技术的解决方案是:一种基于马尔可夫模型的软件错误定位***,如图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和测试用例表名;测试用例表:程序行号、是否被执行过和测试用例执行成功与否。数据库模块的操作通过图形交互界面实现。数据库***可选择SQLserver或mysql等,本发明***在具体实现时选择了SQLserver2008实现。
效果检验
为了验证本发明的错误定位效果,采用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技术的定位代价大。
综上所述,本发明适合应用于基于语句的错误定位技术、相同类型的错误定位技术和相同粒度级别的错误定位技术,应用于基于谓词的错误定位技术时有效,更适用于粗粒度的错误定位技术。
本发明采用马尔可夫过程建立预测模型,根据判定的错误类型从错误定位备选集中选择合适的错误定位技术来实施错误定位,能更快更准确地定位到程序中存在的软件错误。
以上所述,仅为本发明部分具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域的人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。本发明未详细阐述部分属于本领域公知技术。
Claims (2)
1.一种基于马尔可夫模型的软件错误定位***,其特征在于包括:测试信息获取模块、自定制模块、图形交互界面模块、一步转移概率矩阵模块、错误定位模块、错误修正模块和数据库模块;其中:
测试信息获取模块:用户使用编译***软件对被测试程序进行插装,统计程序语句执行次数信息;同时编写并运行测试用例,将获得的测试用例执行成功与否、程序每个语句执行的次数的测试信息保存到excel文件中,excel文件中的测试信息通过图形交互界面模块将测试信息存储到数据库模块的数据库中;
自定制模块:用户注册用户账号,登录定位***,然后用户构建错误定位技术备选集,根据备选集划分错误类型,用户选择或添加被测试程序版本信息;自定制模块的具体实施是用户通过图形交互界面模块与数据库模块交互配合完成的;
图形交互界面模块:负责用户沟通测试信息获取模块、自定制模块、一步转移概率矩阵模块、错误定位模块、错误修正模块及数据库模块,具体实现其余各模块对数据库的操作;用户登录自己的账号,如没有账号则需注册新的账号;用户根据自定制模块构建的错误定位技术备选集在图形交互界面选择或添加相应的错误定位技术,根据自定制模块确定错误定位的程序版本;图形交互界面显示一步转移概率矩阵模块的一步转移概率矩阵;图形交互界面显示错误定位模块预测的当前错误的类型及确定当前错误的真实类型,并在确定当前错误类型后更新数据库中的错误历史序列,进而触发一步转移概率矩阵模块更新一步转移概率矩阵的事件,即时显示在图形交互界面上;
一步转移概率矩阵模块:根据数据库模块存储的错误历史序列和自定制模块构建的存储于数据库中的错误定位技术备选集,计算获得一步转移概率矩阵信息,在图形交互界面模块进行显示;
错误定位模块:结合一步转移概率矩阵模块的一步转移概率矩阵信息和测试信息获取模块获取并在数据库模块中存储的测试信息,预测当前错误的类型并选择相应的错误定位技术定位错误,计算备选集中各错误定位技术定位当前错误的代价,确定当前错误的真实类型,更新数据库中的错误历史序列,触发更新一步转移概率矩阵模块一步转移概率矩阵的事件;
错误修正模块:根据错误定位模块定位到的错误的位置,结合错误修正方法修正错误,然后进行新一轮的测试,直到程序中没有错误;
数据库模块:存储测试信息获取模块获取的测试信息、自定制模块构建的错误定位技术备选集、程序错误历史序列信息和用户注册信息。
2.一种基于马尔可夫模型的软件错误定位方法,其特征在于实现步骤如下:
(1)测试信息获取:用户使用编译***软件对被测程序进行插装,编写并运行测试用例,统计运行测试用例获得的测试用例成功执行与否、语句执行次数测试信息,将统计获得的测试信息保存到excel文件中,通过图形交互界面保存到数据库中;
(2)自定制信息:用户注册/登录进入***,用户登录后选择/添加错误定位技术构成错误定位技术备选集,根据构建的错误定位技术备选集划分错误类型,选择/添加被定位的程序及版本;用户信息、错误定位技术备选集信息和被测试程序版本信息通过图形交互界面保存到数据库中;
(3)信息存储:保存在excel文件中的测试信息通过图形交互界面保存到数据库相应的表中,用户通过在图形交互界面上的操作完成用户注册/登录、错误定位技术备选集构建和程序版本的选择/添加操作,并将相应的自定制信息保存到数据库;
(4)一步转移概率矩阵:根据数据库中存储的程序错误历史序列,建立一步转移概率矩阵,错误定位完成后,更新数据库中的错误历史序列同时触发更新一步转移概率矩阵的事件,更新一步转移概率矩阵;
(5)错误定位:根据一步转移概率矩阵信息、错误历史序列信息和错误定位技术备选集信息,预测当前错误的类型;选择相应的错误定位技术,结合数据库中的测试信息,计算在该错误定位技术下,程序每条语句包含错误的可疑度,生成可疑度列表;参考生成的可疑度列表,确定程序中错误的位置,计算获得错误定位技术备选集中所有错误定位技术对应的程序可疑度列表;确定当前错误的真实类型;
(6)修正错误:根据前面定位到的错误的位置,用户使用错误修正方法在源程序上修正错误,修正错误后继续进行测试如仍有错误则开始新一轮的错误定位,如没有错误则错误定位结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310308553.9A CN103455417B (zh) | 2013-07-20 | 2013-07-20 | 一种基于马尔可夫模型的软件错误定位***及错误定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310308553.9A CN103455417B (zh) | 2013-07-20 | 2013-07-20 | 一种基于马尔可夫模型的软件错误定位***及错误定位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103455417A CN103455417A (zh) | 2013-12-18 |
CN103455417B true CN103455417B (zh) | 2016-06-15 |
Family
ID=49737817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310308553.9A Expired - Fee Related CN103455417B (zh) | 2013-07-20 | 2013-07-20 | 一种基于马尔可夫模型的软件错误定位***及错误定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103455417B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107133168B (zh) * | 2017-04-25 | 2020-08-11 | 中国船舶工业综合技术经济研究院 | 一种事件序列故障定位方法 |
CN110800274A (zh) * | 2017-07-07 | 2020-02-14 | 北京嘀嘀无限科技发展有限公司 | 确定终端设备位置的***和方法 |
CN111626049B (zh) * | 2020-05-27 | 2022-12-16 | 深圳市雅阅科技有限公司 | 多媒体信息的标题修正方法、装置、电子设备及存储介质 |
CN111597121B (zh) * | 2020-07-24 | 2021-04-27 | 四川新网银行股份有限公司 | 一种基于历史测试用例挖掘的精准测试方法 |
CN114139084A (zh) * | 2021-11-01 | 2022-03-04 | 上海绊糖信息科技有限公司 | Web应用跨版本错误归类方法、***、终端及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667156A (zh) * | 2009-09-22 | 2010-03-10 | 中兴通讯股份有限公司 | 一种可视化业务流程调试方法和*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003162504A (ja) * | 2001-11-26 | 2003-06-06 | Hitachi Ltd | 障害分析支援システム |
-
2013
- 2013-07-20 CN CN201310308553.9A patent/CN103455417B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667156A (zh) * | 2009-09-22 | 2010-03-10 | 中兴通讯股份有限公司 | 一种可视化业务流程调试方法和*** |
Non-Patent Citations (3)
Title |
---|
基于程序执行的错误定位方法;田志雨;《中国优秀硕士学位论文全文数据库》;20120715(第7期);第16-22页,第40页 * |
基于马尔可夫模型的软件错误定位方法;张云乾;《计算机学报》;20130228;第36卷(第2期);第445-456页 * |
软件调试中多错误定位的算法研究;李博;《中国优秀硕士学位论文全文数据库》;20120815(第08期);第I138-638页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103455417A (zh) | 2013-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Li et al. | A survey of code‐based change impact analysis techniques | |
KR101981028B1 (ko) | 바이너리 기반 보안 취약점 탐색 시스템, 그 방법 및 프로그램 | |
CN103455417B (zh) | 一种基于马尔可夫模型的软件错误定位***及错误定位方法 | |
US9983984B2 (en) | Automated modularization of graphical user interface test cases | |
US9934131B2 (en) | Using model-based diagnosis to improve software testing | |
CN111104335B (zh) | 一种基于多层次分析的c语言缺陷检测方法及装置 | |
US20190102427A1 (en) | Online optimizer statistics maintenance during load | |
CN109710237A (zh) | 一种基于自定义二维报表的在线修改校验方法及设备 | |
US9329974B2 (en) | Technologies for determining binary loop trip count using dynamic binary instrumentation | |
CN105468517B (zh) | 一种基于黑盒测试用例约简的统计错误定位方法 | |
Bonenfant et al. | Early WCET prediction using machine learning | |
Berndt et al. | Investigating the performance of genetic algorithm-based software test case generation | |
US20230252346A1 (en) | Machine learning system to predict causal treatment effects of actions performed on websites or applications | |
Sun et al. | Integrating an ensemble surrogate model’s estimation into test data generation | |
US20130205010A1 (en) | Workload patterns for realistic load recreation in performance testing | |
Zhao et al. | Fault centrality: boosting spectrum-based fault localization via local influence calculation | |
CN104536882A (zh) | 基于频繁子图挖掘的错误定位方法 | |
CN112181951B (zh) | 一种异构数据库数据迁移方法、装置及设备 | |
US20230333971A1 (en) | Workload generation for optimal stress testing of big data management systems | |
CN110928705B (zh) | 面向高性能计算应用的通信特征分析方法及*** | |
CN104408023B (zh) | 一种指标计算的方法及指标计算器 | |
Gräfe et al. | Large-scale application of fault injection into pytorch models-an extension to pytorchfi for validation efficiency | |
CN107832203B (zh) | 一种移动终端渲染性能诊断方法 | |
Su et al. | STCG: state-aware test case generation for simulink models | |
CN111008140A (zh) | 一种跨平台的ui自动化测试方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160615 Termination date: 20180720 |