基于测试用例的通用联锁规则自动测试系统

2023-10-25 01:30辛帆王印谢林杨平
铁道通信信号 2023年10期
关键词:自动测试测试用例道岔

辛帆,王印,谢林,杨平

计算机联锁系统是轨道交通信号系统中保障列车运行安全的重要屏障,其根据带有搜索逻辑的通用联锁规则,结合具体的站型和配置,通过布尔表达式生成工具生成特定站场的联锁逻辑[1]。因此,通用联锁规则是计算机联锁系统在现场安全可靠运行的基础。对通用联锁规则进行测试,是保证计算机联锁系统功能正确,检查并消除逻辑设计缺陷的必要环节。

目前,针对通用联锁规则的测试手段多以人工测试为主,存在测试颗粒度大、工作量大、重复劳动多、变量分析困难等问题。为此也产生了很多针对联锁软件自动测试方法的研究,如文献[2]提出一种基于故障树的联锁安全功能黑盒测试方法;文献[3]提出一种联合上、下位机的灰盒测试系统;文献[4]提出一种基于脚本实现自动测试,以替代人工操作的联锁测试系统。然而以上各种自动测试方法,均依赖于设备状态变化而非特定的变量跳变逻辑,测试结果判定颗粒度较大。

因此,本文设计了一种基于测试用例的通用联锁规则自动测试系统,以计算机联锁系统逻辑架构为基础[5],模拟实际运营场景,通过追踪相关变量的跳变时序,精准定位联锁逻辑的设计缺陷,可进一步提高测试效率。

1 通用联锁规则自动测试系统功能需求

1)测试对象。该系统主要用于测试通用联锁规则的准确性。由开发人员根据计算机联锁系统的功能需求,将联锁逻辑抽象为通用的表达式,并结合站场应用数据进行实例化,生成特定站场的布尔逻辑文件。该布尔逻辑文件需覆盖通用联锁规则的每条支路。

2)测试方法。由于测试人员虽了解信号需求和相关接口功能,但对信号规则具体实现的方式并不熟悉,因此采用灰盒测试方法[6-7]。

3)系统架构。为减少对硬件设备的依赖,该自动测试系统采用软件仿真的方式,模拟计算机联锁系统逻辑运算及接口功能,以保证对应布尔逻辑文件的运行与实际站场运行情况一致。

4)时序要求。基于布尔逻辑的通用联锁规则对时序的要求是非常严格的,现场实际运行过程中出现的故障,大多是由于各变量的跳变顺序不正确而产生的。因此,在测试用例中需定义联锁逻辑的中间变量和输出变量的触发时机和跳变时机。自动测试系统解析测试用例中的操作命令及变量信息,由对应模块接收并执行操作命令;记录每个变量的跳变周期;结合实际运行结果与预期结果是否一致,来判断通用联锁规则逻辑设计的正确性。

2 系统架构

依据计算机联锁系统功能,通用联锁规则自动测试系统逻辑架构见图1。

图1 自动测试系统逻辑架构

1)测试用例解析和执行模块:获取测试用例各步骤的操作命令和变量跳变信息,并依次下发到对应的仿真模块。

2)模拟上位机模块:提供人机交互接口,显示站场的实时状态,并向模拟下位机模块发送操作命令。

3)模拟下位机模块:执行联锁布尔逻辑文件运算,通过接口仿真模块实现驱采功能。

4)接口仿真模块:以仿真目标控制器获取其他子系统的接口信息,驱动室外设备并能实时采集设备状态。

5)模拟邻站联锁下位机模块:仿真相邻联锁集中站的逻辑运算,实现与本站的通信功能。

6)结果判定模块:获取各测试步骤的预期结果,与各仿真模块实际运行结果进行一致性对比,作为确认测试通过的依据。

3 功能实现

3.1 测试用例解析与执行

自动测试系统需从测试用例中解析需执行的操作命令,获取对应的追踪变量,并确定追踪变量的跳变时机。

3.1.1 测试用例规定格式

在测试用例文件中可以定义若干测试用例,测试用例规定格式见图2。

图2 测试用例规定格式

1)测试步骤列:标识每条用例的执行步骤。

2)执行操作列:以功能函数的方式[8]定义对应测试步骤下需要执行的操作和操作对象;特殊测试场景下,同一步骤可定义多个操作命令,表示在同一周期内可同时下达多个命令。功能函数类型及含义见表1。

3)追踪变量列:定义执行操作完成后需追踪的所有关键变量。

4)等待周期列:定义追踪变量发生跳变的具体周期或时间。

5)预期变量状态列:对应周期追踪变量的预期变化,可定义为状态的跳变或持续保持。

