论文部分内容阅读
测试用例生成是软件测试的重要内容,随着现代软件系统日益复杂庞大,传统的搜索技术难以有效地应用于测试用例生成领域。遗传算法在解决大空间、非线性等高复杂度问题时,显示了独特的优势。因此,研究遗传算法与测试用例自动生成相结合的技术具有重要意义。 MC/DC(修正条件判定覆盖)是高强度的测试覆盖准则,在高可靠高安全的软件测试中经常使用,目前我国载人航天工程和大飞机机载软件的测试认证都明确提出了MC/DC的测试覆盖要求。而开展MC/DC覆盖测试的工作量大,需要有效的测试用例生成技术和工具进行支持。本文研究了遗传算法和测试用例自动生成的基本理论,深入分析了目前测试用例生成技术的覆盖准则和与之相适应的遗传算法适应度函数的构造中存在的局限性,重点以生成满足MC/DC的测试用例为目标,设计实现了基于遗传算法的MC/DC测试用例自动生成方法。 首先,深入研究了测试用例自动生成技术的相关理论,重点阐述了面向结构的测试用例自动生成技术,研究了遗传算法的基本原理和实施步骤,分析说明了遗传算法进行测试用例自动生成的可行性。 其次,研究了基于遗传算法的测试用例自动生成工作流程,同时,详细地分析了目前测试用例生成普遍使用的覆盖准则和与之相适应的遗传算法适应度函数的构造,深入分析了其中存在的两点不足,并对这两点分别提出相应的解决方案。 然后,着重阐述了应用遗传算法进行MC/DC测试用例自动生成的具体实现。主要有两个方面,一方面是通过对被测程序进行预处理提取相关有用信息,主要对被测程序自动进行词法语法分析,并且在条件判断和循环判断等插桩点进行适应度函数的自动插桩;另一方面是遗传算法的引入和对遗传算法的适应度函数构造方面进行的改进。首先给出了基于遗传算法的MC/DC测试用例自动生成流程。并获取MC/DC测试用例预期结果集,以此作为遗传算法实际运行的搜索目标。根据实际情况,确定了参数编码方式。在适应度函数的构造上,结合控制依赖法和数据依赖链接法思想,以传统分支适应度函数为基础,提出以获取直接或者通过控制依赖和数据依赖间接影响问题节点遍历的控制节点的方法来优化接近水平适应评价。随后,设计了选择策略和交叉、变异方法,完成了基本遗传操作。最后综合上述研究,给出了基于遗传算法的MC/DC测试用例总的适应度函数评价方法。 最后,将随机算法和遗传算法进行对比,得出遗传算法具有更好的搜索导向性;并通过比较本文的研究成果与使用传统适应度函数的遗传算法在基准程序上的运行结果,验证了本文算法的有效性及进步性,同时讨论了输入域空间对本文算法性能的影响。将本文算法应用于实际软件系统,得到了令人满意的效果。