论文部分内容阅读
软件测试是保证软件质量的重要手段,也是软件开发过程中一项非常重要的工作。一直以来,国内的很多软件企业对于软件测试的重要性缺乏足够的认识,测试水平不高,软件质量无法得到保证。质量有问题的软件会导致无法预测的后果,因而如何保证软件质量以及如何最大限度地提高软件质量就成为一个重要课题。传统的测试理论与方法并不完全适合用于新兴的面向对象软件系统。随着面向对象分析和面向对象设计的成熟,如何对面向对象软件进行测试是一个非常值得研究的问题,也是测试领域的一个难题。现代测试理论规定软件必须在其生命周期的全过程进行测试,很多测试不能简单地靠手工测试实现,必然会导致自动化测试的产生和应用。UML在被工业界广泛接受的同时也成为学术界遵循的一种标准建模语言。许多面向对象软件测试的研究都围绕从UML模型构造软件模型开展。研究基于UML模型的软件测试有利于把测试工作提前到软件开发周期的早期进行。但UML模型属于半形式化模型,往往无法自动生成测试用例。而Petri网作为离散系统的建模和分析工具,适合于描述系统中顺序、并发、冲突以及同步等关系,拥有丰富的系统描述手段和系统行为分析技术。将UML模型与Petri网相结合,能够弥补其数学支持的不足。国内已有基于Petri网模型的软件测试研究,但较为少见。国外有文献提出了CPN模型和UML图表到CPN模型的映射方法,并将其应用于模型检测领域。我们发现CPN模型经过改进也可以运用于面向对象的类测试和簇级测试。为此,本文主要做了以下几方面的工作:首先,以基于模型的测试用例的自动化生成为主线,提出了基于UML的CPN模型的测试框架。其次,在介绍国外文献中的CPN模型和UML图表到CPN模型的映射方法的基础上,针对软件测试的具体需要,对CPN模型做出了相应改进,并在时间准确性方面,进一步完善了映射的算法。再次,在研究基于状态覆盖准则的基础上,提出了库所-变迁覆盖准则,并介绍了基于此覆盖准则的测试用例生成策略。最后,构建了自动化测试用例生成工具,工具包括四个部分:模型转化工具、用例生成工具、代码插装工具和信息比较工具。实验内容主要包括使用已实现的工具,从任意包含完整信息的MDL文件中提取有用信息生成对应的CPN模型。实验证明将基于UML的CPN模型引入基于模型的软件测试是可行的。