APP下载

从用户角度探讨空管自动化系统软件测试

2016-11-25侯立锋

科技视界 2016年25期
关键词:测试用例软件测试空管

侯立锋

0 引言

空管自动化系统(以下简称自动化系统)直接面向管制员,为管制员提供监视信息、飞行计划信息,以及各种告警服务,是最重要的空管设备之一。在现实中,自动化厂商将大部分的投入都用在了软件开发上,对于支持系统运行的硬件,包括:服务器、工作站、网络设备、记录仪、GPS授时设备、传输设备等,基本上都是直接采购现成的货架产品,由此可见,只有空管自动化系统软件才能体现空管自动化系统的核心价值。

随着自动化系统在空管系统应用越来越广泛,其软件质量的优劣也日益受到人们的重视。质量不佳的自动化软件产品不仅会增加使用和维护费用,还可能影响飞行安全,甚至造成灾难性的后果。软件测试是软件生命周期中一项非常重要且非常复杂的工作,对软件质量的保证具有极其重要的意义。

本文将站在用户角度,分析探讨如何在工厂验收和现场验收时,提高用户的参与度,让软件测试工作覆盖更全面,尽可能多的发现自动化系统软件隐藏的错误,为自动化系统正式投产运行把好软件测试关。

1 软件测试基础

1.1 什么是软件测试

软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。

1.2 软件测试的目的和方法

1.2.1 软件测试的目的

Grenford J.Myers就软件测试目的提出以下观点:

1)测试是程序的执行过程,目的在于发现错误;

2)一个好的测试用例在于能发现至今未发现的错误;

3)一个成功的测试是发现了至今未发现的错误的测试。

1.2.2 软件测试方法

在软件的测试过程中,应该应用各种测试方法,以保证产品有一个较高较稳定的质量。根据不同的生产过程进行不同的测试,包括黑盒测试、白盒测试、功能测试、系统测试、压力测试、安装/卸载测试、兼容性测试、α 测试、β 测试等 。

在工厂验收(相当于α 测试)、现场验收(相当于β 测试)的测试活动中,主要测试对象都是功能已经完成,即将要交付或者发布的软件,所以大多是通过黑盒法来进行功能、性能等各种测试。黑盒法中的一些典型方法,如等价分类法、边界值分析法、错误推测法、因果图以及状态转换图等方法。

2 自动化系统软件测试现状

2.1 用户对软件测试工作专业知识欠缺,在与厂家共同做软件测试时,处于弱势一方,往往依赖于厂家的提供的测试方案和标准。

目前用户参与到自动化系统软件测试工作,是从工厂验收测试开始的。自动化系统厂商按照与客户谈好的需求规格说明书,完成自动化系统软件开发和测试。在软件出厂前,厂家会邀请用户代表到工厂,完成工厂验收,以确认开发的软件是否是用户需要的产品,并按照客户意见,修改软件。之后,厂家会将自动化系统安装到客户现场。自动化系统调试完成后,自动化系统厂家和客户以及其他相关方会一起完成现场验收。在系统验收时,测试方案由自动化厂家提供。按照自动化厂家提供的测试用例(这些用例厂家已测试多遍)在真实环境下验证一遍就算通过,现场验收只是对厂家测试用例的简单重复,用户未能对软件测试工作提供新的帮助。

2.2 某厂家现场考核测试方案举例

2.2.1 测试目的和依据

依据软件需求规格说明书,在真实环境下,验证自动化系统功能的正确性。

2.2.2 测试方案总体结构和测试用例分布

某自动化厂家的现场考核测试方案,该方案分为8个部分,共320个测试用例,具体如下:雷达数据处理(43),飞行数据处理功能(54),人-机界面和人-机对话功能(90);记录、重演(14),技术监控功能(25),数据库管理(19),飞行数据操作席(62),性能指标(31)。在功能、性能测试的同时,系统连续运行72小时,进行可靠性考核。系统通过可靠性考核验证。

