T/R组件通用自动化测试平台的设计

2015-02-22 03:05童颖飞肖苏飞
雷达与对抗 2015年4期
关键词:自动化测试

童颖飞,宋 云,肖苏飞

(中国船舶重工集团公司第七二四研究所,南京 211153)

T/R组件通用自动化测试平台的设计

童颖飞,宋云,肖苏飞

(中国船舶重工集团公司第七二四研究所,南京 211153)

摘要:设计了一款T/R组件通用自动化测试平台。该平台主要由系统管理、资源管理、测试程序开发、测试程序执行和数据管理等5个模块组成,可实现T/R组件以及一般微波射频设备的自动测试,并支持测试数据的管理和报表输出。

关键词:相控阵雷达;T/R组件;.Net;软件架构;SCPI;自动化测试

0引言

T/R组件是构成相控阵雷达的基础,是相控阵雷达的核心部件。T/R组件的各项指标直接影响雷达相应的整机指标。在T/R组件研制前期以及大规模批量生产阶段,大量全面的电性能指标测试是必需的。传统的电子测量采用人工手动的方式,通过手动操作测试仪器,人工记录仪器上的数值,测试过程需要多人协作,且测试时间长,效率极低,已很难满足现代雷达的研制需求。

由于计算机可通过SCPI语言对通用仪器进行控制,开发软件实现相应的测试内容往往是行之有效的方法[1]。现有相关软件一般采用硬编码的方式固定测试参数在开发过程中,通用性不强,只能实现对某个固定被测对象的测量。对不同的被测对象都开发特定的测试程序显然会耗费大量时间及人力物力,效率低下。因此,开发一款通用型测试软件,在此基础上对不同的被测对象进行自动化测试开发是十分必要的。

自动化测试软件平台的搭建需要一种安全、稳定和高效的语言环境。.Net是一种Windows平台上编程的架构,是一种极高安全性的面相对象程序编程架构。C#是一种从头开始设计的用于.Net的语言,含有丰富的类库,用其开发的软件架构清晰、周期短、数据访问能力强,十分适合大型软件平台的设计[2]。

本文采用C#语言设计了一款T/R组件通用自动化测试平台,主要由系统管理、资源管理、测试程序开发、测试程序执行和数据管理等5个模块组成。可通过该平台实现对自动化测试的二次开发、执行以及测试数据存储和报表的输出。该平台也适应一般微波射频设备的自动化测试。

1通用自动测试平台一般特性

对于通用自动测试软件,其需要实现的主要功能是:在通用自动测试软件上,使用者根据被测件的测试指标特性,自主配置测试所需的硬件设备,并形成测试链路。利用配置好的设备及满足测试精度的测试方法,按一定的逻辑流自动控制测试链路中各个环节配合完成对被测件待测指标的测试、数据采集、数据处理以及数据记录,最后以需要的形式输出测试数据。

由通用自动测试软件需要实现的功能,可以得出软件平台应具备以下的功能特性:

(1) 具备完善的用户管理功能,可供测试开发人员以及实际测试人员等不同身份的用户操作相对应的功能模块;

(2) 具备测试系统硬件配置功能,用户可配置(添加、修改、删除)测试所需测试设备;

(3) 具备与测试设备通信功能,能够对配置好的设备进行远程控制以及数据交互;

(4) 具备测试流程开发及调试功能,用户能够按自己的测试方法并结合测试链路中的设备功能,通过图形化界面实现测试项的测试流程开发。开发完成后,可对测试流程进行调试并固化测试流程以供自动测试调用;

(5) 具备自动测试及测试结果实时显示功能,用户能够一键对被测件所有指标测试项进行测试,同时通过实时显示的测试数据对测试过程进行监控;

(6) 具备数据处理、数据记录及数据存储功能,能够对测试结果进行二次处理满足输出需求,并自动存储至数据库中;

(7) 具备测试报表输出功能,用户能够按需求生成被测件的测试结果报表,对超差测试值进行标示。

2通用自动测试平台设计

2.1 测试平台架构设计

