APP下载

面向航天软件的半实物仿真测试平台构建

2022-04-28刘会颖任红彬颜明会刘紫阳

大众科技 2022年2期
关键词:线程解析软件

刘会颖 任红彬 颜明会 刘紫阳

面向航天软件的半实物仿真测试平台构建

刘会颖任红彬颜明会刘紫阳

(北华航天工业学院,河北 廊坊 065000)

为了进一步提高软件自动化测试程度,降低在人力、时间的成本投入,并切实提高航天软件测试质量和效率,文章以Qt为开发框架,实现一个基于半实物的仿真测试平台,该平台设计实现了半自动化测试以及用户自定义测试模式,旨在为地面测发控软件提供半实物仿真的测试环境。通过测试,该平台可在Windows系统上稳定运行,满足对航天软件可靠、高效、便捷的测试需求。

自动化测试;Qt;半实物;仿真;半自动化测试

引言

随着航天技术的快速发展,航天软件愈加复杂,智能化、集成化程度不断提高,软件间交互模式和交互类型更加多样化。此外,研制周期逐渐缩短,软件迭代愈加频繁,这些都对软件的测试提出了更多的要求和新的挑战。

半实物仿真是航空航天领域中应用较为广泛的仿真技术,能够实现在不做任何实物的条件下对航天软件进行测试,很大程度上节省了测试成本。航天软件测试的复杂程度大多取决于它的保密性,半实物仿真技术对解决由于设备涉密而无法在真实测试中拿到真正的被测件时有切实的帮助。

目前应用于航天软件中的仿真平台仅支持各类设备之间的通信功能,不具备数据延迟处理、数据发送触发方式、数据分析、数据类型设定等能力。仿真平台利用以太网实现远程通信,传统的软件开发方法是利用Socket套接字来编写程序,套接字本身比较复杂,难以掌握和使用[1]。本文探讨了利用Qt实现半实物仿真测试平台,旨在为地面测发控软件提供半实物仿真的测试环境。

1 平台结构与功能设计

1.1 系统底层工具介绍

Qt是一款跨平台的面向对象的界面设计框架,支持在当前主流操作系统中的正常运行且支持多语言编程,目前通过Qt还衍生了Qt Designer/ Creator等优秀产品。Qt为使用者提供了已完成的封装库,通过信号槽机制连接按键及需要调用的函数,使得各部分的衔接工作更加简便,可以让使用者进行更高效率的开发[2]。

Qt Creator是一款简单易用的开发工具,版本不断地更新使Qt Creator的功能更加丰富强大,支持跨平台运行,使得开发人员能更加容易地在不同的运行环境下完成开发任务[3]。

1.2 系统功能设计

结合对被测件的了解以及平台需要支持的特性,对平台的功能进行整体的设计。平台的功能主要包括能够完成三种类型的地面测发控软件的创建,一是对连接的被测件进行通信测试;二是建立触发半自动化测试技术的命令字;三是添加不同发送类型,发送模式的回令信息。具体的功能如图1所示。

半实物仿真测试平台实现三种通信接口,模拟PLX、箭地系统等多种地面测发控软件,为被测件与外围设备交互提供可靠的通信环境。简单来讲,所有模拟的软件都可以被认为是服务端,用来接收并解析被测件发出的数据,而被测件可通俗地认为是不同通信的客户端,这样解释外围设备与被测件之间的联系,更容易让人理解。

三种通信接口分别为TCP、UDP、串口,以TCP为例,平台运行首先建立新的外围设备,根据外围设备所属类型选择对应的通信接口类型,设置连接参数与对应的配置文件,这里的配置文件指的是包含该设备对应的命令字及回令的XML文件。配置文件设为可选项,若不填写,则有平台自动生成;若填写,利用Qt提供良好的XML解析功能对文件进行读写。Qt中解析XML文件的方式有三种,一种是通过QXmlStreamReader方式,其它两种是通过DOM或者回调函数方式,在选择配置文件进行解析时使用DOM方式。DOM解析通过把整个XML文件都读入到内存中这种方式来构造一个树结构,通过在程序中对树节点的操作来完成文件的读写[4]。

运行设备,监听被测件的连接,接受被测件的连接之后进行数据处理,读入接收数据,对数据按照命令字设定的索引长度进行切割,对比切分得到的数据与设定的命令字信息,匹配成功则触发回令按照设定的发送模式与类型进行数据的回复,多次执行验证回复信息是否能对被测件起到验证作用。

2 软件关键功能介绍

2.1 多线程机制

将耗时的操作放在主线程之外的线程中执行能够有效地解决软件卡顿或异常退出的情况。运行平台,开启设备连接,不可能每次只运行一个设备,这样对于软件的测试效率有着很大的影响。平台使用多线程机制,运行设备,每当一个被测件进行连接的时候就开启一个新的线程。多线程的实现有两种方法,第一种就是继承重写QThread中的run函数,再一种就是使用moveToThread函数来进行线程的转移[5]。这里采用后者的实现方法,从QObject派生一个类,将对收到的数据信息进行解析操作写到该类的槽函数中,启动线程,这样就开始了一条线程的工作,当被测件与设备断开连接时,线程退出。上述的操作都使用到了信号槽机制。

