APP下载

民航信息系统基于真实业务数据的自动化回归测试应用实践

2015-01-03

电子测试 2015年19期
关键词:测系统报文子系统

(中国民航信息网络股份有限公司,北京,100710)

民航信息系统基于真实业务数据的自动化回归测试应用实践

杨京煜,刘 潇,杨程屹

(中国民航信息网络股份有限公司,北京,100710)

本文分析了中国民航旅客服务系统的业务、技术特点,应用基于真实业务数据的自动化回归测试技术,设计实现了一套自动化测试平台,并在交易型、查询型等多个业务子系统迁移应用中成功实践,验证了该技术及测试平台的可行性和有效性。

旅客服务系统;SOA系统;回归测试;自动化测试

1 概述

1.1 民航信息系统的特点与挑战

中国民航信息集团公司暨中国民航信息网络股份有限公司(简称“中国航信”)是全球第三大旅游分销系统(Global Distribution System,简称GDS)提供商,为中国国内主要航空公司提供旅客服务系统(Passenger Services System,简称PSS),并拓展与上述核心业务相关的延伸信息技术服务。

作为典型的民航信息系统——中国航信PSS系统提供的服务繁多、用户群体范围广,如何在保障系统持续稳定运行的同时拓展新业务,是民航IT业面临的严峻课题。与此同时,开发和测试团队的人员更替也导致技术人员对于既有功能的把控和掌握力逐渐减弱。在这种现状下,系统的每一次修改,其影响范围和被影响用户群的定位难度也在逐渐增加。传统模式下,通过严格把控编码质量的方式固然可以保障新增功能的正确性,但对于新增功能的副作用及对用户的潜在损害的保障力度远远不足。即使耗费大量人力进行回归测试,仍然无法预防上线后对用户产生不可预知的功能回退。这是中国航信PSS系统遇到的巨大技术挑战。

1.2 回归测试技术分析

中国航信PSS系统是典型的SOA架构,组件庞大、业务复杂。针对SOA架构系统的测试技术,主要采用分层自动化测试:在端到端、系统层、接口层以及单元测试层进行分层覆盖,越底层需要的脚本和用例越多。在保障底层运算和逻辑正确的前提下,由上一层保障更多交互和功能层面的质量。自动化的系统层逐渐形成活文档,与系统共同演化,以保障系统的功能变化全部可控可测。

这种方法在一般情况下是可行的,但是在民航信息系统领域却凸显不足。首先,民航信息服务是个业务复杂度高的领域,技术人员需要钻研多年才能熟悉PSS全局业务;其次,民航信息服务也是个技术复杂度高的领域,因为关系到旅客在途的每一个阶段,事关民生,所以对高并发、可持续、准确性、时效性等非功能指标要求苛刻。在这样的业务、技术双重复杂的信息技术领域,保证持续的高质量代码开发客观上是有很大难度的。随着功能不断拓展,通过历史经验沉淀下来的系统测试案例的维护成本越来越高,导致缺陷不断从单元测试层向系统测试层蔓延。

1.3 数据驱动的自动化测试

本文正是基于民航信息系统现状,探索一种能够在不需重构整个开发流程、不增加开发人员工作量的前提下以低投入的方式控制产品功能不回退、新功能引发的缺陷不向生产系统泄露的模式。

文献[4-5]等提出数据驱动的测试框架及基于业务数据的SOA测试方法,为解决业务、技术双重复杂的系统回归测试问题提供了思路。本文在基础上,扩大业务数据提取范围,并将自动化工具应用于测试流程,最大化的减少人工成本、提升覆盖率。进而形成完整的测试框架,解决了一系列关键技术问题,并在实际业务投产中验证了此方法的可行性和有效性。

图1 核心交易型业务系统用户行为覆盖率Fig.1 User behavior coverage of core transaction business system

2 基于真实业务数据的自动化回归测试

2.1 方法概述

基于实际业务数据自动化回归测试的主要思路是:在测试系统部署待测软件版本,并利用近期在生产系统实际发生的全量用户行为,采用自动化的方法,进行全量回归测试。通过对回归测试结果和生产系统实际结果的比对分析,来发现新版本软件中存在的兼容性缺陷。

首先,从产品质量控制的角度考虑回归测试,“完美实现、没有缺陷”的理想结果在资源有限的情况下难以实现,转而考虑“允许有缺陷,但遗留的缺陷对用户业务影响最小”这一更具实际意义的准则。在系统可持续运营、产品基本功能正确的基础上,以对用户业务的影响程度来衡量缺陷的重要程度。对用户日常业务影响大的缺陷是重要缺陷,需要优先解决;用户日常难以发现的缺陷是次要缺陷,可以调整处理这类缺陷的时机和方式。同时,回归测试的目的为不引入新的缺陷,即“不比现状更糟糕”。

