民用飞机机组告警系统试验室自动化测试技术研究

2016-05-14 09:31王焕宇
科技创新导报 2016年6期
关键词:自动测试脚本

王焕宇

摘 要:该文实现了机组告警系统逻辑设计结果到试验用例、试验脚本与试验结果自动测试工具的开发,能够自动化生成测试用例、脚本与结果,节省了大量试验用例与试验脚本开发时间,保障了对设计逻辑的准确读取分析,避免了人为出错,实现了试验结果的自动记录与保存。基于此测试脚本自动化生成工具,也可以应用于发动机指示页面、主飞行显示器指示、简图页、机载记录系统、机载维护系统等逻辑复杂、参数较多、需大量开发测试脚本的试验应用当中,具有很强的扩展性。该文成果应用于某型机组告警系统逻辑试验室验证中,取得了良好效果。

关键词:脚本 自动测试 后缀表达式 机组告警系统 Python

中图分类号:TP206 文献标识码:A 文章编号:1674-098X(2016)02(c)-0007-05

Research on Auto Test About CAS System of Civil Aircraft

Wang Huanyu

(State Key Laboratory of Civil Aircraft Flight Simulator, Shanghai Aircraft Design and Research Institute, Shanghai, 201210, China)

Abstract:With results accurate, it is achieved that test case, test script and test report are generated automatically from CAS (Crew Alert System) design, which is time saving.It can be applied to other tests also, i.e. The Engine Indication test, Primary Flight Display test, Synoptic Page test, Flight Record System test and Onboard Maintenance System test, which are characterized with a great quantity of parameters, complicated logic and numerous test python scripts to be developed. Dedicated to a CAS test for a certain system, this tool works well as expected.

Key Words:Script; Auto Test; Suffix Expression; Crew Alert System; Python

民用飞机机组告警系统与IMA、显示系统、灯光告警系统、音响告警系统集成程度日渐提高,飞机各系统通过不同级别的机组告警信息提示飞行员,告知相应的系统状态,以便飞行员采取相应的处理程序。这给系统设计与取证带来了难度,也给系统地面集成验证试验带来了挑战。该文通过研究某型民用飞机机组告警系统架构与试验平台功能,开发了一套自动化测试脚本生成工具与交互界面,让大规模批量、全逻辑覆盖的试验成为可能,大幅提高了试验效率,在系统级需求验证试验中取得了很好的效果。

1 民用飞机机组告警系统架构

某型民用飞机机组告警系统由驻留在IMA中的应用软件、主警告灯、主警戒灯、音响告警抑制开关及下视显示器等组成,通过显示文本、离散通告、语音警告、灯警告或以上组合给飞行员提供警告、警戒、提示及状态等机组告警功能。驻留在IMA中的机组告警系统应用软件接收来自飞机各系统的状态输入,按优先级顺序通过下视显示,并能通过控制板进行翻页等选择。当需要时,提供音响告警和驾驶舱灯驱动提供触发信号,为飞行员提供音响和灯警告。机组告警优先级排序级别定义如表1所示[1]。

为了避免在一定阶段出现不必要的警告,给机组带来操作负担和干扰,机组告警系统会对一些特定的告警在特定的时间、构型和飞行阶段进行抑制。系统架构如图1所示。

2 民用飞机航电系统集成试验平台架构

某型飞机航电系统集成验证平台(System Integration

and Verification Bench,SIVB)是一套用于航电核心处理系统、显示系统、机载记录系统、机载维护等系统集成验证大型试验设施,具有系统仿真、数据切换、数据采集与处理等功能。系统集成验证平台集成了机载系统接口控制文件(Interface Control Document,ICD)的数据信息,通过仿真数据网络(Common Simulation Interface,CSI)与配套A664、A429、A825、离散、模拟等航空总线接口I/O板卡,可以将系统仿真数据通过真实机载数据接口与机载系统进行通信与交互,从而实现系统仿真的功能。通过数据采集系统(Analyzer)实现将真实机载网络数据采集并发送到仿真数据网络中,供系统集成验证平台读取,并能够按ICD数据格式进行解析、显示和处理。整个系统架构如图2所示。

3 机组告警系统逻辑自动化测试方案

