当前位置:首页 期刊杂志

列控中心软件自动化测试框架设计

时间:2024-05-04

陈增熙,徐中伟,梅 萌

(同济大学 电子与信息工程学院,上海 201804)

0 引 言

列控系统作为铁路信号系统的核心装备,其安全性攸关整个铁路网络的运行。列控中心作为列控系统地面设备的主控制设备,其应该具备稳定可靠,长期运转的特点[1-3]。在工程现场部署运营之前,必须经过严格的功能测试与可靠性测试,保证其安全性[4-5]。目前,国内外对列控中心软件功能测试主要通过现场调试验证与实验室内计算机仿真测试进行。现场调试验证需要安装真实设备,投入大量的人力物力,成本高,风险大,且无法验证部分极端情况,所以目前基本都采用实验室内计算机仿真测试。计算机仿真测试需要模拟列控中心真实运行环境,并根据列控中心软件安全规范编写测试案例,遍历测试验证。列控中心软件属于实时嵌入式系统,其控制场景丰富广泛,功能复杂,所以测试案例数量众多。由于每个车站工程数据均不相同,所以每次测试都需要重新编写案例。每条测试案例包括多个操作步骤,人工操作复杂,需要有经验的业务人员进行具体判断,如果测试时间紧张,就容易出现人工误操作情况。分析列控中心软件测试需求,高效合理地编写测试案例与自动化测试是降低测试成本,提高测试质量的有效方法[6-9]。

1 列控中心与自动化测试概论

1.1 列控中心

列控中心软件作为列控中心的大脑,其管控多个与列控中心相连的信号设备,分析列控中心系统的物理结构与外部设备接口。列控中心外接设备主要有八个部分:ZPW-2000轨道电路、计算机联锁(CBI)、地面电子单元(LEU/BDU)、调度集中(CTC)、临时限速服务器(TSRS)、相邻列控中心(TCC)及信号集中监测(CSM)、继电器驱采设备。各外接设备功能概述如表1所示,列控中心与外接设备连接示意图如图1所示。

表1 列控中心外接设备功能信息表

图1 列控中心与外接设备连接示意图

1.2 自动化测试

软件测试的基本原则是模拟实际线上软件运行环境,输入测试数据,对输出结果进行判别,找出被测软件系统或者程序中存在的漏洞和错误,是有目的性的行为。软件测试伴随着软件开发整个过程,发展到今天,已经形成了一套成熟的测试理论。根据是否借助测试工具可分为人工手动测试、自动化测试。软件自动化测试是软件手工测试的高级阶段,属于软件测试新的分支,即将需要执行的测试案例编写成脚本或者预先设定为程序,由机器自动执行,代替人工操作,完成对目标应用程序的半自动或全自动测试,用以验证软件功能需求。软件测试自动化框架技术主要有基于数据驱动的测试框架技术、录制/回放测试框架技术、基于关键字驱动的测试框架技术、混合自动化测试框架技术几大类[10-13]。

列控中心软件测试需要根据列控中心软件安全规范编写测试案例,属于数据驱动测试。测试过程将测试数据与测试操作进行分离,测试数据存放在单独数据文件中,测试案例存放在脚本中,输入不同车站的测试数据可以驱动相同的脚本进行测试,通过脚本实现对测试数据的输入和管理。通过对测试脚本的编排和优化,可以实现案例自动化执行判断的目标,减少人工手动操作,最终实现半自动甚至全自动测试[14-16]。

2 自动化测试框架设计方案

2.1 列控中心软件测试需求

列控中心软件主要功能是对外接信号设备的状态信息采集与调度管理,所以列控中心软件测试就是验证其管理调度信号设备的能力,发现其功能逻辑上可能存在的漏洞或者初始车站数据配置上的错误。列控中心会实时检测外接设备的输入命令报文,对输入命令进行逻辑运算,返回执行结果。列控中心软件运行逻辑流程如图2所示。

图2 列控中心软件运行逻辑流程

列控中心软件功能主要包括开机自检、轨道电路状态判断、轨道电路编码、异物侵限保护、轨道电路发码方向控制、区间改变运行方向、区间通过信号机点灯控制、临时限速及信号降级处理、发送应答器报文原则、维护诊断、异常处理等功能,测试需要覆盖规范要求的所有功能,根据具体的车站数据,将抽象的测试功能点实例化成具体的测试案例,下发给列控中心执行,判断其执行结果正确性。与此同时要考虑各功能在实际现场中的使用频率,对于使用频率高的功能要进行高频次测试验证,尽量贴合工程现场实际运营情况,提高测试结果准确性。

