2. 星务软件测试标准与规范

星务软件(星载综合电子/姿轨控/OBDH 等)一旦在轨失效,几乎无法像地面软件那样热修复,因此测试标准与规范的核心作用,是把“测试什么、测到什么程度、用什么文档证明测过了”固化为可审查、可追溯的工程约束。国际上最常被引用的三套体系是欧空局的 ECSS、美国 NASA 的软件工程与安全标准体系,以及中国的 GJB 系列军标。它们并非互相替代,而是常在同一项目中分层引用:ECSS 提供航天软件全生命周期的过程框架,NASA 提供安全关键软件的严谨度分级与独立验证思路,GJB 则给出国内型号必须满足的强制条款与文档格式。

三套标准体系的定位与引用关系

ECSS 中与星务软件测试最直接相关的是 ECSS-E-ST-40C(航天软件)与 ECSS-Q-ST-80C(软件产品保证)。前者规定软件生命周期过程、验证与确认活动,后者规定保证活动与产品保证要求。ECSS 的显著特点是“按关键等级裁剪”:软件按关键性分为 A、B、C、D 四级,A 级(可能危及飞行或人员安全)要求最完整的验证、独立验证与确认(IV&V)和覆盖率证据,D 级可大幅裁剪。NASA 方面,NPR 7150.2 规定软件安全关键等级(Class A–E),NASA-STD-8739.8 规定软件保证与 IV&V 要求,其核心思想是“风险越高,独立验证与形式化证据越强”。GJB 方面,GJB 2786A《军用软件开发通用要求》、GJB 438B《军用软件开发文档通用要求》、GJB 5000A/B(软件研制能力成熟度)以及 GJB 8114 等,构成国内型号软件研制与测试的强制基线,其中 GJB 438B 直接规定了测试计划、测试说明、测试报告等文档的格式与内容。

实际项目中常见的引用方式是:型号总体依据 GJB 5000A 建立过程体系,软件研制任务书引用 GJB 2786A 与 GJB 438B 规定文档,若型号有国际合作或出口背景,则补充 ECSS-E-ST-40C 的验证活动与关键等级裁剪表,安全关键部分再参考 NASA-STD-8739.8 的 IV&V 要求。理解这一点,才能避免“标准堆砌”而不知道每条要求落在哪个测试活动上。

星务软件测试标准引用与测试级别映射 ECSS(欧空局) ECSS-E-ST-40C 航天软件过程 ECSS-Q-ST-80C 软件产品保证 关键等级 A/B/C/D 裁剪 验证 + 确认 + IV&V 覆盖率与追溯性证据 NASA(美国) NPR 7150.2 软件安全等级 A–E NASA-STD-8739.8 软件保证 独立验证与确认 IV&V 安全关键软件强证据要求 风险驱动的测试深度 GJB(中国军标) GJB 2786A 军用软件开发要求 GJB 438B 军用软件文档要求 GJB 5000A/B 研制能力成熟度 测试计划/说明/报告格式 型号强制条款与评审节点 测试级别划分(自下而上) 单元测试 函数/模块级,语句与分支覆盖率,桩/驱动 GJB 438B 测试说明 部件/集成测试 模块间接口、时序、数据流,接口覆盖 ECSS 集成验证 配置项测试 软件配置项功能/性能,需求覆盖 NASA 需求追溯 系统测试 星务软件与硬件/其他分系统联试,在轨场景 IV&V 独立确认

测试文档要求:从“测过”到“可证明测过”

标准体系对文档的要求,本质是让测试过程可追溯、可复现、可审查。GJB 438B 规定的核心测试文档包括《软件测试计划》《软件测试说明》《软件测试报告》,ECSS 对应的是验证计划、验证规范与验证报告,NASA 则强调测试计划、测试规程与测试结果的可追溯矩阵。无论名称如何,一份合格的测试文档必须回答四个问题:测什么(需求/接口/场景)、怎么测(用例、输入、预期输出、判据)、测的结果是什么(实际输出、偏差、结论)、以及需求是否被覆盖(追溯矩阵)。

以星务软件中“太阳敏感器数据采集与有效性判断”这一配置项为例,测试说明中一条用例应至少包含:用例编号、对应需求标识、前置条件(模拟器注入太阳敏感器数据帧)、输入数据(例如 0x1A2B 有效标志置 1、角度值 12.5°)、预期输出(采集值 12.5°、有效标志置位、无异常计数)、判据(误差 ≤ 0.1°)、以及测试方法(半实物仿真注入)。测试报告中则记录实际输出、是否通过、偏差说明与回归结论。这样的字段结构,正是 GJB 438B 与 ECSS 验证规范共同要求的“可追溯、可判定”。

文档不是测试的附属品,而是测试结论的证据链。评审时若追溯矩阵中某条需求没有对应用例,或某条用例没有判据,即使测试执行通过,也不能判定该需求已验证。

测试级别划分与关键等级裁剪

测试级别通常划分为单元测试、部件/集成测试、配置项测试和系统测试四级。单元测试针对函数或模块,关注语句覆盖率、分支覆盖率与边界值;集成测试关注模块间接口、时序与数据流;配置项测试验证软件配置项是否满足软件需求规格说明;系统测试则把星务软件放入星务计算机、敏感器、执行机构等构成的闭环中,验证在轨场景下的功能与性能。ECSS 与 NASA 的关键等级裁剪,正是作用在这四级测试的深度与独立性上:A 级软件通常要求单元级覆盖率证据、独立验证与确认、以及系统级故障注入;D 级软件可减少独立验证,但仍需保留需求追溯与配置项测试。

实际裁剪时,建议先确定软件关键等级,再逐级确定测试深度。例如某星务软件被定为 B 级,则单元测试要求分支覆盖率 ≥ 90%,集成测试要求接口全覆盖,配置项测试要求需求全覆盖,系统测试要求典型在轨场景与至少一项故障注入;若定为 D 级,单元测试可只做功能覆盖,系统测试可只做正常场景。裁剪结论必须写入测试计划并经评审,不能由测试人员自行决定。

落地建议

在项目启动阶段,先建立“标准—文档—测试级别”三者的映射表:每条标准条款对应到具体文档章节与测试活动,每个测试级别对应到具体的覆盖率指标与评审节点。测试用例编号与需求标识必须双向可追溯,测试报告中的偏差必须闭环。这样,ECSS、NASA、GJB 就不再是纸面条款,而是贯穿星务软件测试与回归的可执行约束。