论文部分内容阅读
软件测试是保证软件质量和正确性的重要手段。随着人们对其重要性的认识越来越深刻,它在整个软件开发周期中所占的比重日益增大。其中,测试数据生成是软件测试的核心与关键,直接影响到软件测试的效率和效果,而手工生成测试数据,将花费大量的人力和物力。因此,研究测试数据自动生成方法,具有十分重要的理论意义和广阔的应用前景。目前测试数据自动生成方法多是针对数值型数据,如整型数据、实型数据等。但在实际应用中,指针和动态数据结构使用较为广泛,并且现有的一些方法在处理动态数据结构、解决指针别名等方面的效率较低,这在一定程度上限制了软件测试数据生成方法的应用。为此,本课题针对动态数据结构,探讨了一种新的测试数据自动生成方法。本方法以面向目标为测试准则,共包含四个主要部分:测试路径生成、路径约束收集、路径约束解决和测试数据生成。首先,本课题探讨了一种新的测试路径生成方法,根据程序控制流分析和数据流分析的结果,对被测程序中的各个分支进行分类,依据分类的结果自动生成能够到达目标语句的路径。其次,针对动态数据结构预先不可知的特点,本课题探讨了一种新的测试数据生成方法,该方法通过模拟被测程序的实际执行来记录程序的执行信息,然后收集并解决选定路径的路径约束,最终在解决路径约束的过程中获得满足给定测试要求的测试数据,或判定目标语句为不可执行语句。课题的难点主要涉及以下两个方面:第一,针对软件测试中面向目标的测试,如何自动生成能够到达目标语句的可行路径;第二,针对动态数据结构,如何解决路径约束,并自动生成测试数据。实验表明,本方法可以快速地寻找到能够到达目标语句的路径,并高效地收集路径约束并有效地解决该约束,或者判断出目标语句是不可执行语句。生成的结果既满足了测试的需要,又可以在一定程度上指导软件缺陷的发现,从而提高了测试的效率。