2.2 命令字匹配的半自动测试技术

半自动化测试技术通过命令字匹配来最终实现,仿真平台实时监听被测件请求,解析请求中的命令字,并根据命令字类型完成相应的回复。把需要的回复信息简称为回令,回令是设置在所属命令字下面的。

每个设备下可以添加多个命令字,命令字的类型可分为两种,一种是常规命令字,需要监听请求才能触发的;另一种是定时器触发,由使用者来控制它是否可以被触发。

设置常规命令字时,重点在于填写它的解析值、长度与索引信息,这是信息匹配的依据。将一个设备下所用命令字中的长度、索引、解析值放入一个列表中,当收到被测件发出的信息时开始根据列表中所保存的索引与长度进行信息的切割,将得到的结果与解析值进行比较,若相等,那么则认为命令字匹配成功。该步骤具体算法实现如下:

2.3 执行python脚本

由命令字匹配或定时器触发的回令包括三种发送类型:Data、File、Script。当发送类型为Data时,需要将发送数据设置为包含帧头、数据区、填充字节、校验和CRC、填充字节、数据区长和帧尾的数据。被测件主要是根据收到的回复数据中这些分区对应的信息来做出回应与操作的。帧类型包含Modbus、自定义帧两种,若需要更多可进行扩展。当发送类型为File时,即选择发送文件,文件类型未进行指定。文件发送时将其转为被测件可识别的编码。

若发送类型是Script,即python脚本。这里选择的文件必须是.py类型的,文件内容由使用者根据被测件的需要进行编写,脚本内容中在得到被测件发送的数据之后对其进行操作,返回要回复的信息。

在进行python脚本解析时需要提前进行环境配置,在.cpp文件中添加Python.h的头文件,这是调用python脚本必须的步骤,同时还要配置这个工程的.pro文件,将python的libs和include包含进来。完成这些之后还需要将python脚本文件放在与exe文件同级目录下才可保证正确的执行。解析python脚本文件算法实现如下:

2.4 定时器触发命令字

命令字的触发实现方法分为两种,一种是命令字匹配的形式进行触发,还有一种就是通过定时器的设置进行命令字的触发。传统意义上来说,第一种触发方式的使用性较为广泛,但是对于某些特定的被测件的连接通信要求来说,定时器的触发方式是十分关键的,由于保密性要求,在此就不对被测件进行举例说明了。

单说定时器在QT中的应用,就要涉及到线程的知识,而又是因为平台实现的多线程机制使得在这个基础上实现定时器有一定的困难性,首先需要弄清楚每一条可被开启的线程,其次是在定时器这个线程中做到命令字的触发。功能的增加不能影响平台通信的时效性,因此就要做到将定时器触发命令字放在独立的线程中去实现。

定时器的实现主要是通过设置周期和次数进行的,周期指的是循环发送的周期时间,次数指的是周期性回复消息需要进行的次数。这里的触发和命令字的触发不尽相同,定时器触发不需要对接收到的被测件所发送来的数据进行切分、遍历等一系列的处理。在开启设备且与被测件进行连接成功后,被测件发送数据,仿真设备接收数据,从接收数据开始就已经触发了定时器操作,根据已经设置好的周期与次数进行回令发送。例如周期是1000 ms,次数是3次,则通信方式就是以周期为1000 ms的时间给被测件回复回令。

定时器触发功能的添加并不会影响命令字触发,这两个是在不同的线程中进行处理的,具有同时同步性但是不具有互相干扰及阻塞性,不会出现等待现象或者让步现象。因此在定时器触发的情况下,设备仍然对接收到的数据进行解析,按照命令字进行匹配,解决了对于不同的被测件对测试的不同类别的需求。相关代码段如下:

2.5 回令支持的数据模式

对于数据模式的要求有两种,一种是ASCII,另一种是Hex十六进制。两种模式的提供使得数据的发送更具有扩展性。在添加回令时设置回令的数据模式,一般情况下,在回令的发送类型为File时,数据模式都会设定成ASCII模式,这样方便文字及字母的发送,而Hex多数是在仅发送数据格式时设置。

在与被测件设备进行通信时,传回来的数据经常是十六进制的,也就是说,在仿真设备对被测件发送数据时,仍然需要的是十六进制的支持。在QT封装的通信协议中支持的字符格式是有一定的要求的,其中支持数据发送的write函数中形参仅支持一个字节数组QByteArray,因此,需要将字符串转化为字节数组才能使用此函数进行发送。具体的操作步骤如下:

(1)把十六进制字符串分成一个char数组,循环其中的两个char,这两个char的值一定都是在从0到9,从a到f之间的;

