了解汽车电子行业的人,近几年可能经常见到一个词“soa”,那soa具体是什么?作为测试人员应该要测试哪些内容呢?这篇文章就简单给大家介绍一下。
01soa是什么?
soa(service oriented architecture)是一种面向服务的架构,最早应用于it行业,虽然行业内对于soa的定义没有一个统一的描述,但是总体而言,soa把功能定义成为服务,服务带有明确的可调用接口,并可以通过网络调用。
在汽车领域,对于高性能计算平台而言,为了实现域控制器以及区域控制器之间的互联互通和软硬分离、缩短开发周期等优势,也引入了soa的概念,而some/ip(scalable service-oriented middleware over ip)协议就是汽车领域实现soa时常用的一种中间件协议。
02some/ip服务的通讯机制
服务是实现某种功能的方法或函数,基于c/s架构可以分为server(服务提供方)和client(服务消费方),通过服务接口描述服务及服务的内容,其接口类型及通讯机制如下:
method:client端向server端发送请求报文
· rr-method——server端回复响应报文
· ff-method——server端不回复响应报文
rr-method
(request/response)
ff-method
(fire&forget)
event:client端订阅一个服务,server端发布该服务
event
field:· setter/getter——client端请求获取/设置某一属性/状态· notifier——client端订阅某一属性/状态后,server端发布该服务,发布条件同event,不同的是订阅后server端会立即发送此field的内容
get/set field
notifier field
03soa服务测试内容及环境搭建
some/ip协议的底层是通过以太网实现的,基于service的控制器之间对服务的调用流程,以及基于service的控制器和基于信号(signal)的控制器之间对信息的传输,都需要在软件开发过程中进行验证,一般划分5个方面测试soa的性能。
sd测试:服务的订阅/发布测试
接口和参数测试:测试服务的每一个interface,以及interface对应的参数
功能测试:测试特定输入/场景下的soa功能输出
压力测试:多个客户端同时调用某服务的测试
系统测试:服务的嵌套调用
进行soa测试首先要能与dut建立通讯(can(fd)/lin/以太网),能控制dut上下电和唤醒,可以参考以下的测试拓扑来监控dut的通讯,同时模拟传统的can(fd)/lin网络节点,以及服务的client/server与dut建立连接,测试dut实现some/ip服务的状态。
04soa服务接口测试
现在,通过一个实例来讲解soa接口测试的内容和测试方法。
首先,需要提供服务接口的需求规范、服务矩阵(ethernet matrix)、服务数据库(arxml),如果涉及到s2s(service to signal)的接口,也要提供相关的can(fd)/lin数据库文件。
测试需求
以bodydoorlock服务的rr method接口lockreq为例,dut作为server,tester模拟client。接口包含两个请求参数(source,req),和一个响应参数(result)。
测试规范
根据需求规范的描述设计测试用例,测试用例需要覆盖接口的通讯机制,接口参数值以及s2s。可以参考思维导图的方式解析需求,并设计测试用例。
测试工程
首先,要在canoe工程中添加some/ip数据库文件,在canoe界面点击“simulation > system and communication setup > import data source > 选择对应的arxml文件 > finish”。
然后在“system explorer”中,绑定bodydoorlock为some/ip服务。
canoe工程导入对应的数据库之后,可以跟dut自动建立服务的发布和订阅,也可以自动的解析服务接口的参数。测试工程师不需要考虑底层逻辑的实现,即服务发现(service discovery)和序列化等过程,只需要考虑接口层的使用即可。
如何在capl脚本中实现接口的调用和响应参数的检查,可以参考vector的示例,开发测试脚本如下,对can信号的检查不再赘述。
05注意事项
在整个测试过程中,或多或少会出现一些测试问题,这里根据常见的问题简单做个总结:
tips1
client和server对应都已经发送find service和offer service,但是canoe和dut之间不能自动完成服务的订阅?
► 这种情况要在log中检查ip地址、mac地址、vlan、serviceid、instanceid、majorversion、minorversion、tp port等参数与定义的服务是否一致,如果不一致则可以在“edit system data > model editor”中修改这些参数。也可以在model editor中修改服务的接口参数,订阅关系等。
tips2
当仿真发送的参数是不定长数组时,canoe发送报文失败?
► 模拟发送不定长数组的时候需要先定义数组的长度。
tips3
定义参数名称的时候使用了key,message等已经被canoe使用的关键字,调用这个参数的时候,canoe报错?
► 如果发现数据库中的参数包含这些关键字,可以在model editor里面修改参数的名称,再重新调用即可。
以上就是soa测试的主要内容,篇幅有限,更多的细节就不一一赘述了,如果你有其他问题,欢迎留言探讨
冰豹Kain120电竞游戏鼠标高清图集
骨传导耳机是不是智商税?骨传导耳机适合什么人群使用
三维封装技术介绍
【精彩预告】2017全国LED显示应用技术信息交流会
关于大功率瞬变抑制TVS二极管的详细介绍
关于SOA测试的主要内容
万维网已30岁了!万维网的演变和影响是惊人的
TI DLP NIRscan Nano评估模块可快速确定纺织品成分
与 M5Stack 和智能手机的双边蓝牙通信
卷积神经网络存在根本性的缺陷解析
Flexiv非夕首批百台自适应机器人在华南制造中心顺利投产下线
究竟人工智能是否可以解放医生的双手,全身心的投入到病人身上?
智慧城市的发展将离不开CIM引擎
嵌入式常见笔试题收集
“智”敬每一位用户,威马M7的加入为你带来更完美出行体验
教你几种电路分析的高效方法
基于ARM的视频监控终端的设计与实现
iPhone11使用体验分享告诉你iOS13.1要不要升级
何以在第三代半导体技术中遥遥领先?
OPPO Find9将发布两款 同时用骁龙835和653芯片,期待吧!尖叫吧!