2.2.3 系统错误等级分类

1)第1级错误(严重错误):不能完全满足系统基本要求或系统正常运行,导致系统瘫痪或危及人员安全的错误并且不存在合理的、可以变通解决的办法(重新装入或重新启动该系统不属于变通解决办法)。

2)第2级错误(一般错误):不利于完全满足系统基本要求或系统正常运行,但却存在合理的、可以变通解决的办法(重新装入或重新启动该系统不属于变通解决办法)。

3)第3级错误(轻微错误):不影响系统要求的满足或基本功能的实现,但操作不方便。

2.2.4 考核测试通过标准

1)没有1级错误;

2)2级错误不多于3个;

3)3级错误不多于12个;

4)针对系统考核还需验证对需求的覆盖程度:

5)每个系统功能至少被一个测试用例覆盖;

6)覆盖期望的系统性能需求;

7)覆盖所有外部接口;

8)覆盖100%的系统主流程(根据用户需求);

9)主流程、主要功能至少被2个测试用例覆盖。

厂家的测试方案很专业,也很正规,具备包括测试目的、测试依据、测试方法(测试用例)、错误等级定义、考核通过标准等全部要素,可操作性很强。测试用例基本覆盖了系统主流程的功能模块,测试用例的数量分布相对合理,是一个不错的测试方案。

2.3 厂家测试方案的不足

2.3.1 观察测试角度存在局限性

目前有两种需用户参与的测试。一个是工厂测试,一个是现场测试。当软件开发完成,自动化厂商搭建模拟测试环境,邀请用户完成出厂测试。另一种是在用户现场,当系统安装调试完成后,在真实的环境下完成的现场验收测试。这两种测试均为厂家提供测试方案。空管自动化系统是一个非常复杂的软件系统,测试方案仅站在开发者角度编制,观察测试角度存在局限性。

2.3.2 厂家的测试方案存在覆盖盲点

尽管厂家提供的测试方案,已涵盖绝大部分功能,但再好的测试方案,也很难覆盖全部测试要点,存在覆盖盲点。下面的案例很好的说明了这一点。

2015年12月4日18:45,飞服通报某航班落地,主用系统自动拍发落地报不成功,人工补发。维护人员发现系统提示不能找到收报地址,检查收报地址库数据无缺失。事后查明,因现用收报地址条数(1011)已超出系统容量(1000)限制,排在容量之外的收报地址将被弃用,导致发报时不能找到收报地址,发送不成功。

现场考核测试方案中涉及收报地址库的测试用例只有一条,该测试用例仅验证了收报地址库的增加、删除、修改功能,并没有覆盖收报地址库的容量测试。收报地址库1000条的容量限制隐患被保留下来,自动化系统头几年工作运行都正常,几年后,随着航班量的增加,收报地址条目超过1000条,1000条以外的地址被认为无效地址,导致系统自动派发起飞报/落地报功能异常。

3 完善自动化系统软件测试方案的建议

3.1 自动化系统要符合民航规章标准

2010年民航出台了《民用航空空中交通管制自动化系统配置规范》MH/T4029.1-2010,2012年出台了《民用航空空中交通管制自动化系统技术规范》MH/T4029.2-2012,两个重要规范性文件。2012年以后建设的自动化系统,在现场验收时,用户一定要按照上述规章标准,检查所建自动化系统是否符合规章要求。当然在项目前期的需求规格说明书中一定注明所建自动化系统应符合民航规章要求。

3.2 雇佣第三方软件测试机构设计测试用例

前文提到用户对于软件测试相关技术不熟悉,致使不会设计测试用例,可以聘请第三方软件机构,根据软件需求规格说明书,站在第三方角度,采用黑盒测试方法(例如控件测试法、边界值分析法,等价类划分法,性能指标法等),协助用户设计测试用例。这样可以让测试工作更完善。