综上两点:基于实际发生的全量用户行为产生的全量业务数据进行回归测试,能够覆盖对用户业务影响最大的重要缺陷,满足回归测试的要求。

下面结合民航信息系统的具体环境,讨论全量真实业务数据的采集范围。

首先,民航信息系统的业务具有持续性、用户行为具有连贯性,通过对中国航信PSS系统的实际运行数据进行分析,得出如下结论:一般情况下,核心交易型业务系统的近期17天全用户行为即可覆盖95%以上该系统全用户全业务行为,见图1;核心查询型业务系统的近期15天全用户行为即可覆盖95%以上该系统全用户全业务行为,见图2。

其次,针对民航信息系统的特殊性,对于某些特定功能,仍需截取特定时期的用户行为进行定向测试。例如针对“航班初始化”功能,需截取每年两次的民航换季时期的用户行为;针对“旅客保护”功能,需要截取发生航班取消、旅客被保护到其他航班时的用户行为。

基于近期(交易型17天、查询型15天)用户行为的全量覆盖和特定时期用户行为的全量覆盖,即可覆盖对用户主要业务有影响的全部业务场景。未覆盖的业务场景事实上并不会影响用户的主要业务,这部分场景可通过传统测试案例的方式去覆盖,或通过完善的监控体系和运行维护的及时补救来规避。同时,也可扩大近期用户行为的采集时间范围、增加特定时期场景来进一步提高覆盖率。

针对SOA构架,用户行为被系统拆分为在多个子系统间流转的有序数据流。有序数据流即可代表用户行为。因此,“在生产系统实际发生的全量用户行为”,实际体现形式为“在生产系统实际产生的全量业务数据”——即真实业务数据作为回归测试的基准,检测子系统新版本的兼容性和回归性。

使用真实业务数据进行回归测试还有其他优势:可有效避免测试人员的人为因素;尤其适用于规模大、运营历史久的系统;测试周期可控。

图2 核心查询型业务系统用户行为覆盖率Fig.2 User behavior coverage of core query-based business system

2.2 自动化测试平台实现

搭建基于真实业务数据进行自动化回归测试平台,可总结为“一套规范、两种机制、三个平台”。

2.2.1 一套规范

被测系统须符合“可自动化回归测试规范”。可自动化回归测试规范主要包括如下几点基本要求:

1)被测系统符合SOA架构要求,与外界系统的边界是清晰界定的。

2)被测系统和外界的所有交互载体为可以被记录的报文,记录工作由框架完成,不会因为业务系统的原因造成报文丢失。禁止外系统通过读写数据库等方式直接访问被测系统。

3)框架在记录业务报文体的同时,还需一并记录时间戳(精确到毫秒级)、唯一的全局交易流水号、输入输出类型等。

4)被测系统中数据库的每笔交易都必须被记录。

5)记录的变更是可重现的。例如,系统内部的随机算法的随机因子只与输入报文和可移植类的配置有关,禁止使用实际进程号、实际机器名、实际时间等不可移植类配置作为随机因子。建议使用全局交易流水号、用户信息、业务报文体等资料作为随机因子。

6)被测系统应具备统一的时间服务器控制系统内部的时间,确保各个SOA子系统的时间的一致性。

2.2.2 两种机制

1)生产系统报文日志机制

要求被测系统符合全局SOA架构要求,所有的输入输出请求都能被真实记录,日志内容符合可自动化回归测试规范。

2)生产系统数据库日志机制

被测系统(生产系统)中的数据库必须记录所有的交易请求,并具备在非生产环境重建的能力。

这是数据库基本的功能,现实中Oracle、DB2、MYSQL、PostgreSQL等各种商业、开源的数据库都具备此基本功能。此机制确保生产系统的数据环境可以在非生产环境基于任意时间点重建。

2.2.3 三个平台

基于真实业务数据的自动化回归测试环境由生产数据测试系统、生产报文提供系统、仿真系统(Mock)这三个平台系统构成,见图3。

2.2.3.1.生产报文提供系统

生产报文提供系统的功能是为测试系统提供可用的生产数据管理机制。生产系统的交易日志被中间件平台实时导入到队列,再依据配置策略存储到大数据平台。生产报文提供系统根据不同被测系统的配置规则,从大数据平台获取相应的系统日志并进行解析,生成被测系统和仿真系统所需要格式的数据,并通过重新编目的方式进行整理,便于自动化调用和基于特定场景的调用。

