2. 联锁逻辑基础与测试对象建模

联锁逻辑测试的第一步不是写用例,而是把现场设备抽象成可计算、可判定的测试对象。联锁系统本质上是一套“条件—结果”的约束网络:它根据进路请求、道岔位置、轨道区段占用状态和信号机显示状态,判断某条进路能否建立、某架信号机能否开放。测试人员若不能准确描述这些对象及其相互关系,后续的用例设计就会失去基准,故障定位也无从谈起。

四类核心对象及其状态语义

联锁逻辑中反复出现四类对象,每一类都有明确的状态集合和判定含义。

进路是联锁处理的基本单位,表示列车或调车车列从某一位置运行到另一位置所经过的路径。一条进路的状态通常包括“未建立”“锁闭”“开放”“解锁中”等。进路建立的前提是路径上所有道岔位置正确、所有轨道区段空闲、无敌对进路锁闭。测试时,进路对象是输入条件的汇聚点,也是输出结果的观察点。

道岔提供定位和反位两个基本位置,部分道岔还有四开状态。联锁逻辑关心的是“道岔是否在进路要求的位置上”以及“道岔是否被锁闭”。道岔位置由转辙机表示电路反馈,测试建模时应把“道岔位置”和“道岔锁闭状态”作为两个独立属性,因为二者在故障场景下可能不一致。

信号机是联锁逻辑的输出执行对象。其显示状态包括红灯、绿灯、黄灯、双黄灯等,联锁逻辑根据进路条件和前方区段状态决定允许显示的灯位。测试中,信号机开放条件是典型的“多输入与逻辑”,任何一个前提不满足都应导致信号机不能开放或立即关闭。

轨道区段反映线路占用情况,状态为“空闲”或“占用”。轨道区段既是进路建立的前提,也是进路解锁的依据。测试建模时需注意区段的分割边界与进路路径的对应关系,避免把区段状态与进路状态混为一谈。

联锁逻辑测试对象建模关系 输入条件 道岔位置:定位 / 反位 轨道区段:空闲 / 占用 联锁逻辑运算 联锁表 → 逻辑表达式 敌对进路互斥判断 输出结果 进路:建立 / 锁闭 信号机:开放 / 关闭 测试用例输入输出边界 输入边界(激励) • 道岔位置组合:定位/反位/失去表示 • 区段占用状态:空闲/占用/分路不良 • 进路请求:列车进路/调车进路 • 敌对进路锁闭状态 输出边界(判据) • 进路锁闭/未锁闭 • 信号机允许/禁止显示 • 道岔锁闭/解锁状态 • 故障提示与报警输出 映射

联锁表与逻辑表达式的对应

联锁表是联锁逻辑的表格化描述,每一行对应一条进路,列出该进路涉及的信号机、道岔位置要求、轨道区段、敌对进路等要素。测试建模时,联锁表是输入条件与输出结果之间的“契约”。例如某条接车进路在联锁表中记录:始端信号机为 X,要求 1# 道岔定位、3# 道岔反位,经过 1G、3G 区段,敌对进路为另一条接车进路。把这些要素转成逻辑表达式,可以写成:

进路建立条件 = 1#道岔定位 ∧ 3#道岔反位 ∧ 1G空闲 ∧ 3G空闲 ∧ ¬敌对进路锁闭
信号机开放条件 = 进路建立 ∧ 进路锁闭 ∧ 前方区段空闲 ∧ 灯丝完好

这个表达式直接决定了测试用例的取值空间。测试人员需要针对每一个合取项设计“取真”和“取假”的用例,而不是只测一条“全部满足”的正常路径。例如把 3# 道岔置于定位而其余条件满足,预期结果是进路不能建立、信号机不能开放;把 1G 区段置为占用,同样应阻止进路建立。这种逐项取反的用例设计方法,能够覆盖联锁逻辑中最常见的单点失效场景。

测试用例的输入输出边界

测试用例的边界划分,核心是明确“哪些量是激励、哪些量是判据”。激励是测试人员可以施加或模拟的条件,包括道岔位置、区段占用、进路请求按钮操作、敌对进路状态等;判据是联锁系统给出的结果,包括进路锁闭状态、信号机显示、道岔锁闭状态以及故障报警输出。边界不清会导致两类错误:一是把输出量误当输入去设置,造成用例无法执行;二是只观察信号机而忽略进路锁闭状态,漏判“信号机关闭但进路仍锁闭”的异常。

在实际测试中,输入边界还需要考虑“合法但异常”的取值。例如道岔失去表示既不是定位也不是反位,属于设备故障状态,联锁逻辑应将其视为不满足位置条件,并给出相应提示。轨道区段的分路不良则表现为“列车占用但区段显示空闲”,这类场景无法通过简单设置“占用”来模拟,需要在测试环境中通过调整区段模拟条件或注入故障来实现。测试建模时应把这类边界单独列出,作为专项用例的来源。

建模建议:先用联锁表逐行提取每条进路的条件集合,再把每个条件标注为“可激励输入”或“可观测输出”,最后按条件逐项取反生成用例骨架。这样得到的用例与联锁表一一对应,便于回溯和覆盖度统计。

从对象模型到可执行用例

把上述对象关系落到测试执行层面,需要建立一张对象—状态—操作的映射。以一条接车进路为例,测试前先确认 1#、3# 道岔的当前实际位置,通过测试台或仿真接口把它们驱动到联锁表要求的位置;确认 1G、3G 区段处于空闲状态;确认敌对进路未锁闭。然后发出进路请求,观察进路锁闭表示和信号机显示。若信号机开放,再逐项改变一个输入条件,观察信号机是否按规定关闭、进路是否保持锁闭。每一步的观察点都应落在前面定义的输出边界上,而不是凭主观感觉判断“看起来正常”。

需要强调的是,联锁逻辑测试的对象建模不是一次性工作。不同站场的联锁表不同,道岔编号、区段划分、敌对关系都会变化,但“进路—道岔—信号机—区段”这四类对象的状态语义和逻辑关系是稳定的。掌握这套建模方法后,测试人员面对新的站场数据时,只需重新提取联锁表条件、重新标注输入输出边界,就能快速生成有针对性的测试用例,并在出现异常时沿着对象关系逐层定位到具体的条件项。