论文部分内容阅读
随着人们在日常生活中对计算机软件的需求不断增长,计算机软件系统的规模和复杂度也在不断的攀升,而对大规模复杂系统的测试和维护等需求超出了目前的测试与维护技术,因此也就出现了许多与软件失效相关的事故,其中大多数的软件失效都是由于软件错误导致的。当发现计算机软件发生失效后,调试人员可以使用软件错误定位技术来协助调试,因为软件错误定位技术就是研究如何自动化的找到引发失效的软件错误位置并揭示引发失效的原因。但是软件错误定位算法的复杂度高,并且冗余的测试用例会影响软件错误定位的准确性。为了降低软件错误定位的复杂度,提高软件错误定位的准确性,研究如何选择有利于实现软件错误定位的测试用例具有重要意义。目前,已有的测试用例选择方法多数是面向软件测试的需求对测试用例进行选择的,考虑的是软件测试的充分性,选择出来的测试用例有很多对软件错误定位没有用,甚至会影响到错误定位的准确性。而目前面向软件错误定位需求的测试用例选择方法未考虑程序具体的路径信息,不能为错误定位选择合适的测试用例,不能有效提高错误定位的效率和准确性。针对这一问题,本文提出了一种新的测试用例选择方法,该方法面向软件错误定位的需求,使用了语句覆盖信息和路径信息,充分考虑了程序具体执行路径信息对错误定位的影响,并且引入了聚类的思想。该方法首先根据语句覆盖信息,删除与失败测试用例无关或相关性较小的测试用例;然后在分析程序执行路径信息的基础上,删除路径信息冗余的测试用例;最后引入了聚类的思想,基于分支特征对测试用例进行聚类选择。本文使用错误定位研究经常使用的测试套件Siemens Suite里面提供的若干个错误版本及对应的测试用例集合作为实验数据,对本文提出的面向软件错误定位的测试用例选择方法进行了测试。实验结果表明,本文提出的测试用例选择方法可以有效减少测试用例的数量,提高错误定位的效率和准确性。