一种可配置数据交互流程的嵌入式总线接口测试系统设计与实现

2020-12-08 03:14
计算机测量与控制 2020年11期
关键词:下位测试用例总线

李 智

(中国电子科技集团公司第十研究所 信息中心,成都 610036)

0 引言

随着嵌入式软件在航空、航天、汽车、通信等综合电子系统中的占比也越来越高,其扮演的角色也越来越重要,因此,软件缺陷容易引发灾难性事故,例如1996年,欧洲耗资亿美元的Ariane-5 火箭发射后解体爆炸[1]。软件测试作为发现软件缺陷的有效手段之一,已越来越被重视。构建高效、有效的测试环境是软件测试的前提,嵌入式软件测试由于以下原因存在构建测试环境难题[2-3]:

1)嵌入式软件所涉及的系统外部设备几乎全是专用;

2)嵌入式软件可能由于没有通常的外围设备导致在测试过程中很难进行检测和观察;

3)嵌入式软件与外部系统按照流程进行数据交互,这对测试也提出了更高的要求;

4)现有半实物仿真系统,缺乏测试用例设计、测试用例自动化执行的能力。

目前,国内外对基于总线通信的半实物仿真测试及环境构建进行了有益的探索,通过半实物仿真系统对总线数据构建、与被测系统通信等,实现了对被测系统外围设备的模拟,也解决了测试过程中对数据的检测和观察难题[4-5]。但大部分半实物仿真测试系统缺乏对总线数据交互流程的模拟能力,只能通过二次开发实现,给使用带来了很多的不便。本文针对现有半实物仿真测试系统存在的不足之处,提出一种基于总线通信、收发流程执行控制的嵌入式软件接口测试系统,提高测试环境搭建效率,降低操作难度,以提升易用性。

1 系统设计

1.1 功能设计

系统设计支持多路的MIL-STD-1553B总线、以太网、RS232/422/485总线、CAN总线、ARNIC429总线通信,具有总线数据模拟能力、总线数据激励能力、接收数据识别和应答能力、数据收发流程配置和执行控制能力、基于数据收发流程执行控制构筑测试场景的测试用例设计和自动化执行能力。以帮助开发人员或测试人员实现嵌入式软件外围设备的仿真,实现在与外围设备数据交互过程中的监视和检测,实现模拟外围设备按照流程与嵌入式软件进行数据交互,实现测试用例设计和自动化执行,实现基于总线通信的强度测试[6]。

1.2 硬件设计

为使该系统具有较好的通用性,适配更多被测设备,在硬件上须采用动态可扩展设计,并且具备常用类型总线的通信能力。为解决该问题,整个系统硬件由上位机和多台下位机组成,上位机和下位机通过以太网连接,可以横向扩展下位机。每台下位机可以内置ARNIC429板卡、Moxia卡、100 M/1000 M以太网卡、MIL-STD-1553B板卡、外接USB CAN控制盒,与被测设备连接。如图1。

图1 系统硬件结构图

1.3 软件整体设计

软件包含上位机软件和下位机软件,并分别安装于对应设备。上位机软件在下位机的配合下实现测试工程管理、工程配置、测试设计、测试执行、测试数据发送、测试数据接收、接收数据解析、下位机管理等功能。下位机软件接受上位机的总线参数配置、数据发送控制、保活查询,并实时将总线上接收的数据上报至上位机。

图2 下位机软硬件部署

2 软件设计

2.1 上位机软件设计

上位机软件设计为三架构、功能层、逻辑层和数据层。

图3 上位机三层结构图

2.1.1 功能层设计

功能层是操作人员直接交互的功能界面,包括工程管理、测试工程配置、测试设计、测试执行、测试数据接收和下位机管理六大功能,其中工程管理又包括新建工程、打开工程、关闭工程、保存工程、备份工程;其中测试设计包括被测件功能管理、接口测试用例设计、手动生成测试数据、自动生成测试数据、强度测试设计;测试执行包括接口测试用例执行、自动化执行、强度测试执行;测试工程配置包括设备信息配置、交联环境配置、总线配置、ICD配置;测试数据接收包括数据接收、数据解析、接收统计;下位机管理包括保活功能、总线初始化、总线关闭。

