1. 航空嵌入式软件故障注入测试导论

航空嵌入式软件与普通消费电子软件最大的差别,不在于代码规模,而在于它一旦失效,后果往往直接指向飞行安全。飞控计算机、发动机控制单元(FADEC)、大气数据惯性基准、座舱显示与告警系统,这些设备中的软件长期运行在强实时、强约束、强耦合的环境中,输入来自传感器总线,输出直接驱动执行机构或告警逻辑。因此,适航审定并不满足于"软件在正常条件下能跑通",而是要求证明软件在异常输入、硬件退化、通信中断、时序抖动等条件下,仍能进入并维持安全状态。故障注入测试,正是为这一证明过程提供证据的核心手段之一。

课程目标与定位

本课程面向航空嵌入式软件测试工程师、适航符合性验证人员以及系统安全评估人员,目标是让学习者能够独立设计、执行并判读一次有工程意义的故障注入测试。具体而言,课程结束后应具备以下能力:理解故障注入在 DO-178C 及 ARP4754A 体系中的位置;能够根据 FHA、FMEA、FTA 的输出确定注入对象与注入点;能够选择硬件注入、软件插桩、总线仿真或环境模拟等不同注入方式;能够设计覆盖安全需求的测试用例并记录可追溯证据;能够区分"检测到故障""正确响应""未产生危险输出"三类判据;能够将测试结果整理为适航审查可接受的符合性数据。

需要强调的是,故障注入不是"制造麻烦",而是"受控地制造已知异常,以观察系统是否按设计预期响应"。它与常规功能测试的根本区别在于:功能测试验证"正常输入下输出正确",故障注入验证"异常条件下安全逻辑有效"。两者共同构成软件验证的完整证据链。

故障注入在适航符合性验证中的位置

在民用航空领域,软件适航符合性验证主要依据 DO-178C《机载系统和设备合格审定中的软件考虑》。该标准将软件生命周期过程分为计划、开发、验证和配置管理,其中验证过程要求通过评审、分析和测试三种手段获取证据。故障注入测试属于"测试"手段中面向鲁棒性与安全需求的部分,通常与需求覆盖分析、结构覆盖分析配合使用。

从系统层面看,故障注入的输入来自安全性评估过程。ARP4754A 要求通过功能危害评估(FHA)识别功能失效状态及其等级,再通过故障树分析(FTA)或失效模式与影响分析(FMEA)向下分解到软硬件层级。当某个失效状态的严重度达到"灾难性"或"危险性"时,必须证明相应的安全需求已被实现并验证。故障注入测试就是对这些安全需求的直接验证活动。

下图展示了从安全性评估到故障注入证据的完整链路,以及各环节之间的输入输出关系。

安全性评估 → 故障注入 → 适航符合性证据 链路 功能危害评估 FHA 识别失效状态与等级 灾难性 / 危险性 / 较大 故障树分析 FTA 分解至软硬件层级 导出安全需求 FMEA / 共因分析 失效模式与影响 确定注入候选点 安全需求清单 可测试、可追溯 含失效响应要求 注入对象与注入点选择 传感器数据 / 总线报文 / 内存变量 执行机构指令 / 时钟与调度 注入方式选择 硬件故障注入 / 软件插桩 总线仿真 / 环境模拟 测试用例设计 注入时机 / 持续时间 / 注入值 预期安全响应与判据 被测系统 SUT 执行 注入异常 → 软件检测 → 安全逻辑响应 记录输出、总线数据、状态字 结果判读三类判据 ① 是否检测到故障 ② 响应是否符合安全需求 ③ 是否产生危险输出或不可恢复状态 适航符合性证据:测试报告 + 需求追溯矩阵 + 覆盖分析

图中链路说明了一个关键原则:故障注入测试不是孤立活动,它的每一个注入点都应能追溯到某条安全需求,每一个测试结果都应能回填到符合性矩阵中。缺少这条追溯链,测试即使执行了,也无法作为适航证据使用。

典型航空软件失效案例与测试需求来源

回顾航空史,多起事故与软件在异常条件下的行为直接相关。以下案例虽已广为人知,但从故障注入视角重新审视,能清晰看出测试需求是如何产生的。

案例 失效表现 暴露的测试需求
A320 电传飞控早期事件(1988) 迎角传感器结冰导致数据跳变,飞控计算机按错误数据配平,飞机进入危险姿态 传感器数据合理性检查、多源表决逻辑、故障检测后的降级策略必须被注入验证
B737 MAX MCAS 相关事故(2018–2019) 单一天迎角输入触发配平指令,且未在异常时充分限制权限 单点故障输入下的功能权限限制、告警逻辑、飞行员可干预性需专项注入测试
Ariane 5 首飞失败(1996) 惯性基准软件将 64 位浮点转为 16 位整数时溢出,触发自检并关机 边界值、溢出、类型转换异常必须作为注入用例,且需验证异常处理路径
某型发动机 FADEC 通信中断事件 ARINC 429 总线间歇性丢帧,控制律未及时进入备份通道 总线故障注入、超时检测、通道切换时序需覆盖

这些案例共同指向一个结论:航空软件的安全需求,大量来自"异常条件下的行为约束",而非正常功能本身。因此,故障注入的测试需求主要来源于四个方向。

  • 安全性评估输出:FHA 中严重度为灾难性或危险性的失效状态,经 FTA 分解后形成的安全需求,是注入测试的首要来源。例如"当迎角数据无效时,飞控应在 100 ms 内停止配平并告警"。
  • 接口与通信规范:ARINC 429、ARINC 653、CAN、AFDX 等总线协议中定义的错误帧、超时、校验失败、分区超时等异常场景,需通过注入验证接收端处理逻辑。
  • 硬件失效模式:传感器漂移、卡死、断线、电源瞬断、存储器位翻转等,需在软件层面注入等效异常,观察检测与响应。
  • 适航条款与标准要求:DO-178C 对鲁棒性验证的要求、DO-160 环境试验中的电磁干扰与电源异常、以及审定当局发布的专用条件,都会转化为具体注入用例。
从工程实践看,一个可执行的注入需求应至少包含:注入对象、注入点、异常类型、注入时机、持续时间、预期检测时间、预期安全响应、判据与容差。缺少任何一项,测试结果都难以判读,也难以被审查方接受。

本课程的学习路径