如图3中所示,使用航电系统集成验证平台有3种基本方式能够输出系统仿真器数据,如系统A仿真器可以通过以下方式输出真实物理接口的数据参数。

(1)在数据采集软件Data Browser上直接改写相应的参数值。Data Browser可以将采到的数据按照ICD的格式进行显示,即Data Display功能。也能通过在相应的ICD参数上赋值的方式进行数据设置,即Data Set功能。该方法使用简单,能够直接操作对应参数,但不适用于大规模的、需要反复进行数据设置的情况。

(2)在脚本执行器Script上输入一条命令行,如执行A664.

Message1.DS1.Parameter1.Vaule=100,则参数Parameter1会设置成100,并通过系统A仿真器的真实A664接口板卡进行数据发送。该方法使用也较简单,当但也不适用于大规模的、需要反复进行数据设置的情况。

(3)将需要执行的命令通过Python脚本,同样由Script进行执行,则可实现大规模的或需要反复进行数据设置,但若人工编写测试用例较多的试验脚本时重复劳动多,工作量巨大,有出错的可能。

该文针对第三种实现机制,设计了从机组告警系统设计需求逻辑自动导入解析,自动生成测试脚本(如图4),自动生成测试结果的工具及流程,实现了测试的自动化。

该文使用的软件如下[2]。

(1)Microsoft Office,Excel,2003。用于记录机组告警系统的逻辑,及每条逻辑对应的ICD信息。

(2)PyQt,PyQt4-4.11.4-gpl-Py2.7-Qt4.8.7-x64。用于设计GUI用户界面。

(3)Python,python-2.7.11rc1.amd64。用于开发及运行脚本。

(4)Pywin32,pywin32-219.win-amd64-py2.7。用于使用Python开发win32应用。

(5)XLRD,xlrd-0.9.4.tar。用于读取Excel的python模块。

(6)Pyinstaller,pyinstaller-2.0。用于将.py文件转化为.exe文件。

测试脚本生产流程与关键点如下。

(1)读取表格中的逻辑表达式。如图5所示,设计用户界面,选取相应的Excel逻辑文件,并对逻辑进行去空格等预处理,判断该系统有几种等级的机组告警信息,并激活相应的确认框(Check Box),以便试验人员可以勾选。以逻辑TD(3,A==1||B==1||Inval(C)&&Inval(D))为例,取得该逻辑后逐一分析。

(2)判断是否为逻辑符号。根据机组告警系统逻辑编写规范,参与逻辑运算的表达式按优先级从高到低见表2(优先级数值越低,优先级越高)。逻辑优先级的确定是为了下一步逻辑的解析与运算。如TD(3, || ||&&) ‘。

(3)判断是否为参数表达式。逻辑表达式中非逻辑符号的都是参数表达式,如A==1,B==1,Inval(C)和Inval(D)。

(4)将逻辑表达式转化为后缀表达式。后缀表达式(也叫逆波兰表达式)是计算机可识别的顺序操作表达方式,转化后没有括号参与,利于计算逻辑。按照以下步骤进行转化:

①初始化逻辑栈Stack_Logic与存放中间结果的栈Stack_Temp。

②从左至由扫描读取逻辑表达式,如果是参数表达,将其压至Stack_Logic。

③从左至由扫描读取逻辑表达式,如果是逻辑表达:

第一,如果Stack_Temp为空,或栈顶为(‘,将其压至Stack_Temp;

第二,如果Stack_Temp栈顶优先级较高,也将其压至 Stack_Temp;

第三,如果Stack_Temp栈顶优先级较低,将Stack_Temp栈顶逻辑弹出,将其压至Stack_Logic,转到步骤c-1。

④遇到括号时:

第一,如果是(‘,将其压至Stack_ Temp;

第二,如果是),将Stack_Temp栈顶逻辑弹出,将其压至Stack_Logic,直到遇到(‘,并将这一对括号丢弃。

⑤重复步骤②到步骤④,直到逻辑表达式的最右边,将Stack_Temp栈剩余逻辑依次弹出,将其依次压至栈Stack_Logic。完成后栈Stack_Logic从栈底到栈顶即为逻辑的后缀表达式。

如表3所示,为TD(3,A==1||B==1||Inval(C)&&Inval(D))的转化过程,最后转化为 A==1,B==1,||, Inval(C), Inval(D),&&,||,TD3,以字符,相隔的后缀表达式。

(5)将参数表达式分解为参数与参数操作,确定操作的类型与数值。如将A==1,B==1,Inval(C)和Inval

(D)分解为参数A,B,C'和'D,并确定以上4个参数的操作类型为赋值,赋值,赋有效性和赋有效性,最后确定每个参数的操作数值为1,1,无效和无效。

(6)将分解到的参数进行关联到机载系统ICD。通过查表的方式,如将参数A联查到对应的ICD,一般需要确定如下几项。

①A429的SDI,SSM与参数定义;

②A664的VL,FSB与参数定义;

③A825的FS与参数定义;

④离散量与模拟量的参数定义。

(7)将分解到的参数操作进行定义,确定逻辑1与逻辑0的操作步骤。

①赋值,确定逻辑1或逻辑0时是否为赋参数值为1或0、是大于或小于某个数;

②赋有效性,逻辑1或逻辑0时是否为有效或无效。

(8)将步骤6与步骤7确定的参数与操作分别设置,将参数表达式对应的逻辑值带入后缀表达式,进行结果输出。如对'A==0,'B==0,Inval(C)和Inval(D),对应的逻辑值0,0,1和1,分别带入后缀表达式中,按以下进行计算。

①读取逻辑栈Stack_Logic,初始化存放中间结果的栈Stack_Temp;

②从栈Stack_Logic弹出元素,如果是参数表达式,查参数表达式对应的逻辑值为1还是0,将逻辑值压至 Stack_Temp;

③从栈Stack_Logic弹出元素,如果是逻辑符号,对 Stack_ Temp中的元素进行运算后,结果压至Stack_Logic。

以A==0,B==0,Inval(C)和Inval(D)分别对应逻辑值0,0,1和1为例,见表4,说明后缀表达式的逻辑计算过程。

(9)遍历参数表达式的各种可能,可以得到不同的测试用例。将不同的测试用例输出成航电系统集成验证平台定义的Python脚本格式,则可以得到大规模、全逻辑的测试脚本。在测试脚本中,编写语句,弹出测试用例之间的对话框,供试验人员判断并进行选择试验结果,对某条机组告警信息进行确认是显示还是不显示,将结果打印成CSV格式的测试结果中。

在某系统机组告警逻辑试验中,应用本文实现的成果自动生成测试脚本,针对61条机组告警信息,总计生成3332个测试用例,54077行测试代码,快速完成了试验用例与脚本的开发工作。如图3所示,通过脚本执行器执行生成的脚本,脚本命令由通用仿真接口网络下载至对应系统仿真器上,进而输出了系统真是物理接口信号,模拟了各系统的状态与数据,通过查看系统系统的输出响应,并记录试验结果,从而快速完成了各项告警系统功能试验。

4 结语

该文实现了机组告警系统逻辑设计结果到试验用例、试验脚本与试验结果自动测试工具的开发,工具架构合理,流程清晰,能够自动化生成测试用例、脚本与结果,节省了大量试验用例与试验脚本开发时间,保障了对设计逻辑的准确读取分析,避免了人为出错,实现了试验结果的自动记录与保存。

使用pyinstaller将此测试脚本自动化生成工具生成.exe格式单独文件,可以发布给不同的试验人员脱离python环境进行使用,具有较强的应用性。基于此测试脚本自动化生成工具,也可以应用于发动机指示页面、主飞行显示器指示、简图页、机载记录系统、机载维护系统等逻辑复杂、参数较多、需大量开发测试脚本的试验应用当中,具有很强的扩展性。

参考文献

[1] 张博.民用飞机机组告警系统设计[J].中国高新技术企业,2014(26):29-30.

[2] (挪)Magnus Lie Hetland,著.Python基础教程[M].2版.司维,曾军崴,谭颖华,译.北京,人民邮电出版社,2014.

猜你喜欢
自动测试脚本
酒驾
JXG-50S型相敏轨道电路接收器自动测试台
数据库系统shell脚本应用
可并行测试的电磁兼容自动测试系统的实现
关于某型雷达自动测试系统的几点认识和建议
快乐假期
一种卫星低频接口自动测试系统