论文部分内容阅读
软件调试是软件开发和维护中最为耗时耗力的部分,而其中的错误定位是最为重要且最为困难的。传统的错误定位方法往往是采用手工定位的方法(比如借助于调试工具设置断点),但是这类方法缺点是可能出错的语句的搜索空间巨大,且往往耗费大量的精力和时间。因此目前在错误定位方面的主要研究内容是自动化错误定位,这类方法主要的手段是借助于设计良好的测试用例集,通过对测试结果和程序特征的自动化分析,计算出可能出错语句的集合。基于程序行为特征的自动化错误定位方法一般根据覆盖信息计算出程序语句的可疑度,然后按照可疑度由高到低的顺序逐条检查程序的可疑语句。为了提高定位错误的效率,本文对现有的基于程序行为特征的方法进行改进。首先,通过对目前的自动化错误定位方法的研究对比,给出了几种基于程序执行的错误定位方法:基于测试用例对语句可疑度的贡献随着测试用例数目的增加而降低(简记为贡献率的降低)的思想给出了方法Heuristic1,基于程序执行补集的概念给出Heuristic2和Heuristic3,基于贡献率的降低的思想和Tarantula的思想给出了Heuristic4。其次,给出了一个具有可视化界面的通用的自动化错误定位架构的实现流程,其中的可视化是为了方便调试人员查看可疑的语句。最后,为了验证方法的有效性,本文根据前面给出的流程实现了一个自动化的错误定位工具Visualdebug,采用测试数据集Siemens Suite作为研究对象,将本文提出的方法和现有的几种方法进行比较。实验结果表明,较之于同类思想的方法,Heuristic1方法的效率略有提高,而Heuristic2、Heuristic3和Heuristic4方法表现出60%左右程序只需要检查20%左右的代码。由此可见本文提出的方法在错误定位的效率方面有所提高,即只需要检查更少的语句就能够定位出程序中的错误。