自动化测试在城轨联锁产品测试中的应用

2023-11-02 01:49王军贤
铁路通信信号工程技术 2023年10期
关键词:测试工具自动测试测试数据

王军贤

(通号城市轨道交通技术有限公司,北京 100070)

1 概述

随着城市轨道交通的快速发展,计算机联锁(CBI)在城轨基于通信的列车控制系统(CBTC)中广泛应用。计算机联锁作为保障行车安全的子系统,它的功能、性能和产品质量直接关系到列车运行的安全与效率,而联锁软件作为计算机联锁系统的核心软件,其数据的准确性对信号系统的安全性与可靠性至关重要,是城轨CBTC运行的基础,因此对联锁产品遍历测试在城市轨道交通领域显得非常关键。目前主要采用人工测试,人工测试的弊端为效率低、测试成本高、测试结果不可重复等。为了解决这些问题,可以采用自动化测试技术,以提高测试效率和降低测试成本。联锁自动测试是一种自动化测试技术,它可以帮助开发人员更快地测试软件,确保软件的正确性和可靠性。

2 CBTC联锁产品交付测试现状

目前城轨CBTC联锁产品交付测试包括软件版本校核、单项测试、输入输出测试、界面显示测试、进路测试、维护机测试、平台数据测试、接口测试8个大项,其中单项测试包括上电锁闭测试、道岔单锁/单解、道岔强扳等15个测试项;进路测试包括进路办理、进路锁闭、信号开放、引导进路等48个测试项,进路测试分为CBTC模式和降级模式两种;接口测试包括联锁与区域控制器(ZC)接口信息测试、联锁与地面电子单元(LEU)接口应答器报文数据测试、联锁与列车自动防护系统(ATP)接口数据测试、联锁与车地通信(TWC)接口数据测试等4个测试项。联锁产品交付测试共计72个测试项,测试对象如图1所示。

图1 测试对象Fig.1 Test objects

目前联锁产品测试主要依靠纯人工测试,完整测试1条进路包括CBTC模式和降级模式大约需要2.5~3 h,对于车站规模为25~30条进路的新建车站,进行一轮完整的交付测试周期大约为20个工作日,有些车站进路数量超过50条,进行完整一轮交付测试的周期大约需要30个工作日,加上前期测试输入资料准备、测试环境准备、编写测试大纲和测试报告相关工作,每个车站的测试周期会更长;另外,人工测试操作重复性高、测试效率低,难免出现人为操作失误,导致测试结果的可信性降低,很难做到完全的遍历测试。

综上,无论是从测试效率和测试准确率都无法满足联锁产品交付测试工作的需求,为了满足测试的高效性、准确性及覆盖率,急需研究一种联锁自动测试工具代替人工测试来提高测试效率和准确率,进而大大提升联锁产品测试的交付能力和水平。

3 人工测试与自动测试方案比对

3.1 人工测试流程

人工测试采用一台可进行限定环境模拟的接口计算机,测试工程师使用自然语言编写测试用例,选择测试数据的样本,初始化测试环境并向测试人机界面发送命令,后通过显示的数据检查结果并编写测试报告,如图2所示。

图2 人工测试流程Fig.2 Manual test process

人工测试潜在的问题主要包括:不具代表性的数据样本、数据丢失或数据滥用;数据读取错误,测试报告完整度不高等均会给测试带来干扰,造成逃逸缺陷(NCR),影响系统安全。

3.2 自动测试流程

自动测试工具具有场景运行功能,它有完整的环境和故障模拟,测试工程师使用高级指令和宏以及系统知识去编写测试案例,上载所有测试数据后运行测试,自动选择要测试的案例,通过测试工具管理场景结果,根据测试结果自动编写测试总结报告,自动测试流程如图3所示。

图3 自动测试流程Fig.3 Automatic test flow

3.3 自动测试的优势

综上,自动测试的优势总结有如下:

1)测试运行时无人为错误,包括操作或检查;

2)确保可重复性和非回归能力;

3)测试结果有明确通过/失败标识;

4)测试库、宏、场景的可以被复用;

5)可实现测试案例逻辑和故障分析。

4 联锁产品交付测试自动化实现

4.1 自动化测试工具设计

