航天器数据管理系统软件的自动化测试系统设计
2018-02-28窦钠张红军范延芳王向晖
窦钠 张红军 范延芳 王向晖
(北京空间飞行器总体设计部,北京 100094)
数据管理系统作为航天器的信息管理中枢,负责航天器内部、航天器与地面站或航天器之间的数据传输与处理,因此,数据管理系统的稳定与可靠在很大程度上决定了航天器任务的成败。数据管理系统与航天器内部其他分系统、地面站或其他航天器之间都有数据传输接口,该特性决定了数据管理系统软件的需求变更数量多、频度高,也就导致了重复性测试多、测试周期长、回归测试频繁[1],因此,数据管理系统软件的测试进度与效果,决定了数据管理系统能否按时保质交付,也直接影响着航天器的总装与集成测试工作。
航天器测试一般通过产生一系列的输入(或激励)和测试输出值来验证系统是否满足要求[2]。在传统测试环境中,测试人员在测试设备的支撑下,按照测试细则对各项功能性能进行测试,需要进行大量的手动操作为数据管理系统提供输入,需要对大量的测试数据进行判读,花费时间较长,且测试的有效性也难以保证。虽然随着测试技术的发展,数据管理系统已经引进了一定的自动化测试方法,但依然以人工测试为主,测试周期较长,尤其对于数据管理系统软件常规功能的测试,要花费大量的人力和时间,还经常出现人工判读疏忽导致测试不充分的问题。这些问题最终会出现在整个航天器测试中,在一定程度上影响了整个测试。近年来,我国航天器任务急剧增加,而研制周期却在大幅缩短,这也给人工测试带来了巨大的压力。
本文提出一种针对数据管理系统软件的自动化测试系统设计。该测试系统在虚拟的数据管理系统设备上运行数据管理系统软件,按照预先设计的测试任务规划自动完成航天器遥测功能、遥控功能、总线通信管理功能等的测试,测试过程中不需要人工干预。如果发现非致命问题,则记录;如果发现致命问题,则停止测试;测试完成后自动生成原始测试报告。因此,自动化测试系统对于缩短测试周期、提高测试有效性具有明显的优势。该测试系统适用于航天器数据管理系统在实验室测试软件,其优势在软件频繁更动情况下的回归测试中尤为明显。
1 自动化测试系统设计方案
自动化测试指的是测试过程不需要人员干预,测试人员只要启动测试,后续测试工作由测试系统自动完成。这对测试系统的自动化程度要求非常高,测试系统要能自动识别测试任务、自动产生测试输入、自动判读测试输出数据并得出测试结论。
在传统测试方法中,测试人员能够准确识别测试任务、识别需要完成的操作、查找测试数据的判读依据并进行判读。这些对测试人员来说比较简单的工作,对于计算机系统来说却没有那么容易。因此,自动化测试系统作为一种计算机系统,实现的难点在于提炼出被测系统的各项特征属性,建立被测系统的输入输出映射关系,以便测试系统能够识别并按照约定的规则完成测试工作,抽象出测试任务的结构化模型,形成描述准确的测试任务序列。
基于此,自动化测试系统设计的关键在于:①建立被测系统模型,提炼被测系统的特征属性。这些属性具有通用性,能够表示常见被测系统的关键特性。②建立表征被测系统输入输出映射关系的标准结构数据系统。测试系统通过该数据系统可以准确识别出某输入数据对应的输出数据,从而能够自动判读数据传输与处理的正确性。③通过一种合适的计算机语言准确的描述测试任务的结构化模型,形成计算机可识别的测试序列。
1.1 系统模块设计
针对自动化测试系统设计的关键点,本文将自动化测试系统划分为被测系统模块、基础数据系统模块和测试接入控制(TAC)系统模块,其结构如图1所示。
1)被测系统模块
本文通过虚拟测试(VTEST)工具建立被测系统模块(由虚拟数据管理计算机、数据管理的其他虚拟设备、数据管理系统软件及其他分系统虚拟设备共同构成)。VTEST是一个系统级虚拟平台软件,在自动化测试系统中的作用是构建虚拟数据管理计算机、数据管理的其他虚拟设备及航天器其他分系统的虚拟设备,数据管理系统软件可以不加修改直接在该虚拟数据管理计算机上运行,并且其运行的动态特性与在真实目标机上一致。
2)基础数据系统模块
本文通过电子信息设计系统(EDS)建立基础数据系统模块。EDS将航天器输入和输出的数据进行整合,形成类型、接口、结构、解析方法等统一的航天器基础数据源。EDS为自动化测试系统提供的航天器基础数据包括遥测参数采集波道、遥控指令波道、遥测参数处理、指令使用判读、遥测包、遥测帧、虚拟信道、遥测包调度策略、遥测帧调度策略、总线传输链路等,这些基础数据按照统一标准的数据结构输出,作为自动化测试系统的输入。以遥测数据为例,通过EDS可以明确航天器每个遥测数据的采集通道、处理方法、隶属遥测包及在隶属遥测包中的位置等,这些基础数据即构成航天器的数据流传输路径,经过转换可以形成自动化测试系统的数据监视依据。
3)TAC系统模块
TAC系统模块是自动化测试系统的核心模块,完成配置数据的生成以及全部自动化操作。它根据基础数据系统模块生成的航天器基础数据,生成自动化测试系统需要的TAC配置数据;再根据TAC配置数据中的遥控格式、指令通道等生成被测数据管理系统软件的激励(指令)[2],并将这些指令自动发送给被测系统模块,触发数据管理系统软件运行相关功能。TAC系统模块接收被测系统模块中数据管理系统软件输出的遥测数据,按照TAC配置数据中的遥测格式、遥测通道、遥测处理方法等解析接收到的遥测数据,并判读其正确性。TAC系统模块还监视被测系统模块中的数据管理系统软件与其他被控对象之间传输的总线数据,并进行分析比对;此外,还可以为测试用户提供操作界面,完成自动化测试系统的基本管理工作。
图1 自动化测试系统结构Fig.1 Structure of automatic test system
1.2 测试系统架构
本文设计的自动化测试系统采用分层结构[3],如图1所示。
(1)设备层对应被测系统模块,被测数据管理系统软件在设备层中的虚拟数据管理计算机中运行。
(2)服务层对应TAC系统模块的部分单元,即TAC配置生成单元、中心控制单元和总线监视单元。TAC配置生成单元根据航天器基础数据生成自动化测试系统的TAC配置数据。中心控制单元根据TAC配置数据完成与被测数据管理系统软件的通信,并存储到系统数据库,在需要时从系统数据库中读取测试数据。总线监视单元用来监视被测数据管理系统软件与其他被控对象之间传输的数据,存储到系统数据库。
(3)应用层对应TAC系统模块的部分单元,即上行注入单元、遥测显示单元、数据判读与告警单元,主要用于被测系统模块的输入、输出操作与监视。
(4)数据配置管理层对应TAC系统模块的部分单元(系统数据库、脚本生成单元)及基础数据系统模块。系统数据库存储测试过程中生成的测试数据。脚本生成单元可以生成按时间排列的测试任务表。自动化测试系统按照测试脚本,根据实时调度时钟信号和条件判断,触发相应的测试[4]。基础数据系统模块生成航天器基础数据,供TAC系统模块使用。
(5)测试管理层完成自动化测试系统的全面管理,包括测试文档生成单元、测试问题管理单元、测试日志管理单元、测试脚本管理单元[5]。
自动化测试系统的数据流如图2所示。其中:实线为数据管理系统输入输出的数据流,虚线为自动化测试系统控制数据流。
(1)基础数据系统模块生成航天器基础数据,并将其传输给TAC系统模块的TAC配置生成单元,TAC配置生成单元将航天器基础数据生成TAC配置数据,并传输给脚本生成单元、中心控制单元、上行注入单元、遥测显示单元及数据判读与告警单元,完成相应的功能。
(2)脚本生成单元生成测试脚本,其中的测试任务抽象参数传输给中心控制单元和数据判读与告警单元,其中的测试任务序列传输给中心控制单元。
(3)中心控制单元接收TAC配置数据、测试任务抽象参数及测试任务序列,通过这些数据完成自动化测试的综合控制与调度。中心控制单元和总线监视单元将被测系统模块的遥测数据、遥控数据和总线监视数据存储到系统数据库中。
(4)被测系统模块由中心控制单元控制,按照测试脚本中的测试任务序列运行相应的测试项目;数据判读与告警单元从系统数据库中读取被测系统模块的遥测数据、遥控数据及总线监视数据,按照测试脚本中预先设计的测试任务抽象参数进行数据判读。如果被测系统模块出现致命问题,则停止测试,并输出告警信息;如果被测系统模块出现非致命问题,则记录该问题,并继续进行后续测试,最终生成测试报告。
图2 自动化测试系统数据流Fig.2 Data flow of automatic test system
1.3 测试任务的抽象
一般,数据管理系统软件的测试任务包括上行遥控测试、下行遥测测试、总线通信管理测试等。传统数据管理系统软件测试由人工设计测试用例、编写测试细则并操作完成测试。由于全程人工干预,测试过程中难免因操作失误而出现重复操作、操作较慢等现象,也必然导致测试效率不高,测试周期长。自动化测试系统能够有效完成测试工作的关键在于测试任务的抽象,抽象后的测试任务可通过统一的架构来描述,在测试脚本中生成按时间排列的测试任务表。测试任务启动后,自动化测试系统根据实时调度时钟信号和条件判断,触发相应的测试;TAC系统模块解析测试脚本,从系统数据库中读取相关测试数据,根据抽象统一的判决条件判读被测系统模块输出的数据是否正确,并给出判读结论[6]。测试任务的抽象属性见表1。
表1 测试任务的抽象属性
2 实例验证
2.1 测试方法及流程
应用自动化测试系统进行数据管理系统软件测试的完整流程,如图3所示。测试准备部分由人工完成,测试实施部分由自动化测试系统完成。在初次进行测试准备时,需要设计数据结构、匹配参数、测试脚本等,要完成从无到有的设计过程,花费时间较长,在此基础上,后续更动的工作量会大幅度减少。测试准备工作完成后,由自动化测试系统自动完成测试,自动生成测试报告。相对于传统人工测试,测试过程花费的时间大大缩短。因此,当数据管理系统软件多次发生更动后进行回归测试时,缩短的时间就更加明显。此外,由于不存在人工误判等因素,测试的有效性也明显得到提升。
图3 自动化测试流程Fig.3 Flow of automatic test
2.2 测试结果比对
以某遥感卫星的数据管理系统软件测试为例,经过实际测试对比,自动化测试系统在缩短测试时间方面具有明显的优势,见表2。自动化测试系统的脚本设计过程需要花费的时间较长,测试准备的时间比人工测试时间长,但测试实施时间远远短于人工测试时间,整体测试时间缩短40%。因此,自动化测试系统对于软件多次更动后的回归测试具有明显的优势,开发人员在完成软件开发或者更动后,最多只要1天时间就能完成常规功能的测试,能更好地满足航天器留给数据管理系统软件更动及再交付的时间短的需求;由于不存在人工判读疏忽导致测试不充分的问题,测试有效性大幅提升,有力地保证了航天器数据管理系统可靠性的提升。
表2 测试时间对比
3 结束语
针对航天器数据管理系统软件测试存在的重复性测试多、测试周期长、回归测试频繁等不足,提出了自动化测试系统设计。自动化测试系统测试过程中不需要人工干预,且花费的时间大幅减少,能有效地提高测试效率,避免人工误判带来的测试不充分问题,提高测试有效性。测试过程中配置生成的航天器基础数据为标准接口数据,可以用于整个航天器测试,有助于加快航天器测试进度。本文研究的自动化测试系统,其关键在于测试任务的抽象,目前还只是对一些常规功能的测试任务进行抽象,因此该系统目前可以完成一部分常规功能的测试,后续还要继续深入研究其他功能的抽象以及测试的有效性。
References)
[1] 王向晖,李林.星载嵌入式软件自动化测试技术研究[J].计算机测量与控制,2012,20(1):267-269
Wang Xianghui, Li Lin. Research of automatic testing technology of embedded software of satellites [J]. Computer Measurement & Control, 2012, 20(1): 267-269 (in Chinese)
[2] 谭维炽,胡金刚.航天器系统工程[M].北京:中国科学技术出版社,2009
Tan Weichi, Hu Jingang. Spacecraft systems engineering [M]. Beijing: China Science and Technology Press, 2009 (in Chinese)
[3] 曹袖,黄瀚,王雪平,等.软件定义电网:概念、结构与示例[J].电力系统自动化,2016,40(6):1-9
Cao Xiu, Huang Han, Wang Xueping, et al. Software defined grid: concept, architecture and samples [J]. Automation of Electric Power Systems, 2016, 40(6): 1-9 (in Chinese)
[4] 王冀山,华更新.星载计算机软件自动化测试平台研究[J].航天器环境工程,2011,28(1):72-76
Wang Jishan, Hua Gengxin. An automatic test platform for software embedded in onboard computer [J]. Spacecraft Environment Engineering, 2011, 28(1): 72-76 (in Chinese)
[5] 夏佳佳,邹毅军,周江伟,等.嵌入式软件自动化测试系统研究[J].计算机测量与控制,2016,24(4):22-25
Xia Jiajia, Zou Yijun, Zhou Jiangwei, et al. Research on automatic test platform for embedded software [J]. Computer Measurement & Control, 2016, 24(4): 22-25 (in Chinese)
[6] 潘莉,董振辉,张红军,等.CCSDS空间包在MOIMS领域中的应用[J].飞行器测控学报,2016,35(4):323-328
Pan Li, Dong Zhenhui, Zhang Hongjun, et al. Application of CCSDS space package in MOIMS [J]. Journal of Spacecraft TT&C Technology, 2016, 35(4): 323-328 (in Chinese)