论文部分内容阅读
据估计,80%的软件开发成本都花在检测和维修缺陷上。为了解决这个问题,已经开发了一些工具和测试技术来完善检测框架。尽管如静态分析,随机测试和进化测试技术已被用于自动化测试过程中,但是目前尚不清楚什么是最好的办法。以前的研究主要集中在进化测试程序的编程语言与简单的测试数据输入方面,如数字。在这项工作中,我们提出了一个改进的测试方法,它结合了遗传算法的静态分析,增加了在一定时间框架内发现故障的数量。遗传算法(GA)已被成功地用于在ADA83开发的软件测试数据自动生成技术中。分析被测程序的结构,遍历每一个分支的目的是在软件的测试数据中应用。该方法在针对分支谓词表达式和数值表达式之间的差异基础上使用适应度函数并且在谓词的倒数之间应用海明距离。以输入变量表示的格雷码和本机存储器作为对象,使用遗传算法(GA)的强大功能在于他们有能力来处理输入数据,可以是复杂的谓词结构和未知函数的输入变量。因此,测试数据生成的问题完全被视为一个优化问题。随机测试被用作比较测试数据生成的有效性,而遗传算法能够得到比两个数量级更少的测试用例数,并达到100%的分支覆盖。遗传算法的主要特点是利用最初未知搜索空间收集到的信息再指示到其他有用的子空间的能力。如果逻辑结构空间变化不是太大,就可以穷举开发相应的启发式搜索策略,以保持控制下的计算时间。抽样策略是适应样本(后代)被用来偏置随后的采样成高预期表现的采样在全局最佳域的反馈。这意味着,即使一个已经产生很好遗传优化参数有效性的解决方案也取决于通过反馈获得的有用信息。重要的是选择合适的反馈机制来得到自适应搜索策略。遗传算法的优点是,通过搜索和优化过程,改善测试集使得它们处于或接近输入的子域边界。当这些子域最小时,遗传算法就会用在最改进随机测试中。突变分析是用于建立测试数据生成的质量和测试数据生成策略的优势和劣势中。最后,本文设计并实现了基于遗传算法测试用例自动生成系统。该系统中的基本设计思想是将三角形程序作为典型的范例,在规定数据范围和输入数据的情况下生成测试用例来尽可能全面的完成路径的覆盖。根据实验数据得出,此系统不仅能完成预先设定的目标路径的测试用例的简单生成,而且能够全面的遍历目标路径生成满足要求的测试用例。同时,程序路径覆盖与否会被指出,当不能完全覆盖时将给出最优解。比起随机测试来,遗传算法一般需要较少的CPU时间就可达成一个整体性的解决方案。最大的优点是用在当整体最佳状态(解决方案)小于整个输入搜索域中。