论文部分内容阅读
摘要:本文介绍了一个CORBA服务器接口测试工具CTester的设计和实现。CTester具有平台无关性、采用图形化GUI界面、支持脚本定义、采用动态调用DII等特点,为分布式系统的开发提供测试手段。
关键词:CORBA; DII; Java
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)06-11010-02
The Design and Implementation of the CORBA Server Interfaces Test Tool
BI Xue-jun,XIAO Qing,HAO Na
(Department of Information Engineering of Academy of Armored Force Engineering,Beijing 100072,China)
Abstract: The paper introduces the design and implementation of the CORBA server interfaces test tool CTester. It is independent of platform, providing a graphic user interface,supporting for script definition and dynamic invocation. It provides an easy way to test distribute system.
Key words: CORBA(Common Object Request Broker Architecture); DII (Dynamic Invocation Interface); Java
1 引言
随着Internet的广泛运用,将应用扩展到局域网、广域网甚至Internet上已成为用户的普遍需求,为此分布式计算成了新的热点。在分布式计算环境中,异构性是一个十分明显的特点。一个典型的分布环境包括有大型主机、UNIX工作站和PC机,各种机器所采用的操作系统和网络通信协议也是千差万别,在这样的异构环境下实现信息和软件资源的共享将十分困难,而一个健壮的分布计算框架将为分布应用软件的开发带来极大的好处。为了实现这一目标,OMG组织于1991年提出了公用对象请求代理程序结构的技术规范CORBA[1](Common Object Request Broker Architecture,通用对象请求代理体系结构)。CORBA规范充分利用了现今软件技术发展的最新成果,在基于网络的分布式应用环境下实现应用软件的集成,使得面向对象的软件在分布、异构环境下实现可重用、可移植和互操作。
要想编写一个良好健壮的CORBA应用程序,首先需要进行有效的测试。一般的测试过程是,开发人员编写完CORBA服务器程序后,首先花费一定的时间开发客户程序来调用CORBA服务器对象。如果要针对大量的各种输入数据进行测试,那么客户端测试程序的开发工作量将会很大。因此需要研制开发CORBA服务器接口测试工具,进行有效的CORBA对象接口测试,验证CORBA接口实现的正确性。
2 系统设计
该CORBA服务器接口测试工具以下简称为CTester,它能够向CORBA对象调用指定的操作,获取或设置CORBA对象的属性,验证CORBA接口的实现,其参数设置方便,测试结果显示直观。支持测试脚本定义,用户熟悉IDL就可以编写测试脚本,测试脚本建立简便,可重复使用。该工具完全采用java编写,遵从CORBA2.3规范[2],工作平台为IONA公司的orbix2000[3]。
2.1 设计原则
Ctester测试工具在开发过程中,遵循以下几个原则:
1)平台无关性:测试工具的运行应保证与操作系统无关,因此系统采用JAVA语言实现;
2)使用简便灵活:采用图形化GUI界面,使用简便灵活,显示结果直观,操作易于掌握;
3)支持脚本定义:用户熟悉IDL就可以编写测试脚本,测试脚本建立简便,可重复使用;
4)采用动态调用DII:动态方式允许对任意对象进行操作,借助接口库,动态方式可以在运行时刻查询各对象所支持的操作,无论是操作的对象、发起调用的参数,还是发起调用的次数等等都可以由客户程序在运行时刻视当时环境和需要而决定。因此,采用动态方式相对静态方式而言灵活性大大增强。
2.2 系统结构
整个系统结构按功能划分为六个模块,分别是测试控制模块、脚本定制模块、脚本解释模块、测试驱动模块、动态调用模块、结果处理模块。其中测试控制模块提供了一个总的控制界面,进行测试过程的控制和管理,测试人员输入指令,进行任意指定参数的操作或属性调用。在调用结束后,由测试结果处理模块处理并显示返回值及输入/输出参数,结果也可以保存在文件中。
脚本定制模块采用IDL格式定义测试脚本,能够编辑、管理测试脚本文件。用户熟悉IDL就可以编写测试脚本,测试脚本的解释由脚本解释模块进行。通过测试脚本可以向CORBA对象调用指定的操作,也可以获取或设置CORBA对象的属性。
在测试执行过程中,测试驱动模块和动态调用模块从接口存储库载入被测CORBA对象IDL细节。为了保持测试工具的灵活性,采用动态调用方式。系统结构如图1所示:
3 CTester工具实现的关键技术
3.1 动态调用技术DII
CORBA服务器接口测试工具CTester从Client/Server模式看,实际上相当于客户端,客户程序对远端对象的调用,有两种方式:静态方式和动态方式。本测试工具需要对任意CORBA服务器的属性/操作进行调用,因此采用动态调用DII[4]的方式,相对静态方式而言,该种方式有以下几个优点:
(1)灵活。动态方式允许对任意对象进行操作,所需要的只是目标对象的对象引用。借助接口库,动态方式可以在运行时刻查询对象所支持的属性/操作信息,大大提高了程序的灵活性。
(2)客户程序的可移植性增强。由于DII与客户之间的接口是标准的,因此由动态方式实现的代码具有良好的可移植性。
(3)可执行程序的“体积”小。与静态方式不同,DII不需要为每个接口生成码根和框架,无论程序中使用多少接口,所需要的只是一套支持DII的接口库,这样可执行程序的“体积”会相对较小。
当然,与静态方式相比,动态方式有以下的缺点:
(1)使用复杂。使用静态方式时,对目标对象的操作都施加在一个本地的代理对象上,相应对象支持的所有操作及格式都已经预先定义在这个代理对象中,因而使用方便。在动态方式下,程序员需要自己动手,“临时”构建一个请求并发送,同时程序还需要查询接口库以获得属性/操作必要描述信息,这些过程都较静态方式复杂。
(2)速度缓慢。由于静态方式下类型信息都是确定的,因此速度较快;而动态方式实现时,类型信息都是动态获知,速度不可避免要慢一些。此外,程序要花去大量时间来查询接口库,尤其当被查询的接口定义存放在远端时,这些查询还会引发远端调用,致使动态方式的速度变得更慢。
鉴于上述动态调用速度缓慢的缺点,为避免程序每次调用都去查询接口库来获得属性/操作的描述信息,我们采用预先将接口库中所有数据类型的接口定义对象转化为本地用java实现的类对象,这样程序就不必花费大量的时间来查询接口库,而只需调用所需类的属性或方法即可,大大提高了调用执行的效率。
动态调用的过程简要归纳如下:
(1)获得接口名,将目标对象接口信息注册到接口库中;
(2)从接口库的对象中,找到所要调用的操作(或方法)的描述;
(3)建立调用参数表,并逐一填入参数;
(4)创建请求,请求中应包括目标对象的引用、方法名、参数表和返回值;
(5)调用请求,并作结果处理。
3.2 采用面向对象的系统实现系统采用面向对象的思想,将接口库中各种数据类型对象一一转化为用java类实现的对象,对CORBA服务器属性/操作的调用变成了对相应java类的属性方法调用,提高了接口库查询效率,使得程序结构更加合理,易于维护。启动CTester工具后首先要执行“Load-ifr”命令,将接口库中所有IDL文件详细描述信息装入CorbaRepository类[5],其中也包括要测试的CORBA服务器IDL描述文件信息,然后再调用“attribute”或“operation”命令对CORBA服务器中的属性、参数进行设置/获取,对CORBA服务器中的操作进行调用,获得inout/out参数结果和返回值,验证结果返回值是否正确。
4 总结
本课题在对CORBA服务器接口测试技术经过大量的研究后,开发了相应的测试工具来验证CORBA接口的实现,该工具可以为分布式系统的开发提供测试手段。
参考文献:
[1] 汪芸.CORBA技术及其应用[M].江苏:东南大学出版社,1999.1-12.
[2] 朱其亮,郑斌.CORBA 原理及应用[M].北京:北京邮电大学出版社,2001.15-37.
[3] Orbix 2000 Programmer’s Guide Java Edition[EB/OL].www.iona.com.2004-09-16.
[4] Orbix 2000 Programmer’s Reference Java Edition[EB/OL] .www.iona.com.2005-06-07.
[5] IONA Orbix 2000 Administrator’s Guide, Java Edition[EB/OL] .www.iona.com.2004-01-15.
关键词:CORBA; DII; Java
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)06-11010-02
The Design and Implementation of the CORBA Server Interfaces Test Tool
BI Xue-jun,XIAO Qing,HAO Na
(Department of Information Engineering of Academy of Armored Force Engineering,Beijing 100072,China)
Abstract: The paper introduces the design and implementation of the CORBA server interfaces test tool CTester. It is independent of platform, providing a graphic user interface,supporting for script definition and dynamic invocation. It provides an easy way to test distribute system.
Key words: CORBA(Common Object Request Broker Architecture); DII (Dynamic Invocation Interface); Java
1 引言
随着Internet的广泛运用,将应用扩展到局域网、广域网甚至Internet上已成为用户的普遍需求,为此分布式计算成了新的热点。在分布式计算环境中,异构性是一个十分明显的特点。一个典型的分布环境包括有大型主机、UNIX工作站和PC机,各种机器所采用的操作系统和网络通信协议也是千差万别,在这样的异构环境下实现信息和软件资源的共享将十分困难,而一个健壮的分布计算框架将为分布应用软件的开发带来极大的好处。为了实现这一目标,OMG组织于1991年提出了公用对象请求代理程序结构的技术规范CORBA[1](Common Object Request Broker Architecture,通用对象请求代理体系结构)。CORBA规范充分利用了现今软件技术发展的最新成果,在基于网络的分布式应用环境下实现应用软件的集成,使得面向对象的软件在分布、异构环境下实现可重用、可移植和互操作。
要想编写一个良好健壮的CORBA应用程序,首先需要进行有效的测试。一般的测试过程是,开发人员编写完CORBA服务器程序后,首先花费一定的时间开发客户程序来调用CORBA服务器对象。如果要针对大量的各种输入数据进行测试,那么客户端测试程序的开发工作量将会很大。因此需要研制开发CORBA服务器接口测试工具,进行有效的CORBA对象接口测试,验证CORBA接口实现的正确性。
2 系统设计
该CORBA服务器接口测试工具以下简称为CTester,它能够向CORBA对象调用指定的操作,获取或设置CORBA对象的属性,验证CORBA接口的实现,其参数设置方便,测试结果显示直观。支持测试脚本定义,用户熟悉IDL就可以编写测试脚本,测试脚本建立简便,可重复使用。该工具完全采用java编写,遵从CORBA2.3规范[2],工作平台为IONA公司的orbix2000[3]。
2.1 设计原则
Ctester测试工具在开发过程中,遵循以下几个原则:
1)平台无关性:测试工具的运行应保证与操作系统无关,因此系统采用JAVA语言实现;
2)使用简便灵活:采用图形化GUI界面,使用简便灵活,显示结果直观,操作易于掌握;
3)支持脚本定义:用户熟悉IDL就可以编写测试脚本,测试脚本建立简便,可重复使用;
4)采用动态调用DII:动态方式允许对任意对象进行操作,借助接口库,动态方式可以在运行时刻查询各对象所支持的操作,无论是操作的对象、发起调用的参数,还是发起调用的次数等等都可以由客户程序在运行时刻视当时环境和需要而决定。因此,采用动态方式相对静态方式而言灵活性大大增强。
2.2 系统结构
整个系统结构按功能划分为六个模块,分别是测试控制模块、脚本定制模块、脚本解释模块、测试驱动模块、动态调用模块、结果处理模块。其中测试控制模块提供了一个总的控制界面,进行测试过程的控制和管理,测试人员输入指令,进行任意指定参数的操作或属性调用。在调用结束后,由测试结果处理模块处理并显示返回值及输入/输出参数,结果也可以保存在文件中。
脚本定制模块采用IDL格式定义测试脚本,能够编辑、管理测试脚本文件。用户熟悉IDL就可以编写测试脚本,测试脚本的解释由脚本解释模块进行。通过测试脚本可以向CORBA对象调用指定的操作,也可以获取或设置CORBA对象的属性。
在测试执行过程中,测试驱动模块和动态调用模块从接口存储库载入被测CORBA对象IDL细节。为了保持测试工具的灵活性,采用动态调用方式。系统结构如图1所示:

