论文部分内容阅读
软件测试日渐重要,基于变异的测试用例生成技术(Mutation-based Test Case Generation, MTCG)得到了学术界的广泛关注。变异测试是一种基于故障植入的软件测试技术,使用变异算子对被测程序语句进行合乎语法的微小改动,生成变异体。MTCG技术旨在生成极少的测试用例杀死尽可能多的变异体,以获得较高质量的测试用例集。然而,变异测试代价昂贵,无法应用于软件实际测试中,因此,如何降低变异执行开销是MTCG技术的重点研究内容之一。基于集合进化的弱变异测试用例集生成是一种较好的测试用例集生成方法,它以测试用例集为个体,以所有变异分支为目标生成测试用例集,但也存在下面两个问题:一是个体规模(即其包含的测试用例个数)在进化过程中是固定不变的,然而确定合适的个体规模较难。二是目前采用的适应度函数计算开销大,且不适合于以集合为个体的进化搜索。为此,本文提出了一种基于动态集合进化算法的弱变异测试用例集生成方法,通过增设集合精简算子,使个体规模在进化过程中根据执行情况动态调整,避免了个体初始规模对于测试用例集生成的影响;同时设计了一个适用于集合个体进化的适应度函数,能够对集合个体的优劣进行更为准确的评估,其计算开销较少,算法效率较高。此外,种群更新采取(μ,1+λ)更新策略,在父代中只保留最优个体来保证种群更新质量。该方法在满足弱变异测试准则的前提下,能够生成较小规模的弱变异测试用例集,且生成时间大大降低。将本文方法与基于集合进化的弱变异测试用例集生成方法在五组变异测试基准程序上进行实验比较,结果表明,本文方法不受个体初始规模影响,在满足弱变异测试准则的前提下,可以在更少的时间内生成规模更小的弱变异测试用例集,且规模平均减少了 50.15%,执行时间最高降低了 74.58%。因此,本文提出的动态集合进化算法为基于弱变异测试准则的测试用例集生成提供了一种可行的解决方案。