论文部分内容阅读
软件测试往往需要通过完全测试来保证软件系统的质量。然而,现实生活中引起系统发生故障的输入域参数可能有很多,这使得完全测试几乎成为不可能。组合测试是一种输入域测试技术,能够生成较少的测试用例来定位软件系统中由于参数交互引发的故障。通过组合测试发现故障之后,需要通过输入域缺陷定位技术来找到系统中的缺陷并加以修改,缺陷的外在体现即为发生故障时的极小故障模式。学术界现有的输入域缺陷定位技术主要分为两种:非自适应方法和自适应方法。前者采用两种类型的错误定位表ELAs,一种是高维组合覆盖表CA,另一种是部分覆盖表PCA。后者包括Iter AIFL、FIC、RI、TRT、ICT等。本团队曾对输入域缺陷定位技术做过研究和分析,但存在两个问题:(1)实验数据集规模太小(2)实验方案存在初始测试用例集对错误的检测能力不受控的不足。本文采用了新的实验方案并增加了参数取值大于二的西门子程序集作为实验对象,将现存的几乎所有的输入域缺陷定位方法进行了详细分析和比较。本文的主要研究成果如下:(1)以TCAS集中抽取的20条布尔规约及其19131条变异体作为实验对象,验证安全值向量是否普遍存在,ELA假设安全值向量存在且PCA根据安全值生成。(2)以TCAS集中具有安全值的布尔规约变异体作为实验对象,以非自适应方法所需测试用例数量、recall、precision、f-measure作为评估指标,分别比较了采用高维CA和PCA作为ELA进行非自适应故障定位的效果和效率。(3)以TCAS集中抽取的20条布尔规约及其变异体和西门子程序集下的schedule1,schedule2,printtokens2.0,printtokens2.2.0,tontifo这5个程序作为实验对象,以自适应方法生成的附加测试用例数量、recall、precision、f-measure作为评价指标,比较了TRT、FIC、Iter AIFL、RI、SRI、SIMP等自适应方法的故障定位效果。(4)以TCAS集中抽取的20条布尔规约及其变异体作为实验对象,以非自适应方法的测试用例数量和自适应方法的附加测试用例数量、recall、precision、f-measure作为评价指标,比较了采用不同维度的CA作为ELA的非自适应方法和自适应方法的性能,并比较了采用真实故障的dt(10)作为CA的维度t的非自适应方法的性能。