自动化测试是不在人工干预的情况下,按提前预设的流程自动进行测试、数据分析并以一定的方式输出展现测试结果,基于以上思路设计以场景库、测试引擎及测试平台为核心的自动化测试工具。自动化测试工具架构如图4所示。

图4 自动化测试工具架构Fig.4 Architecture of automatic test tool

场景库:存储、维护多种测试场景和测试脚本,方便回归测试。场景定义应结合信号系统需求、子系统需求,以及由此设计的用例,并将这三者的追踪关系进行记录,以保证测试用例的可追溯性并满足覆盖审查条件。

测试引擎:负责被测对象软件的初始化和数据传输,解析自动化测试脚本,对各子系统的接口函数进行驱动,对其中的调用可以进行加速、减速等模拟时钟操作。

测试平台:以信号系统和各子系统(列车自动控制系统(ATS)、计算机联锁(CI)、ZC、车载控制器(VOBC))为被测对象,包括运行在一台或多台Linux操作系统的由真实信号系统源代码编译的应用程序、基于共享内存技术实现的内存变量监视和重载库、轨旁设备(信号机、道岔、计轴、屏蔽门等)模拟器、仿真车辆模拟器和以太网模拟器等多个应用进程。

司机操作界面:提供车辆运行状况显示,包括速度、告警、驾驶模式等信息,可以执行人工操作指令或场景库中的测试脚本触发的指令。

子系统仿真代理接口:负责获取信号系统软件中的数据,记录软件运行时的各类属性值、状态机工况、代码执行路径等。

4.2 联锁自动化测试工具实现

针对城轨联锁产品测试项,部分测试项主要为人工校核,如控显界面显示信号机朝向、高矮柱、平台参数等,该测试项主要为界面或数据核对,工具识别相对困难且测试用时占比较小,通过大量测试实践证明,单项测试、进路测试信息量大且耗时耗力,主要通过人工识别联锁表内信息同步手动操作控显界面按钮来测试,因此这部分具备自动化测试的特点。构建自动测试工具首先读取输入资料如联锁表、采驱表,并生成具体联锁车站自动测试基础数据,然后根据预先设定好的测试项目、测试方法和步骤对联锁软件进行单项测试和进路测试,最后生成测试日志和测试记录,实现流程如图5所示。

图5 联锁自动测试实现流程Fig.5 Implementation flow of automatic test of interlocking product

联锁自动化测试工具通过脚本文件来定义测试场景,通过多次运行编辑和生成的脚本文件实现对测试案例的重复测试,能模拟用户在控显界面和键盘上操作,并能识别屏幕上的文本以及图片,并根据控显界面元素的颜色以及状态的变化来检查界面显示是否满足测试结果,如识别道岔是否处于期望位置,信号机显示的颜色是否符合预期。同时,联锁自动化测试工具可通过适配器采用以太网通信方式获取联锁输入与输出数据,并以此判断测试结果是否符合预期。

本文设计的联锁自动化测试工具可涵盖单项测试、进路测试等测试体系的所有测试内容,采用人工与自动相结合的方式,执行效率更高,对于回归测试也可以启用自动测试工具实现,可以运行在测试人员工作电脑或者工控机上,通过读取输入资料,包括联锁表、采驱表,并生成具体车站自动测试数据,通过人机界面选择测试项目,满足7×24 h自动测试的需求,并自动生成测试日志和测试报告,并记录相关NCR,测试工具架构如图6所示。

图6 联锁自动测试工具架构Fig.6 Architecture of automatic test tool of interlocking product

工具核心是测试工具的控制器,通过它加载场景和配置数据,发送待执行的命令,并在日志文件中记录测试结果。工具核心也允许用户去定义测试场景及整体测试配置。当适配器从工具核心收到执行命令后,执行操作并把测试结果返回工具核心。采用图像识别技术自动定位和确定软件界面中包含的控件进而自动生成测试脚本;测试过程中,通过对待测软件进行屏幕截图,采用图像识别算法识别截图中是否包含预定义的可操作控件,如果存在,则触发控制指令,达到图像识别引导测试过程的目的;测试结果的验证通过对待测软件的界面进行截图操作,利用图像识别技术将截图与期望的结果进行匹配,从而自动获取测试结果。LSTEST适配器通过UDP界面控制与LSTEST应用软件接口,并检查显示,适配器从工具核心收到执行命令,执行操作并将结果送回工具核心。对于接口使用cwind库和twapi来控制适配器到HMI的鼠标操作,并使用Img和twapi来检查设计位置的屏幕显示,该接口基于TCP实现,事实上在执行其他命令时,工具核心会等待反馈,以防造成通信堵塞。如果有通信故障发生,将尝试建立3 次通信,如果失败,则会向工具核心返回1个故障信息。

