论文部分内容阅读
随着软件系统功能的多样化与复杂化,影响系统的因素也越来越多,这些因素统称为参数,如系统的配置参数、用户触发的事件等。同时这些参数都有一些相同或者不同数量的可选值或可选项。根据用户的不同输入,会形成一个指数级增长的测试用例集。由于测试用例数量巨大,测试人员需要从中有选择性的挑选出一部分来进行测试,同时保证被测试程序中的错误能被有效的发现。其中随机测试是最简单的一种方法,相应的其错误检测率能力也很一般。因此,找到一个能够对测试用例集进行优化排序以此筛减测试用例同时还能提高错误检测率的方法显得十分迫切。抽象测试用例集的优化排序算法就是一种能更早的找到能对软件系统的错误进行定位和修复的测试用例的方法。研究发现,这样的测试用例有一个特点,总是覆盖最多未被覆盖的n维参数组合。基于这一理论,R.C.Bryce等人提出了基于交互组合覆盖的抽象测试用例集优化排序算法(Interaction Test Suite Prioritization,ITSP),果然错误检测效果显著提高。基于ITSP,陆续又有人提出了基于固定组合覆盖力度的抽象测试用例集优先化排序算法(Fixed-strength Interaction Coverage Based Prioritization,FICBP),这是目前基于交互组合覆盖的测试算法中效果最好的算法之一。该算法的主要思想是固定一个合适的组合覆盖力度t,每次总是优先选择覆盖最多未被覆盖的t维组合的测试用例赋予它当前最高的优先级。本文分析了该算法后,并针对该算法的缺点和不足提出了两点改进并且对改进后的两个算法进行了实验分析。最后在这两个算法和FICBP算法的基础上实现了一个原型系统,用来进行实验对比和验证。本文主要完成的工作阐述如下:1、针对FICBP算法在选择高维度进行组合覆盖时,其错误检测率高但是时间开销过大的问题,提出了基于重复一维组合覆盖的抽象测试用例集优化排序算法(Prioritizing Interaction Test Suites using Repeated Base Choice Coverage,FICBPR)。FICBPR算法的核心思想是重复使用一维覆盖直至待测集合为空。具体的,FICBPR总是优先选择覆盖最多未被覆盖的一维组合的测试用例,当一维组合全部被覆盖后,重置所有一维组合的覆盖情况,继续先前的步骤。实验结果表明,本文提出的FICBPR算法在保持错误检测的同时,大大降低了优先级排序所需的时间开销。在许多情况下,该方法可以获得与基于组合覆盖力度t为2的FICBP算法相似的结果,在高维组合覆盖力度下获得相较于FICBP算法更稳定的结果。2、基于工作内容1中的FICBPR算法的不足之处,提出基于一维权重的抽象测试用例集优化排序方法(FICBPW)。研究发现目前提出的算法普遍存在一个缺陷,一旦已被选中的测试用例覆盖了全部t维组合后,一般选择重置组合空间的覆盖或者保留组合空间的覆盖,这一过程要么丢掉了之前组合空间的覆盖,要么后期所有测试用例的组合覆盖都一样,因而当前的算法每次得到的结果仅仅是一个局部最优解而不是全局最优解。针对这个问题,本文提出了权重的概念,通过对组合空间的覆盖情况进行累加,每次选取总权重最大的测试用例,直至结束。实验结果表明,本文提出的FICBPW算法,在时间开销相近的情况下其错误检测率都高于FICBPR算法,且获得与基于组合覆盖力度t为3、4时候的FICBP算法相似的错误检测率。3、设计并实现了一个抽象测试集优化排序原型系统ATC_SY。该原型系统包含了算法设置模块、被测程序设置模块、结果分析模块。最后,通过不同的程序验证算法的有效性。