论文部分内容阅读
在单元测试领域,测试充分度准则一直是研究的热点。到目前为止,学术界提出了各种不同的测试充分度准则。Richardson和Thompson在他们的研究成果即RELAY模型中提出了一种错误传播模型。Relay模型指出,潜在的缺陷可以从程序的易错点生成错误的中间值。然后,各种计算性传播和语句间引用性传播将错误中间值向后不断传播。错误中间值只有被传播到程序的输出点,才能被测试人员发现。在此传播过程中,如果某个语句没有产生错误中间值,就会掩盖在此语句之前的错误情况,从而导致偶然正确性现象。近年来,偶然正确性现象逐渐引起了软件测试领域的研究人员的兴趣。实验表明,偶然正确性现象确实对测试充分度的估算效用产生了影响。 本文提出了一种基于偶然正确性概率的测试充分度准则。我们设计了一个算法,用来计算“程序中某处存在错误而输出结果仍然正确”的概率。这反映了程序中发生偶然正确性现象的概率。基于这个概率来判断测试充分度,能更加准确地反映测试效果。针对不同语句结构和跳转条件,本文设定了各种影响因素的影响度,也就是量化了这些影响因素能够掩盖错误的可能性。根据动/静态数据流信息,本文分析了语句的静态序列和动态实例之间的对应关系,从而建立了定义-使用依赖关系图和语句跳转关系图。本文提出的算法可以根据设定的影响度和动态数据流分析来估算发生偶然正确性现象的概率,从而判定测试是否充分。 根据算法设计,本文实现了原型工具和实验方案。以五个C语言程序作为实验对象,实验还将基于偶然正确性概率的测试充分度准则和语句覆盖度相比较。实验结果表明,本文提出的这种基于偶然正确性概率的测试充分度准则能够更好地描述测试的充分性。 本文的主要贡献有如下几点, 1、本文提出了一种基于偶然正确性概率的测试充分度准则。这种新的测试充分度准则把缺陷被触发的若干条件演化为一种可行的测试充分度准则。 2、基于动态数据流分析和静态控制流分析,本文估算了错误传播过程的每一步计算掩盖已生成错误的可能性,使得对偶然正确性概率的量化成为可能。 3、在实验设计和分析部分,本文将这种新的测试充分度准则与静态语句覆盖度相比较。实验证明,基于偶然正确性概率的测试充分度准则可以更准确地刻画测试的充分性。