为最大限度提高测试效率,做如下优化,定义可替换测试MMI的接口,定义MMI虚拟用户来控制和检查MMI,增加故障命令、环境模拟,并加入从旧的测试数据自动导入测试数据。

4.2.1 读取输入资料

首先读取Excel格式文件CBTC联锁表、降级模式联锁表、引导进路联锁表、自动折返进路联锁表并识别联锁表中的道岔信息、区段信息、信号机信息等其他元素,然后将测试数据进行存储,导入联锁表数据,同时读取输入输出信息表,然后将测试数据进行存储,作为生成自动测试基础数据的输入。

4.2.2 生成测试数据

在完成基础数据的读取后,生成基于特定线路和特定站场的测试数据以便调用,在测试时调用并生成测试基础数据,基础数据生成结果如图7所示。

图7 基础数据生成结果Fig.7 Results of basic data generation

4.2.3 测试运行

启动工具核心,对车站联锁数据进行完整测试、部分测试,可以根据项目特性与差异点任意选取测试项,也可在任意测试项内选择所需要测试的数据灵活设置,测试项选择如图8所示。

4.2.4 测试输出

测试完成后,测试主界面可直接显示测试错误数量,测试日志内则详细记录了测试结果,测试结果主界面显示如图9所示。

图9 测试结果显示Fig.9 Display of test results

测试完成后,除查看测试主界面测试错误数量外,测试日志内也详细记录了测试结果,并给出错误原因,可供测试人员分析,同时可根据测试日志生成最终的测试记录单,导入要生成报告的日志,可同时选择一个或多个日志文件,然后单击“生成”即可。测试报告如图10所示。

图10 测试报告Fig.10 Test report

5 优点与不足

本文构建的自动化测试工具的优点可在不改变任何数据代码的情况下代替人工操作鼠标执行测试,且满足7×24 h自动测试的需求,大大提高测试效率,尤其是在需求改变不大的回归测试中,甚至可以达到3倍以上效率的提高,有助于信号系统交付能力的整体提升;同时自动测试工具支持C/S、B/S各种技术框架和基于组件智能识别的组件工具,可实现自动化回归测试和功能测试,让测试更智能。在手动测试中测试人员存在一定的人为失误风险,并且很难做到完全的遍历测试,人工测试存在一定的测试误差,自动化测试工具可优先弥补此测试风险。测试成本降低约15%~30%,测试时间大大缩短,提升现场交付效率约30%~50%。

但是自动化测试工具在使用前需要进行测试准备,包括截图配置、菜单配置、输入资料配置等等,配置相对耗时,同时自动测试工具对测试设备要求较高,测试设备需运行流畅。若出现卡顿则会影响测试结果,纠错能力稍差,在测试过程中若弹出其他不相干的窗口,则会影响测试结果,甚至停止测试,同时对于自动测试工具的检测认证以及其系统的安全性与可靠性认证及维护是一个有待优化的问题。

6 结束语

本文在现有联锁产品交付测试方法和特点的基础上结合各线路,提出自动化测试的方式,且构建自动化测试工具架构,实现联锁产品交付测试的自动化过程。目前该自动化测试工具已经用于城轨联锁产品交付测试中,对提高测试效率及测试质量发挥了一定作用,但后期仍有一定的改进空间,可优化降低配置时间及配置通过率并增加图像识别技术达到完全的自动化测试,让测试效率及测试质量再上一个新台阶。

猜你喜欢
测试工具自动测试测试数据
测试数据管理系统设计与实现
JXG-50S型相敏轨道电路接收器自动测试台
Http并发连接测试工具
可并行测试的电磁兼容自动测试系统的实现
关于某型雷达自动测试系统的几点认识和建议
手车式真空断路器回路电阻测试电流线接头研究
基于自适应粒子群优化算法的测试数据扩增方法
空间co-location挖掘模式在学生体能测试数据中的应用
福禄克推出先进的连接式测试工具系统
一种卫星低频接口自动测试系统