论文部分内容阅读
计算机软件是信息产业的重要组成部分,如何保证其安全、稳定和可靠性,一直是学术界和产业界的热门研究问题和关注焦点。提高软件质量的重要且不可或缺的措施之一,是在投入市场使用之前进行大量测试,从而挖掘软件中可能存在的各种缺陷,并及时修复和改完善。而要进行软件测试,就要按照一定的测试准则,生成相应的测试数据,从而保证测试的有效性和可靠性。路径覆盖测试是一种非常高效且经典的测试方法。路径覆盖测试需要对给定的目标路径,生成能够覆盖所有目标路径的测试数据。但是,对一些复杂软件,有些路径很难覆盖,利用传统方法生成测试数据的效率很低。利用进化优化方法解决路径覆盖测试问题,已经取得了很多研究成果。但是,当变量的个数很多时,利用遗传算法生成测试数据时,效率非常底下,原因在于,变量个数的增加导致问题的搜索空间急剧加大,从而使得搜索难度加大。另外,当目标路径个数很多时,利用传统遗传算法生成测试数据的效率也有待进一步提高。鉴于此,本文提出基于变量分组的测试数据生成方法,有效提高测试数据生成质量。首先,结合图的基本概念和程序的控制流图,判断变量与节点、变量与路径以及变量之间的相互关系,给出变量的相关性定义;然后,根据变量之间的相关性实现对变量的分组,将多变量输入的高维优化问题转化为多个含有少变量的子优化问题,每一个子问题都是包含与目标路径相关的少量输入变量;最后,结合变量分组结果,采用协同进化遗传算法求解所建立的优化模型,实现目标路径覆盖测试数据生成。最后的实验结果表明,采用分组策略可以提高测试数据生成的效率。其次,给出了基于路径分组的多路径覆盖测试数据生成方法。首先,利用变量之间的连接强度对变量进行分割,将变量分为若干组;然后,根据变量分组的结果,并依据变量所在节点的位置信息以及节点与路径的关系,以及路径与路径之间的相似度,对程序中包含的多个目标路径进行分组,从而将覆盖所有目标路径问题转化为有限分组后的路径覆盖问题;最后,采用合作型协同进化算法对模型进行求解,更快的生成覆盖所有目标路径的测试数据。最后的实验证明了该方法的有效性。本文的研究成果为解决含多变量和多路径复杂软件测试提供了新的解决方法,提高了测试数据生成的质量和效率。因此,为保障软件质量提供了相关技术支持,具有重要的理论意义和实际应用价值。