2.2 自动化测试框架

根据列控中心软件测试需求与运行逻辑流程,自动化测试框架至少包括三个功能:读取车站数据与软件初始化,读取测试案例转换为命令报文并下发,测试案例执行结果判别输出。对以上三个功能进行抽象归纳,提出符合列控中心软件功能测试的自动化测试框架。提出的框架主要包括七层:人机交互、流程服务、组件服务、代理服务、基础服务层、基础数据通信层、数据中心。列控中心软件自动化测试框架如图3所示。

图3 列控中心软件自动化测试框架

2.3 测试框架运行流程

2.3.1 软件运行流程

列控中心软件自动化测试框架处理流程主要分为两个域,即数据处理域和逻辑处理域。数据处理域主要模拟列控中心外接设备接口,负责与被测列控中心通信与数据报文持久化,而逻辑处理域主要负责测试案例下发,与执行结果判别记录。列控中心软件测试框架运行流程如图4所示。

图4 列控中心软件测试框架运行流程

根据图4可知,数据处理域与逻辑处理域工作流程如下:

·人机交互界面接收用户指令并通过步骤①传递给流程服务。

·流程服务将测试案例翻译成操作序列,通过步骤②下发给组件服务。

·组件服务负责把操作序列转换为报文,通过步骤③传输给代理服务。

·代理服务通过步骤④将命令报文传给基础数据通信层,同时通过步骤⑤从数据中心读取各外接设备接口发送的信息报文。

·基础数据通信层将会对代理服务层发送的命令报文与各设备回传报文进行安全协议校验,校验通过则通过步骤⑤存入数据中心。

·基础服务层提供基础组件,处理结果将逐层返回至人机交互界面供用户查看。

2.3.2 测试案例运行举例

根据以上测试框架运行流程,以计算机联锁办理发车进路测试案例为例进行分析,其执行流程如下:

·首先,人机交互界面接收用户下发的办理进路命令,传递给流程服务。

·流程服务层将办理进路测试案例进行序列化,即转换成计算机联锁先下发进路命令与信号机继电器点灯两个操作步骤下发给组件服务。

·组件服务将操作序列转换为具体的计算机联锁报文与点灯继电器点灯报文,传递给组件服务。

·组件服务将两个报文按顺序下发给基础数据通信层中计算机联锁接口与点灯继电器接口进行校验。

·基础数据通信层对数据报文进行校验,校验通过即存储到数据中心,同时发送给列控中心,并将列控中心执行结果报文存储到数据中心。

·最后,代理服务层中的数据,执行结果,告警信息等逐层逆向返回给人机交互层显示测试是否完成。

3 自动化测试平台

3.1 数据处理域详细设计

3.1.1 基础数据通信层

基础数据通信层的功能为模拟外接设备接口,与列控中心通信,仿真出真实车站运行环境。各接口使用协议与工程现场保持一致,其中ZPW-2000轨道电路采用CAN通信方式,固定为从节点、地面电子单元中LEU采用RS422串口通信,BDU采用UDP协议通信,调度集中(CTC)采用RS422串口通信,继电器设备使用PLC模拟数字驱采,临时限速服务器(TSRS)、计算机联锁(CBI)、相邻列控中心(TCC)以及信号集中监测(CSM)均采用UDP协议通信。

3.1.2 数据中心

数据中心主要包括数据库模块、缓存模块。数据库模块用于存储基础数据通信层传回的数据。为了减缓数据库压力,降低数据库读操作频率,增加设计缓存模块,加快读写速度,数据存储采用MySQL关系型数据库,持久化保存数据,数据缓存采用Redis非关系型数据库,缓存访问频次高的数据。为保证系统稳定运行,写操作方案为操作数据存储。若需要数据缓存,则操作数据缓存,如果操作数据缓存失败,禁止回滚,定时刷新缓存更行数据。为了保证系统高效运行,读操作方案为操作数据缓存。如果缓存中不存在数据,则读取数据库,将读出来的数据缓存至数据缓存中,方便下一次查询,提高读取效率。

3.2 逻辑处理域详细设计

3.2.1 人机交互层

