4. 接口控制文件(ICD)解析与测试用例生成

接口控制文件(Interface Control Document,ICD)是航空嵌入式系统接口一致性测试的“唯一事实来源”。它把两个LRU(航线可更换单元)之间交换什么数据、数据长什么样、谁发给谁、什么时候发,用可被双方共同遵守的方式固定下来。测试人员如果只把ICD当作一份“字段清单”来读,往往会在联试阶段才发现周期、触发条件、字节序或量纲理解不一致。因此,本节的重点不是复述ICD的目录结构,而是建立一条从ICD字段到可执行测试用例的解析路径。

一、ICD字段定义:从“名字”到“可判定”

ICD中的一条信号定义通常包含信号名、标识符、数据方向、数据类型、位宽、分辨率(LSB)、偏移量、物理范围、单位、更新周期、有效状态和默认值等属性。测试用例能否自动判定,取决于这些属性是否被完整解析为可比较的约束。例如某型大气数据计算机向飞控计算机发送“校正空压”信号,ICD定义为:

信号名: CAS_CORRECTED
标识符: 0x2A1
方向: ADC → FCC
数据类型: unsigned int
位宽: 16 bit
分辨率: 0.125 kt/LSB
偏移量: 0
物理范围: 0 ~ 8191.875 kt
更新周期: 50 ms
有效状态: 数据有效位 bit15 = 1

这里的分辨率与偏移量共同构成“原始码值—物理量”的换算关系:物理量 = 原始码值 × 0.125 + 0。测试时若注入原始码值 0x0C80(3200),则期望物理量为 400.0 kt。若ICD只写了“范围0~8191”,而没有分辨率,测试就无法判断3200码值对应多少节,也无法判断边界值是否越界。因此,解析ICD的第一步,是把每条信号整理成“标识符 + 方向 + 换算公式 + 有效条件 + 时间约束”五元组,作为后续用例生成的输入。

解析ICD时优先确认三件事:字节序(大端/小端)、位域分配(起始位与位序)、量纲换算(LSB与偏移)。这三项一旦理解错误,后续所有用例的期望值都会系统性偏移。

二、数据流方向与周期/事件触发机制

数据流方向决定了测试中的“激励端”和“观测端”。在ICD中,方向通常以发送方→接收方表示,例如 ADC→FCC 表示ADC为发送端、FCC为接收端。测试时,若验证FCC的接收解析能力,应在ADC侧注入激励,在FCC侧观测;若验证ADC的发送行为,则相反。方向解析错误会导致测试台架接线和激励注入点完全错位。

周期触发与事件触发是两类不同的时间语义。周期信号按固定更新周期发送,例如50 ms周期意味着接收端在连续多个周期内应持续收到更新;事件触发信号则在特定条件发生时发送一次或突发发送,例如“起落架收上到位”事件。测试用例必须区分二者:周期信号重点检查更新率、抖动和丢帧;事件信号重点检查触发条件、发送次数和触发延迟。

ICD解析驱动的接口测试用例生成关系图 ICD 字段定义 标识符 0x2A1 方向 ADC → FCC 位宽 16 bit / LSB 0.125 周期 50 ms 有效位 bit15 = 1 范围 0 ~ 8191.875 kt 解析为可判定约束 物理量 = 码值 × 0.125 有效条件:bit15 = 1 时间约束:50 ms ± 10% 边界:0 / 8191.875 kt 异常:bit15 = 0 时无效 方向:ADC侧注入,FCC侧观测 测试用例集 TC-01 正常值 400.0 kt TC-02 下边界 0 kt TC-03 上边界 8191.875 kt TC-04 无效位 bit15=0 TC-05 周期抖动 ±10% TC-06 事件触发延迟 数据流方向 ADC(发送端)→ FCC(接收端) 激励注入点:ADC 总线接口 触发机制 周期:50 ms 持续更新 事件:到位信号单次触发 判定依据 物理量误差 ≤ ±0.125 kt 周期抖动 ≤ ±5 ms 解析路径:ICD字段 → 换算公式/有效条件/时间约束 → 激励注入点与观测点 → 正常/边界/异常/时序用例 示例参数为教学假设,实际值以具体型号ICD为准

三、基于ICD的测试用例设计方法

从ICD到测试用例,推荐采用“等价类 + 边界值 + 时序 + 异常”四类覆盖策略。以CAS_CORRECTED为例,正常等价类取400.0 kt(码值3200),边界值取下边界0 kt(码值0)和上边界8191.875 kt(码值65535),异常类取bit15=0的无效状态,时序类取周期抖动和事件触发延迟。每类用例都应明确激励值、期望物理量、允许误差和观测窗口。

下面给出一份可直接参考的测试用例表,字段按接口测试实际需要设置,不引入无关管理字段:

用例编号 测试类型 激励(ADC侧) 期望(FCC侧) 判定依据
TC-01 正常值 码值3200,bit15=1 CAS = 400.0 kt 误差 ≤ ±0.125 kt
TC-02 下边界 码值0,bit15=1 CAS = 0 kt 不越界,无负值
TC-03 上边界 码值65535,bit15=1 CAS = 8191.875 kt 不溢出,误差 ≤ ±0.125 kt
TC-04 无效状态 码值3200,bit15=0 FCC标记数据无效 不采用该值参与控制律
TC-05 周期时序 连续发送100帧,周期50 ms 接收更新率20 Hz 抖动 ≤ ±5 ms,丢帧率=0
TC-06 事件触发 触发“起落架收上到位”事件 FCC在100 ms内收到事件帧 触发延迟 ≤ 100 ms,仅发一次

用例设计完成后,还需要把ICD中的“有效状态”和“默认值”转化为可执行的判定逻辑。例如bit15=0时,FCC不应把CAS值用于控制律,而应保持上一次有效值或切换到备份源。测试时不能只看“收到了数据”,还要看“数据是否被正确采纳”。这一步往往需要结合FCC侧的接口状态字或总线监控记录来确认。

周期信号测试时,不要只测单帧正确性。应连续采集至少100个周期,统计更新间隔的均值和抖动,并检查是否存在丢帧、重复帧或顺序错乱。事件信号则要确认“触发一次只发一次”,避免因触发抖动导致重复发送。

四、解析与生成的闭环

实际工程中,ICD解析与用例生成应形成闭环:先从ICD提取信号五元组,再按等价类/边界/时序/异常生成用例,随后在总线仿真环境中注入激励并采集接收端行为,最后把实际结果与ICD约束比对。若发现不一致,需回溯是ICD定义歧义、发送端实现偏差,还是接收端解析错误。只有把ICD字段、数据流方向、触发机制和判定依据统一到同一张用例表中,接口一致性测试才具备可重复、可追溯的工程价值。