6)追踪变量开始基准列:以“变量名=变量状态”的格式定义“追踪变量列”中对应变量跳变的追踪基准。如果某追踪变量开始基准列为空,则解析为追踪变量的基准变量与前一个追踪变量的追踪基准一致。

3.1.2 测试时序

自动测试系统不仅需追踪可判定运算结果的关键变量,还需确认操作命令执行过程中相关变量的状态变化和跳变时机,以确保执行过程、运算结果的准确性。

自动测试系统需先确定追踪基准,再解析追踪变量跳变的相对时机,即在追踪基准变量发生预期变化的若干周期后,追踪变量会发生预期跳变。同时,当前追踪变量又可以作为后续其他变量跳变的基准。

自动测试系统将测试场景下所有关键变量跳变解析为:“变量名称1状态跳变-跳变周期/跳变时间—变量名称2状态跳变-跳变周期/跳变时间—…—变量名称n状态跳变-跳变周期/跳变时间”的一个或多个矢量关系链表。依据该变量跳变的矢量关系链表,可以获得完整的功能测试时序。

在某一步骤操作执行后,系统完成当前步骤定义的所有变量追踪,即开始执行下一操作步骤,以保证各操作步骤之间的时序均可依据场景需求执行。

3.1.3 追踪变量周期转换

布尔逻辑文件中,依据追踪变量是否立刻响应表达式,将其划分为时间变量和非时间变量。对于时间变量,当其布尔运算表达式成立时,会先触发变量的计时器,在指定时间计时结束后再进行码位跳变;对于非时间变量,当其布尔运算表达式成立时,变量立刻发生跳变[10]。在测试用例中,对时间变量的跳变时机定义为等待时间,即在“变量状态等待周期”列以秒(s)为单位定义时间值;对非时间变量的跳变时机定义为等待周期,即在“变量状态等待周期”列不加单位。

计算机联锁系统的运算主周期可根据项目需要进行配置。为保证测试准确性,需要将不同类型变量的跳变时机均转化为对应周期进行测试,以确定周期级变量的时序,并以周期为单位进行逻辑判断。时间变量等待时间与等待周期的换算公式为

式中:P为周期数,T为时间值,Cycle为联锁运算主周期。

在所有跳变时机完成周期转换后,依据周期数从小到大依次排列,重新填充、生成新的矢量关系链表。该矢量关系链表具有严格的周期时序,可直接作为测试结果判定的依据。如果解析后若干变量的跳变时机在同一周期,则表示这些变量不需要区分先后的时序关系。

3.2 接口仿真

该自动测试系统仅对外部接口的应用层数据进行仿真,以实现脱离硬件限制的通用联锁规则测试,在系统集成测试时再覆盖其他层级的接口测试。外部接口仿真主要分为:与轨旁设备的接口仿真、与相邻联锁的接口仿真,以及其他接口仿真3个部分。

3.2.1 与轨旁设备的接口仿真

接口仿真模块采用黑盒测试方法,将轨旁设备的驱采逻辑抽象为输入、输出和响应时间的码位组合,并在仿真配置文件中定义。对轨旁设备而言,其输入为计算机联锁系统的驱动码位命令,输出为轨旁设备响应对应命令的码位状态,响应时间为码位状态跳变的时机。轨旁设备接口仿真逻辑示意见图3,仿真步骤如下。

图3 轨旁设备接口仿真逻辑示意

Step 1某一周期内下位机输出的驱动码位发生变化,接口仿真模块搜索仿真配置文件中是否存在与当前驱动码位一致的输入码位组合,若不存在,则忽略本次驱动码位跳变;若存在,则需获取其对应的输出码位组合及响应时间。

Step 2判断输出码位是否处于模拟故障状态,若是则忽略本次驱动码位跳变;若否则开始等待指定响应时间的延时。

Step 3判断延时过程中驱动命令是否发生变化,若没有发生变化,则在延时结束后将输出码位设置为指定状态;若发生变化,则接口仿真模块立即放弃对输入码位的响应逻辑,重新匹配仿真配置文件的码位组合。

3.2.2 与相邻联锁的接口仿真

采用与本站下位机模块相同的实现方法,为邻站下位机模块设置独立线程,并执行相应布尔逻辑文件的逻辑运算,通过网络通信与本站模拟下位机模块实现信息交互。

3.2.3 其他接口仿真

根据模拟下位机模块的运算结果,将输出码位传递给接口仿真模块;同时通过测试用例中的定义函数SET(),实现其他子系统发送的输入码位状态设置。

3.3 结果判定