(2)先找到第一个char对应的下标位置,例如:char的值是a,那么下标位置就是10,把数字10转成byte类型,取低4位bit,然后用相同的办法找到第二个char对应的下标数字,取到该数字的低4位bit;

(3)将刚刚取到的两个低4位bit拼在一起,第一个char对应的4位bit为字节的高4位,第二个char对应的4位bit为字节的低4位,这样组成一个完整的8位字节;

(4)循环完char数组,就得到了16进制字符串对应的字节数组。

2.6 其它功能

软件平台提供了辅助工具,帮助使用者进行CRC校验计算、浮点与十六进制相互转换、EB90校验和计算,方便用户在操作数据发送与接收时对数据进行简单的翻译与解读。

平台还提供了日志模块,设置日志模块的主要作用是为了显示设备的运行和停止状态、被测件的连接断开状态、被测件向外发送的信息记录、命令字是否匹配成功与匹配成功后已经发送的数据内容。

用户可根据关键字对日志模块显示的消息进行查找,方便进行数据的正确性判断及查找比对。

根据对当前日志的需求及日后要做的一些处理,平台添加了日志保存功能,方便后期的查看分析与数据整合。

对于新建的设备,由于设备添加模块是在其它的界面上操作完成的,所以在总体界面的左下角添加了设备属性显示功能,只要双击某一设备,它所对应的有关属性参数就会被显示出来,平台主界面如图2所示。

图2 主界面

3 软件平台测试

在软件开发过程中,测试是软件质量保证的关键,是产品发布并且提交给用户的稳定化阶段。半实物仿真测试平台的测试内容主要为程序可扩展性和用户友好性两个方面。

3.1 可扩展性测试

目前基于Windows 7、Windows10这两种操作系统进行测试,将由Release版本生成的myapp.exe执行文件同libgcc_sdw2-1.dll、libstdc++-6.dll、libwinpthread-dll、Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll六个动态衔接库放置于一个文件夹中然后拷贝至两种操作系统中[6]。通过测试发现该软件平台均可以在两种操作系统上平稳运行,软件平台各个模块间切换流畅。

3.2 用户友好性测试

该软件在Windows7、Windows10操作系统上启动时间只需要几秒,测试过程模拟了多个虚拟设备同时运行,未出现异常。软件平台操作紧跟需求,界面简洁美观。

4 结束语

本文设计了基于Qt的半实物仿真测试平台,实现了从虚拟设备创建、命令字、回令添加到命令字匹配到信息发送的基本功能。通过测试该软件平台可以在Windows系统上平稳运行。值得一提的是,该软件平台增加新的回令发送模式,使消息回复的便捷程度提高,不过该平台还仅适用于三种通信接口的半自动化测试,希望将来通过完善实现更多通信接口以及受自动化测试驱动的功能。总之,该软件平台在功能支持上对于地面测发控软件的模拟与测试有着重要的意义。

[1]黄翩,张琼,祝婷. 基于Qt的一个服务器多个客户端的TCP通信[J]. 电子科技,2015,28(3): 76-78.

[2]王连庆,钱莉. 基于QT的3D相机软件系统设计[J]. 软件导刊,2021,20(3): 195-198.

[3]王维波,栗宝鹏,侯春望. Qt5.9 C++开发指南[M]. 北京:人民邮电出版社,2018.

[4]王宏明,林卫永,王泉荣,等. 基于QT的XML文件自动转换方法[J]. 铁路通信信号工程技术,2021,18(2): 88-92.

[5]苏州长风航空电子有限公司. 一种基于QT控件的多线程数据通信方法: 中国,202110074862.9[P]. 2021-05-25.

[6]赖佳路,钟仁明. 基于Qt的瘢痕疙瘩二维放疗计划快速设计平台的构建[J]. 中国医疗设备,2019,34(8): 108-111.

Construction of Hardware-in-the-Loop Simulation Test Platform for Aerospace Software

In order to further improve the degree of software automatic test, reduce the cost investment in manpower and time, and effectively improve the quality and efficiency of aerospace software testing. Taking Qt as the development framework, a hardware-in-the -loop simulation test platform is realized. The platform designs and implements semi-automatic test and user-defined test mode, which aims to provide a hardware in the loop simulation test environment for ground test, launch and control software. Through the test, the platform can run stably on Windows system and meet the requirements of reliable, efficient and convenient test of aerospace software.

automatic test; Qt; hardware-in-the-loop; simulation; semi-automatic test

TP27

A

1008-1151(2022)02-0005-04

2021-09-22

刘会颖(1998-),女,河北唐山人,北华航天工业学院计算机学院在读硕士研究生,研究方向为软件测试。

刘紫阳(1993-),女,河北邢台人,北华航天工业学院讲师,研究方向为软件测试。

猜你喜欢

线程解析软件
禅宗软件
三角函数解析式中ω的几种求法
基于C#线程实验探究
基于国产化环境的线程池模型研究与实现
软件对对碰
睡梦解析仪
电竞初解析
浅谈linux多线程协作
对称巧用解析妙解
即时通讯软件WhatsApp