论文部分内容阅读
随着信息化社会的不断发展,计算机软件逐渐深入到人类日常生活的各个角落,但软件开发带来的软件错误也极大影响了软件质量。软件测试和程序调试的协同工作可以有效的定位并消除软件错误,然而软件错误定位一直以来都是一项耗时又费力的工作,开发人员很难快速准确的定位到错误。因此如何提高自动化软件错误定位方法的精度和有效性对软件工程研究和现实生活都具有重要的意义。目前国内外研究人员针对这一课题已经进行了大量的研究,并提出了很多基于测试的自动化软件错误定位技术,但依然存在一些不足之处。主要表现在:(1)缺少对可疑语句上下文信息的分析,现有方法忽略了程序内部变量之间的关系和可疑语句之间的语义联系等重要信息,而单独计算程序实体的可疑度;(2)缺少可以辅助理解错误和分析传播关系的上下文信息,现有方法忽视了理解错误和分析错误传播的重要性,只报告了“什么引起了失效”,而无法回答“为什么会引发失效”等问题。针对上述问题,本文的主要研究工作如下:(1)提出了一种基于路径分析和信息熵的上下文错误定位方法。该方法首先收集程序执行轨迹和测试用例执行结果,通过静态分析对待测源程序构建图形结构并进行数据依赖分析;然后,结合测试用例的执行信息和数据依赖分析结果对程序的执行路径进行分析,同时根据信息熵理论重新设计怀疑度计算公式,计算不同随机事件的信息熵和语句可疑度值,得到可疑语句的错误定位报告;最后,按照可疑度值大小顺序检查语句,定位并修复错误。实验结果表明,该方法能够有效的提高错误定位的准确性和效率。(2)提出了一种基于上下文传播的错误定位方法。该方法首先收集程序执行轨迹和测试用例执行结果;然后,构建程序依赖分析模型,结合测试用例执行信息计算各节点的执行状态概率和条件依赖概率,得到语句的程序依赖概率和怀疑度值;最后,从程序出口出发后向遍历,利用程序依赖分析模型得到的语句执行状态和相关上下文信息,理解错误产生的原因并考虑错误传播,更新语句的怀疑度值并最终找到错误语句。实验结果表明,该方法在提高错误定位精度的同时,还可以利用上下文信息更好的理解错误产生的原因和分析错误传播。(3)设计并实现了一个基于上下文的错误定位系统。该系统提供了可视化界面,便于使用人员收集处理测试用例执行信息和统计分析错误定位最终结果。该论文有图24幅,表12个,参考文献89篇。