一种基于发布订阅模式的软件测试系统设计*

2022-01-06 08:35薛松缪俊王博吴昊
舰船电子工程 2021年12期
关键词:调用软件测试组件

薛松 缪俊 王博 吴昊

(中国舰船研究院 北京 100101)

1 引言

软件测试是承接软件设计与软件产品的关键环节,软件测试系统可根据待测软件的特点支撑完成不同级别的软件测试任务,为软件设计的合理性、软件产品的稳定性提供反馈和保障。软件测试系统将以往繁杂的手工测试内容转换为自动执行,可提高软件测试效率与测试准确度。目前行业内软件测试的基本手段为根据具体的待测软件开发专用测试系统与测试用例,不能形成一套灵活部署、测试通用的工具,很难支持跨平台分布部署、软件用例在线编辑等自动化测试工作。因此迫切需要开发通用的分布式测试工具,可以根据测试需求进行部署和编辑,支撑广泛的软件测试工作[1~4]。

该软件测试系统由测评管控软件与测试代理软件组成,采用以数据为中心的发布订阅通信方式,可支持测试管控软件与被测软件的分布式部署,预期的工作过程是将测评管控软件与测试代理软件分别部署至测评管控计算机与目标机,在测评管控软件编辑测试参数,生成基于XML文件的测试流,设置代理组件连接,编辑测试流程,最终生成测试实例,按照预定流程自动完成接口级测试与用例级测试,最后完成测试结果采集,并完成测试数据自动整理。

2 系统设计

2.1 系统架构

软件测试系统整体结构如图1所示,主体采用消息发布订阅架构,由三部分组成:测评管控软件、测试代理软件、测试组件。测评软件的运行模式分为两种:1)分布部署,即测评管控软件运行于测评计算机,测试代理和测试组件运行于待测平台,通过以太网连接;2)集中部署,即测评管控软件、测试代理、测试组件都运行于目标机,通过计算机内部的自回环网络接口进行通信。

图1 软件测试系统整体架构

测评管控软件具有可视化的人机交互界面,主要用于解析待测内容、输出测试操作、接收操作结果、智能评测和输出测试报告,该软件不与待测环境和测试组件直接接触,所有测试操作和操作结果都是通过网络接口与测试代理以XML报文形式交互。

测试代理负责与测评管控软件通信,解析协议,并通过相应接口将调用操作转发(或直接调用)至相应的测试组件,监控测试操作的执行,收集测试结果并回传至测评管控软件。测试代理不与待测软件直接接触,所有被测软件的调用都由测试组件完成,测试代理还负责处理因软硬件模块异常导致的测试组件运行错误。

测试组件负责调用待测软件并返回执行结果,它包含了待测软件的所有对外接口调用,是与被测软件直接相关的个性化服务组件,以服务动态加载的形式保证了在软件测试系统主体框架不变的情况下兼容大部分软件的测试任务,测试组件可以动态库或者可执行程序的形式提供,支持跨平台编译和运行。

各测试组件都以独立线程(或任务)运行,不断接收调用命令,执行调用并返回数据。测试组件都具有统一的输入输出接口规范、统一的命名和部署规范,可以动态配置、加载,并由测试代理统一管理。

2.2 测评管控软件设计

测评管控软件具有可视化的人机交互界面,通过解析XML接口描述文件,自动生成相应的被测软件测试窗口,测试窗口中可编辑测试项目及测试顺序,并可填入预先编辑好的测试参数,根据测试需要可以进行手工操作相应的接口,亦可通过解析测试项描述文件,自动生成测试项窗口,进行智能化测试,自动逐项测试,并判定结果,最终生成测评报告。

测评管控软件结构组成如图2所示,其主要用于完成人机交互,解析待测内容、输出测试操作、接收操作结果、智能评测和输出测试报告;测评管控软件集成了基于DDS的消息发布与订阅组件,该组件使测评管控软件、测试代理、测试目标软件之间形成了解耦,测试系统内所有的交互参数具有唯一的消息ID,测试交互需要的所有的参数、反馈结果均通过消息主题的形式进行发布,这使得同一台测评管控计算机可面向多台被测对象进行测试信息发布,也可订阅多台目标机的测试结果。

图2 测评管控软件结构图

该测评管控软件是一种以测试数据为中心的测试软件,测试人员与测试软件之间的交互通过XML文件进行传递,这也使得本系统具备以测试内容为中心的运行特征,使用户无需关注测试软件与被测软件之间的具体交互过程。

2.3 测试代理与测试组件设计

测试代理、测试组件、被测软件共同运行于目标机中,各部分主要功能如下。

测试代理集成了消息发布与订阅组件,负责与测评管控软件交互,通过XML解析模块获取测评管控软件传递的指令或参数,并通过相应接口将调用测试组件,将参数传递给测试组件,测试代理不与被测软件直接接触,所有被测软件的调用都由测试组件或测试用例进行,测试代理还具有管理、监测测试组件运行的功能,可以处理因软硬件模块异常导致的测试用例进程错误,并将错误信息回告给测评管控软件。

