● 摘要
本文首先综述遗传算法的主要领域应用和遗传算法在测试数据生成技术中的应用技术,总结目前存在的问题和方法缺陷。遗传算法应用到软件测试数据生成技术中,其优化作用是十分有效的。然而传统的遗传算法应用到测试数据生成中存在易陷入局部最优解、种群易老化和测试数据多等问题。学者们把大部分精力放在研究遗传操作和适应度函数的改进上,其改进的方法往往操作困难且通用性差。
本文针对遗传算法种群老化的问题,提出一种新的基于判定种群老化的重生策略,形成一种简单的,稳定的适合测试数据生成的重生遗传算法。本文将重生遗传算法与简单遗传算法在达到覆盖率,遗传代数与测试数据数三个方面进行比较。实验结果显示,重生遗传算法可以提升搜索效率、抑制早熟现象、提升数据覆盖率和减少进化代数。并通过相关性分析,得知重生遗传算法对于过程数多、总行数多、圈复杂度高、分支数多的待测程序,其生成数据的效率有更大的提高。
随后,本文在达到高覆盖率的基础上,以降低测试数据数目为主要目标,提出了一种基于用例优化组合的遗传算法。在种群遗传过程中,加入了用例优化过程,使用例进行有效的组合,生成S集即保留集。保留集拥有覆盖率高,测试用例数目少的特性。最后输出保留集,即得到我们需要的测试数据集。实验数据显示,该算法可以大大的降低测试数据数目,提高软件测试的效率。
实验证明了两种改进方法的有效性与高效性。第一种改进方法,针对于遗传算法种群老化问题,算法采用种群重生策略简单易于实现而且十分有效。第二种改进方法,针对于数据数目多的问题,算法采用用例优化组合方法,算法有效的降低了测试数据数目,而不影响覆盖率。