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中,方向通常以发送方→接收方表示,例如 ADC→FCC 表示ADC为发送端、FCC为接收端。测试时,若验证FCC的接收解析能力,应在ADC侧注入激励,在FCC侧观测;若验证ADC的发送行为,则相反。方向解析错误会导致测试台架接线和激励注入点完全错位。
周期触发与事件触发是两类不同的时间语义。周期信号按固定更新周期发送,例如50 ms周期意味着接收端在连续多个周期内应持续收到更新;事件触发信号则在特定条件发生时发送一次或突发发送,例如“起落架收上到位”事件。测试用例必须区分二者:周期信号重点检查更新率、抖动和丢帧;事件信号重点检查触发条件、发送次数和触发延迟。
三、基于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侧的接口状态字或总线监控记录来确认。
四、解析与生成的闭环
实际工程中,ICD解析与用例生成应形成闭环:先从ICD提取信号五元组,再按等价类/边界/时序/异常生成用例,随后在总线仿真环境中注入激励并采集接收端行为,最后把实际结果与ICD约束比对。若发现不一致,需回溯是ICD定义歧义、发送端实现偏差,还是接收端解析错误。只有把ICD字段、数据流方向、触发机制和判定依据统一到同一张用例表中,接口一致性测试才具备可重复、可追溯的工程价值。