蒋倩 岳龙 李书杰
摘要:针对ATS系统在工程化应用测试过程中大批量回归测试耗时耗力的问题,构建了一个自动化测试平台。该平台的核心模块仿真管理器提供测试脚本编写、构造测试环境、自动加载被测对象、自动执行测试等功能。在结合ATS系统功能及内部接口特征人工完成测试脚本的基础上,可重复进行大批量回归测试。本文以ATS应用服务器子系统为例,展示了如何在该平台上实现自动化测试,并总结了每轮回归试验的测试用时和人力资源消耗情况。试验结果表明该自动化测试平台帮助测试人员提高测试效率,帮助研发人员进行缺陷预防,以减少系统开发成本、缩短系统开发周期,为系统持续集成提供可能性。
关键词:自动化测试;缺陷预防;ATS系统
中图分类号:TP24 文献标识码:A 文章编号:1007-9416(2019)05-0160-03
0 引言
ATS系统(列车自动监控系统)广泛应用于城市轨道交通信号控制领域,它与ATP系统(列车自动防护系统)、ATO系统(列车自动驾驶系统)合称ATC系统(列车自动运行控制系统),共同完成高密度城市轨道交通安全高效运输作业。ATS系统主要提供列车运行监督和控制的自动化行车调度指挥功能[1],对保障轨道交通线路运营高效率和高质量具有重要意义。
目前,湖南中车时代通信信号有限公司的ATS系统已投入长沙地铁3号线,长沙地铁4号线的工程应用,在项目后期系统已趋于成熟,功能需求不会发生重大变更。当系统发生轻微变更时,除对变更点及其影响范围进行测试外,为防止变更影响范围识别不充分会期望对整个系统进行全面的回归测试。然而该阶段工期紧、任务重,这就对测试效率及测试资源提出更高要求。为解决这一困难,提出用自动化测试方法代替一部分人工手动的测试方法来提高测试效率,解放生产力。
现有的软件自动化测试工具种类繁多,例STAF,LR(Load Runner)和QTP(QuickTest Professional)等,但是对于轨道交通信号系统领域,商业的自动化测试工具都存在一定的不足,例如,无法满足实时性要求,无法支持专用协议,倾向于单一类型测试[2][3][4]。本文根据ATS子系統测试方法,设计出一套通用ATS系统自动化测试平台。
1 ATS自动化测试平台设计
ATS系统自动化测试平台采用黑盒测试的方式,只调用被测子系统的接口来测试程序的功能。测试平台的结构如图1所示,由被测对象、子系统模拟器和仿真管理器组成。测试平台采用VisualC++软件开发。
1.1 仿真管理器
仿真管理器主要提供配置测试环境、编译测试脚本、加载测试计划、执行测试脚本、生成测试报告等功能。人机界面如图2所示。
1.1.1 测试脚本编译模块
脚本的编辑环境和执行模块。测试人员根据测试用例人工在仿真管理器上手动编写测试脚本,将测试用例转化为测试脚本语言。该模块支持测试脚本的增加、删除、重命名、编写、保存、关键字查找功能。测试脚本可采用JS和VBS两种格式来储存,需要构造发送的消息和期望接收的消息。该模块在执行测试脚本的过程中记录并显示发送和接收的消息,根据测试脚本中的预期结果进行比较和判断,输出测试结果,更新脚本执行状态。
1.1.2 消息发送模块
消息发送处理模块根据测试脚本中设置的输出消息的目的地队列和类型,向目标队列中发送构造好的数据,可支持批量发送消息。
1.1.3 消息接收模块
消息接收处理模块根据测试脚本中设置的输入消息的源队列和类型,当监听到消息队列中接收到期望的消息类型时,触发消息处理函数对消息进行反解。该模块能同时处理多个消息源发送来的多包消息。
1.1.4 生成测试报告模块
每次测试计划的脚本全部执行完毕都会自动生成本次测试的测试报告,记录和存储每个测试用例的编号,测试执行的开始时间结束时间,测试结果,测试日志以及测试过程中出现的异常。报告采用excel格式统一模板输出,以供测试人员再次编辑。
1.2 子系统模拟器
由于ATS系统是一个基于网络通信的分布式系统,针对某个子系统的测试往往需要其他多个子系统同时配合参与,因此,设计了子系统模拟器来构造外部测试环境。子系统模拟器类似于消息路由器,作为仿真管理器和被测子系统的通信桥梁,可自定义消息路由规则和消息收发队列。子系统模拟器是个只读对话框,只显示收发的消息信息不可编辑。
1.3 被测子系统
在该自动化测试平台中,被测对象可以是ATS系统中某一子系统,也可以是多个子系统的集成,该设计可同时支持ATS子系统阶段和系统集成阶段的测试。
2 ATS自动化测试平台应用
应用服务器子系统为ATS核心服务器,提供主要处理列车跟踪识别,列车调整,自动进路,运行图编辑,派班管理等功能。与应用服务器交互的子系统有车站服务器、通信服务器、运行图管理客户端、站场监控客户端等。应用服务器承担功能重大,涉及子系统众多,交互消息复杂,对其开展自动化测试显得尤为重要。本章以应用服务器单个子系统为被测对象,选择设置道岔定操功能为例来详细说明如何在该平台上实现自动化测试。
2.1 测试用例定义
设置道岔定操功能是指联锁系统与ATS系统通信正常的情况下,ATS系统向联锁系统发送道岔定操命令,由联锁系统来实现将道岔置于定位。从各个子系统之间相互传递消息的顺序关系,可设计一条正向测试用例描述为:采用中心调度台模拟器向应用服务器发送内部消息m,采用车站服务器模拟器验证应用服务器是否向其发送正确的内部消息n,采用中心调度台模拟器验证应用服务器是否向其发送正确的记录事件消息k。
2.2 测试脚本编写
在完成测试用例定义后,即可在仿真管理器中编写脚本。为便于测试脚本与测试用例的追溯,脚本名称直接采用测试用例的用例编号。测试脚本在编写过程中要注意以下几个关键点:
(1)構造测试前置条件。构造正确的测试环境,离不开对前置条件的充分理解,只有构造了正确的前置条件测试才是有效的。本条测试用例中隐藏的前置条件有:中心调度在客户端登录,控制模式为中心控。(2)构造输入消息和监听输出消息。无论是构造输入消息还是监听输出消息,都需要了解两个交互子系统之间的内部接口协议,明确消息的每个字段含义。本条测试用例中客户端与应用服务器内部消息m的字段有时间戳、CRC校验、消息ID、消息长度、控制句柄值、联锁区编号等。(3)发送消息队列和接收消息队列。如果队列配置错误,则会导致消息发不出去或者接收不到,所以明确被测对象的收发队列也是测试执行的关键。这个需要平台配置和脚本共同配合解决。从平台配置上看,针对某个子系统模拟器需要配置四个队列,分别是从被测节点接收消息队列A,向仿真管理器发送消息队列B,从仿真管理器接收消息队列C和向被测节点发送消息队列D;针对仿真管理器,与其交互的所有子系统模拟器的队列B都需要配置正确。从测试脚本上看,需在脚本中写入正确的队列B和D,保持一致则可使消息发送成功或者监听到期望消息。(4)判定测试通过条件。被测对象输出的消息是待验证的消息,在测试过程中需实时监听,一旦收到消息反解后,需根据消息字段含义对其关键字段进行验证,以确保被测对象输出消息的正确性。本条测试用例中内部消息n和记录事件消息k是验证对象。验证的内容包含消息n的消息ID、联锁区编号、控制句柄值等,消息k的消息ID、报警等级等。
2.3 测试用例执行
完成脚本编写后便可在仿真管理器上直接执行测试脚本。执行脚本可以一次执行一条脚本,也可以一次执行一个文件夹下的所有脚本,也可以按测试计划执行脚本。在仿真管理器上,执行脚本开始时会打印开始时间和被执行脚本名称,执行脚本过程中会根据脚本打印出关键消息以及出现的异常,执行脚本结束后会打印执行完毕的时间和执行结果。在子系统模拟器上,会打印出收发消息的时间,队列名称和消息内容。针对本条测试用例,选择当前测试脚本点击执行,执行成功后在被执行脚本名称前更新一个画勾的图标显示测试通过。
2.4 测试结果分析
执行本条脚本共耗时2s,针对该功能还需定义很多反向测试用例,例如,发送CRC错误,消息长度错误,时间戳错误的内部消息m,发送被篡改的内部消息m,未登陆的客户端发送内部消息m等。事实上,对于该功能我们共定义了13条测试用例,只需要一个操作耗时78s即可完成测试,大大节省了人工成本和时间成本。
当系统功能趋于稳定时,工人编写的测试脚本利用率极高,只需人工启动本次测试计划就可以开展自动测试。测试过程无需人工参与,选择非工作时间执行测试,既可以节省人工成本又可以节省时间成本。测试脚本一旦创建对测试执行人员要求较低,可释放更多的人力用于维护测试脚本和开展进一步测试开发工作。当软件变更不影响系统功能时,研发人员在完成软件变更发布给测试人员前对其进行全功能自动化测试,便可以提前发现软件缺陷,对软件缺陷进行预防,避免一次无用发布。
3 结语
ATS系统自动化测试平台的意义在于,第一,执行测试的过程无需人工参与无需上班时间,有效节省了人工成本和时间成本;第二,有效杜绝修改一个缺陷引入更多缺陷;第三,在发布前由研发人员执行自动化测试可有效预防缺陷发生;第四,针对业主不断提出的新需求,可缩短开发周期。然而,该测试平台仍存在一定的局限,当功能发生变更则需要人工重新编写测试用例和测试脚本,维护成本较高。在未来,ATS系统自动化测试平台仍有很多工作可以开展,例如:与现有的缺陷管理系统结合将测试发现的缺陷自动录入系统,或通过e-mail将测试结果通知指定人员;与现有的配置管理系统结合对编译完成的代码自动下载部署,自动执行测试脚本;与测试用例结合探讨自动生成测试脚本的方法等;与人机交互界面结合探讨UI功能测试。
参考文献
[1] 赵威.城市轨道交通列车自动监控系统的研究[J].铁路通信信号工程技术(RSCE),2008,5(5):30-32.
[2] 傅李育.轨交信号系统自动化测试集成平台设计与实现[M].上海:上海交通大学,2013.
[3] 高璐瑶.安全苛求软件的自动化测试技术研究[M].杭州:浙江大学,2013.
[4] 王丹.CBTC系统的自动化测试研究[M].北京:北京交通大学,2010.