当前位置:问答库>论文摘要

题目:模型驱动的构件测试方法研究

关键词:模型驱动;构件;测试;构件模型;构件测试模型

  摘要

为了降低软件开发成本,提高软件的复用程度,基于构件的软件开发方法逐渐被广泛采纳。根据J. Greenfield的统计,在基于构件的软件系统中至少有70%的代码由构件组成[1],其中的构件具有可配置、独立、可执行、接口定义良好等特点。但是由于构件开发者和使用者互相分离以及构件的技术异构、平台异构等特点,为构件测试带来了测试信息不足、很难设计测试驱动、搭建测试平台等问题。构件在为软件开发带来方便的同时,也增加了测试的难度和测试的工作量。迄今为止,还没有成熟的构件测试技术来解决这些问题。OMG提出的模型驱动体系结构(Model Driven Architecture,MDA)以模型为中心,通过模型转换逐步细化模型生成特定平台的代码。MDA提高了软件开发的抽象层次,加快了软件开发速度,解决了代码的多平台多技术的问题。为解决构件测试中的技术异构、平台异构问题,提高构件测试的自动化程度,本文引入MDA的思想实现模型驱动的构件测试(MDCT)。MDCT实现了从构件模型到构件测试模型、从构件测试模型到构件测试代码的一系列转换,通过执行测试代码获得构件测试结果的过程。MDCT需要解决应用MDA方法时普遍存在的两个主要问题:如何建立软件模型、如何在模型之间进行转换。根据MDA规范,软件模型应采用符合元对象设施(Meta Object Facility,MOF)规范的语言,UML是目前被广泛应用的软件建模语言,且符合MOF规范。在分析构件和构件测试的特点之后,本文采用UML及其扩展机制来构建MDCT中所涉及到的构件模型和构件测试模型。为了实现构件模型、构件测试模型和构件测试代码之间的一致转换,本文采用扩展OCL的方式描述模型间的转换规则。本文的研究内容和主要贡献在于:1. 分析现有构件模型的特点,从构件测试的角度,提出了一个面向测试的构件模型。构件模型在基于构件的系统开发中占有重要地位,它不仅是构件选择、构件组装的依据,也是构件测试的基础,是构件开发者和构件使用者之间的桥梁。分析总结已有构件模型,结合当前构件测试中的测试要素,提出面向测试的构 件模型。该构件模型分为构件接口模型和构件上下文信息模型,采用UML2.0轻量级的扩展方式来描述。2. 为了提高构件测试的复用性,更好地描述构件测试过程中的测试信息,在OMG对UML测试扩展所描述的概念的基础上,针对构件测试提出了构件测试模型,并通过UML2.0轻量级的扩展方式定义了构件测试模型的元模型,实现了构件测试模型的可视化。3. 根据不同的测试准则,提出了从构件模型到构件测试模型的转换方法。构件模型与构件测试模型属于不同领域,在分析构件模型与构件测试模型的区别与联系的基础上,总结已有测试准则,提出基于两者异同点的关系型模型转换策略。其中测试转换规则包括两部分:公共函数和不同测试准则的转换函数。为了更好地复用和准确地描述转换方法,本文采用扩展的OCL定义转换规则。4. 提出了从构件测试模型到JUnit测试代码的转换方法。分析测试模型中所包含的信息,以及JUnit测试代码中所需的信息,提出从构件测试模型到JUnit测试代码的转换规则和转换策略,采用基于模板的方法实现JUnit测试代码的生成。5. 为验证上述模型驱动构件测试方法的可行性和有效性,本文开发了一个工具原型。以常见的电梯系统为例,实现了从构件模型生成构件测试模型,以及从构件测试模型生成构件测试代码的转换过程,通过执行测试代码获得了测试结果信息。此工具验证了本文提出的模型驱动构件测试方法的有效性和可行性。MDCT中提出了面向测试的构件模型和构件测试模型,定义了构件和构件测试信息描述的最小集,通过定义构件测试模型对应到不同平台测试脚本的转换规则,实现了构件模型、构件测试模型的复用。通过模型转换实现构件测试模型、构件测试代码的自动生成,保证了构件模型与构件测试模型间、构件测试模型与构件测试代码间的一致,提高了模型的复用性,降低了测试的成本。