测试组件是针对被测软件定制开发的服务化组件,可根据被测软件的项目和种类按需调用,测试组件按照功能不同可分为两类:1)接口测试组件,测试组件包含了被测软件的所有对外接口调用,以动态库形式提供给测试代理调用。测试组件都以独立线程运行,不断接收调用命令,执行调用并返回数据;2)典型功能测试组件,将软硬件模块的典型功能综合起来,形成一套较完整的面向应用的综合测试用例,以动态库或可执行程序提供。每个典型测试用例都以独立线程运行,返回数据。

图3 测试代理与测试组件关系图

2.4 消息发布订阅设计

由OMG组织颁布的面向数据的实时系统数据分发服务规范 DDS(Data Distribution Service)是一项以数据为中心的网络实时分布式应用程序组件,它解决了分布式程序之间的网络实时通信问题,不同体系架构与运行平台的应用程序可将DDS作为其进行网络通信的支撑组件[5~11]。

通过DDS组件能完成异构分布式程序组件之间的通信,可通过DDS的配置使程序满足应用的特定通信性能需求。DDS通信组件能够使开发者关心具体数据实现,简化其对底层通信的实现关注。

在测试软件系统中,基于DDS的消息发布订阅流程如图4所示,测评管控软件、测试代理分别通过数据接口API集成了消息发布订阅组件,并以全局资源空间为媒介完成了基于主题的数据交换。在数据交换的过程中,所有的参数、报文均通过XML文件的形式进行传递。

图4 基于DDS的信息分发流程

数据发布过程:由测评管控软件的数据接口API调用发布订阅组件,并接收测评管控软件各内部模块,如用户管理模块、接口参数管理模块、测试流管理模块、底层监控模块等的XML格式信息,并将上述信息行主题编号,并发布到全局资源空间,完成了数据推送。测试代理通过数据接口API调用发布订阅组件将程序运行信息行主题编号,并发布到全局资源空间,完成了数据推送。

数据订阅:由测评管控软件的数据接口API调用发布订阅组件,按照用户需要从全局资源空间订阅某一主题信息;由测试代理软件的数据接口API调用消息发布订阅组件,按照测试需要从全局资源空间订阅某一主题信息,当订阅请求完成时,DDS消息发布订阅组件会自动在发布端与订阅端之间建立连接,完成消息通信。

2.5 XML文件设计

XML是Extensible Markup Language的缩写。即可扩展标记语言,是用于表示结构化信息的一种标准文本格式。由于XML是非专有的并易于阅读和编写,就使得它成为在不同的应用间交换数据的理想格式,同时对于人类或是计算机程序来说,都容易阅读和编写,因而成为交换语言的首选[12]。

测评管控软件内部各模块之间的XML交互流程如图5所示,各子系统间主要通过各种XML文件进行数据交换,部分子系统间存在直接的消息接口。

图5 测评管控软件XML传输组成

典型XML文件内容节点及作用如表1所示。

表1 XML文件内容

3 应用模式

3.1 用户管理

用户通过设置账号和密码进行登录,登录后的用户可打开配置文件,选取编辑完成的测试流程。

3.2 手动模式

载入XML配置文件,生成区域1中的被测软件接口列表,点击区域1中的接口,会在区域2中显示已经保存的参数文件,在区域3中显示参数内容。点击运行即可完成测试操作,并在“输出”页返回测试结果。

3.3 自动模式

如图7所示,区域1是测试接口区,2是历史参数区,3是参数显示区,4是测试流接口区,5是测试流功能区,6是测试流区。

通过区域6编辑测试流XML文件,并在区域1、2中选定接口与参数,将选中的接口以测试项的形式新增到测试流中,可通过区域5中的编辑按钮编辑测试顺序,生成测测试流在区域4中保持。点击自动运行按钮,即可完成特定测试流程的自动运行。

图6 手动测试模式界面

图7 自动测试模式界面

4 结语

本软件测试系统通过采用图形化跨平台编程技术,结合发布订阅模式的消息通信组件,实现了四个方面的功能,第一,实现了测试软件与被测软件的解耦分离;第二,实现了图形化编程操作,取代了原有的接口用例编程操作;第三,实现了自动化标准化测试流程;第四,实现了测试结果自动采集。

该测试软件系统界面交互良好,操作简便,分区清晰。经相详细测试,并在测试过程中应用,结果表明本测试系统稳定可靠,达到了预期的设计目标。

猜你喜欢
调用软件测试组件
软件测试方向人才培养“1+X”融合研究
Kistler全新的Kitimer2.0系统组件:使安全气囊和安全带测试更加可靠和高效
大数据背景下软件测试技术的发展
创建Vue组件npm包实战分析
智能机械臂
舰载雷达TR组件冲击计算方法分析
基于Android Broadcast的短信安全监听系统的设计和实现
关于 Web 应用系统的软件测试的研究
软件测试发展现状及前景的探讨
利用RFC技术实现SAP系统接口通信