软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接明确,能相对细致地描述组件之间的通讯。在面向对象领域中,组件之间的连接通常用接口来实现。软件架构设计的目的是为了使系统能够适应需求的变更、易于维护和升级,同时尽可能地节约开发成本。

在软件体系架构设计中,常用的架构模式有三层开发架构(3-tier application)、SOA(面向服务架构)、DDD(领域驱动设计)等,目的在于实现高内聚、低耦合的思想[3]。

在通用自动测试平台的开发中,需要处理大量不同实体间复杂的逻辑业务关系,需要用到大量的事件、代理等方式。实体自身的属性也比较复杂。如果仍然从数据层开始设计会带来增加复杂程度,因此采用领域驱动设计思想是比较合适的。

领域驱动设计架构主要分为基础设施层、表现层、应用层、领域层。基础结构层为各层提供各个通用技术能力。表现层负责与用户进行信息沟通。领域层根据业务的逻辑流程定制业务信息及规则,并制定领域模型。应用层负责协调领域层与表现层之间的关系。

对测试软件而言,用户对软件设置的参数多、软件向用户反馈的信息多,表示层将存在大量界面控件。因此,在设计过程对前端可以采用MVC(Model-View-Controller)架构模式来分离控件间的相互调用以及控件与后端服务间的交互。MVC用一种业务逻辑和数据显示分离的方法组织代码,将逻辑部分聚集到一个部件中,在控件改进的同时无需重新编写逻辑部分。

在领域驱动设计架构中融入MVC架构时,去除MVC中的Model部分,将Model中的映射关系对应到DTO(数据传输对象)中。由此,测试平台的架构图如图1所示。

图1 测试平台架构设计图

2.2 测试平台接口设计

测试平台的功能实现建立在与外部交互的基础上。测试平台与测试设备驱动的接口实现远程控制测试设备动作及数据交互,与数据库接口实现测试参数配置及测试结果存储,与COM组件接口实现测试信息的报表输出。被测件通过信号中枢经测试总线到系统总线与测试仪表及测试平台构成测试链路。

COM组件接口用来实现在.NET出现之前编写的非托管程序(Word、Excel等)与托管环境间的交互。测试系统中,利用微软提供的COM互操作技术,即Microsoft.Office.Interop(实现.NET与Office的互操作)、Microsoft.Data.OleDb(实现.NET与数据库的互操作),封装功能模块实现数据交互。

自动测试平台利用LXI(LAN-based eXtensions for Instrumentation)总线技术实现测试设备的远程控制及数据交互。它基于工业标准以太网(Ethernet)技术,扩展了仪器需要的语言、命令、协议等内容。LXI总线以IPV4、IPV6、TCP/IP协议为数据交换协议,定义了LXI总线的数据遵循的网络协议,使测试设备具有通过以太网实现设备的访问、配置以及控制的能力。

作为软件系统运作的协调部分,接口是软件的关键组成部分。接口管理模块实现软件的接口定义,并通过对封装好的组件的注册、加载和卸载来实现测试平台内部模块之间以及与Woord、测试仪表、数据库之间的协调、映射及关联,是系统内部模块之间以及系统与外部数据交换的枢纽。接口设计主要利用动态连接库模块(DLL)的调用与加载来实现。接口引擎根据动态连接库模块的注册或配置信息,查询需要的功能模块然后其实例化,从而使模块对象与设计的接口相映射,并将模块对象动态加载到进行的内存中。

自动测试平台的接口如图2所示。

图2 测试平台接口示意图

2.3 测试平台模块设计

模块设计是描述系统需求的一个过程,需要将需求中的感性描述进行抽象进行描述,提取出要实现的功能,是整个系统开发的一个关键过程。

根据需求,通用自动化测试平台设计分为系统管理、测试资源管理 、测试流程开发、测试程序执行和数据管理等5个模块。软件模块设计图如图3所示。其中系统管理模块主要实现软件用户的管理和软件注册,测试资源管理主要实现对各类通用电子测量仪器对应的IP、驱动等信息的管理。测试流程开发模块主要实现测试流程的编辑和调试,将测试流程通过节点的方式编辑。测试程序执行模块主要实现测试逻辑流程的运行、对测试仪器进行远程控制与数据交互、测试结果实时显示以及测试流程的监控。数据管理模块与数据库进行交互,实现测试结果的存储、更新、查询以及测试报表的输出,报表输出模板包含Word和Excel。