根据测试用例的解析方法和变量追踪周期的转换方法,可以将测试用例执行后的预期结果精确到周期级,测试用例的执行结果需与周期相对应,才可以认为执行成功。结果判定流程见图4,仿真步骤如下:

Step 1将测试用例中所有需追踪变量的跳变等待时间统一转换为周期;依据基准变量,获取每一步操作命令执行后的追踪时序。

Step 2依次记录操作命令执行的运算结果。

Step 3将运算结果与解析后的变量追踪时序进行一致性对比。若任一变量状态与预期追踪时序不一致,判定为执行失败,记录对应的执行步骤及变量,退出执行当前用例;若一致,则在测试记录中标记关键变量,继续执行操作命令,直至所有步骤执行结束。标记的测试记录作为变量分析的依据供测试人员查验。

自动测试系统人机交互界面,可对执行过的测试用例给予测试通过或测试失败的状态提示,测试用例结果界面见图5,点击用例名称可查看测试用例的执行细节。

4 试验验证

以进路动作道岔功能测试为例,站场示意见图6。图6中,P02C道岔采用双机牵引的电子五线制接口[11-12],其初始状态在定位,将P02C道岔单操到反位后,测试其是否可以被进路操纵到定位,且道岔条件满足后是否开放始端信号。该测试用例包含2个执行操作命令,见表2。

表2 道岔功能测试用例

图6 站场示意

在执行“将P02C单操到反位”操作时:①由于转辙机的动作时间不确定,P02C道岔反位表示继电器状态(P02C-FBJ)以道岔第一个牵引点的反位表示状态码位(P02C-J1DBJ-CPDM5=1)为追踪基准,该继电器应在收到第一个牵引点反位表示状态有效的同一周期励磁;②在道岔正常动作过程中,不会误报挤岔报警(P02C-JCJ=1)。结果判定模块根据下位机运算周期,将15 s转换为60个周期(下位机运算周期为250 ms),并检查挤岔报警在60个周期内应始终处于无效状态。

在执行“办理进路S08C-S12C”操作时:①测试用例中重新以进路始端命令为追踪基准(S08C-LRC=1)追踪关键变量;②系统应在各变量满足联锁逻辑的前提下,收到进路始终端命令后,同一周期内变量S08C-LKJ跳变为有效状态,并在下一周期驱动变量S08C-LXJ跳变为有效状态。

测试用例解析和执行流程见图7,测试步骤如下:

图7 测试用例解析和执行流程

Step 1解析测试用例,获取需执行的操作为模拟上位机命令,将P02C道岔反操码位P02CFCCL发送到模拟上位机,由上位机向下位机发送单周期有效的反操命令。

Step 2下位机在收到上位机命令的当前周期,向转辙机的2个牵引点输出驱动命令,即P02C-J1DCJ-QPDM5=1,P02C-J2DCJ-QPDM5=1。

Step 3接口仿真模块在收到道岔驱动命令后,对仿真配置文件中采集-驱动组合进行匹配,模拟道岔室外动作,即在收到驱动命令后切断2个牵引点的定位表示,若干周期后,模拟采集到2个牵引点的反位表示。

Step 4当前步骤执行完毕后,测试系统在测试记录中与解析的测试用例预期结果逐一进行一致性对比,当所有的变量对比均一致后,则判定当前步骤执行成功;在下一周期,立即执行下一步骤。

Step 5解析测试用例下一步骤,获取进路建立命令;上位机先发送进路操纵命令,当P02C道岔扳动到指定位置后,再发送进路始终端命令,并进行结果判定。

输出测试用例执行结果,测试用例分析与通用联锁规则的设计一致,可以通过测试。

5 结束语

相对于传统的人工测试方法,本文研发的自动测试系统对通用联锁规则中可能存在的时序问题更加敏感,能更好地测试出通用联锁规则中潜在的设计问题,极大地提高了测试效率及准确率,并在实际测试中具有很好的适用性。

下一步可在该自动测试系统中增加实例化模块,依据通用联锁规则测试用例和联锁表等数据,生成特定站场的测试用例,并能自动执行且判断测试结果,以解决当前工程项目测试效率低、重复劳动多等问题。

猜你喜欢
自动测试测试用例道岔
基于SmartUnit的安全通信系统单元测试用例自动生成
中低速磁浮道岔与轮轨道岔的差异
场间衔接道岔的应用探讨
既有线站改插铺临时道岔电路修改
JXG-50S型相敏轨道电路接收器自动测试台
可并行测试的电磁兼容自动测试系统的实现
基于混合遗传算法的回归测试用例集最小化研究
关于某型雷达自动测试系统的几点认识和建议
基于依赖结构的测试用例优先级技术
一种卫星低频接口自动测试系统