2.1.2 逻辑层设计

逻辑层是上位机向功能层提供工程管理逻辑接口,并0调用仿真配置信息管理模块创建或读取项目配置项信息XML文件,实现向工程管理功能提供的逻辑处理接口。操作人员进行设备信息、交联环境、总线、ICD配置后调用仿真配置信息管理模块提供的逻辑处理接口创建或修改项目配置项信息XML文件。

测试用例设计模块向功能层测试设计功能提供逻辑处理接口。仿真配置信息管理模块向测试用例设计模块返回下位机、总线、ICD信息,测试用例设计模块组织成级联关系集合送至测试设计功能,测试用例设计中前置条件环节,如果需周期发送数据,则在级联关系集合中选择发送方向ICD,确定后测试设计功能根据ICD格式动态生成供用户输入的界面,用户填写具体数据、周期发送时间;如果需条件应答,则在级联关系集合中选择接收方向ICD,再在级联关系集合发送方向中选择应答ICD,确定后测试设计功能根据ICD格式动态生成供用户输入的界面,用户填写具体数据。如果无前提条件设置,可直接添加测试步骤,操作人员根据发送或接收数据,在级联关系集合中选取ICD,并在动态生成的输入界面填写具体值,如果是接收数据需要设置该步骤等待时间,测试用例设计模块按照特有XML格式调用仿真配置信息管理模块固化测试用例设计信息。

测试用例执行模块向功能层测试执行功能提供逻辑处理接口。测试用例执行模块调用仿真配置信息管理模块读取待执行用例的设计信息,形成按时间进程调度发送数据管理模块、接收数据管理模块的控制律,执行过程中发送失败、未接收到数据或接收数据与预期不一致,则测试用例执行不通过,否则通过。

发送数据管理模块接收测试用例执行模块输入的ICD编号和填写数据,调用仿真配置信息管理模块检索出发送ICD格式,与填写数据一起输入数据封装模块,数据封装模块根据ICD格式、填写数据,调用数据类型转换模块组装成消息报文,并在消息报文前添加标有目标下位机、总线、地址或通道等信息的标签,然后调用以太网通信模块提供的UDP协议发送接口将消息报文通过以太网发送至下位机。

以太网通信模块接收到下位机发送的接收数据,将其推送到接收数据缓存,接收数据管理模块不断读取接收数据缓存的数据直到读空为止。

数据管理模块将原始数据推向功能层的数据接收窗口,同时通知数据解析模块。数据解析模块读取一包数据,将标签和数据分开,根据标签中源下位机、总线、地址或通道,以及数据中的类型值,调用仿真配置信息管理模块检索出具体ICD格式,再将ICD格式和待解析数据传递至数据解析模块,数据解析模块按照ICD格式,调用数据类型转换模块对数据逆向解析,然后将解析结果回传接收数据管理模块,再输出至数据接收窗口。

下位机管理模块调用以太网通信模块周期查询下位机,根据下位机应答信息判断下位机健康状态,并上报至下位机管理功能界面,同时向下位机管理功能提供总线操作接口。

2.1.3 数据层设计

数据层以XML文件作为存储载体,存储下位机及总线配置项信息、项目信息、项目总线数据格式、解析配置、测试用例及数据等。

2.2 下位机软件设计

下位机软件设计分为服务层、驱动层。服务层通过以太网向上位机软件提供数据发送、总线管理,总线数据接收服务。

图4 下位机两层结构图

2.2.1 服务层设计

下位机软件启动初始化模块调用数据存储引擎获取项目配置信息,初始化以太网通信模块、总线管理模块,总线管理模块进一步调用数据总线引擎完成各总线的初始化。数据存储引擎初始化时,获取项目配置信息,然后根据信息调用对应以太网TCP驱动、以太网UDP驱动、CAN总线驱动、RS422/RS485/RS232Moxia卡总线驱动、ARNIC429总线驱动、1553总线驱动进行对应总线初始化。

