论文部分内容阅读
现如今计算机软件和人们的生活是密不可分的,保证软件的质量是人们首要关注的问题。软件测试是保证软件质量的重要手段,程序调试则是软件测试中比较困难的任务,而错误定位是程序调试中费时耗力的一步。因此,自动化的错误定位方法的提出势在必行。有效的错误定位方法不仅能够提高程序错误定位效率,还能降低软件测试的成本。基于变异的错误定位因其较高的定位精度而受到国内外研究人员的广泛关注,但因其生成的大量变异体使其定位效率低下,阻碍了该方法在实际中的应用。本文在对已有方法和技术做研究分析的基础上,提出了基于覆盖的变异错误定位方法和基于路径比较的变异体执行策略,并且实现了一个错误定位工具。针对现有方法生成的变异体数量庞大的问题,本文提出了一种基于覆盖的变异错误定位方法。该方法将基于覆盖的错误定位和基于变异的错误定位两者相结合,用前者来指导变异体的生成。首先用基于覆盖的错误定位怀疑度公式计算源程序每条语句的怀疑度,然后再根据源程序每条语句的怀疑度值降序对不同排名的语句植入数量不同的变异算子,达到初步的变异体数量约减的目的。最后根据变异算子的种类对变异体集合做二次约减。本文方法能够保证错误定位精度较高的情况下,显著提升错误定位效率。针对现有方法中有些错误难以被发现的问题,本文用路径比较的方式来选择有价值的变异体,提出了基于路径比较的变异体执行策略。程序中存在一些错误,仅通过判断变异体是否被杀死难以被发现。而通过比较源程序和变异体的执行路径则可以发现这些错误。该方法通过路径比较选择出能够对揭示错误有价值的变异体。对挑选出的有价值的变异体分别用成功和失败的测试用例运行它们。依赖成功的测试用例可以得到变异体的理论怀疑度最大值,运行失败的测试用例后可以得到变异体的实际怀疑度值,最后根据实际怀疑度值可求得一个阈值。理论怀疑度最大值、实际怀疑度值和阈值三者可以动态的对后续变异体数量和测试用例数量进行约减。实验结果表明本文方法能够发现程序中某些难以被发现的错误。综上,基于覆盖的变异错误定位和基于路径比较的变异体执行策略是本文提出的两种方法,设计并实现了一个错误定位工具来帮助研究人员发现错误。该论文有图19幅,表7个,参考文献80篇。