论文部分内容阅读
软件测试用来发现软件错误和缺陷,从而达到保证软件质量的目的。软件测试是软件开发周期中重要的环节。生成合适的测试数据是软件测试过程中的重点和关键。手工构造软件测试数据的工作繁琐而盲目,往往导致测试效率不高,测试周期延长,测试充分性难以得到保障。自动生成测试数据可以有效地改进这一过程,降低测试成本,提高测试效率。测试数据自动生成和测试充分性问题是自动化测试中的两个基本问题。路径覆盖是一种严格意义上的覆盖标准,并且在软件开发早期进行路径测试能较早地发现软件中的缺陷和错误,因此路径测试具备较高的实用价值。然而,在实际的软件测试中完全的路径测试是不可行的,通常的做法是选取特定的一条路径或者根据一定的标准选定程序所有路径的有限集合进行测试。本文正是基于此进行了相关的研究,主要工作包括:1、分析和研究了软件测试和遗传算法的基本理论和方法。本文首先详细介绍了软件测试和测试数据生成方法的相关理论,然后再介绍了遗传算法的流程,特点和优势等。2、研究了遗传算法用于测试数据的自动生成方法。在现有的测试数据生成方法以及遗传算法理论的基础之上,本文提出了一种应用改进遗传算法自动生成测试数据的模型,研究了参数编码和遗传操作的具体实现,并重点针对测试数据生成这一具体问题,对适应度函数进行了设计,对遗传算子进行了改进。3、采用改进遗传算法设计的测试数据自动生成模型,以静态分析、程序插桩等方法为辅助,根据选定的目标路径计算得到覆盖该路径的测试数据。依据此模型进行了仿真实验,实现了单路径分支覆盖和多路径分支覆盖测试数据的自动生成,验证了该模型生成路径覆盖测试数据的有效性。4、进一步研究了基于遗传算法的非数值型——字符型和类对象测试数据的生成问题,主要包括编码和适应度函数的设计这两个方面的问题。研究了非数值型测试数据生成方法。对于非数值型测试数据中的字符型数据和类对象测试数据的生成进行了研究;而针对类对象测数据的生成问题,设计了一种新的类对象编码方法,应用于类对象的遗传操作,并采用广义海明距离思想构造类对象的适应度函数。