以太网通信模块初始化完成后开始接收并应答上位机软件周期查询,同时,接收以太网数据判断后,如果为总线控制数据,则用总线管理模块进行总线控制,如果为上位机发送数据,则进行解包,得到目的标签和待发数据,再根据目的标签调用数据总线引擎将待发数据发送至对应总线,当数据总线引擎接收到某总线数据时,在接收数据前添加该下位机、源总线、地址或通道的标签,推送至数据接收模块,数据接收模块调用以太网通信模块提供的发送接口将数据发送至上位机。

2.2.2 驱动层设计

驱动层包括了供数据存储引擎读写的项目配置数据,供数据总线引擎实现总线初始化和数据收发调用的以太网TCP驱动、以太网UDP驱动、CAN总线驱动、RS422/RS485/RS232Moxia卡总线驱动、ARNIC429总线驱动、1553总线驱动。

2.3 软件实现流程

系统软件由上位机和下位机软件构成,其软件实现流程,如图5。

图5 软件实现流程

测试工程管理实现工程的新建、打开、保存、备份等。新建工程后,进入测试工程配置,其中包括设备信息配置、测试交联环境配置、总线配置、ICD配置等。如果是打开工程,或已完成新建工程配置,则可进入测试用例设计,其中包括被测件功能管理、接口测试用例设计、手动生成测试数据、自动生成测试数据、强度测试等,该过程是测试执行的前提。测试执行包括自动组包、自动生成校验位、接口测试用例执行、自动化执行、强度测试执行,该功能在上位机的后台执行,并与下位机软件配合完成。在测试执行过程中,涉及测试数据的发送和接收,生成的测试数据分发给下位机软件,通过对应的总线发送给被测件,同时,对发送数据量进行统计。当系统下位机对应通道接收到被测件发送的数据,将上传至上位机,一方面推送至解析功能,一方面纳入接收统计。

3 重要功能实现原理

3.1 数据封装

操作人员在发送界面填写完数据,并发送时触发数据封装功能。上位机软件首先获取该发送的接口定义,其次根据MsgData(具体一条接口定义的XML格式,如:自检命令)中的MsgDataElement(具体接口数据元素,为MsgData的子节点,其属性包含数据类型、长度、值等)定义的数据元素获取用户在界面中的值,同时根据MsgDataElement定义的数据长度、数据类型转为二进制数据,最后根据MsgDataElement在MsgData中的位置,将其拷贝到对应的二进制数组中,最后向总线引擎输出组装完毕的原始二进制数据。

3.2 数据解析

项目初始化时,操作人员需要配置每条总线的数据类型位置,以及每一个数据类型值所指向的接口定义,即MsgData,并设置为解析,形成解析配置。

当数据解析模块接收到一包数据时,根据包头的数据总线标识、解析配置,查询是否解析。如果要求解析,则结合接收数据得到接收数据的类型,从而获得指向的解析接口定义MsgData。将接收数据和对应的接口定义传递给解析递归调用模块,逐一遍历MsgData节点下的 MsgData Element节点,根据节点长度、数据类型等属性,在实际数据获取到具体的数据值,结合枚举值转义等方法,形成数据元素解析,最后组装成接收数据的解析字符串,上报至用户界面。

3.3 条件应答原理

条件应答是指在接收到某条数据后,根据系统设计回复指定数据,例如当接收到自检命令后,反馈自检结果。

条件应答功能实现依赖于数据解析功能。项目初始化时,操作人员需要配置每条总线的数据类型位置,以及所指向的应答数据接口定义MsgData,设置为应答,并在接口定义的每个数据元素MsgDataElemen属性value设置反馈的值[7-8]。

当接收到一包数据时, 解析模块查询该数据是解析还是应答,如果为应答,则结合接收数据得到接收数据的类型,从而获得指向的应答接口定义MsgData,然后将其推送给数据封装模块,发送给被测设备,完成条件应答。

3.4 测试用例设计原理

测试用例设计是基于手动测试数据发送、数据接收、条件应答、结果预判等功能,按照时间轴的方式组合成测试场景,并存储为XML格式。

