一种基于模型的内嵌测试方法

时间:2022-05-20 11:49:08

一种基于模型的内嵌测试方法

摘 要: 基于需求的内嵌测试方式加强产生和实现测试用例的自动化程度,同时也提高软件的质量并减少开发测试用例所需的周期。

关键词: 基于模型测试;UML模型;测试模型;测试自动化;基于组件测试

中图分类号:TP393 文献标识码:A 文章编号:1671-7597(2012)0410019-02

0 引言

基于组件的模型驱动架构开发可以使软件提供商通过整合使用预置模型方法和实现高质量、可重用组件应用来避免传统开发方法的费用超支问题。当前的组件技术可以帮助检查互联组件的组合兼容性,但是这个技术却不能保证独立开发的组件整合成的软件系统能正常工作,也就是不能检查互联组件的语义兼容性。软件开发人员因此可能需要更多的集成和接受测试来保证系统在相同可信级别的可靠度。

1 基于模型的内嵌测试

通过定义对象和它的客户端之间的协议关系来表达每个部分的工作规则,这就意味着独立的组件定义了一种提供服务或者请求服务的协议。内置协议测试着重检验一对客户端/服务端模式下的组件交互能力,并且在配置好的应用第一次运行时或者以后系统被重新配置并运行时采用这种验证模型。

内嵌测试架构中每个测试组件提供了一个原来组件的扩展测试接口,并且提供了客户端测试组件需要的支持操作。每个客户端测试组件具有一个服务端测试组件,这用来检查服务端可以通过协议和客户端交互。

一次测试包含了调用含有预先定义的输入数值的组件,并且检查返回的结果。一个测试用例包含了调用方法所返回的数值还包含了根据外部状态检查状态转换的正确性过程。因此一个测试套件对于服务测试软件来说包含了许多的根据不同测试标准开发的测试用例。例如覆盖了状态转换模型或者覆盖功能需求的定制。一个客户端包含了测试软件的组件和对服务器上执行协议测试就被称为测试客户端或者测试组件。一个组件提供了测试接口并且由测试客户端进行协议测试就称为可测试服务端或者可被测试组件。

内嵌测试软件组件需要检查服务端提供的服务,因此客户端用内嵌的测试软件来增强测试效果。服务测试软件组件当配置好的客户端需要使用服务端时被执行,为了达到这个目的,客户端将传递服务应用给自己拥有的服务测试软件组件。假如测试失败,测试软件组件将发起一个协议测试异常并且向程序员报告失败的位置。

内嵌测试组件中的客户端和服务端不同在于在两个组件交互中扮演的角色。当从一个全局的角度来看时,单独的组件通常扮演客户端和服务端角色,这种组件角色的关系都要遵守测试协议。在服务端,一个组件提供了支持客户端组件发起的测试接口,在客户端一个组件拥有与服务端相关接口的测试组件。一个扮演两种角色的组件被成为内嵌测试组件。

2 从UML产生内嵌测试

基于代码的测试关注确定的测试场景来满足代码的覆盖程度,并且使用更加抽象的UML模型来表示代码,因此就需要测试模型覆盖标准。从另一个方面来看,更加抽象的系统表示需要更加抽象的测试用例,并且更加具体的表示也同样需要更加具体的表示。系统的表示不仅需要好的表示粒度,同时也要逐步向测试细节的粒度逼近。UML表示的系统不仅需要与测试模型一致,还要开发同样的测试框架。

由于自动化测试存在一些技术限制,大部分的测试用例需要依靠手工编码或者改进。因此基于模型开发中就需要一种UML测试框架的开发概念。UML测试框架是基于UML2.0元数据的一种扩展。它遵循UML的基本准则因为它提供了测试结构化的概念,例如测试组件的定义,测试上下文和测试系统接口。还包括测试行为方面的定义,如测试过程定义,测试建立,执行和评估。这些概念最终被划分成测试架构,测试行为和测试数据三个概念集。

一个测试系统架构制定了测试系统的结构并且包括了被测试系统,测试组件以及从不同对象衍生的评估测试用例或者测试集的判定。例如,UML交互图,状态图和活动图可以用来观察从被测系统的响应和消息。异常消息的处理是通过定义更加完全的抽象测试模型来达到的。这些定制简化了验证过程并且提高了测试模型的可读性。

测试框架包含了其他测试行为必须的概念,如测试用例,测试判定,验证动作,日志服务,结束测试用例的动作过程。测试定制的另一个重要方面是对测试数据使用通配符,例如,处理异常消息的定制动作和包含了许多不同数值的事件常采用模式匹配和正则表达式方式。因此,UML测试框架采用通配符来处理数据,这些数据包括了任何数值或者任何被忽略的数值。

这些概念提供了构建准确测试框架所必须的条件并且使用集成UML2.0方式来开发系统和系统测试用例,同时也为内嵌测试提供了所需的条件。

3 执行内嵌测试

TTCN-3作为一个强大的执行内嵌测试的平台,通常由一系列的测试概念集构成,这使得TTCN-3非常通用并且独立。一个TTCN-3的测试配置包含了不同的测试数据结构定义,具体数据的模板定义,功能和测试用例定义以及测试用例执行的控制定义。这些语义定义和测试执行概念都在测试执行接口中被形式化定义。

一个TTCN-3测试要素从UML2.0测试框架的内嵌测试配置中衍生而来,这包括了测试类型和数据定义以及测试行为函数和测试用例的定义。一个内嵌测试组件包含了TTCN-3可执行版本的定制组件,同时还有一个测试执行的TTCN-3运行环境。

以服务端的测试集覆盖的用例为例,包括了客户端注册,从客户端发起的请求和释放资源过程。这个测试用例的集合也称为测试套件,这个测试主要测试RIN服务端的注册过程。当注册过程的测试用例成功完成时,用于请求和释放连接的测试用例才会执行。这个测试用例转换成TTCN-3代码表示为:

External function

validClient() return Client;

altstep Default()

runs on RINClient{

[]testPort.getreply{setverdict(fail);stop}

上一篇:网络存储技术现状、存在的问题分析及应对措施... 下一篇:计算机网络的安全防护与发展趋势分析