论文部分内容阅读
计算机作为科学与技术高速发展的一个重要标志,已经普及和渗透到人们工作和生活的各个方面。人们越来越不能忍受计算机系统故障所造成的损失。软件是计算机系统的核心,由于软件缺陷而导致的系统故障占相当大的比例,所以提高软件质量是软件行业最根本也是最迫切的需求。测试作为提高软件质量的一个重要手段一直受到学术界与工业界的重视。
随着软件的规模和复杂性的不断增长,测试工作量和成本也在不断增长,这导致工业界迫切需要采用兼顾效率与成本的测试方法。软件开发方法与软件测试方法是紧密相连、相辅相成的。随着软件开发方法完成从传统的结构化方法到面向对象方法的演变,以及近年来受到广泛关注的模型驱动的软件体系结构MDA(Model DrivenArchitecture)的提出,使得软件测试方法的研究与实践不断地面临新的问题和挑战。
近年来国际标准化组织OMG(Object Management Group)陆续提出了统一的建模语言UML(Unified Modeling Language)、模型驱动的体系结构,使得模型驱动的软件工程(Model Driven Engineering,MDE)成为软件工程发展的一个新的方向。UML作为标准建模语言,近年来被学术界和工业界广泛地用于软件系统建模。MDA在软件开发全生存期通过建模和模型转换获得软件开发过程中各个层次的模型,包括分析模型、设计模型、实现模型等。所有这些模型都是通过UML及其平台相关的profile表示的。
当建模成为软件开发的基本活动、UML模型成为普遍的软件工件(artifact)时,如何将这些模型应用于测试过程,是摆在测试研究人员面前、迫切需要解决的问题之一。从测试角度看,这些模型是获取系统结构和行为信息的来源,因而是测试生成的理想基础,用这些模型驱动测试过程是很自然的想法,使得测试工作可以尽早开始,及时发现和排除软件开发过程中引入的缺陷。这种模型驱动的测试方法的研究正在不断发展,但目前还没有标准的或者是普遍接受的方法。
本文主要从过程、方法与工具三个方面研究了模型驱动的软件测试方法学,主要的工作包括以下几个方面。
1.本文提出了一个与模型驱动的软件开发过程无缝集成的模型驱动的软件测试过程。该过程有利于合理组织测试资源,加强过程的控制与改进,从而能够提高测试的效率和软件的质量。
2.本文扩展了传统测试中的覆盖准则,提出并实现了一个针对UML动态模型的覆盖准则,及满足上述覆盖准则的测试用例生成方法。该方法将系统的顺序图、协作图和活动图作为系统的预期行为模型,首先基于灰盒方法生成满足预期行为模型上相应基础路径覆盖准则的测试场景,然后分别分析作为测试场景的事件序列、消息序列或活动与转移序列,获取数据流,用范畴-划分方法结合随机方法生成测试用例。
3.本文提出并实现了一种以模型转换技术为基础的,将平台无关的测试用例自动转换为平台相关的测试用例的方法。在模型驱动的软件开发的基础上,该方法基于用UML表示的PIM(Platforlm Independent Model)到用UML profile for EJB表示的J2EE平台上的PSM(Platform Specific Model)的转换规则,实现了将根据PIM生成的PIT(Platform Indeoendent Testing)自动映射到PST(Platform Specific Testing)的转换。
4.本文提出并实现了一种以UML顺序图作为场景规约的自动测试执行技术。该方法实现了随机测试用例自动生成、满足顺序图规约的预期事件关系图的自动生成、源代码自动插装、自动测试执行、测试数据自动收集、测试结果自动比较。
5.最后,基于上述研究工作,我们实现了一个模型驱动的测试环境MDSTE对上述方法提供自动化支持。我们选用UML描述MDSTE的的分析、设计模型,并用C++和Java实现了系统。