基于DDS的软件接口测试方法研究

所属栏目:软件开发论文 发布日期:2021-05-10 09:43 热度:

   近年来,随着舰船一体化[1]的工作不断推进,在舰船上的各种设备纷纷加入主干网络中,各个设备节点实现了互联互通,信息处理系统需要将不同设备和不同时间的数据进行整合,数据分发过程随着数据需求的多样性而变得更加复杂。为了满足分布式的实时通信需求,由OMG组织提出的数据分发服务DDS[2]规范有效解决了此问题。随着DDS规范的逐步完善,越来越多的系统在设计之初就采用了以数据为中心的信息发布/订阅通信模型,以满足不同设备的通信需求,但与此同时,DDS相关的软件接口测试方法却发展缓慢,相应的测试工具并未被及时开发与应用。针对此情况,分析其模型特点和分发流程,提出了一种DDS接口测试方法,经过实践检验,可以有效地对采用DDS规范的系统进行软件接口测试[3]。

基于DDS的软件接口测试方法研究

  1DDS介绍

  1.1数据分发服务(DDS)

  DDS是发布/订阅信息分发模型衍化而来,继承了发布/订阅模型的优点也借鉴了分布式对象模型的异构特点,有着低延迟、高容错性、高带宽、传输方式灵活的特点。DDS规范体系结构有两层,分别是数据本地重构(DLRL[4])层和DCPS[5]层,DLRL层是可选的,DCPS层是DDS的核心和基础,提供数据分发的基础结构,保障了数据的传输。DCPS层创建了全局数据空间(GDS)的概念,所有的数据对象都存在于空间中,可自动和异步地向GDS读取/写入数据,发布者和订阅者可随时加入和离开GDS,发布者和订阅者通过主题进行匹配所需的数据类型,通过检查和校验机制后完成数据的传送。

  1.2DDS的分发流程简述

  DDS为了实现数据的分发[6]设计了一整套相应的流程,可概括为DCPS初始化,发布者初始化、订阅者订阅、传递数据四个步骤。在DCPS初始化阶段最主要的工作为域的建立、Qos策略设置和传输的初始化工作,域存在校验机制,订阅者和发布者的域必须与DCPS层的域一致。发布者定义数据类型、生成主题,订阅者查找主题并完成订阅,经过中间检查机制检查,符合连接规则后发布者和订阅者将建立连接,发布者通过DataWriter写入最新数据,DCPS进行数据分发,订阅者通过DataReader读取最新数据,通过以上的流程就实现了数据的分发,数据有效地从发布者传递到订阅者。

  2软件接口测试常用方法

  2.1借助测试工具

  软件测试时如测试接口类型为串口,软件测试人员往往会使用串口调试助手,当测试接口类型为网口时,软件测试人员会使用Wireshark工具测试TCP或UDP协议的报文,借助得心应手的测试工具来进行接口测试是软件测试人员的优先选择,但正如前文所提到的有关DDS的测试工具未被及时开发与应用,在针对DDS进行软件接口测试时,面临着无测试工具可用的尴尬局面。

  2.2自研工具

  根据对以数据为中心的发布订阅模式进行分析,由于系统内均为分布式节点,自然可以联想到将测试节点加入全局数据空间进行全局通信,得益于DDS异步通信方式的特性,测试节点的加入不会影响系统原有的分布式节点,并且加入的测试节点不受数量上的制约,可以加入多个测试节点来并行测试以提升测试效率,这有利于减少接口测试在整个测试周期中的时间占比。根据对DDS的分发流程的分析,全局数据空间是根据主题进行数据分发,测试节点设置完成主题即可完成与被测对象的关联,形成测试节点-被测对象的成对关系。

  3设计步骤

  3.1发布者设计步骤

  (1)配置本机ip和广播地址。(2)使用接口定义语言(idl)定义数据类型,推荐创建一个结构体,根据被测报文定义所需的成员变量及其数据类型并做好相应的注释。(3)使用脚本,生成辅助文件。(4)创建工程,将辅助文件添加至工程文件中。(5)编写publisher代码。此步骤会先将域初始化,如果域初始化失败将会直接报错处理,域初始化成功再将发布者加入至所需的域中,根据被测报文将每个成员变量都进行赋值,将主题设置与订阅端主题一致,Qos策略可以按需配置,主要有BEST_EFFORT尽力而为模式和RELIABLE可靠模式,无明确要求时可选BEST_EFFORT尽力而为模式,一直重复发送报文观察现象即可,如果没有发送周期需求,建议设置2s-3s的发送间隔,防止接收端接收大量的数据从而产生异常,2s-3s的发送周期也适合软件测试人员观察被测对象是否达到了预期的结果。(6)编译工程,运行程序查看发送结果。此处建议添加对发送结果的反馈,如果发送失败可将错误代码进行打印,方便排查错误。发送成功后就可根据用例设计情况,改变成员变量的赋值,重新编译后发送直至用例全部执行结束。

  3.2订阅者设计步骤

  (1)配置本机ip和广播地址。(2)使用接口定义语言(idl)定义数据类型。(3)使用脚本,生成辅助文件。(4)创建工程,将辅助文件添加至工程文件中。(5)编写subscriber代码。域的初始化、主题设置和Qos策略设计与前文一致,将所需的报文中的成员变量打印输出。(6)编译工程,运行程序查看接收结果。此处也同样建议添加对接收结果的反馈,避免由DDS分发错误而导致的接收异常。

  4接口测试实践

  在配置项和系统测试时,软件测试人员常常会选择黑盒测试方法来进行软件测试,当软件测试人员需要测试采用DDS规范的接口时,测试目标为软件接口与受控文档协议的一致性,在测试环境搭建完成并分析环境差异性后,可以分为2种情况进行讨论。

  4.1测试节点做发布者

  根据前文中的发布者设计步骤完成一个最小单元的发布者样例,保证样例通信正常,可以正常发布报文数据,排除由数据分发服务或样例引起的测试异常中止情况,使用受控文档协议补充完成所有成员变量的定义并赋合理初始值。在实际测试时,往往会有多个域的多条报文需要测试,编写publisher代码时可以一次性将所有域的所有报文编写完成,也可以仅将一个域内的所有报文编制完成,依据单个用例覆盖最小化原则,测试时一次仅选择一个域内一条报文的某一字段进行测试,依次执行测试用例观察预期结果。

  4.2测试节点做订阅者

  根据前文中的订阅者设计步骤完成一个最小单元的订阅者样例,保证样例通信正常,可以正常接收报文数据,使用受控文档协议补充完成所有成员变量的定义。编写subscriber代码时推荐一次性将所有域的所有报文编写完成,根据实际测试需要,选择性地接收所需报文进行打印,依次执行测试用例观察预期结果。

  4.3测试结果判断和处理

  由于使用黑盒测试的方式,预期结果也可能是多样的,测试节点发布者依据文档协议发送了报文,若测试对象有人机界面,可以根据人机界面显示情况判断是否达到了预期结果,若测试对象无人机界面,但有回送报文,需要添加订阅者测试节点接收回送报文,可根据回送报文判断是否达到了预期结果,根据预期结果,即可有效定位测试缺陷。但也存在一些特殊情况,若报文发送完成后,测试对象无响应,则应按照发布者、测试环境、被测对象的顺序排查问题,使用Wireshark等网络抓包工具判断发布者是否成功发布,检查发布者的成员变量定义是否正确,赋值是否在有效范围之外,然后排除链路故障、丢包、硬件损坏等一系列测试环境异常情况,最后可引入白盒测试的方式定位被测对象的测试缺陷,即可分析出是由于文档问题还是软件问题引起的测试对象无响应的情况。

  5总结

  在软件接口测试中,由于采用DDS规范的测试工具未被开发,就需要软件测试人员使用自研测试工具完成接口测试。从DDS的特点和分发流程入手,对自研工具的发布者和订阅者进行了详细设计论述,通过实践检验,可以有效地对采用DDS规范的软件接口完成软件测试,也为后续开发DDS测试工具奠定了基础。由于此方法要求软件测试人员需要熟练掌握编程技巧,虽然可以多个测试节点并行测试互不干扰,但是整体的测试效率仍低于预期,后续可以考虑研究针对采用DDS接口的软件自动化测试方法。

  参考文献

  [1]杨楚平,赵刚,马超.舰船一体化网络应用研究[J].舰船科学技术,2019,41(19):168-172.

  [3]何琼月.软件测试中接口测试概述与实践[J].电子测试,2021(02):80-81+75.

  [4]周平,苏银科,沈超.基于DDS的分布式数字仿真系统设计与实现[J].系统仿真学报,2014,26(08):1678-1683+1691.

  《基于DDS的软件接口测试方法研究》来源:《电子测试》,作者:童佳锋

文章标题:基于DDS的软件接口测试方法研究

转载请注明来自:http://www.sofabiao.com/fblw/dianxin/ruanjiankaifa/45644.html

相关问题解答

SCI服务

搜论文知识网的海量职称论文范文仅供广大读者免费阅读使用! 冀ICP备15021333号-3