论文部分内容阅读
随着信息技术的快速发展,软件系统影响着我们生活的方方面面,其可靠性也受到越来越多的关注。软件测试是用来保证软件质量的重要手段,其目标是以较少的开销检测出引发程序错误的失效位置。随机测试(Random Testing,RT)是最为基本的软件测试技术之一,因其思路简单易于实现而在实际生活被广泛使用。RT通过随机选择的方式在程序输入域中选择测试用例,但是其失效检测能力有限。适应性随机测试(Adaptive Random Testing,ART)通过使测试用例之间保持一定的距离提高其多样性,从而可以提升随机测试的有效性。FSCS-ART(FixedSize-Candidate-Set ART)算法基于“均匀分布”的思想,通过距离指标衡量候选用例,选择到已执行测试用例距离最远的用例作为下一个执行的用例。但是随着已执行用例池的增加,该算法每产生一个测试用例将需要更多的计算开销,高昂的计算开销限制了其广泛使用。此外,高维情况下的边界效应导致算法的失效检测能力显著下降。为了解决上述两个问题,本文提出了基于中心补偿策略的FSCS-ART算法(Adaptive Random Testing by Center Compensation Strategy,FSCS-CCS)。首先,针对高维情况下的边界效应,FSCS-CCS算法使用动态划分技术将程序输入域均等划分,通过区域候选机制选择在空间中较为稀疏的区域作为候选用例产生的目标区域。在距离计算的基础上提出了中心补偿策略对候选用例进行筛选,选择距离区域中心较近的候选用例作为下一个执行的测试用例。同时为了避免位于边界区域的测试用例被选中的几率过小,采用随机控制策略使得测试用例有一定的概率落位于输入域边界。最后,为了提高算法的计算效率,低维情况下通过基于距离感知的遗忘策略减少计算开销,高维情况下对邻居区域的查询范围限制,减少查询和计算开销,以提升算法的检测效率。为了验证FSCS-CCS算法的错误揭示能力和计算效率相较于FSCS-ART算法是否得到了有效改进,本文中进行了模拟实验和实证实验。模拟实验中,分别设置了低维和高维四个不同维度,每个维度中模拟三种失效模式,并设置了不同失效率的情况。观察实验结果得出结论,FSCS-CCS算法在保证失效检测能力的情况下,有效减少时间开销。实证实验中,选取28个ART领域研究中典型公开的种子程序。通过实证实验的实验结果对比可以发现,FSCS-CCS算法在失效检测能力上与FSCS-ART算法相当,或是达到更为良好的检测效果。同时该算法为线性时间复杂度开销,对FSCS-ART算法的性能有了较好的提升效果。综上所述,本文提出的FSCS-CCS算法能以较低的时间开销产生测试用例,并保证用例的失效检测能力,为适应性随机测试的理论研究和实际应用中的推广提供了参考。