图3 通用自动化测试平台模块设计图

2.4 测试设备驱动设计

测试软件的一个重要功能就是具备与测试设备通信功能,能够对设备进行远程控制以及数据交互。为了实现测试软件的通用化,需要为不同类型和型号的仪器设计驱动文件。现在大部分的测试设备都支持SCPI(程控仪器标准指令集)指令,所以本文将利用SCPI指令实现对被测设备的远程控制[4]。将所有的测试设备抽象为一个类Instrument。一般的测试设备都具备打开、关闭设备的功能。因此,为Instrument类实现接口IOpenClose接口,实现此接口的类都将实现打开、关闭设备的功能。不同的测试设备具备不同的测试功能,将每种测试设备都抽象为一个类InstrumentA、InstrumentB…,继承Instrument类。对不同设备的每个功能点以SCPI语言进行描述,利用TCP/IP协议与测试设备进行通讯实现远程控制及数据交换。将功能点封装成方法作为每个测试设备类的一个操作,最后将所有类封装成动态链接供测试时动态调用。测试平台设计了包含信号源、频谱仪、功率计、示波器、矢量网络分析仪、电源等多类型多型号的仪器驱动供开发人员使用。测试设备驱动设计UML图如图4所示。

图4 测试设备驱动设计UML图

2.5 测试流程设计

测试流程开发是体现通用自动测试软件灵活性、可扩展性的核心功能,需具备测试节点模块的添加、编辑、删除等功能。基于领域驱动思想,对测试流程开发的业务逻辑实体进行设计。可以将测试流程中的每一个节点抽象为基于测试流程节点类的子类,共有的特性为节点名、节点类型、节点ID等,不同的地方在于每个节点能完成的功能不同。采用充血型实体模型,这些节点各自的动作将加入各自的实体中,减少领域层服务的耦合性,也便于修改逻辑。

在实例化测试流程节点的过程中,采用工厂模式结合反射方法。在生成简单实例时可直接利用构造函数生成。如果生成的实例内部属性之间存在复杂的逻辑业务关系,就可以将实例的生成方法设计到一个工厂类内部。这样,客户端将不需要依赖下层潜在的逻辑关系,直接通过工厂来生成相对应的实例,避免将复杂的逻辑关系暴露在客户端中[5-6]。

工厂模式也存在缺陷,那就是类的数量越多,对应的工厂数量会越多,客户端需要使用到的工厂也将更多。这样的后果:第一,代码中将存在大量switch或者if else语句,不利于后期维护;第二,客户端将依赖大量的工厂类,代码耦合性增加。引入反射机制将能解决这个缺陷。

反射是.NET中重要机制。通过反射,可以获取.NET中每个类型的成员及其名称、限定符和参数等。该机制结合动态数组很好地解决了应用软件的维护的升级。对于应用软件的变化,可不改动任何现有的程序,只需要修改配置文件的相应对象名称和加载新的对象即可,程序不需要作任何的硬性改动。

利用反射得到所有节点类的信息,然后利用传入的构造参数生成对应的实例。强类型转换后赋给父类实例,完成节点的动态创建。UML结构图见图5。

图5 动态创建实例UML图

创建好的各个节点实例在内存中将按照逻辑顺序以树型结构存储,通过数据层经持久化保存在流程配置文件中。在领域层实现方法,通过数据层读取流程配置文件,存储在内存中,通过递归调用树形结构的所有节点完成测试流程的执行,表现层调用应用层封装好的相应服务来执行各个节点实例的动作。测试结果通过DTO转化为DTO对象。表现层调用DTO对象将测试结果实时显示在空间上,完成对用户的信息反馈。这里还涉及多线程及异步方法等领域,就不再赘述。

