2. 联锁逻辑基础与测试对象建模
联锁逻辑测试的第一步不是写用例,而是把现场设备抽象成可计算、可判定的测试对象。联锁系统本质上是一套“条件—结果”的约束网络:它根据进路请求、道岔位置、轨道区段占用状态和信号机显示状态,判断某条进路能否建立、某架信号机能否开放。测试人员若不能准确描述这些对象及其相互关系,后续的用例设计就会失去基准,故障定位也无从谈起。
四类核心对象及其状态语义
联锁逻辑中反复出现四类对象,每一类都有明确的状态集合和判定含义。
进路是联锁处理的基本单位,表示列车或调车车列从某一位置运行到另一位置所经过的路径。一条进路的状态通常包括“未建立”“锁闭”“开放”“解锁中”等。进路建立的前提是路径上所有道岔位置正确、所有轨道区段空闲、无敌对进路锁闭。测试时,进路对象是输入条件的汇聚点,也是输出结果的观察点。
道岔提供定位和反位两个基本位置,部分道岔还有四开状态。联锁逻辑关心的是“道岔是否在进路要求的位置上”以及“道岔是否被锁闭”。道岔位置由转辙机表示电路反馈,测试建模时应把“道岔位置”和“道岔锁闭状态”作为两个独立属性,因为二者在故障场景下可能不一致。
信号机是联锁逻辑的输出执行对象。其显示状态包括红灯、绿灯、黄灯、双黄灯等,联锁逻辑根据进路条件和前方区段状态决定允许显示的灯位。测试中,信号机开放条件是典型的“多输入与逻辑”,任何一个前提不满足都应导致信号机不能开放或立即关闭。
轨道区段反映线路占用情况,状态为“空闲”或“占用”。轨道区段既是进路建立的前提,也是进路解锁的依据。测试建模时需注意区段的分割边界与进路路径的对应关系,避免把区段状态与进路状态混为一谈。
联锁表与逻辑表达式的对应
联锁表是联锁逻辑的表格化描述,每一行对应一条进路,列出该进路涉及的信号机、道岔位置要求、轨道区段、敌对进路等要素。测试建模时,联锁表是输入条件与输出结果之间的“契约”。例如某条接车进路在联锁表中记录:始端信号机为 X,要求 1# 道岔定位、3# 道岔反位,经过 1G、3G 区段,敌对进路为另一条接车进路。把这些要素转成逻辑表达式,可以写成:
进路建立条件 = 1#道岔定位 ∧ 3#道岔反位 ∧ 1G空闲 ∧ 3G空闲 ∧ ¬敌对进路锁闭
信号机开放条件 = 进路建立 ∧ 进路锁闭 ∧ 前方区段空闲 ∧ 灯丝完好
这个表达式直接决定了测试用例的取值空间。测试人员需要针对每一个合取项设计“取真”和“取假”的用例,而不是只测一条“全部满足”的正常路径。例如把 3# 道岔置于定位而其余条件满足,预期结果是进路不能建立、信号机不能开放;把 1G 区段置为占用,同样应阻止进路建立。这种逐项取反的用例设计方法,能够覆盖联锁逻辑中最常见的单点失效场景。
测试用例的输入输出边界
测试用例的边界划分,核心是明确“哪些量是激励、哪些量是判据”。激励是测试人员可以施加或模拟的条件,包括道岔位置、区段占用、进路请求按钮操作、敌对进路状态等;判据是联锁系统给出的结果,包括进路锁闭状态、信号机显示、道岔锁闭状态以及故障报警输出。边界不清会导致两类错误:一是把输出量误当输入去设置,造成用例无法执行;二是只观察信号机而忽略进路锁闭状态,漏判“信号机关闭但进路仍锁闭”的异常。
在实际测试中,输入边界还需要考虑“合法但异常”的取值。例如道岔失去表示既不是定位也不是反位,属于设备故障状态,联锁逻辑应将其视为不满足位置条件,并给出相应提示。轨道区段的分路不良则表现为“列车占用但区段显示空闲”,这类场景无法通过简单设置“占用”来模拟,需要在测试环境中通过调整区段模拟条件或注入故障来实现。测试建模时应把这类边界单独列出,作为专项用例的来源。
从对象模型到可执行用例
把上述对象关系落到测试执行层面,需要建立一张对象—状态—操作的映射。以一条接车进路为例,测试前先确认 1#、3# 道岔的当前实际位置,通过测试台或仿真接口把它们驱动到联锁表要求的位置;确认 1G、3G 区段处于空闲状态;确认敌对进路未锁闭。然后发出进路请求,观察进路锁闭表示和信号机显示。若信号机开放,再逐项改变一个输入条件,观察信号机是否按规定关闭、进路是否保持锁闭。每一步的观察点都应落在前面定义的输出边界上,而不是凭主观感觉判断“看起来正常”。
需要强调的是,联锁逻辑测试的对象建模不是一次性工作。不同站场的联锁表不同,道岔编号、区段划分、敌对关系都会变化,但“进路—道岔—信号机—区段”这四类对象的状态语义和逻辑关系是稳定的。掌握这套建模方法后,测试人员面对新的站场数据时,只需重新提取联锁表条件、重新标注输入输出边界,就能快速生成有针对性的测试用例,并在出现异常时沿着对象关系逐层定位到具体的条件项。