3.3 聘请空管业内专家参与测试

空管一体化后,各个空管单位之间的联系加强,对于初次建设空管自动化系统的单位,可以邀请其他单位有经验的业内专家,参与现场验收测试。

3.4 参考空管积累的经验补充测试用例

3.4.1 敏感时间节点测试

某空管自动化系统,每天早晨8点(北京时间)会删除24小时前的计划,厂家设计软件时正处于闰年,故此将系统2月份计划结算天数设为29天。这个缺陷非常隐蔽,工厂验收河现场验收均未能发现。系统投入使用后,第二年刚好为平年,2月份变成只有28天。系统仍然按照29天结算,导致结算天数比正常时间多一天,根据系统设置,若航班计划实际执行时间与系统推算执行时间相差24小时,系统将自动删除该航班计划。当3月1日来临时,系统认为2月28日的计划已超过24小时,将2月28日为执行的计划自动删除。而航班计划被删除后,航迹无法找到对应的计划,会自动去相关。建议系统测试时,增加例如2月29日时间节点测试。

3.4.2 磁盘空间可能耗尽测试

一般应用软件运行,会往磁盘里写一些东西,例如运行日志,每天数据量不大,如果软件没有设计日志定期自动清除机制,日积月累会,会逐渐耗尽磁盘空间。

空管安全信息网记载了这样一则案例,2016年3月12日,某地发生管制综合信息系统某一模块无法操作的问题。经查原因为服务器磁盘空间已经完全被占满,数据库日志无法写入。期间该模块退出服务,无法正常使用。事后查明,主数据库服务器的X盘(DATA)已占465G,Y盘(LOG)已占499G,两个盘分配的空间均为500G。检查Y盘剩余空间,为0KB。每当程序往数据库写入、更新、删除数据时,需先增加一个日志记录,也就是要先往Y盘(LOG)写入一条数据。由于Y盘已经没有剩余的空间去保存这条日志记录,所以整个数据库更改操作都失败。建议在系统验收时,增加磁盘空间自动释放机制检查。

3.4.3 AFTN报文压力测试

AFTN网传输的报文数据流具有突发性特点,用大流量报文可以验证系统电报处理能力。自动化系统在接入转报链路后,通过关闭转报机对该端口报文的转发,让转报机积压一定量的报文,当放开端口后,积压的报文会涌入自动化系统。压力测试也是系统处理性能极限测试,在极端情况下更容易暴露系统隐藏的缺陷。

4 总结

自动化系统是面向管制员的重要空管设备,其核心是软件,软件质量的好坏与运行安全息息相关,而做好软件测试工作是保障软件质量的重要手段。本文针对常规软件测试的目的、原则进行了阐述,简单描述自动化系统软件测试的现状,在用户参与的工厂测试、和现场测试环节,提出了一些个人建议,仅供参考。

目前关于自动化系统软件测试还缺少权威性的规范作为指导,对于自动化系统软件测试工作用户参与度较低,主要依赖自动化厂家软件测试水平。另一方面,空管系统的运行标准越来越高,运行压力越来越大,用户作为自动化系统的使用者,是自动化系统因软件缺陷导致异常的责任载体。用户必须想尽办法,在系统投入使用前,尽可能多的发现并消除自动化系统中的隐患,降低自动化系统的运行风险。

[责任编辑:李书培]

猜你喜欢

测试用例软件测试空管
基于SmartUnit的安全通信系统单元测试用例自动生成
基于OBE的软件测试课程教学改革探索
民航空管2018年运行统计公报
EXCEL和VBA实现软件测试记录管理
基于混合遗传算法的回归测试用例集最小化研究
关于软件测试技术应用与发展趋势研究
软件测试工程化模型及应用研究
基于依赖结构的测试用例优先级技术
如何做好空管质量安全管理体系(QSMS)内部审核的几点思考
空管自动化系统GPS时钟同步方式