论文部分内容阅读
一般地,软件测试是为了发现错误而执行程序的过程,目的是以尽可能少的时间和人力发现并改正软件中隐藏的故障。单元测试作为软件测试最低级别的活动,通过故障定位技术能够及时发现和解决隐藏在程序中的故障,有效降低开发后期的测试成本,提高软件质量。故障定位技术分为人工定位和自动定位,人工故障定位具有盲目随·机、效率低下、定位准确性不高以及工作量大等不足,而自动故障定位能够弥补这些不足,因此研究单元测试中自动故障定位方法具有重要意义。本文围绕单元测试中的自动故障定位问题进行研究,故障定位主要通过采用一组测试用例执行被测程序,根据执行结果是否与预期一致计算程序语句发生故障的可疑度,从而得到定位结果。针对这个过程,本文的主要工作如下:(1)针对测试用例对应的执行路径集冗余问题,本文提出一种基于相似性度量的执行路径集约简技术,消除重复的执行路径以及与失败执行路径最不相似的成功执行路径,从而将约简后的执行路径集作为可疑空间,为可疑度计算提供基础。(2)关于如何计算程序语句的可疑度问题,本文提出通过计算路径边元素可疑度得到路径节点元素可疑度的方法,从而获得可能发生故障的程序语句。与只计算路径节点可疑度来获得故障语句的方法相比,本文提出的这种方法考虑了故障在节点之间的传播对可疑度计算的影响,从而使得可疑度计算更准确。(3)在代码测试系统CTS(Code Test System)中实现了上述自动故障定位技术,并结合测试用例生成和故障检测过程针对10个被测单元进行了具体实验,验证了本文研究技术的有效性。