测试用例可设置周期发送多个数据包的前提条件,例如某些设备在工作时需要以周期应答作为设备在线前提,然后才能执行各种功能。测试用例可添加多个测试步骤,每个步骤由执行顺序、测试输入、预期结果等组成。测试输入分为发送、条件应答和接收,预期结果为某时间范围收到某一包数据。用例设计完成后,以XML形式保存设计数据及逻辑。

3.5 自动化测试执行原理

自动化测试执行实际调用并执行一个或一组以XML形式存储的用例设计数据及执行逻辑,预期接收数据未在指定时间内接收或接收数据错误被判为用例不通过。同时按照时间轴的方式记录执行过程中的收发数据,形成实际测试结果。

3.6 强度测试原理

强度测试功能是在上位机软件强度测试界面勾选具体下位机->总线->发送方向ICD,点击生成测试数据按钮,上位机软件根据ICD各元素配置的枚举值、边界、步进,采用组合方式生成测试数据,操作人员可对生成的测试数据进行选择性删除,得到测试数据集。并对勾选的各下位机->总线设置发送时间间隔。点击执行按钮,系统将生成的数据,按照总线设置的时间间隔进行发送[9]。

4 软件实验结果分析

以某信号处理设备测试为例,该设备总线为以太网,采用UDP通信协议。

4.1 新建工程

根据用户指定的工程名和工程路径新建测试工程。工程管理模块对工程名和工程路径进行校验后在该路径下生成默认的工程配置文件。

图6 新建工程

4.2 总线配置

用户选择总线配置,上位机软件获取BusConfig.xml中所有总线配置信息到总线配置界面显示,用户可进行浏览、新增、删除、修改等操作。

4.3 ICD配置

用户选择消息格式配置,上位机软件获取MsgData.xml中所有消息格式配置信息到消息格式配置界面显示,用户可进行浏览、新增、删除、修改等操作。

图7 总线配置 图8 ICD消息配置

4.4 用例设计

选择某一测试项,录入测试名称,用例描述,设置其周期发送自检命令的前置条件。增加测试步骤1,选择发送启动命令数据,以及发送间隔时间,同时编辑其发送数据,如图10。增加测试步骤2,接收反馈命令,并设置预期其反馈数据和超时时间。

图9 测试用例设计 图10 手动发送界面/发送数据编辑

4.5 测试执行

选择执行测试的用例,启动测试执行。由于接收数据超时,步骤2未通过。

4.6 接收数据解析

下位机软件上传数据包括接收的原始二进制数据,总线类型。上位机软件根据总线类型、协议配置、解析配置等信息,多路数据总线仿真软件获取该报文的接口定义配置。

图11 测试执行结果 图12 数据解析结果

5 结束语

本文针对现有半实物仿真测试系统缺乏总线数据交互流程的模拟的问题,提出一种基于总线通信、总线数据收发,以及基于数据收发流程控制的嵌入式总线接口测试系统设计思路。首先总体阐述了系统的功能设计、硬件设计、软件设计,然后阐述了上位机软件和下位机软件的架构设计,并概述了各层模块的功能和控制逻辑,最后介绍了数据封装、数据解析、条件应答、测试用例设计、自动化测试执行等重要功能实现原理。该系统已进行原型设计,可采用配置、零编码的方式搭建测试环境,并已在多个型号项目中应用,提高了操作人员对测试环境搭建的效率,缩短了为项目定制开发仿真系统的时间,减少了开发定制仿真然间的人力资源。该系统集成测试用例设计和用例自动化执行,缩短了测试人员回归测试的时间。

猜你喜欢
下位测试用例总线
时间触发通信总线监控技术研究
基于相似性的CITCP强化学习奖励策略①
测试用例自动生成技术综述
基于UDS协议的CAN BootLoader的开发与验证
基于STM32和Zigbee的mini宠物智能喂养系统的设计
发射机房监控系统之下位机
基于CAN/LIN总线的LED车灯控制研究
围观党“下位”,吐槽帝“登基”
宝马F02车总线系统
测试工时受限的测试策略研究