论文部分内容阅读
测试是软件开发生命周期中关键的阶段,是保证软件质量的必不可少的手段。软件测试主要依靠选定和执行一组测试用例(称为测试套件),并通过观察被测系统的执行输出结果来尽可能地检测错误。人工查找软件故障是一项费时费力的工作,因此自动化软件错误定位成为了人们追求的目标。基于频谱的软件错误定位方法(SFL)因其实现简单并独立于系统模型成为了主流的自动化软件错误定位方法之一。然而,由于传统的SFL方法忽略了测试过程中语句执行次数的信息,导致其错误定位的准确性受到影响,尤其是当程序中的错误发生在循环内的时候,SFL的错误定位效率有明显下降的趋势。针对该问题,本文引入了语句频度的概念改进了经典的频谱错误定位Tarantula方法,通过统计每条语句在不同测试用例下的执行次数即语句频度,并将带权语句频度映射为0-1之间的值,提出了基于语句频度统计的软件错误定位方法(FLSF)。在语句频度归一化处理过程中引入了映射函数的概念,并且增加了参数以提高错误定位效果,对不同参数进行了实验分析,得出了最佳值。本文的主要研究工作和创新成果概括如下:(1)提出了基于语句频度统计的软件错误定位方法。基于频谱中经典的Tarantula方法,考虑了每条语句在不同测试用例下的执行次数,构造了语句频度矩阵和结果矩阵用以计算语句的可疑度值,提出了FLSF。(2)基于双曲正切函数,提出了将带权语句频度归一化处理的方法。该过程可将大范围的执行次数压缩至小范围的输出,进而提高函数的精确度并且确保语句的可疑度值在[0,1)范围内。另外,为了提高错误定位效率,本文在映射函数中增加了参数?。(3)设计了详细的测试实验,验证了FLSF的有效性。本文提出了评估两种方法的不同标准:错误定位效率以及稳定性,并且实现了自动化错误定位的实验平台。最后对Siemens Suite进行了实验,实验结果表明,在错误定位效率和稳定性两个方面,基于语句频度统计的方法要优于Tarantula方法。