基于DDS的SOA测试方案实现
技术干货 2023.05.08

随着以太网技术在车载网络中的应用,各种基于以太网的中间件也相继被应用在车内,如果对车载网络有过相关了解的小伙伴,对于作为中间件之一的DDS(数据分发服务Data Distribution Service)可能并不陌生。伴随DDS技术研究的深入以及在SOA中的应用,对基于DDS的SOA测试也被提上日程,本文主要结合一些项目的实际需求,探讨一种基于DDS的SOA测试实现方案。


一、测试范围


基于DDS的SOA测试有标准协议层面的测试,也有自定义层面的测试,标准协议的测试能够验证协议本身在具体实现上是否符合标准中定义,自定义的测试能够进一步验证基于DDS的SOA功能实现是否符合企业要求。


在当前测试方案中,为满足实际的SOA功能需求,主要关注的测试点在两个方面:


1)协议一致性测试

RTPS协议的一致性


基于DDS的SOA测试方案实现(图1)

图 1 模型架构

(图片来源于Fast DDS官网:https://www.eprosima.com


2)功能测试

· 服务的发布订阅测试

· 接口和参数测试

· 压力测试

· 系统测试

· 性能测试

……



二、测试方案


本方案中,主要涉及的软硬件如下:

· 仿真节点:基于eProsima公司的Fast DDS来实现,与被测节点间进行通信交互。

· 硬件:Vector公司的VN系列设备和VT系统,VN设备实现通信数据监测,VT系统实现DUT的供电控制及I/O信号仿真等。

· 软件:Vector公司的CANoe,使用CANoe的Test Module模块进行测试脚本的搭建与执行。


基于DDS的SOA测试方案实现(图2)

图 2 总体框架


CANoe通过socket将测试数据发送到DDS仿真节点,仿真节点接收到数据后,通过RTPS协议将数据发送到DDS被测节点;被测节点在接收到数据并处理后,会将处理的结果通过RTPS协议传输给仿真节点,仿真节点再将接收到的结果通过socket发送至CANoe,通过此过程可以对通信交互的行为和返回的结果等进行测试验证,以实现对被测节点的测试。


基于DDS的SOA测试方案实现(图3)

图 3 策略实现



三、模块剖析


1、Fast DDS仿真节点实现

Fast DDS是一种开源的DDS标准实现,基于C++语言开发,由eProsima公司发布并维护,在本方案中利用Fast DDS来实现仿真节点的设置,以便能够与被测节点进行直接的DDS通信交互。在Fast DDS实现中,需要对使用的实体等进行创建并设置。


基于DDS的SOA测试方案实现(图4)

图 4 Fast DDS实现


2、CANoe接口实现

CANoe在本方案中的主要作用是实现对Fast DDS仿真节点的控制,包括数据发送和返回结果接收等,并结合实际的测试用例需求完成对应测试逻辑的实现。在实际开发中,利用CANoe的Test Module模块编写测试脚本,通过socket调用的方式来完成本部分的功能。


基于DDS的SOA测试方案实现(图5)

图 5 CANoe接口实现



四、结果展示


基于如上方案开展测试仿真,在终端内可以看到运行的结果。


基于DDS的SOA测试方案实现(图6)

图 6 结果展示



本文主要结合实际的项目需求探讨了一种基于DDS的SOA测试实现方案,对涉及的测试范围以及在方案实施上的策略和模块等进行了介绍。


实际基于DDS的SOA应用中,根据不同的功能需求对测试的覆盖度要求也会有所不同,为更好展示本方案在基于DDS的SOA测试方面的功能实现,后续将在本文基础上对测试用例开发、脚本实现等做进一步介绍,敬请期待!





关注怿星科技公众号,获取更多资讯


基于DDS的SOA测试方案实现(图7)