2.2.3.2.生产数据测试系统

生产数据测试系统主要有Init、Player、Comparer、Report四个模块。

Init模块的主要功能是将环境重置到可以自动播放的初始状态,涉及配置信息初始化、环境参数初始化、数据库数据初始化等操作。主要技术点是对生产系统数据库的数据基于指定时间点在测试环境进行恢复。

Player模块的主要功能是将得到的生产数据按照原始时序向测试系统推送,并提供播放速度的控制功能。主要技术点是针对被测系统的多个交互点,提供精确到毫秒级的同步的报文播放技术。

Comparer模块的主要功能是对测试结果进行对比,涉及数据库信息对比和输出报文对比。主要技术点是大数据量的实时比对性能以及对比结果分析。

Report模块的主要功能是提供可配置的对比结果展示,便于开发人员分析不一致产生的原因,过滤非业务级的干扰。

2.2.3.3.仿真系统(Mock)

仿真系统(Mock)是部署在测试环境中间件上的对外交互模拟系统。它的作用就是根据全局交易流水号、实际生产系统的响应时间及配置要求,在生产报文提供平台的数据中,提取符合条件的报文回报,模拟外系统的返回值。仿真系统对接被测系统,规避被测系统对周边系统的依赖性,能有效的对单一被测系统进行全量回归测试。

图3 基于真实业务数据的自动化回归测试系统架构Fig.3 Automated regression test system architectures based on real business data

3 案例分析与效果评价

本文提出的基于真实业务数据的自动化测试方法,成功应用在中国航信PSS系统的回归测试中。下面针对交易型和查询型两大类业务系统分别进行验证。

3.1 交易型业务系统——座位子系统的实施效果

作为中国航信PSS系统的一个组成部分,座位子系统(简称SEAT子系统)提供在订票环节选座位的功能,是一个典型的交易型业务系统。该功能原本由传统主机(生产系统:大型机)提供服务,近几年为了满足各大航空公司对选座服务的个性化需求和收费座位等新业务的支持,中国航信正在致力于将SEAT子系统从传统主机上转移到开放系统平台(待投产系统:x86服务器集群)。在功能转移的同时,SEAT子系统提供的传统服务还将保持不变性和持续性,这是典型的交易系统迁移工作,由于牵涉异构的新、老两套系统,技术人员的知识范围有限,难以发现所有隐蔽的系统缺陷,实施十分艰难。

在实施过程中,针对SEAT子系统,数据比对方式可以归结为以下两大类:

1)原始数据比对

将生产系统数据库存储的原始数据与待投产系统数据库的数据直接进行比对,确保生产系统与待投产系统的原始存储数据的一致性。

2)业务逻辑比对

将生产系统与待投产系统的业务计算结果进行比对,确保待投产系统与生产系统的业务逻辑处理结果的一致性。

成功实施基于真实业务数据的自动化测试后,试点系统共新发现并解决问题100余个。从实际业务投产结果来看,SEAT一次性业务投产成功,直接验证了本文方法的有效性。

通过应用本文测试方法:1、引入真实生产交易作为新系统的验证数据,有效解决了传统测试用例覆盖业务场景不全的弊端,具备交易数据全面,自动化程度高,质量可靠等优势;2、数据比对过程可离线进行,不会对生产环境造成压力和数据破坏;3、比对过程和数据可以重复执行,便于解决问题后,再次使用相同数据进行验证;4、能够提前发现和修复各类生产系统上的真实问题,有效保障一次性业务投产的成功率,降低生产安全隐患,极大的提升了系统迁移的实施速度。

3.2 查询型业务系统——运价子系统的实施效果

运价子系统(简称Pricing系统)是中国航信PSS系统的一个重要组件,它为航空公司、代理人、终端旅客提供航空公司运价查询服务,是查询型核心系统之一。Pricing子系统的特点是,服务的航空公司数量多,个性化需求变更频繁。由于查询量大并涉及到敏感的交易金额信息,航空公司对运价查询的准确性要求极高,业务逻辑的缺陷都有可能给航空公司带来百万元人民币的实际经济损失。

通过在兼容回归测试环节引入基于真实业务数据的自动化回归测试,Pricing子系统可有效避免新版本的上线结果对原有的功能和计算逻辑造成的影响,在提升了回归测试质量的同时,减少了测试人员的投入,提升了测试的效率,见表1。

表1 人工执行传统测试用例与基于真实业务数据的自动化测试比较Tab.1 Comparison of traditional testing(artificial execution) and automated testing based on real business data

