4. 测试标准与适航符合性
在民用无人机进入适航审定流程后,机载软件不再只是“功能实现”,而是被当作一个需要证明其安全性的受控产品。DO-178C《机载系统和设备合格审定中的软件考虑》是这一证明过程的核心标准。它并不规定“必须用什么工具、写什么代码”,而是规定“你必须证明什么”,即通过一组目标(Objectives)来约束软件生命周期活动与证据。理解DO-178C,关键是理解目标体系、软件等级、生命周期过程与证据链四者之间的关系。
一、DO-178C的目标体系与软件等级
DO-178C将软件按失效后果的严重程度划分为A、B、C、D四个等级(另有E级,通常不涉及适航符合性)。等级越高,需要满足的目标越多、独立性要求越强。A级软件失效会导致灾难性后果,因此要求最严格;D级仅要求较少目标。等级不是由开发者自选,而是由飞机/系统层面的安全性评估(如FHA、PSSA)推导得出。
目标体系覆盖软件计划、开发、验证、配置管理、质量保证和合格审定联络等过程。每个目标都对应“目标—活动—证据”的闭环:活动产生数据,数据构成证据,证据证明目标被满足。例如“验证目标”要求证明软件满足需求,其证据包括评审记录、分析报告和测试结果。
核心逻辑:软件等级决定目标集合,目标集合决定必须开展的活动,活动产生生命周期数据,数据形成适航审定可接受的证据链。
二、软件生命周期过程
DO-178C把软件生命周期划分为“计划过程、开发过程、验证过程、配置管理过程、质量保证过程、合格审定联络过程”等。开发过程又细分为需求、设计、编码和集成;验证过程包括评审、分析和测试。各过程之间不是简单串行,而是通过需求追溯和验证反馈形成闭环。
计划过程输出PSAC(软件合格审定计划)、SDP(软件开发计划)、SVP(软件验证计划)等;开发过程输出高层需求、低层需求、架构设计、源代码和集成结果;验证过程输出评审记录、分析报告、测试用例与测试结果。配置管理确保这些数据在生命周期内可追溯、可复现;质量保证确保过程符合计划;合格审定联络则负责与审定机构沟通符合性方法。
三、A/B/C/D级软件测试要求差异
测试要求随等级变化最明显。A级要求基于需求的测试、结构覆盖分析(语句、判定、MC/DC)以及独立性验证;B级要求语句和判定覆盖;C级要求语句覆盖;D级通常只要求基于需求的测试,不强制结构覆盖。此外,A级还要求验证过程的独立性,即验证人员不能是开发者本人。
| 等级 | 失效后果 | 结构覆盖要求 | 独立性要求 | 典型测试重点 |
|---|---|---|---|---|
| A | 灾难性 | 语句+判定+MC/DC | 验证独立于开发 | 需求测试、边界、鲁棒性、MC/DC分析 |
| B | 危险性 | 语句+判定 | 验证独立于开发 | 需求测试、判定覆盖、边界 |
| C | 较大 | 语句 | 通常不强制 | 需求测试、语句覆盖 |
| D | 较小 | 无强制结构覆盖 | 通常不强制 | 基于需求的测试 |
需要强调的是,结构覆盖不是“为了覆盖率而覆盖率”。MC/DC要求每个判定条件能独立影响判定结果,这对无人机飞控中的复杂条件逻辑尤其重要。例如“高度低于阈值且空速正常才允许开伞”这类判定,必须设计用例证明每个条件都能单独改变输出。
四、适航审定中的测试证据链
适航审定关注的不是“测了多少”,而是“证据是否完整、可追溯、可复现”。一条合格的测试证据链通常包括:需求条目→测试用例→测试程序→测试结果→覆盖分析→评审记录→问题报告与关闭记录。每个环节都要有唯一标识和版本,且能双向追溯。
在无人机项目中,常见误区是“测试通过即完成”。实际上,如果测试用例没有追溯到需求,或覆盖分析未覆盖未执行代码,或问题报告未闭环,证据链就是断裂的。审定机构可能要求补充分析或重新测试。
实操建议:建立需求—测试—结果—覆盖的追溯矩阵,并在每个基线节点进行配置审计,确保测试证据与软件版本一致。
五、案例与复盘:飞控软件A级测试证据链
某中型无人机飞控软件被定为A级。团队在验证阶段完成了基于需求的测试,但MC/DC分析发现一处复合条件未满足独立影响要求。复盘发现,测试用例只覆盖了“条件同时为真/假”,没有设计“单条件翻转”用例。补充用例后,覆盖分析通过,证据链闭合。该案例说明:A级测试不是“跑通功能”,而是用证据证明每个目标被满足。
追溯矩阵示例:
REQ-FCS-012 → TC-FCS-045 → TR-FCS-045 → COV-MCDC-012 → PR-2024-018(已关闭)
需求:高度<50m且空速>15m/s时禁止开伞
用例:分别翻转高度条件与空速条件,验证输出独立变化
结果:4组用例全部通过,MC/DC覆盖满足
综上,DO-178C的适航符合性可以概括为:以软件等级确定目标集合,以生命周期过程组织活动,以测试与覆盖分析提供验证证据,以追溯和配置管理保证证据链完整。对无人机安全关键软件而言,测试不是终点,而是证明安全性的手段;证据链才是审定机构真正审查的对象。