1. INTEGRITY安全关键软件测试工程导入

在航空、轨道交通、医疗、核电与汽车电子等领域,软件一旦失效可能直接危及人身安全,这类软件被称为安全关键软件。INTEGRITY RTOS 是 Green Hills Software 面向高保障场景推出的实时操作系统,其设计目标不是"功能尽可能多",而是"在最坏情况下仍可预测、可证明、可隔离"。本课程围绕 INTEGRITY 平台,讲解如何建立一套可落地、可追溯、可复现的安全关键软件测试工程体系。

一、课程目标:从"会测"到"测得可证明"

普通软件测试关注"功能是否正确",而安全关键软件测试还要回答三个额外问题:是否覆盖了所有安全需求?是否在异常与边界条件下仍然安全?测试证据能否被第三方审查?因此本课程的目标可以归纳为四条主线:

  • 理解平台:掌握 INTEGRITY RTOS 的分离内核、分区、内存保护、时间分区等机制,理解它们如何影响测试设计。
  • 掌握方法:能够依据 DO-178C、IEC 61508、ISO 26262 等标准的思路,把需求分解为可验证的测试项,并选择结构覆盖、边界值、故障注入等合适手段。
  • 落地工具:能够使用 MULTI IDE、INTEGRITY 目标调试、覆盖率统计、静态分析等工具链完成测试执行与证据采集。
  • 形成证据:能够输出需求—用例—结果—缺陷可双向追溯的测试记录,支撑适航或认证审查。

需要强调的是,安全关键测试不是"多跑几遍",而是用有限的时间和用例,证明系统在定义的安全边界内不会产生不可接受的失效。这决定了本课程后续所有内容都围绕"需求可追溯、覆盖可度量、结果可复现"展开。

二、INTEGRITY RTOS 在安全关键领域的定位

INTEGRITY 的核心是分离内核(Separation Kernel):内核只提供最少的必要服务,把操作系统功能、驱动、应用分别放入相互隔离的分区中。每个分区拥有独立的地址空间和资源配额,一个分区崩溃不会直接破坏其他分区。这一特性对测试工程有直接影响——测试对象不再只是"一个程序",而是"一组分区及其通信关系"。

从认证角度看,INTEGRITY 通常已具备较高的安全等级证据(如 DO-178C A 级、IEC 61508 SIL 3 等适用性材料),但平台已认证不等于应用已认证。应用层代码、分区配置、分区间通信(如通过 Channel 或共享内存)仍需独立测试。因此测试工程师必须同时理解"平台提供了什么保证"和"应用必须自己证明什么"。

学习提示:把 INTEGRITY 的分区想象成"独立的小房间",测试时要分别验证每个房间内部逻辑,以及房间之间传递消息时是否会出现丢失、乱序、越权访问。

三、测试工程的整体框架

安全关键软件测试工程可以组织为一条从需求到证据的链路:需求分析 → 测试计划 → 用例设计 → 环境搭建 → 执行与监控 → 结果判定 → 缺陷与回归 → 证据归档。下图给出该框架与 INTEGRITY 平台关键对象的对应关系,帮助建立整体认知。

INTEGRITY 安全关键软件测试工程整体框架 安全需求分析 功能 / 安全 / 时序约束 测试计划 等级 / 覆盖目标 / 资源 用例设计 等价类 / 边界 / 故障注入 追溯矩阵 需求↔用例↔结果 INTEGRITY 平台测试对象 分离内核 调度 / 中断 / 时间分区 最小可信计算基 应用分区 独立地址空间 资源配额 / 权限 分区通信 Channel / 共享内存 消息完整性 / 时序 目标硬件 板级 / 仿真目标 调试与跟踪接口 测试执行与监控 MULTI IDE / 目标调试 结果判定 通过 / 失败 / 阻塞 缺陷与回归 定位 / 修复 / 重测 证据归档 日志 / 覆盖率 / 报告 需求 → 计划 → 用例 → 平台对象 → 执行 → 判定 → 回归 → 证据,形成可追溯闭环

四、学习路径与关键能力

本课程后续内容按"认知—设计—执行—证据"四层推进。建议的学习顺序是:先建立 INTEGRITY 分区与内核的基本认知,再学习如何把安全需求拆成可测项,然后进入用例设计、环境搭建与执行,最后学习覆盖率统计、缺陷管理与认证证据组织。

下面给出一份可直接参考的测试项设计示例表,用于说明"需求如何变成可执行用例"。示例假设某分区需在 10 ms 周期内完成传感器数据校验,若校验失败则向监控分区发送告警。

需求编号需求描述测试项输入/条件预期结果覆盖类型
REQ-001周期任务应在 10 ms 内完成周期时间测量正常负载,连续 1000 周期最大执行时间 ≤ 10 ms时序/边界
REQ-002校验失败应发送告警故障注入注入 1 位翻转错误监控分区收到告警消息功能/异常
REQ-003分区越权访问应被阻止权限测试尝试写入其他分区内存触发保护异常,系统不崩溃安全/隔离
REQ-004告警消息不得丢失通信压力测试连续发送 500 条告警接收计数 = 发送计数通信/边界

这张表体现了安全关键测试的三个要点:每条用例都能追溯到需求;输入条件明确、可复现;预期结果可量化判定。在实际项目中,还应补充前置条件、测试环境版本、目标板编号、执行日期与执行人,使结果具备审查价值。

常见误区:把"功能跑通"当作测试完成。安全关键软件更关注异常路径、边界条件和分区隔离行为,正常路径通过并不代表安全目标达成。

五、本课程的学习方法建议

建议边学边做:每学完一个测试方法,就在自己的 INTEGRITY 工程中找一个分区或一条通信路径,写出对应的需求—用例—判定条件三行记录。遇到覆盖率不足时,先分析是需求遗漏、用例不足还是代码存在不可达分支,再决定补用例还是提缺陷。只有把"测试设计"和"证据意识"同时建立起来,后续的认证审查才不会变成临时补材料。