由表1可知,对比人工方式执行全量回归测试(未实际执行,为估算值),基于真实业务数据的自动化测试使得人力投入减少为1人,执行测试时间缩减到4小时,发现缺陷47个,占本轮测试发现的全部缺陷数目(总数78)的60.3%。

目前Pricing系统采用生产数据回归测试前置执行的方法,即在设计、执行传统测试用例之前先进行基于生产数据的自动化回归测试。同时在自动化回归测试中新发现的缺陷,测试人员也会补充到传统测试用例库中,确保传统测试用例的数量和业务场景覆盖率能够得到不断增强。

两种测试方式相结合——依靠生产数据自动化回归测试“低投入高产出”式的发现大量缺陷,依靠传统测试用例发剩余的“冷门”缺陷,最终确保投产产品质量完全可控。

4 结论

基于真实业务数据的自动化回归测试方法在实际项目中被证明是适用于项目边界清晰、业务复杂、版本变更较多且修改不会改变原有功能逻辑的场景。对于底层框架和实现更改(比如数据库变更、中间件变更)、性能优化的场景尤其适用,可以有效从功能角度杜绝产品退化。同时具备较强的业务无关性,可以有效屏蔽人为因素对测试结果的影响,甚至可以由开发人员进行自测,成为开发工作完成的质量衡量标准。这种回归测试方法再配合传统的基于需求和经验的测试方法,可以有效地提升缺陷拦截率,在测试时间受限、测试资源受限的不利情况下,确保交付产品质量的可控性。

[1] G Rothermel,MJ Harrold.Analyzing Regression Test Selection Techniques[J].IEEE Transactions on Software Engineering, 1996 22(8):529—551.

[2] 蔡亭友,王建明,刘英卓.基于SOA架构的企业应用集成(EAI)研究[J].微计算机信息,2007, 23(15):11-13. DOI:10.3969/j.issn.1008-0570.2007.15.005.

[3] 万琳,廖飞雄.一种分层结构测试脚本技术[J].计算机系统应用,2011, 20(7):141-145.DOI:10.3969/ j.issn.1003-3254.2011.07.031.

[4] 朱菊,王志坚,杨雪.基于数据驱动的软件自动化测试框架[J].计算机技术与发展, 2006, 16(5):68-70. DOI:10.3969/j.issn.1673-629X.2006.05.024.

[5] 李鹏,杨永艳.基于业务数据的大型企业SOA测试方法[J].计算机工程,2012 38(4):60—62.

杨京煜(1973——),男,北京市,中级工程师,大学本科,中国航信旅客服务系统业务专家,大型交易系统架构师,主要从事航空公司旅客服务系统主要产品流程设计、核心应用软件架构设计、产品质量控制等相关工作。

刘潇(1983——),男,河北省怀安县,中级测试工程师,硕士研究生,中国航信研发中心测试工程师,主要从事测试体系建设、测试架构设计、自动化测试框架编写等相关工作。

杨程屹(1986——),男,河北省滦县,中级工程师,博士研究生,主要从事数据分析、科研项目管理等工作。

创新点

1. 本文分析了中国民航旅客服务系统的业务、技术特点,应用基于真实业务数据的自动化回归测试技术,搭建了一套自动化测试平台。本平台的特点是涉及业务复杂、数据量大。

2. 该测试平台在座位子系统(典型交易型业务系统)、运价子系统(典型查询型业务系统)两类典型系统上成功实践,验证了该技术及平台的可行性和有效性。

Application of Automated Regression Testing based on Real Business Data in the Information System of Civil Aviation

Yang Jingyu,Liu Xiao,Yang Chengyi
(China Civil Aviation Information Network Inc,Beijing,100710)

This paper analyzed business and technical characteristics of the information system of China civil aviation--Passenger Service System(PSS).And by applying automated regression testing based on real business data,the team have built an automated regression test platform,and successfully practiced in the migration of multiple subsystems of PSS,including transaction business system and query-based business system.The results demonstrate the feasibility and effectiveness of the technology and the test platform.

PSS;SOA;Regression testing;Automated testing

TP311.5 软件工程

猜你喜欢

测系统报文子系统
不对中转子系统耦合动力学特性研究
基于J1939 协议多包报文的时序研究及应用
基于定标模型云共享的奶牛粪水微型NIR现场速测系统
RSSP-I铁路信号安全通信协议的测试研究
CTCS-2级报文数据管理需求分析和实现
GSM-R基站子系统同步方案研究
浅析反驳类报文要点
无线电监测测向系统测向精度试验数据的分析方法
驼峰测长设备在线监测子系统的设计与应用
ATS与列车通信报文分析