一种飞行软件姿控功能自动化测试技术
2014-06-09许春来
张 舒 许春来
北京航天自动控制研究所,北京 100854
一种飞行软件姿控功能自动化测试技术
张 舒 许春来
北京航天自动控制研究所,北京 100854
自动化测试可以提高测试效率,节省人力,但现有的通用自动化测试方法难在航天型号软件测试过程中套用。本文研究某航天型号软件功能和结构特点,总结现有的测试重用方法,设计具有针对性的自动化测试方法,并实现了自动化测试工具。实践证明,该自动化测试工具可以达到简化测试过程,节约人力成本,推动测试方法重用进程的目的。
测试;自动化;飞行软件
计算机应用在航天系统中越来越深入,飞行软件作为航天飞行控制系统的神经中枢,其质量保证已成为航天系统质量的关键要素[1]。
目前,针对飞行软件的确认测试覆盖的测试活动包括测试需求分析、测试用例的编写和执行、测试结果的判读。以上工作若全部由人工完成,工作量很大。实际测试过程中,很多工作是重复的、流程性的、细致琐碎的,这些工作更适合用计算机来完成,以此降低测试的时间和人力成本。
对飞行软件中姿态控制模块而言,模块本身具有很强的独立性、封装性,适合通过仅对模块的入口、出口变量进行注入和采集的方式对其进行功能验证,使测试过程更接近于黑盒;同时其功能特点是计算繁多且复杂,虽然不同类型的计算之间耦合性、关联性较强,但功能隔离的方法较为成熟和通用,且不同型号软件之间的姿控功能和测试方法具有一定的近似性和重复性,因此具备开展测试执行自动化相关研究的基础。
1 姿态控制功能与测试原理
火箭姿态控制系统是飞行控制系统的一个重要组成部分,其作用是控制姿态、保证飞行的稳定性、使火箭飞行达到预定的目标。
依据多个型号飞行控制软件任务书姿态控制模块的内容,总结出在多数情况下,姿态控制模块的输入为程序角、姿态角、角速度、导引量,这些输入量进一步加工为三通道姿态角偏差,限幅后的角速度和导引量。增益计算和网络计算部分是软件中实现的核心环节,如图1所示。增益计算结果一般作为权值与网络计算输出相乘。控制方程计算生成的控制量经过解算或者非线性指令转换后生成伺服控制量和喷管控制命令码,由综合控制模块输出到执行机构[2]。
一般情况下,图1中每一个方框中的内容为飞行软件姿态控制模块测试的关注重点。经过分析,可以将以上关注点分成2个类型:1)复杂计算类型;2)数据加工处理类型。
图1 姿态控制系统软件实现框架
姿态控制功能中包含的复杂计算主要有网络计算和增益插值计算。网络计算是飞行控制算法离散化后差分方程的具体实现,为了保证计算的实时性,软件实现时采用了前后台计算等技巧。设计网络计算功能的测试用例,需要将控制理论和软件测试方法结合起来,基于控制系统的时域分析原理,测试时选择0-1阶跃信号作为测试输入,并观测网络计算的输出值是否与理论值一致。网络计算测试具有特殊的测试约束:
1)在输入0-1阶跃信号前应预先将网络计算输入置为0,设置时间需要超过网络的动态稳定时间,即网络输出需要被清0;
2)为了更清晰的观测测试结果,需要隔离其它计算对网络计算的影响,例如增益计算等,因此需要采用必要的数据隔离措施;
3)需要进行连续的网络计算测试,网络计算本身具有迭代特性,因此单拍测试不能全面反映测试结果。
增益为控制方程中的一组系数,一般配合网络使用,增益计算一般是根据插值表进行插值计算。为了获得更为直观的测量结果,且保证覆盖全面,应输入线性增加的输入值,考察系统连续多拍的状态输出。与网络测试原理相同,其测试也需要隔离其它计算对增益计算输出的影响。
数据加工处理有多种类型,其中比较典型的有限幅处理、角穿越处理和非线性处理等,下文中讨论2个最具代表性的测试项:限幅处理是对角速度、导引量或者某些输出控制量绝对值最大值的限制。被限幅变量一般有2种类型:1)量值限幅,这种限幅往往可以在姿控输出端直接观测到;2)变化率限幅,需要通过分析某些输出量相邻周期的差值间接观测到。测试限幅通常的方法为:1)注入幅值渐增的正弦波测试量值限幅:①能够全程监控被测变量由不限幅到被限幅的状态变化,②当被测变量绝对值接近限幅值时,其变化逐渐平缓,更易于对临界点附近进行观测,如图2所示;2)注入幅值较大的三角波测试变化率限幅:变化率的值难以由测试获得的数据直接得出,需要通过观察受变化率影响的量值间接推导出变化率的值,在被限幅的变化率未达到最大值时,被限幅的增量随时间线性增加,而受增量影响的被观测量随时间推移呈抛物线;当被限幅的变化率达到最大值并继续增长时,此时限幅功能起到作用,被监控变量增量不再变化。此时被监控变量斜率不再变化,为直线。用该方法观测变化率的限幅情况更易于判读结果;3)限幅功能的测试同样应采取必要的隔离措施,以屏蔽其它计算对该功能的影响。
图2 考察限幅功能输入与预期输出图
通过对一些型号飞行控制软件进行分析、考察,发现很多软件中非线性处理的算法需求是相同或近似的,其输出由软件的当前输入和上一周期的输出共同决定,其函数实现呈现出逻辑结构复杂的特点。非线性输出原理如图3所示,非线性函数的特性由Emoa和m的值决定。为保证测试的充分性,以图3为例,用例设计思路为:
1)自变量取值区间的划分:根据非线性函数特性,可以将其输入域分成6个区间。其中,区间II和区间V依赖于上周期的状态不同,可能存在2种不同的输出;
2)状态切换路径全覆盖:总结出全部可能的取值区间之间的转移方式,其中由于区间II和区间V有2种可能的值,所以每个由这2个区间为起点的状态转移都要考察2次,总共有40种待考察的转移方式;
3)考察连续状态切换的正确性:使用幅值大于Emoa的正弦波考察非线性函数的连续输出特性是否正确。
图3 非线性函数值域图
2 自动化测试工具
2.1 自动化测试工具功能需求分析
根据姿控模块自身特点和测试方法,自动化测试工具应实现用例设计、被测软件和全数字环境3者的有机整合。通过测试脚本的自动生成技术,完成测试用例设计和用例执行的自动衔接。以界面的方式提供测试者对测试用例各元素的设定,并通过测试脚本完成上述信息的组织、融合和管理,并驱动运行全数字测试环境,实现测试数据的注入和采集,完成动态测试用例的执行。因此,该工具生成的测试脚本应包含如下信息和功能:
1)应能够实现被测软件变量名和内存地址间的自动映射,支持测试过程中对内存数据离散、批量的更改和监控;
2)应具备用例加载与程序运行状态、时间的关联能力,支持测试过程中开展由条件(事件)驱动的、非持续(或随机性)测试信号(故障)的注入;
3)应支持姿控测试典型的输入信号的设定和注入,至少包括需要的正弦波、三角波、常值、0-1阶跃信号和特定离散信号的生成等;
4)应支持姿控各功能的动态隔离处理;
5)应具备测试脚本的自动生成功能;
6)应具备测试结果的自动判读功能;
7)应具备方便测试人员进行测试信息输入、设定、管理的用户友好的界面;
8)应具备测试信息历史记录的磁盘存储和读取功能。
2.2 自动化测试工具实现
基于以上需求,设计了针对飞行软件姿控模块测试脚本自动生成工具,并实现对测试结果的自动比对。程序设计为界面、逻辑和数据3层结构,如图4所示,虚框内为自动化测试程序部分。
图4 自动化测试程序结构图
程序界面为测试人员与软件所实现逻辑的接口。界面外观如图5所示,提供以下接口功能:
1)提供输入飞行软件中的网络和增益名,进行网络和增益的添加、操作、修改其属性的操作接口;
2)提供现有网络、增益、变量属性状态信息的显示窗口,该窗口由VC++提供的CListCtrl类实现;
3)提供针对软件实现的网络和增益数据结构格式的设定接口;
4)提供监控变量的添加、删除、更改、屏蔽的管理操作功能接口,用于测试人员在测试之初指定飞行软件中的姿态角、程序角、角速度等输入变量,期望摆角、控制摆角指令、控制信号输出等输出变量;
5)提供变量注入形式的选择接口,其待选的选项有:0-1阶跃、常值、正弦波和一些特殊的值。
逻辑层的主要功能是:
1)根据用户的操作实现网络、增益的添加、删除、更改等数据管理功能,定义为网络或增益类内部的功能函数。网络或增益类的属性包括:网络或增益名,程序中数据段首地址,级数,所属段,屏蔽设定。程序中实现扫描map文件自动确定全局变量地址的功能,自动实现网络或增益首地址的查找。其数据管理由VC++提供的迭代容器实现;
2)根据用户的操作实现注入与监测变量的添加、删除、更改等数据管理功能,定义为变量类内部的功能函数。变量属性包括:变量名,程序中数据段地址,在被测程序中相应操作在代码段的位置,操作类型,是否执行此操作。程序提供扫描汇编指令的功能,即根据测试人员输入的数据注入或监控在被测程序中的位置(文件,行数),自动生成对应的指令PC值,实现操作的定位。对应于不同的操作类型,变量还有一些特殊属性,如监测时间域,网络阶跃时间点、正弦波幅值周期等.其数据管理同样由VC++提供的迭代容器实现;
3)生成测试的脚本,可用于驱动全数字仿真平台的执行。生成脚本的程序实现,也可以定义为网络、增益或者变量类内部的函数,当接收到生成脚本命令时调用这些方法。在容器中存储的每一个网络、增益产生多条屏蔽脚本,更改其参数,屏蔽网络或增益的影响。变量的对象可以生成一条或多条实际的脚本,来实现其属性信息描述的操作;
4)对于一些飞行软件姿控模块的功能点可以自动生成一套标准预期数据并与实测数据进行对比。
存储层存储或读取已有的网络或增益信息、测试信息、历史数据和被测软件信息,以便于进行测试过程的管理和复用。
图5 自动化测试程序界面
3 验证情况
3.1 生成测试脚本正确性验证
自动化脚本生成工具目前已在航天某型号飞行软件的回归测试过程中进行了试用。以验证非线性函数生成控制指令这一测试项为例:
1)脚本自动屏蔽网络、增益对非线性的影响;
2)自动生成覆盖所有状态切换的离散数据;
3)测试结果的自动比对。
图5展示了用户输入操作该用例时自动化测试程序的界面,图6为全数字仿真平台运行结果与预期结果数据,预期结果由程序自动生成。进行本次回归测试执行的多个用例证实,自动测试程序生成的脚本与比对结果均与实际情况相符,与人工方式编写脚本和比对结果的效果相同。
图6 软平台生成的结果与预期结果比对记录
3.2 测试效率与适用性分析
使用自动化测试工具进行型号飞行软件姿态控制模块的测试,需要测试人员按照如下步骤自动生成测试脚本:
1)测试输入输出变量的梳理,包括姿态角、程序角、角速度、控制量、期望摆角、控制摆角、控制指令等姿控模块的输入输出参数格式设定;
2)网络和增益的变量名称和级数设定,确定网络和增益相关变量的存储格式;
3)各变量输入信号的设定;
4)相关功能的隔离设置。
测试人员只需在测试开始阶段仅执行一次步骤1)和2)。经过对多个型号飞行软件姿态控制模块的分析得出,该自动化测试方法和工具提供的变量注入类型适用于飞行控制软件姿态控制模块的测试过程中,其支持生成的脚本在多个型号上的增益计算处理、网络计算处理、网络平滑处理等80%以上的配置项均被适用。
4 结论
归纳总结了飞行软件姿控模块典型的测试用例设计方法,并在测试执行环节进行自动化尝试。降低了测试执行过程中人为参与的比例,使测试执行呈现了更强的灵活性、适用性和规范性,测试效率显著提高,尤其对回归测试的质量和效率的提高具有实践意义。
本文研究的测试方法和工具,在应用领域和适用性上存在一定的局限性,未来需要进一步抽象软件模型与用例,将测试的自动化拓展至用例生成层面,同时可针对更多类型的软件功能,开展更广泛、覆盖性更强的自动化测试方法的探究。
[1]周涛.航天型号软件测试[M].宇航出版社,1999.
[2]徐延万.弹道导弹、运载火箭控制系统设计与分析[M].宇航出版社,1999.
[3]王翼山,华更新.星载计算机软件自动化测试平台研究[J].航天器环境工程,2011,28,(1):72.
[4]Mark R Blackburn,Robert D Bussed.T-VEC:A Tool for Developing Critical System[C].Proc.11th International Conference on Computer Assurance,1996.
[5]Mark R Blackburn,Robert D Busser,Joseph S Fontaine.Automatic Generation of Test Vectors for SCR-Style Specifications[C].12th Annual Conference on Computer Assurance,1997.
[6]武方方,孔祥梅,杨蕾.采用形式化建模实现测试用例的自动生成技术[C].第三届中国导航、制导与控制学术会议,2009.
[7]高金源,夏洁.计算机控制系统[M].北京:清华大学出版社,2007.
An Automated Way of Testing for Flying Attitude Control Functions
ZHANG Shu XU Chunlai
Beijing Aerospace Automatic Control Institute,Beijing 100854,China
Automatic testing is an effective way to reduce time and human labor.However,the current way of testing to approach automation is hardly to compatibly use in the field of aerospace.Thus,a methodology is tried to develop,which is focused on testing a certain sort of software within specific function and structure and based on the testing cases reuse technique.And the methodology proposed is proven that it can effectively simplify the process of testing and also save time and human work by the real case practice.
Software testing;Automatic testing;Flying software
V448.15
A
1006-3242(2014)02-0013-05
2013-11-04
张 舒(1989-),男,北京人,硕士研究生,主要研究方向为软件测试;许春来(1978-),男,吉林人,高级工程师,主要研究方向为嵌入式软件测试与验证技术。