论文部分内容阅读
随着计算机应用的普及,软件质量成为软件工程最为关心的问题之一,软件测试作为软件质量的有效保障而备受关注。统一建模语言(UML)以其可全方位描述软件系统蓝图的优势,在众多软件测试技术中脱颖而出。但由于UML只是半形式化语言,并不能精确描述事件上的约束条件,尤其是对UML状态图这样的动态视图,标准UML建模工具只能验证其静态的连贯性,并无法对由于某些方法的动态执行而引起的数据动态改变进行验证,因而会使测试用例的完备性出现很大不足。而形式化约束语言可以对此做到有效补充,它可以帮助测试人员充分理解被测系统,进而提高测试用例的获取率以及测试覆盖率。因此,在UML模型上添加形式化语言是必要的。目前比较常用的形式化语言主要有OCL、Z以及Object-Z。其中,Z语言不是面向对象的;Object-Z语言的表达偏近于编程人员较难理解的数学方式,事件约束条件也需要计算得到;而OCL语言风格类似于编程语言,更易为编程人员所接受,且可读性较强、易于使用;最重要的是,在OCL语言中明确地给出前置条件与后置条件,更易于使用。基于UML/OCL测试的现有许多研究采用先对UML模型生成测试线索,再结合OCL文档生成测试用例,无法做到测试用例的自动生成。本论文在研究软件测试技术、UML状态图、OCL语言以及UML建模工具的背景下,通过在UML模型上添加OCL约束,达到了测试线索的有效生成,并完善了测试用例。主要工作如下:①在最初建模时将UML与OCL结合,并针对UML类图与状态图,将类图操作上定义的可验证语法的OCL约束用于状态图的警戒条件,提出了带OCL约束的状态图模型RSD(Restricted State Diagram),并提出了从RSD中提取带OCL约束的测试线索的方法。通过去除有约束冲突的测试线索,减少测试线索和测试用例,进而达到降低软件测试成本的目的;②针对目前测试用例生成研究中仅包含测试输入数据的问题,给出了根据OCL后置约束条件生成测试用例的预期输出部分的方法,从而进一步完善了测试用例;③基于上述理论,设计并实现了一个基于UML/OCL的软件测试框架,给出了框架的主要结构,并着重研究了各个功能模块的设计及实现过程中涉及到的关键技术。④深入研究ArgoUML工具生成的UML模型文件(ZARGO)的文件结构,给出预处理操作以去除不符合XML格式以及系统数据要求的信息,并选用DOM API提取类图和状态图中的有用模型信息,为测试用例的生成提供信息基础。⑤建立实验模型,在.NET平台上,实现了对UML模型的成功解析,并根据提取的信息,实现了对RSD派生的邻接表的构造算法及所有可行的带OCL约束信息的测试线索生成算法,为基于UML/OCL框架的测试线索自动生成提供了有效途径,并为实现测试用例的自动生成奠定了基础。实验结果验证了论文思想在UML/OCL测试用例生成中的正确性和有效性。