摘要:软件自动化测试对于航空通信电台至关重要,针对电台测试环境的搭建困难、测试用例的设计与执行的脱节、仪器仪表的手工操作造成测试数据难以复用等问题,提出了一种集成计算机、通信总线、仪器仪表和被测电台的解决方案,并开发了模块化的软件程序来解决上述问题;最终,该系统实现了智能辅助编写工具和“一键式”自动测试,还保存并回溯了测试结果;为测试人员针对电台测试提供了一款功能强大,界面友好,灵活开展测试任务,批量执行测试用例的自动测试平台;实际测试结果证明,该平台明显提高了测试人员的工作效率,实现了自动化测试与批量测试的基本要求。
本文源自王月波; 刘涛; 陈超; 李继秀; 蒲卿路, 计算机测量与控制 发表时间:2021-05-31 《计算机测量与控制》(月刊)创刊于1993年,由中国计算机自动测量与控制技术协会主办。报道内容:1计算机技术、自动测试技术和自动控制技术的研究成果及发展方向的综述与评论;2先进的总线技术、故障诊断技术、系统集成技术以及控制理论在工业领域和军事中的应用;3边缘扫描测试技术、遥测遥控技术和自动测试系统的设计与开发;4动态数据采集与信号处理系统;现场总线与接口技术;机电一体化技术;5嵌入式系统软件、软件测试以及工控组态软件的开发与应用;6集散/分布控制系统,自控/监控系统的开发与应用;7计算机网络与通信、楼宇自动化技术的开发与应用;8先进的测控部件及传感器技术在工业自动测试和控制中的应用;9基于总线技术的智能仪器仪表的设计与开发。
关键词:电台测试;测试代码自动生成;批量测试
我国发展了许多通讯指挥电台,比如短波电台、超短波、高速数据电台。自从无线通信技术问世,它已经得到广泛的推广普及。随着人们对其理解和研究的不断深入,无线通信技术的使用区域正在逐步扩展。现代军用无线电台的功能不局限于话音的传送,还可以实现文本信息,图像信息等数据的传输。通信模式也从模拟信号转变为数字信号,定频发送转变为调频加密发送。
随着现代军事装备技术复杂性的提高。自动测试平台在现代军事装备的开发、检测、维修中的作用和地位变得越来越重要。尽管电台项目较多,其技术指标也不尽相同。但对测试人员来说,核心的测试项目与测试流程都大同小异。并且,对电台的测试是一个复杂的过程,除电台本身外,需要使用大量测量仪器,构造不同的测试数据集等。
航空通信电台是一种安装在飞机上的机载通信设备,为飞机间或飞机与地面间提供视距内双向话音和数据的通信能力,机载航空电台是一个国家掌握制空权的重要手段之一[1]。随着软件定义电台(SDR)概念的提出,电台软件的技术复杂性不断提高[2],软件在电台中的作用越来越大,这对测试电台软件功能的完备性、正确性和准确性提出了更高了要求。
而目前针对电台软件的测试面临如下问题:
1)电台需要连接其他设备才能运行,测试环境搭建困难。电台在真实运行环境下,需要配套多种测试仪器与测试平台,才能进行测试用例的执行。对测试人员所需要涉及的知识范围有较高的要求。不能快速、有效地展开测试。
2)测试用例设计与执行脱节,测试效率低下。测试用例的设计与执行,往往都分开进行。并且在执行过程中可能会发现其他问题,导致用例需要重新设计,并再次执行。使得测试人员需要重复劳动,并且效率低下。
3)仪器仪表手工操作,使得测试用例执行缓慢。目前对测试所需的仪器大多采用手动控制,需要根据具体需求对仪器参数进行设置,造成用例执行时间的不必要浪费,并且手动设置极有可能输入错误,导致用例得出错误结论。
4)测试数据复用困难。在用例执行过程中,可能对同一功能使用大量的测试数据。因此对测试数据的维护、迁移等需要测试人员手动记录或替换,不便于测试数据的复用。
针对以上电台软件测试中的问题,本文运用自动化测试理论,参考基于VXI总线[3]、基于PXI总线[4]、基于GPIB总线[5]、基于CVI平台[6]等电台自动化测试系统设计方案,结合GUI开发技术[7],提出了一种电台软件自动化测试方案,能够有效地解决以上问题,实现电台软件快速、准确地自动化测试,有效提高了电台软件的测试效率。
1系统总体构成
11系统方案结构
航空通信电台软件测试系统由测试计算机、通信总线板卡组、仪器仪表和被测电台组成。测试计算机上搭载了自动测试平台,用来完成测试工程的建立,测试环境的构建,接口消息的管理,测试用例的编写以及测试用例的自动执行;通信总线板卡组完成总线板卡的统一管理,负责与被测电台通信;仪器仪表完成对被测电台的参数测量和结果的返回。其方案结构如图1所示。
本文将主要介绍自动测试平台的设计与实现。并分析了如何通过该测试平台提供的各个功能去解决前文提出的问题。
12平台工作流程
首先在测试计算机中的测试平台上创建或者编辑历史工程。其次需要测试人员针对电台的不同功能设计不同的测试脚本。脚本编辑完毕后,用户可以选择需要执行的用例开始执行,并实时生成测试结果。当所有测试脚本执行完毕后,测试人员需要根据测试脚本的通过情况与发送接收的数据,判断脚本未能通过的原因,如是脚本问题,则测试人员需要对测试脚本进行修改,并再次执行;如是电台软件的问题则需要开发人员修改后再次开展回归测试工作。最终整个测试的工作流程如图2所示。
2平台软件的组成与功能说明
21平台软件的主要组成
自动测试平台的构成由界面层,功能层,传输层构成。界面层是自动测试平台的显示与控制,是用户控制系统的接口。功能层则是测试平台最为核心与基础的构成,包含了6个主要的模块。主要有仪器仪表的控制模块、测试数据管理模块、测试数据生成模块、测试脚本管理模块、接口管理模块以及自动化执行模块。传输层则统一管理与电台和仪器仪表的通信总线,处理平台与电台和仪器之间的数据交互。自动测试平台的软件构成如图3所示。
22功能层模块说明
1)接口管理模块:该模块主要完成电台与外围设备之间接口格式的管理,每种电台与外围设备之间的接口格式各不相同,为了方便管理,必须制定一种统一的格式将接口分解,并将接口属性保存,本模块采用XML的格式进行存储,使用时,通过解析XML文件,将其转换为接口脚本,在测试脚本中使用。
2)测试数据生成模块:该模块主要是根据电台的接口格式生成测试数据,采用的是组合测试数据生成方法,将一条接口抽象成多个变量影响的实体,其中每个变量的取值都是离散且有限的,通过组合测试方法生成满足特定组合覆盖标准的组合测试数据集,可在测试脚本中直接调用该模块生成测试数据,提高用例设计的效率和覆盖率。
3)测试数据管理模块:该模块主要是对可复用的测试数据进行管理,一些通用的电台功能的测试数据抽象成可复用的测试数据,如TOD时间设置,波道参数设置等,这些数据以XML格式保存,在设计测试脚本时,可直接在脚本中导入复用数据从而进行使用。
4)测试脚本管理模块:主要完成测试脚本的结构和内容的管理,为了提高测试脚本的编写效率,内置了代码智能辅助编写工具,可自动根据关键字生成脚本片段和逻辑,包括数据的发送与接收,仪器控制,数据生成和数据导入等。只需要对测试脚本进行修改就可以对不同的测试内容进行测试[8]。
5)仪器仪表控制模块:主要完成仪器仪表的控制,为了使系统具有更好的灵活性和扩展性,该模块将仪器仪表的指令集与仪表控制分离,可灵活扩展新的仪器仪表。
6)自动化执行模块:主要完成测试脚本的自动执行,在使用时,首先初始化测试环境,检查测试环境的完整性和可用性,然后遍历需要执行的测试脚本,将脚本加载到内存中执行,最后反馈脚本的执行结果和执行进度。
3软件的实现
本文的自动测试系统是基于Python语言开发,用户界面使用PyQt[9]进行设计。在系统实现过程中,采用了分层架构,将系统划分为若干层,每一层只解决问题的一部分,通过各层的协作提供整体的解决方案。把电台自动化测试问题分解为一系列相对独立的子问题,每一层只解决其对应的子问题,有效的降低了系统规模的复杂度。同时遵循逐层调用的原则,保证了依赖的逐层性,以及单向性。上下层之间通过接口编程实现通信。通过以上原则设计的自动测试系统具有良好的封装性、扩展性和稳定性。
整个电台软件测试系统包括接口的管理控制、用例的编辑与消息提示、智能辅助编写工具及电台与测试平台的数据通信。这4部分是整个测试系统的核心,也是用户使用该系统中直接接触最多的模块。因此软件的实现将主要介绍上述4部分。
1)接口管理模块。ICD(接口控制文件)文件里包含了平台与电台通信的规范。其内容除开数据本身,还包括了信令码、数据长度及校验和。这3者对电台的任意一个测试功能都是必备的。因此用户在创建一条完整数据时,都需要进行选择与设置。数据位则较为复杂,该数据可以为整型、浮点型、枚举型,还可以为数组。或者将数据进行封装,将多个基本类型的数据进行组合。因此,用户在编写接口时,可以在一条接口中创建子接口,将多个类型的数据进行组合,设定好先后顺序,并且设定数据长度为所有子接口数据长度的总和。那么一条复杂的接口即可编写完成。
2)用例的编辑与消息提示。平台中提供了测试用例代码的编辑与消息提示功能。同任何软件开发平台相同,用户可以自主地进行测试用例的编写。编写的内容只需要符合Python语法即可,并提供了消息提示,将测试用例的输出语句,或者是编写时的语法错误等提示信息重定向后进行打印,用户可以根据提示内容进行修改。其实现方法,则主要使用了PyQt提供的文本控件,并向其中添加各种菜单按钮,最后为其注册响应函数,完成用户操作到底层数据的逻辑处理。
3)智能辅助编写工具。该模块是基于接口管理模块。在整个测试用例的编写中,大部分的代码与逻辑是使用定义好的接口,按照一定的顺序或者一定的取值,将数据发送至电台。因此,提供智能辅助编写工具。首先解析出接口管理模块生成的XML文件。将其转换为模板字符串,并利用Python能够生成代码的特色,将模板语句插入到测试用例中。生成好的模板语句风格统一,并且通俗直白,即使测试人员不具备代码功底,也可以进行编辑并实现测试。
4)通信管理。电台与平台之间的通信方式有多种,并且平台的通信方式需要根据电台具备的通信方式进行设计。因此在实现时还需要考虑后期的扩展问题。最后决定将通信方式进行封装,提供一个Bus父类,该父类中提供两个基本方法:发送与接收。串口、429、网口,都需要继承该父类,并且对两个基本方法进行重写。串口与网口都是调用Python提供的库函数,429则需要调用用户提供的动态链接库文件。如果之后有新的通信方式,也只需要再实现一个子类通信方式,并对发送与接收方法进行重写即可,不会对原有的代码进行调整,更不会影响已经实现的功能。
4实验结果与分析
该自动测试平台已经投入电台项目的测试中,并同时开展了手动测试和使用该平台的自动测试。分别记录两者从分析阶段开始至回归测试完成所需花费的工作日。
41实验步骤
1)将测试人员划分为数量相等的两组测试团队,同时开展手动与使用该平台的自动测试。
2)统计各团队在各测试阶段所花费的时间。
3)将开发人员分为两组,修改待测软件,交付相应测试人员后开展回归测试,统计回归测试花费的时间。
42结果分析
经统计,两团队在各个阶段花费时间天数见表1。
从表1可知,使用自动测试平台测试的总体时间小于手动测试。其中ICD录制时间花费时间较长,其原因在于,测试人员在初次使用时不了解与遵循录制时需要的格式,导致ICD数据需要反复更改。用例设计时间也相对较长,其原因在于,测试人员并不熟悉Python的语法风格,需要一定时间用于保证测试用例的正确性。
综上,如果测试人员熟悉该平台后,ICD录制时间与用例设计时间将缩小。假如其他项目与该项目之间有继承关系,其ICD文件与测试用例文件可以复用,将进一步减少测试人员在这两个阶段所花费的时间。并且在测试结束后,可以给出各个测试用例的通过情况,以及总体测试用例的执行情况,方便测试人员进行总结。所以,该平台在性能、测试速度和效率等方面都明显优于人工测试[10]。通过本次实验可知,ICD文件的录制至关重要,因此在实验结束后添加了ICD校验功能。用户点击保存后会按照相应规则进行检查,并提示用户,提升用户的使用体验的同时也保证了数据的正确性。
结束语
本文介绍了电台软件测试系统的设计和实现,通过实际工程实践,该系统具有如下几个方面的特性:
1)实用性:电台软件测试系统满足快速建立测试环境、梳理通信ICD、辅助编写测试脚本及自动执行的要求,提高测试的设计与执行效率。
2)灵活性:电台软件测试系统通过执行测试脚本,并提供了测试数据生成接口,测试人员可充分发挥其主观能动性,构造合适的测试步骤和测试逻辑,最大限度地发挥测试人员的能力。
3)复用性:电台软件测试系统将消息协议,测试数据生成协议,数据转换协议等封装独立出来,协议可复用。如果项目具有继承性,可复用测试用例和测试数据。
4)扩展性:电台软件测试系统具有良好的扩展性,能够灵活的扩展通信总线和仪器仪表。