Unit testing technology for railway signal safety software based on EFSM model
-
摘要: 铁路信号安全软件内部逻辑复杂,通过充分的单元测试能够更好地发现和排除软件内部的缺陷。文章分析单元测试常用方法,并结合铁路信号安全软件单元测试技术要求,提出一种基于扩展有限状态机(EFSM, Enhanced Finite State Machine)模型的黑白盒融合单元测试方法。使用自动化测试工具Cantata,以无线超时降级场景为实例,验证该方法是否可以满足测试场景的完备性,并且关注软件结构是否被完全覆盖。根据覆盖结果,对未覆盖原因进行分析,判断是否存在异常场景,并针对未覆盖分支补充测试场景,丰富了测试案例,从而保障了铁路信号系统的可靠性。Abstract: The internal logic of railway signal safety software is complex, and through sufficient unit testing, defects within the software can be better discovered and eliminated. This paper analyzed common methods of unit testing and proposed a black and white box fusion unit testing method based on the Extended Finite State Machine (EFSM) model, combined with the technical requirements of railway signal safety software unit testing. The paper used the automated testing tool Cantata as an example to verify whether the method can meet the completeness of the testing scenario and paied attention to whether the software structure was fully covered, analyzed the reasons for the lack of coverage based on the coverage results to determine whether there were abnormal scenarios, provided supplementary testing scenarios for the uncovered branches, which enriched the testing cases and ensured the reliability of the railway signal system.
-
在全球经济下行和国际原油价格不断攀升的影响下,铁路部门作为一个能源消耗巨大的企业,与其他市场经营主体一样,面临着运营成本增加的压力。同时,在全社会倡导绿色环保和节能减排的大背景下,低碳发展势在必行[1]。中国铁路哈尔滨局集团有限公司(简称:哈局集团公司)2022年底前电气化改造率仅为38.7%,远低于全国铁路(简称:全路)75.8%的平均水平,内燃机车依然是哈局集团公司的主要运输动力。为了尽快降低哈局集团公司运营成本,实现节能减排的工作目标,利用信息化技术对铁路成本支出占比较大的内燃机车燃油消耗进行深入研究,具有重要意义。
目前,国内外对燃油消耗方面的研究备受关注。IFEU和SGKV等人[2]提出机车油耗计算过程中应考虑牵引总重、编组特性、线路条件、司机操纵等影响因素;Goodman等人[3]通过程序模拟的方法,对机车牵引能耗进行了计算,提出了单列车及多列车的计算模型;韩长虎等人[4]根据司机实际经验,构建了多种司机操纵能耗理论模型,分析了手柄级位及速度控制对机车能耗的定性影响,得出机车手柄低级位且恒速运行消耗能量较少的结论,并通过实验进行了验证。
基于上述研究,本文依据《列车牵引计算》技术规范的具体内容,参考内燃机车燃油消耗的影响因素,结合数学建模方法,建立内燃机车牵引作业的燃油单耗模型,设计了哈局集团公司内燃机车燃油单耗分析系统,实现内燃机车燃油的标准化与精准化管理,为规范司机乘务员的机车操纵、减少机车燃油消耗提供了准确的数据依据。
1 系统设计
1.1 系统架构
考虑到用户规模、系统可靠性、高并发及扩展性等特点,内燃机车燃油单耗分析系统采用B/S架构进行设计与开发。其架构如图1所示。
1.1.1 表示层
用于人机交互。采用基于MVVM(Model-View-View-Model)模式的Angular 16前端框架技术及基于Ant Design设计规范的ng-zorro组件库进行用户界面设计[5],为用户提供一个直观、清晰、美观的操作界面。
1.1.2 网关层
服务网关充当架构中微服务调用的过滤器和路由器,旨在为微服务架构提供一种简单有效的统一路由管理方式。Spring Cloud Gateway可以对具体业务提供特定的流控策略、缓存策略和鉴权认证策略等服务,具有安全控制、统一异常处理、防止结构化查询语言(SQL,Structured Query Language)注入等功能。
1.1.3 服务层
负责访问控制与业务逻辑处理,采用Spring Cloud Alibaba微服务框架开发[6],包括基础服务与业务服务。其中,基础服务包括系统认证与授权、任务调度及分布式事务服务;业务服务是具体业务功能服务,随着业务规模的扩展,可以进行模块的横向扩容,增加多节点部署,从而提高本系统的可用性。
1.1.4 数据访问层
负责与数据库进行交互,对数据进行增、删、查、改等操作。开发人员可以不再关注数据存储的具体实现细节,提高了开发效率和复用度,达到了降低耦合度的目标。根据业务要求进行定制化处理,增加数据访问权限控制功能,保证只有授权用户可以访问数据,确保数据安全。此外,该层还提供数据缓存功能,提高了数据访问速度和整体吞吐量。
1.1.5 数据层
负责数据的存储与访问。包括数据库、数据缓存服务器及分布式文件系统等3种模式。其中,数据库存储结构化数据,保证系统业务逻辑的关联性;数据缓存服务器存储被频繁访问且要求响应时间短的信息资源;分布式文件系统由元数据服务器节点和Chuck服务器节点组成,用于维护元数据并负责控制垃圾回收、负载均衡、接收处理数据I/O 请求等操作。
1.2 相关机务信息系统
根据内燃机车燃油单耗分析业务需求,与内燃机车燃油单耗分析系统相关的机务信息系统包括列车运行监控记录装置(LKJ)数据分析系统、机务运用安全管理系统(简称:运安系统)及铁路机车统计系统。这些系统是内燃机车燃油单耗分析系统的建设基础,为其提供司机进行牵引作业时产生的运输生产信息数据,包括机车类型、自重、换长等基础数据。其中,LKJ数据分析系统提供机车运行信息;运安系统提供机务作业计划、司机乘务员出勤记录及退勤记录。通过利用机车的出入库时间和司机乘务员的出退勤时间,将机车作业记录与机车运行情况进行关联,形成司机报单和机车燃油消耗理论推算记录[7]。铁路机车统计系统提供司机在一个统计日内实际机车作业燃油消耗量信息,结合司机报单数据,可以实现理论油耗与实际油耗的比对与分析。
2 功能设计
按照目前哈局集团公司机务部门的管理模式,内燃机车燃油单耗分析系统采用机务部、机务段及车间三级管理模式进行建设,其功能如图2所示。
2.1 单耗分析数据源管理
包括LKJ运行记录查询、司机乘务员出勤记录查询、司机乘务员退勤记录查询、司机乘务员派班计划查询及司机报单查询等功能。通过定时任务方式调用各机务生产系统的数据接口,获得相应数据,便于统计分析人员进行分析与核对。
2.2 机车打温补充管理
包括机车打温信息采集与机车打温信息审核等功能。其中,机车打温信息采集功能是按照业务部门要求实现机务段整备车间和检修车间人员补充录入机车打温信息;机车打温信息审核功能是机务段打温审核人员对接收到的车间上报信息进行核对,如果上报信息无误则通过审核,否则驳回。
2.3 单耗模型字典管理
管理温度参数字典,维护线路名称、机车运行月份、温度及修正系数之间的关系;管理燃油属性参数字典,维护热值和热效率属性值;管理机车空载单耗字典,维护机车类型、空载能耗之间的关系;管理机车起动单位阻力字典,维护机车类型、工况、基础阻力系数、滚动阻力系数及空气阻力系数之间的关系;管理车辆起动单位阻力字典,维护车辆类型、客货标识、空重标识、基础阻力系数、滚动阻力系数及空气阻力系数之间的关系;管理线路字典,维护线路名称、上下行标志、线路类型、起始里程、终止里程及单位阻力之间的关系。
2.4 单耗模型公式管理
主要对内燃机车5个作业阶段涉及的燃油单耗公式进行维护管理,涵盖计算子公式的新增、删除、修改、查询及启用等操作。单耗公式由计算因子(影响因素)和操作符组成,该管理功能还负责对计算因子、因子取值属性及阈值范围的精确维护,确保公式计算结果的准确性和可靠性。
2.5 综合统计分析管理
包括机车单耗综合分析查询、统计区段机车单耗信息汇总及司机乘务员节能评价查询等功能,如图3所示。其中,机车单耗综合分析查询实现了按配属单位、支配单位、主司机、副司机、机车号码、出库时间及入库时间组合条件查询机车单耗分析数据功能;统计区段机车单耗信息汇总实现了按线路名称、支线名称及特定统计区段进行机车燃油消耗量统计;司机乘务员节能评价查询实现了司机报单与司机操纵评价指标的联合统计分析,便于后期对司机节能操纵进行指导。
3 关键技术
3.1 内燃机车燃油单耗模型设计
依据《列车牵引计算》的具体内容[8],对内燃机车燃油消耗的直接因素和间接因素进行深入研究。其中,直接因素包括列车的型号、重量、运行速度,工况及机车性能等;间接因素包括运行线路因素(坡道、曲线及隧道信息)、环境因素(温度与海拔)、燃油特性、运输组织(运输计划与列车编组)及司机操纵习惯等。通过对列车牵引作业中受力情况的分析,结合哈局集团公司地理位置及天气等因素,假设列车在牵引过程中匀速行驶,即牵引力等于阻力[9],得到列车在各阶段运行的总能耗计算公式,表示为
$$ \begin{array}{ll}{\displaystyle \sum ({{P}}_{{k}}\cdot {t})}=\left( {\displaystyle \sum {W}_{空载}}+{\displaystyle \sum \text{}}{W}_{起步}+{\displaystyle \sum {W}_{基}{}_{本}}+\right.\\ \left. {\displaystyle \sum {W}_{附加}}+{\displaystyle \sum {W}_{制动}}\right)\cdot{\lambda}_{温度}\cdot{\lambda}_{海拔}\cdot{\lambda}_{损耗} \end{array} $$ (1) 式(1)中,Pk为内燃机车功率,单位为:kW;t为机车运行时间,单位为:h;W空载为机车空载工况做功,单位为:J;W起步为机车起步阻力做功,单位为:J;W基本为机车基本阻力做功,单位为:J;W附加为机车坡道附加阻力、曲线附加阻力及隧道附加阻力做功,单位为:J;W制动为机车电阻制动做功,单位为:J;λ温度为平均温度系数;λ海拔为平均海拔系数;λ损耗为机车损耗系数。
内燃机车单耗,为机车牵引一吨重量运行每一万公里的耗能,记为W单耗。由式(1),可得内燃机车燃油单耗数学模型,表示为
$$ \begin{array}{ll}{W_{单耗}=\displaystyle \sum ({{P}}_{{k}}\cdot {t})}\cdot10\;000/(L\cdot Z) \end{array} $$ (2) 式(2)中,L为机车运行里程;Z为机车总质量。
3.2 微服务技术
本文采用Spring Cloud Alibaba微服务框架进行设计,利用Nacos注册中心实现服务的注册管理,主要包括服务上线/下线、服务查询及服务节点管理等;同时,借助Sentinel组件实现服务的治理,既保护了本系统稳定运行,又为其使用者提供了可容忍的异常处理措施。按照业务的关联程度及可复用程度将整块业务进行合理拆分,构建独立部署运行的微服务,并对外提供可访问的接口。外界业务系统依据业务场景及复用情况对微服务调用、编排,完成业务需求。微服务技术的应用提高了本系统的资源利用率,为后期横向扩展提供了有效手段。
4 系统应用
本系统已在哈局集团公司某机务段试点应用,取得良好的试用效果。该机务段司机乘务员每日担当机车牵引或调车作业1500余次,形成司机保单500余张。通过本系统提供的机车单耗综合分析查询功能,可以有效地分析燃油消耗理论数据与统计部门提供的实际消耗量的差异。同时,利用节能评价相关功能有效地激励了司机乘务员机车节能操纵意识[10-11],提高了其机车操纵水平。
5 结束语
文章针对内燃机车燃油单耗分析的业务需求,梳理了影响机车燃油消耗量的各种影响因素,并借助数学建模思想构建了内燃机车单耗模型,设计了内燃机车燃油单耗分析系统,实现了单耗分析数据管理、机车打温补充及燃油消耗分析与评价等功能,从而达到了机务部门规范司机乘务员机车操纵的目标。
内燃机车燃油单耗分析系统系统已在哈局集团公司机务段试用,应用结果表明,该系统可以有效地激励司机乘务员节能操纵意识,降低哈局集团公司运营成本。为后期哈局集团公司电力机车能源消耗分析与管理积累了宝贵经验。目前,该系统存在HXN5机车柴油机转速超过1050转/s后LKJ数据不准确、导致油耗计算偏小的问题,下一阶段,将对HXN5机车其他油耗因素进行研究,完善单耗模型。
-
表 1 模型中各状态含义
状态 名称 含义 s1 automaticLevelFallback _idle 自动降级初始状态 s2 receive_radio_contace_loss 启动降级处理状态 s3 set_CTCS2_level 降级到C2等级状态 s4 receive_radio_contace_recover 终止降级处理状态 s5 unset_CTCS2_level 维持C3等级状态 表 2 模型中各迁移含义
迁移 内容 含义 t1 {s1,i1,g1,op1,s2} i1含义为无线丢失
g1含义为当前控制等级为C3级,模式为完全模式
op1含义为输出常用制动命令t2 {s2,i2,g2,op2,s3} i2含义为列车当前运行速度和C2允许速度
g2含义为无线超时制动10 s内,列车速度不高于160 km/h,且不高于C2等级允许速度
op2含义为执行自动降级到等级C2t3 {s2,i3,g3,op3,s5} i3含义为列车当前运行速度和C2允许速度
g3含义为无线超时制动10 s内,列车速度高于160 km/h,但低于C2等级允许速度
op3含义为不转入C2等级t4 {s2,i4,g4,op4,s3} i4含义为列车当前运行速度和C2允许速度
g4含义为无线超时制动10 s 后,列车速度不高于C2等级允许速度
op4含义为执行自动降级到等级C2t5 {s2,i5,g5,op5,s5} i5含义为列车当前运行速度和C2允许速度
g5含义为无线超时制动10 s后,列车速度高于C2等级允许速度
op5含义为不转入C2等级t6 {s2,i6,g6,op6,s4} i6含义为无线状态当前为恢复连接状态
g6含义为当前控制等级为C3级,模式为完全模式
op6含义为终止降级执行缓解常用制动表 3 黑盒测试用例
场景 全局变量 驱动参数 桩函数设置 期望输出 1 模式为完全模式
当前等级为C3等级无线丢失 -- 最大常用制动 2 模式为完全模式
当前等级为C3等级无线丢失
降级制动定时器= 9 s列车当前运行速度= 159 km/h
C2等级允许运行速度= 160 km/h降级为C2等级 3 模式为完全模式
当前等级为C3等级无线丢失
降级制动定时器= 9 s列车当前运行速度= 161 km/h
C2等级允许运行速度= 162 km/h保持C3等级 4 模式为完全模式
当前等级为C3等级无线丢失
降级制动定时器= 11 s列车当前运行速度= 161 km/h
C2等级允许运行速度= 162 km/h降级为C2等级 5 模式为完全模式
当前等级为C3等级无线丢失
降级制动定时器= 11 s列车当前运行速度= 159 km/h
C2等级允许运行速度= 158 km/h保持C3等级 6 模式为完全模式
当前等级为C3等级无线恢复 -- 缓解最大常用制动 表 4 白盒测试用例
用例 全局变量 驱动参数 桩函数设置 期望输出 1 模式为完全模式
当前等级为C2等级-- -- 不满足降级条件维持C2等级 2 模式为待机模式
当前等级为C3等级-- -- 保持C3等级 表 5 边界值分析测试用例
用例 全局变量 驱动参数 桩函数设置 期望输出 1 模式为完全模式
当前等级为C3等级无线丢失
降级制动定时器=10 s列车当前运行速度= 161 km/h
C2等级允许运行速度= 161 km/h降级为C2等级 2 同上 无线丢失
降级制动定时器= 9 s列车当前运行速度= 160 km/h
C2等级允许运行速度= 160 km/h降级为C2等级 -
[1] 杨 森,秦晓光,王 飞,等. 基于工程数据的测试脚本自动生成方案研究[J]. 铁道通信信号,2023,59(1):19-24,35. [2] 张 宇,李 昂,王 飞,等. 面向ATP车载设备的通用仿真测试平台研究[J]. 铁道通信信号,2021,57(12):1-6. [3] 杨志杰. CTCS-3级列控系统关键设备自主化研究[J]. 中国铁路,2018(7):1-6. [4] 陈慧琍,陈晓轩. 基于SmartUnit的安全通信系统单元测试用例自动生成[J]. 铁道通信信号,2020,56(6):43-47. [5] 中国国家铁路集团有限公司. 铁路信号安全软件编程暂行技术要求:TJ/DW 230-2020[S]. 北京:中国铁道出版社有限公司. 2020. [6] 中国国家铁路集团有限公司. 铁路信号安全软件测试暂行技术要求:TJ/DW 231-2020[S]. 北京:中国铁道出版社有限公司. 2020. [7] 凌 珊. 铁路信号软件单元测试研究[J]. 铁路计算机应用,2020,29(2):58-61. [8] 任丽霞. 计算机联锁软件的黑盒测试过程分析与实现[J]. 铁路计算机应用,2018,27(2):39-43. [9] European Committee for Electrotechnical Normalization. BS EN 50128: 2011 Railway applications. Communication, signalling and processing systems. Software for railway control and protection systems [S].Brussels, Belgium: European Committee for Electrotechnical Normalization, 2011.
[10] 王蒙蒙,罗 杨. 基于扩展有限状态机测试用例生成方法[J]. 电子设计工程,2020,28(6):97-100,106. [11] 中国国家铁路集团有限公司. 自主化CTCS-3级列控车载设备暂行技术条件:TJ/DW205-201912.1[S]. 北京:中国国家铁路集团,2019:78-79.