人机交互核心功能是获取用户输入的指令以及测试结果的展示。人机交互层设计包括动态效果,静态页面,请求与响应等。动态效果和静态页面是用于显示页面信息,请求与响应模块用于提取静态页面中的参数和向静态页面载入数据。首先将自动化测试平台部署到服务器上,用户可以在服务器所在局域网内任意操作机进行访问,下发测试案例,浏览器将向自动化测试平台发送请求,请求处理器进行请求处理并响应,将测试案例下发给流程服务。

3.2.2 流程服务层

流程服务层核心功能是对测试案例的序列化,测试案例有规范的文本格式,对应唯一的测试案例ID,流程服务先对文本进行分割,然后将分割后的文本映射成具体的设备号加命令号,序列化器进行排序,生成完整的操作序列。比如办理联锁进路测试案例,会被映射成计算机联锁下发具体进路与具体信号机点灯,下发给组件服务层。

3.2.3 组件服务层

组件服务层核心功能是实现操作序列到命令报文转换,接收到操作序列后,组件服务将操作序列每一步作为一个键值,到数据中心搜索,查找其对应的命令数据,并将命令数据填充到对应外接设备报文里,转发给代理服务层。

3.2.4 代理服务层

代理服务层的核心功能是解决数据中心变更等带来的系统升级问题。当出现外接设备增加或减少等情况时,会对系统业务带来大规模变更,从而增加系统不稳定因素,通过代理层及适配器可实现系统灵活扩展并稳定运行。代理服务层主要包括数据通信层代理模块、数据访问层代理模块。数据通信层代理模块主要负责和基础数据通信层通信。数据访问代理层模块主要负责和数据中心层通信。代理服务节点作为组件服务层的通信接口,定义了基本的业务接口规范。为了兼容上层组件业务与数据中心和数据通信服务之间的差异,增加适配器设计,后期维护时,如果业务不发生变更,而底层因为系统扩容需要变更时,只需要调整适配器及代理层即可。

3.2.5 基础服务层

基础服务主要包括基础研发框架、任务调度、文件管理、告警管理、权限管理,以及为各层提供基础通用的组件,设立该层可以促进业务服务的复用功能,提高开发效率。基础服务层包含组件如图5所示。

图5 基础服务层组件示意图

3.3 网络部署

自动化测试平台采用分布式部署方案,驱采程序、ZPW-2000轨道电路通信程序、相邻列控中心通信程序、计算机联锁通信程序部署在工控机1上,临时限速服务器通信程序、调度中心通信程序、LEU/BDU通信程序部署在工控机2上,自动化测试平台部署到两台服务器上,冗余配置,数据库部署到单独的存储服务器上,具体部署方式如图6所示。

图6 自动化测试平台部署示意图

4 性能评估

目前列控中心软件测试主要以有经验的测试人员手动测试为主,根据测试大纲要求,遍历操作测试案例,人工判别结果,完成测试。但人工手动测试具有耗时长、容易误操作的缺点,通过自动化测试平台测试,能够完成手动测试大部分案例,在提高了测试效率的同时可以提高测试准确率。

将现有测试大纲里面的测试案例进行归类,根据之前多次测试的数据记录,统计了每个功能模块测试案例的平均测试耗时与准确率。由于测试效率与准确率与测试人员自身业务经验与以及操作速度有关,只保留两位小数。最后使用提出的自动化测试平台进行同等测试,得到的测试性能比较情况如表2所示。

表2 测试耗时与准确率统计

测试平均耗时方面,自动化测试平台上每条案例间隔执行时间为人为设定,在保证每条案例能够执行完整的条件下,设置了不同的间隔。相对于手动测试,自动化测试效率有了很大提升。在测试准确率方面,自动化测试平台执行案例结果与列控中心初始状态有关,会有部分案例出现错误判别情况,其余案例能够实现全部正确执行,提高了测试准确率,保证了测试质量。

5 结束语

对列控中心软件测试操作复杂,效率低下,误操作率高的问题进行分析,提出一种列控中心软件自动化测试框架,实现测试案例自动下发、执行、判决。根据具体测试需求,采用分层设计的理念,将车站数据配置、案例加载、文本案例解析、命令下发、基础通信、日志权限管理等分层设计,实现测试全过程监控。总体来看,此设计方案弥补了原测试平台扩展性差、测试困难、效率低下等不足,且降低了开发成本,提高了实际测试质量,具有很好的应用价值。在今后的研究工作中,可主要研究测试案例自动生成,提高自动化程度。提出的自动化测试框架具有很好的兼容性,可推广应用到无线闭塞分区、计算机联锁、联锁列控一体化等信号设备安全测试中,提高测试效率。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!