自动测试系统远程实时监控技术研究
2018-10-27陈鹏飞
陈鹏飞
【摘 要】针对当前各个自动测试系统之间相互独立,缺乏数据共享,难以提供远程实时监控的问题,设计了用于存储数据的服务器,研究了基于WebSocket的面向长连接的实时通信技术,实现了一套与自动测试系统交互的即时通信系统。该系统满足数据的统一管理,同时满足访问端的实时数据显示要求。
【关键字】自动测试系统;WebSocket;TestCenter
中图分类号: TM932 文献标识码: A 文章编号: 2095-2457(2018)16-0229-002
DOI:10.19694/j.cnki.issn2095-2457.2018.16.106
【Abstract】In view of the fact that each automatic test system is independent of each other, lacks data sharing, and it is difficult to provide remote real-time monitoring, a server for storing data is designed, and a real-time communication technology based on web sockets for long connection is studied. A set of instant messaging systems that interact with automated test systems.The system satisfies the unified management of data while meeting the real-time data display requirements of the access side.
【Key words】Automatic test system;WebSocket;TestCenter
0 引言
自动测试不仅能降低大量重复测试中由于人体疲劳造成的误操作,而且能替代人完成远距离或恶劣环境下的测试任务,同时适用于被测相关信号瞬间出现难以捕捉的测量场合,可在测量时间极短而数据处理工作量极大的测试任务中,从而最大限度地提高工作效率。
1 系统结构
本文旨在设计自动测试系统与服务器交互的实时通信模块,该模块通过WebSocket技术与服务器建立连接,实现实时数据的及时传输。其中自动测试系统中的软件是基于TestCenter开发,实时通信模块以插件的形式嵌入到TestCenter[1-2]。TestCenter是一款专为加速开发自动测试系统而设计的测试开发与管理软件平台,由中国电子科技集团公司第四十一研究所独立自主研发的自动测试平台软件,配备TestCenter的自动测试系统在航空航天、国防/军工、汽车电子、无线通信、医疗电子等领域的应用日益广泛。服务器上运行的是基于Java EE开发的Web程序,部署在Tomcat容器中。
在一个测试网络内一般會有多台功能相同或不同的自动测试系统,用于实现多种被测件的测试,而服务器只有一个。自动测试系统作为测试集群中的独立站点同远程中心服务器进行信息交互,远程中心通过Web服务器进行测试信息的采集以及存储,同时,远程中心通过网页的方式对外提供信息服务。整个系统的结构如图 1所示。
首先是自动测试系统同远程中心的交互。自动测试系统内置工作站并作为访问端,主动向服务器申请建立基于WebSocket[3-4]的可靠连接。自动测试系统获取的数据一方面作为一般数据传输给Web服务器进行存储,包括系统配置、资源配置、被测件、测试程序、测试项目、测试结果等信息,另一方面测试过程中的瞬时数据将作为实时数据传输给服务器,服务器接收数据后再向客户端的订阅者群发,此类数据主要包括用户的操作指令和测试进度。
然后是客户端以网页的形式同远程中心进行信息交互。实时通信功能是通过B/S体系体现的,用户通过浏览器同Web服务器建立WebSocket连接,发送实时数据请求并查看实时数据。
本系统将WebSocket技术与自动测试系统相结合对其进行远程实时监控,使得自动测试系统的测试状态更为及时、主动和便捷,从而达到实时的目的。
2 实时通信模块的设计
实时通信模块的构成包括三部分,分别是Web服务器上的WebSocket服务端、自动测试系统上的WebSocket客户端和浏览器上的WebSocket客户端。
2.1 WebSocket服务端设计
Web服务器主要提供网页访问和WebSocket服务两个功能。WebSocket服务通过使用Tomcat的websocket实现,需要tomcat-websocket.jar和websocket-api.jar两个包,在Web服务器初始化后立即开始监听,主要的事件方法包括:
@ServerEndpoint("/websocket")
public class WebSocket{
@OnOpen
public void onOpen(Session session, EndpointConfig config){……}
@OnClose
public void onClose(Session session){……}
@OnError
public void OnError(Session session, Throwable t){……}
@OnMessage
public void onMessage(Session session, String msg, boolean last){……}
}
在onOpen的连接事件中,WebSocket服务端会根据连接请求参数的不同区分请求者是自动测试系统还是浏览器,同时维护请求者的句柄,从而提供测试集群到远程中心以及浏览器到远程中心的双向全双工实时通信。
2.2 自动测试系统上的WebSocket客户端设计
自动测试系统与服务器进行数据交互时,通常采用TCP协议,需要在服务器上建立TCP服务端,在这种情况下,考虑到服务器还需要通过网页方式提供服务,因而需要在服务器上打通TCP服务端和网页服务的通信功能,实现过程较为复杂。
WebSocket技术可以简单的规避了该问题。首先是在Web服务器上非常方便的集成WebSocket服务端,可以无缝的与Web服务进行交互,其次WebSocket技术已经普及,目前Node.js、Java、C++、Python、C#等多种语言都有自己的解决方案,在自动测试系统和浏览器上可以方便的开发WebSocket客户端。
自动测试系统中的软件是在TestCenter的基础上做二次开发,使用了websocket-sharp(https://github.com/sta/websocket-sharp)组件实现。主要包括创建WebSocket实例、设置事件处理方法、连接服务端、发送数据和关闭连接等操作,如图 2所示。
2.3 浏览器上的WebSocket客户端设计
浏览器上利用JS技术插入WebSocket。由于HTTP协议无法实现服务器主动向客户端发送消息,大多数Web应用是通过频繁的异步JavaScript和AJAX请求实现长轮询。轮询的效率低,非常浪费资源。HTML5的WebSocket技术与Web服务端建立的是长时间的连接,无论是服务端还是客户端都可以通过建立的连接将数据推送到另一端。WebSocket只需要建立一次连接,就可以一直保持连接状态,这相比于轮询方式的不停建立连接显然效率要大大提高,在信息交互频繁的情况下减少了数据传输的量。
在浏览器上采用了HTML5自带的API来实现WebSocket,主要的操作和上节中的流程一致。
3 结束语
本文着重设计了自动测试系统中的实时通信模块,该设计保证了实时数据的正常传输及显示,可以满足自动测试系统、远程中心以及客户端三者间的实时传输要求。
【参考文献】
[1]宋斌,方葛丰,刘毅.自动测试系统软件平台TestCenter体系结构设计与分析[J].测控技术,2013,8.
[2]方葛丰,刘毅,等.自动测試系统软件平台技术[J].仪器仪表,2009,10.
[3]张艺.基于WebSocket的即时通信系统研究与实现[J].软件,2015,3.
[4]刘维峰,左泽军,赵利强等.基于HTML5的生产装置实时监测可视化[J].计算机工程与设计,2015.3.