平台的实际使用中,程序已经完成部署。当测试任务发生改变时,可以通过读取插件配置信息的方法,载入新的应用构件,来兼容测试任务的变化。通过XML文件来实现配置信息的编写。读取配置信息,装载动态链接库,通过C#的反射机制分析驱动文件中的全部方法及其输入参数、输出参数等信息。

2.6 测试数据管理

测试完成后,领域层调用数据层实例。数据层通过ADO.NET实现对数据的管理,将测试结果转化为DataSet类和DataTable类进行存储,通过SQL或LINQ实现对测试结果数据库的查询、插入、更新、删除。此功能也可以通过加入ORM框架,通过对象和数据表之间的mapping对数据实体进行持久化。对查询筛选出的数据转化为DataTable。基础设施层利用.NET平台的Word和Excel组件的COM互操作接口,分别将测试数据DataTable的内容插入至Word和Excel文件中输出。文件中数据均以表格形式给出,便于测试结果的统计和存储。

3通用自动测试平台应用实例

基于本文设计的通用自动测试平台完成了一种T/R组件电性能指标的自动测试系统开发。该测试系统可以完成多项参数测试,测试开发便捷,测试结果重复性好,显示规范清晰,测试效率高。经使用比对,手动测试方式2人配合2天完成的工作,使用该测试系统1人20分钟左右即可完成。图6~图10分别为自动测试系统中的用户管理模块、资源管理模块、测试流程开发模块、测试程序执行模块、测试数据管理模块。

图6 用户管理模块界面

图7 资源管理模块界面

图8 测试流程开发模块界面

图9 测试程序执行模块界面

4结束语

通用自动测试平台可根据具体的测试需要,在软件不作硬性改动的情况下设计相应的测试方法,实现了测试过程的自动化,测试效率高。平台具备完善的数据管理方法,可将测试数据永久保存在后台数据库,并支持报表的输出,人机界面友好。由于该软件平台具备通用性好、测试效率高等特点,可以在更多的自动化测试中得到广泛应用。

参考文献:

[1]Joel P Dunsmore.微波器件测量手册[M].北京:电子工业出版社,2014.

[2]Christian Nagel,Bill Evjen,Karli Watson,Morgan Skinner.C#高级编程 [M].8版.北京:清华大学出版社,2013.

[3]Martin Fowler.企业应用架构模式[M].北京:机械工业出版社,2010.

[4]Agilent Technologies.Signal Generators Programming Guide.(FEB.2010).

[5]Erich Gamm,Richard Helm,Ralph Johson,John Vlissides.设计模式:可复用面向对象软件的基础[M].北京:机械工业出版社,2007.

[6]Martin Fowler.重构:改善既有代码的设计[M].北京:人民邮电出版社,2010.

Design of a general automatic T/R module test platform

TONG Ying-fei, SONG Yun, XIAO Su-fei

(No.724 Research Institute of CSIC, Nanjing 211153)

Abstract:A general automatic T/R module test platform is designed, and it comprises five modules such as the system management, resource management, test program development, and data management, which can realize the automatic test of the T/R module and general microwave RF equipment and support test data management and report output.

Keywords:phased array radar; T/R module; .Net; software architecture; SCPI; automatic test

中图分类号:TP311.5

文献标志码:A

文章编号:1009-0401(2015)04-0068-05

作者简介:童颜飞(1989-),男,工程师,硕士,研究方向:软件工程、自动化仪器仪表;宋云(1968-),女,高级工程师,研究方向:计量测试及其管理;肖苏飞(1989-),男,助理工程师,硕士,研究方向:软件工程、自动化仪器仪表。

收稿日期:2015-08-27;修回日期:2015-09-11

猜你喜欢
自动化测试
Hadoop性能测试自动化研究
数据驱动和关键字驱动的研究与应用
浅谈空调控制器自动化测试
基于多总线结构的电路板测试系统设计研究
航空航天与国防电子新形势下自动化测试系统的应用
基于CTI—TET和SeleniumWebdriver的Web应用自动化测试框架的设计与实现