3 CTester工具实现的关键技术
3.1 动态调用技术DII
CORBA服务器接口测试工具CTester从Client/Server模式看,实际上相当于客户端,客户程序对远端对象的调用,有两种方式:静态方式和动态方式。本测试工具需要对任意CORBA服务器的属性/操作进行调用,因此采用动态调用DII[4]的方式,相对静态方式而言,该种方式有以下几个优点:
(1)灵活。动态方式允许对任意对象进行操作,所需要的只是目标对象的对象引用。借助接口库,动态方式可以在运行时刻查询对象所支持的属性/操作信息,大大提高了程序的灵活性。
(2)客户程序的可移植性增强。由于DII与客户之间的接口是标准的,因此由动态方式实现的代码具有良好的可移植性。
(3)可执行程序的“体积”小。与静态方式不同,DII不需要为每个接口生成码根和框架,无论程序中使用多少接口,所需要的只是一套支持DII的接口库,这样可执行程序的“体积”会相对较小。
当然,与静态方式相比,动态方式有以下的缺点:
(1)使用复杂。使用静态方式时,对目标对象的操作都施加在一个本地的代理对象上,相应对象支持的所有操作及格式都已经预先定义在这个代理对象中,因而使用方便。在动态方式下,程序员需要自己动手,“临时”构建一个请求并发送,同时程序还需要查询接口库以获得属性/操作必要描述信息,这些过程都较静态方式复杂。
(2)速度缓慢。由于静态方式下类型信息都是确定的,因此速度较快;而动态方式实现时,类型信息都是动态获知,速度不可避免要慢一些。此外,程序要花去大量时间来查询接口库,尤其当被查询的接口定义存放在远端时,这些查询还会引发远端调用,致使动态方式的速度变得更慢。
鉴于上述动态调用速度缓慢的缺点,为避免程序每次调用都去查询接口库来获得属性/操作的描述信息,我们采用预先将接口库中所有数据类型的接口定义对象转化为本地用java实现的类对象,这样程序就不必花费大量的时间来查询接口库,而只需调用所需类的属性或方法即可,大大提高了调用执行的效率。
动态调用的过程简要归纳如下:
(1)获得接口名,将目标对象接口信息注册到接口库中;
(2)从接口库的对象中,找到所要调用的操作(或方法)的描述;
(3)建立调用参数表,并逐一填入参数;
(4)创建请求,请求中应包括目标对象的引用、方法名、参数表和返回值;
(5)调用请求,并作结果处理。
3.2 采用面向对象的系统实现系统采用面向对象的思想,将接口库中各种数据类型对象一一转化为用java类实现的对象,对CORBA服务器属性/操作的调用变成了对相应java类的属性方法调用,提高了接口库查询效率,使得程序结构更加合理,易于维护。启动CTester工具后首先要执行“Load-ifr”命令,将接口库中所有IDL文件详细描述信息装入CorbaRepository类[5],其中也包括要测试的CORBA服务器IDL描述文件信息,然后再调用“attribute”或“operation”命令对CORBA服务器中的属性、参数进行设置/获取,对CORBA服务器中的操作进行调用,获得inout/out参数结果和返回值,验证结果返回值是否正确。
4 总结
本课题在对CORBA服务器接口测试技术经过大量的研究后,开发了相应的测试工具来验证CORBA接口的实现,该工具可以为分布式系统的开发提供测试手段。
参考文献:
[1] 汪芸.CORBA技术及其应用[M].江苏:东南大学出版社,1999.1-12.
[2] 朱其亮,郑斌.CORBA 原理及应用[M].北京:北京邮电大学出版社,2001.15-37.
[3] Orbix 2000 Programmer’s Guide Java Edition[EB/OL].www.iona.com.2004-09-16.
[4] Orbix 2000 Programmer’s Reference Java Edition[EB/OL] .www.iona.com.2005-06-07.
[5] IONA Orbix 2000 Administrator’s Guide, Java Edition[EB/OL] .www.iona.com.2004-01-15.