1. 课程导入与接口一致性测试定位
航空嵌入式软件很少孤立运行。飞控计算机要通过ARINC 429总线接收大气数据计算机的空速、高度,通过ARINC 653分区端口与任务软件交换周期数据,通过离散量接口读取起落架收放状态,还要经CAN或RS-422与发动机接口单元通信。这些"软件与外部世界交换信息的约定"就是接口。接口一致性测试要回答的核心问题是:接口的实现是否严格符合其定义,并且在各种边界与异常条件下仍保持可预测的行为。
在适航语境下,这个问题不是工程偏好,而是符合性验证的一部分。以DO-178C为软件生命周期依据、以ARP4754A为系统研制依据时,接口需求属于高层需求与低层需求的一部分,接口一致性测试则是验证这些需求被正确实现的证据来源之一。它向上支撑系统级集成验证,向下约束编码与集成活动,是"需求—实现—验证"链条中容易被低估却极易出问题的一环。
接口的分类:从物理层到语义层
航空嵌入式接口可按抽象层次分为四类,测试关注点逐层上升:
- 物理/电气接口:差分电压、阻抗、终端匹配、位速率。例如ARINC 429高速模式为100 kbps、低速模式为12.5 kbps,采用双绞屏蔽线、差分±10 V信号。
- 数据链路接口:帧格式、字长、奇偶校验、标签(Label)、源/目的标识(SDI)、数据域编码。ARINC 429的32位字结构是典型代表。
- 协议/传输接口:周期、刷新率、超时、重传、序号、握手。例如某型大气数据以50 ms周期发送,接收端若连续3个周期未更新即判定数据失效。
- 应用语义接口:量纲、分辨率、有效范围、无效值编码、状态字含义。例如高度以英尺为单位、LSB为1 ft,或空速以0.125 kt为LSB。
一致性测试必须覆盖这四层。只测电气不测语义,会出现"信号完全正确但数值解释错误"的隐性缺陷;只测语义不测时序,则会在高负载或降级模式下暴露问题。
一致性测试在适航符合性验证中的位置
接口一致性测试位于"软件需求验证"与"系统集成验证"之间。它验证的对象是接口需求(Interface Requirements),证据形式通常是测试用例、测试结果、覆盖分析报告。其上游输入包括接口控制文件(ICD)、系统接口需求、总线规范;下游输出则被系统集成测试与适航审定中的符合性矩阵引用。
需要强调的是,接口一致性测试不等于功能测试。功能测试问"这个功能对不对",接口一致性测试问"这个接口是否按约定工作"。二者互补:一个接口完全符合ICD,功能仍可能因算法错误而失效;反之功能正确,接口也可能在边界条件下违约。
典型接口失效案例与测试目标
接口缺陷往往不表现为"完全不通",而是"看起来正常但语义错误"。以下四类案例在航空嵌入式软件中具有代表性:
案例A:标签解析错位。ARINC 429的32位字中,Label位于bit 1–8,SDI位于bit 9–10,数据域位于bit 11–29,SSM位于bit 30–31。若接收端将Label与SDI的位序颠倒,则同一物理帧会被解释为不同标签,导致高度、空速等关键数据被错误路由。测试目标:验证每个标签的位域提取与ICD一致。
案例B:周期超时未检测。某接口约定50 ms周期刷新,接收端若未实现"连续3周期未更新即置无效"的逻辑,则在发送端故障时会继续使用陈旧数据。测试目标:注入周期抖动与丢帧,验证超时判定阈值与降级行为。
案例C:无效值编码未识别。ICD规定高度无效时数据域为全1(0xFFFF),若接收端未做无效值判断,会将65535 ft当作有效高度参与控制律计算。测试目标:遍历无效值、超范围值、边界值,验证接收端的状态字处理。
案例D:分区端口方向配置错误。ARINC 653中,采样端口(Sampling Port)与队列端口(Queuing Port)的源/目的方向必须在配置表中正确声明。方向错误时数据可能被静默丢弃,且不产生错误码。测试目标:验证端口方向、刷新模式与配置表一致,并检查丢包计数。
测试目标与判定依据
综合上述,接口一致性测试的目标可归纳为三条:符合性——接口行为与ICD、总线规范、接口需求逐条对应;鲁棒性——在边界、异常、降级条件下不产生未定义行为;可追溯性——每个测试用例可追溯到具体接口需求,结果可被符合性矩阵引用。
判定依据应明确、可量化。例如:周期偏差不超过标称值的±10%;连续丢帧数达到3帧时接收端应在下一周期内置无效标志;无效值输入时输出状态字应置为"无效"而非沿用旧值。这些判据来自ICD与需求,而非测试人员的经验估计。