(中国船舶集团公司第七一〇研究所,湖北 宜昌 443003)
摘要:为提高装备软件串口通信接口测试的准确性和快速性,提出了一种串口通信自动化测试方法。详细介绍了串口通信协议的可视化设计以及几种典型测试案例的测试设计。可通过各种方式对串口通信数据进行缺陷测试、压力测试,优化串口通信协议,高效地发现装备软件串口通信的设计缺陷和程序问题,保障串口通信的稳定性和可靠性。
关键词:串口通信接口;自动化测试;方法设计
0 引言
软件测试是一项耗时且开销巨大的工作,装备软件测试主要包括功能测试、接口测试、性能测试、强度测试和冗余测试等。接口测试主要验证接口属于与通通信协议的符合性和准确性。接口测试在装备软件测试中占重要地位。接口测试的测试用例数通常占所有测试用例总量的50%以上甚至更高。串口作为计算机上最常见的通信接口,具有连接简便,拔插相对方便以及传输稳定等优点,在所有通信接口中占相当大的使用比例,因此,若能建立一种快捷方便的串口通信接口自动化测试方法,可以为软件配置项和系统测试节约大量的人力和时间。本文提出的串口通信接口自动化测试方法针对常用的串口通信协议,可通过可视化设计更改通信协议报文内容及报文长度,自动生成指定类型的通信报文,通过设置通信报文发送的主从模式、整组发送、分组间隔发送、报文长度等测试方式,自动测试装备软件串口通信接口中常见的数据接收不完整、丢帧、通信阻塞等问题。还可通过设置报文长度及发送时间间隔对通信链路进行持续的压力测试,以获取测试通信链路的稳定性和通信效率,可高效地发现装备软件串口通信的设计缺陷和程序问题,优化串口通信协议及程序设计。
1 总体设计
1.1 软件开发环境设计
QT作为可跨平台的应用程序开发类库,支持PC和服务器的平台,包括Windows、Linux、macOS等,还支持移动和嵌入式操作系统,如VxWorks、OS、Embedded Linux、Android、WinRT等。跨平台意味着只需写一次程序,在不同平台上无需改动或只需少许改动后再编译,就可以形成在不同平台上运行的版本,为开发者提供了极大地便利。以某装备软件使用需求为基础,本文设计的串口通信接口自动测试软件选择QT5.9开发类库、Qt Creator4.3.1开发环境、MinGW5.3.0 32 bit编译器进行软件开发,适应国产化操作系统及嵌入式软件运行及测试使用要求。
1.2 通信协议设计
确定通讯协议的原则是尽可能的简单以提高传输率,尽可能的具有安全性保证数据传输完整正确。基于这两点,定义的通讯协议主要结构为:协议头+数据长度+数据正文+校验+协议尾。
协议头:协议头确定通讯协议的起始字节,一般为1-2个字节;
数据长度:整条通讯协议的长度,用来判断数据协议接收的完整性,一般为1个无符号整形数据,该项为可选项;
数据正文:包含用户自定义通讯数据,长度及数据类型不定;
校验:一般为数据长度和数据正文所有字节的校验和,校验方式有求和、异或等操作,一般为1-2个字节,1个字节时一般取校验和的低字节;
协议尾:协议尾确定通讯协议的结束字节,一般为1个字节,该项为可选项。
以上通讯协议基本可以覆盖绝大多数的串口通讯协议,使用QT可视化编程,对通讯协议的各个组成部分进行编辑,程序自动生成需要的通讯协议并确定通讯协议接收及解析方式,用来对接收数据进行解析,判断传输的准确性,通讯协议可视化设计编辑界面如图1所示:
图1 通信协议可视化设计界面
通信协议可视化设计界面可根据需要选择协议头数量及数据值(但必须选择一个),决定是否在协议中添加数据长度,编辑正文长度(不含数据长度的2个自字节),选择校验字符长度及校验方式(异或校验只能设置校验长度为1),是否在协议中添加数据尾及设定数据尾数据值。计算校验和文本框用户可根据通信协议具体设计手动调整协议正文内容并重新给出校验和,生成新的通信协议示例。该通信协议可视化设计界面可以满足绝大多数串口通信协议的制定,方便进行通信协议自动生成用于通信协议接口测试。
1.3测试内容设计
在串口通信接口测试中,因通讯链路或软件设计问题,常见的问题主要包括数据接收不完整、丢帧、通信阻塞等问题。
(1)数据接收不完整:接收数据不完整最常见的现象是一帧数据分成两组或多组发送,数据接收处理算法无法准确拼接造成接收错误;
(2)丢帧:因通讯链路不稳定或者通讯协议过长,造成传输过程中数据丢失、乱码,无法准确接收完整准确地通信数据;
(3)通信阻塞:通信协议过长、波特率设置不合理、发送间隔过小,通讯链路无法实现稳定数据传输,造成接收数据堵塞;
针对以上问题,通过设置数据整组发送、分组间隔发送,测试串口通信的数据接收不完整问题,通过调整通讯协议长度、每帧数据发送间隔等措施测试通信阻塞问题,测试通讯链路的稳定性和通信效率;通过将测试软件部署在测试装备上进行拉距试验或施加通信干扰等措施,测试通信软件通信的稳定性,计算传输的准却性及丢帧率。通信测试模块的设计界面如图2所示:
图2 通信测试模块的设计界面
测试时可根据测试设备通信协议可视化设置发送和接收通信协议格式,打开串口接收或者发送指定格式的串口数据,测试软件接收、校验、解析及分组接收功能、通信链路准确性及稳定性等功能性能。
2 测试软件工具运行流程
测试工具软件未使用任何第三方插件和库文件,经编译后运行于嵌入式设备、通信设备系统或PC机,通过设定指定的发送数据向外发送串口数据,通过设置指定格式的接收数据通信协议自动接收解析通信数据,通过分析接收数据包数量、校验和、大小是否匹配发送端通信协议来判断串口通信链路是否正常,通过调整分组间隔发送时间测试接收端是否具备数据接收拼接功能,通过调整自动重发时间间隔测试通讯链路性能指标。
可内置于通信设备系统或 PC 机运行,测试工具[12],同时调整 RX 和 TX 时间间隔可衡量通信链路的传输压力指标。自动测试工具软件的设计逻辑流程如图 3所示:
图 3自动测试工具软件的设计逻辑流程图
3 应用测试
以某装备软件远距离遥控通信测试为例,使用自动测试工具软件进行通讯接口传输稳定性测试。某装备使用无线电台进行远程遥控操作,其主要通信功能是下位机没间隔500ms发送一帧装备状态信号,上位机接收到通信信号后立刻返回一帧控制数据。下位机通信数据报文总长度112字节,上位机控制报文总长度56字节,为检验通信报文长度设置的合理性、通讯链路稳定性,使用自动测试工具软件模拟下位机软件与上位机控制软件通过无线电台进行远距离无线通讯,将下位机数据发送间隔设置为300ms检验通讯链路超压传输能力,测试软件界面如图4所示:
图4 通讯链路稳定性自动测试结果图
如图4所示,远距离通讯测试压力循环发送5768帧数据,上位机均准确接收解析并给出反馈结果,证明串口通讯参数设置及通讯协议设置合理,未出现通讯异常,有效检验了串口通讯参数及通讯协议设置的合理性。
4 结束语
本文介绍了一种串口通信自动化测试方法及具体实现,并通过该软件对某装备远程串口通信链路稳定性实现了自动化测试,有效检验了通讯链路的稳定性及通讯参数、通讯协议设置的合理性。使用该软件还以进行根据需要进行通信数据检验、通信软件模拟等工作,高效发现通讯软件接口问题,提升软件测试工作准确性及速度,保证型号软件的开发质量。
参考文献
[1] 王晓丽.基于串口通信的摩托车前照灯检测[J].小型内燃机与摩托车,2009.
[2] 焦圣喜,于天暝,冯国亮,等.数字仪表与TMS320LF2407A串口通信的实现[J].仪表技术与传感器,2010.
[3] 何东,陈古波.基于C8051F020智能车载终端的多串口扩展设计与实现[J].科学咨询(科技·管理),2016.
[4] 曹忠成.串口扩展芯片GM8125在多功能车载移动终端中的应用[J].现代电子技术,2006.
[5] 杨娟;刘豪睿. 一种车联网智能终端系统设计[J].物联网技术,2021.
[6] 王晓丽,李平.RS232串口通信在摩托车排放测试中的应用[J].西安工业大学学报,2007.