论文部分内容阅读
软件测试的工作量很大,据统计,测试时间会占到总开发时间的40%,一些可靠性要求非常高的软件,测试时间甚至占到开发周期的60%。由于测试的许多过程是重复性的,因此一些软件测试工作可以应用自动化方法来实现。近年来,虽然软件测试自动化技术与方法有了很大的发展,但还远没有成熟,现有的测试用例自动生成技术还无法满足当前软件测试的实际需要。为此,本文研究软件测试用例自动生成技术,对于解决目前测试现状有着重要的理论意义和实用价值。本文首先综述了目前国内外在软件测试用例自动生成技术方面所做的工作,并基于已有的一些研究成果,对软件测试用例自动生成技术进行了深入研究。主要包括以下五个方面的研究内容:基于EDPN模型的测试用例自动生成研究、基于扩展EDPN模型的测试用例自动生成研究、基于程序执行和回溯策略的路径分析与测试研究、基于选择性冗余的路径分析与测试研究、基于组合匹配的测试数据自动生成研究。论文主要工作如下:1.基于EDPN模型的测试用例自动生成研究:基于面向对象软件测试的层次划分、测试方法,给出了EDPN模型的定义,设计了基于EDPN模型的类测试模型,讨论了从UML图到EDPN图的转换,提出了基于EDPN有标记的唯一输入输出(UIO)测试用例的生成方法,并设计了相应的算法,讨论了上述算法自动生成测试用例的覆盖率问题,结果表明所有的状态转移都至少被覆盖一次,因此算法能保证测试是充分的。2.基于扩展EDPN模型的测试用例自动生成研究:在分析了面向对象系统中类之间相互关系的基础上,提出了一种基于带权EDPN迭代的面向对象系统的分割算法,以迭代的方法将面向对象系统分割成不同粒度而功能独立的测试子系统。另外,针对交互测试,提出了基于组合EDPN模型的交互测试方法,并将该模型运用于OATS方法中,扩展了OATS方法。给出了一种基于扩展OATS方法的测试用例自动生成算法,解决了组合冲突问题、测试用例过多而产生的测试用例爆炸的问题以及OATS方法不易扩展的问题等。最后针对类的层次测试,提出了一种基于事件消息驱动的Petri网的协同路径生成算法,分析表明算法符合OSC测试标准。3.基于程序执行和回溯策略的路径分析与测试研究:提出了基节点、控制节点、定义节点、定义相关控制节点集的概念,并给出了定义相关控制节点集的求解算法,在有机结合分支函数线性逼近和程序DUC表达方式的基础上,提出了一种基于倒置二叉树的测试数据自动生成算法。基于自动构造的倒置二叉树,新算法能快速找出程序中所有从源节点到基节点的可行路径,同时能为每条可行路径自动生成适合的测试数据。4.基于选择性冗余的路径分析与测试研究:基于选择性冗余思想,提出了一种测试数据自动生成算法。算法首先利用分支函数线性逼近和极小化方法,在找出程序中所有可行路径的同时对部分可行路径自动生成适合的初始测试数据集;当利用分支函数线性逼近和极小化方法无法得到正确的测试数据时,则针对未被初始测试数据集覆盖的谓词和子路径,基于选择性冗余思想,进行测试数据的增补。分析表明算法减少了测试数据的数量,提高了测试性能。5.基于组合匹配的测试数据自动生成研究:在已有成对测试的测试生成策略的基础上,提出了一种新的初始测试数据自动生成算法,然后基于匹配组合的思想,提出了一种成对测试数据自动生成算法。实验结果表明:从生成的测试集的大小及测试生成的时间消耗两方面评价,新算法要优于已有的相关算法。