1. 星务软件测试概述

星务软件(On-Board Data Handling Software,OBDH 软件)是卫星平台中承担星上数据管理、任务调度、遥测遥控、姿态与轨道控制接口、载荷数据组织、故障检测与安全模式处置等功能的嵌入式软件集合。它并不等同于某一台单机内部的固件,而是运行在星务计算机(通常为星载计算机或综合电子单元)上的软件系统,向上支撑整星任务,向下管理各类总线设备。理解星务软件测试,首先要理解它"测的是什么"——不是一段孤立的代码,而是一个与硬件、总线、时序、任务周期强耦合的实时系统。

从组成上看,星务软件通常包含以下几个层次:底层是硬件抽象与驱动层,负责 CPU、存储器、看门狗、中断控制器以及 1553B、CAN、RS-422、SpaceWire 等总线的访问;中间是操作系统与调度层,常见为实时操作系统(RTOS)或时间片/周期调度内核,提供任务管理、时间管理、中断服务与内存管理;上层是功能应用层,包括遥测采集与组帧、遥控指令解析与分发、自主健康管理(FDI/FDIR)、任务规划与模式管理、载荷数据管理与存储转发等。各层之间通过明确的接口和周期节拍协同工作,任何一个环节的时序偏差都可能表现为整星行为异常。

星务软件具有几个鲜明特点,这些特点直接决定了测试的难度。其一是强实时性:遥测采集、控制律计算、指令响应都有明确的周期与截止时间,错过截止时间可能造成姿态失控或任务失败。其二是高可靠性要求:卫星在轨不可维修,软件缺陷的代价极高,因此对异常路径、边界条件和故障恢复的覆盖要求远高于普通软件。其三是资源受限:星载 CPU 主频、内存、存储空间有限,软件必须在有限资源下长期稳定运行。其四是软硬件耦合深:软件行为依赖具体总线时序、寄存器定义和单机响应,脱离硬件环境难以完整验证。其五是长周期与不可重复:在轨运行周期长达数年,地面难以完全复现在轨的时序与故障组合。

星务软件测试的核心矛盾在于:软件必须在"接近真实"的环境中验证,但真实星上环境在地面几乎无法完整复现。自动化测试与回归测试正是为缓解这一矛盾而成为研制流程中的关键手段。

自动化测试在星务软件研制中的地位,可以从三个层面理解。第一,提高覆盖与频次:星务软件接口多、周期任务多、状态组合多,人工逐条执行遥测遥控用例效率低且易漏,自动化脚本可以按周期批量注入激励、采集响应并比对预期。第二,保证一致性:同一组用例在不同版本、不同阶段重复执行时,自动化能消除人为操作差异,使结果可比。第三,支撑回归:当软件因缺陷修复、功能增加或配置变更而修改后,必须确认"改对了、没改坏",回归测试就是这一确认过程,而自动化是让回归可持续、可度量的前提。

回归测试在星务软件中面临的挑战尤为突出。首先是用例规模与执行时间的矛盾:完整回归可能包含数千条用例,若全部在硬件在环环境执行,耗时以天计,难以在每次提交后完成。其次是环境依赖:部分用例依赖特定单机、特定总线负载或特定故障注入设备,环境占用成为瓶颈。再次是判定标准复杂:星务软件的"正确"不仅是数值相等,还包括时序关系、状态迁移顺序、遥测帧计数连续性、指令执行回执等,判定逻辑本身需要精心设计。最后是版本与配置管理:软件版本、硬件配置、总线拓扑、参数表都可能变化,回归基线必须与配置项严格对应,否则回归结果失去意义。

为应对上述挑战,工程上通常采用分层测试策略:单元测试在宿主机或目标板仿真环境验证函数与模块逻辑;软件在环(SIL)测试在 PC 上运行被测软件模型或目标代码,验证功能与算法;硬件在环(HIL)测试接入真实星务计算机与总线仿真设备,验证时序、接口与故障响应;系统级测试则接入真实或半实物单机,验证整星行为。自动化测试框架一般由激励生成、环境控制、响应采集、预期比对和报告生成五部分构成,回归则在此基础上增加用例选择、优先级排序和基线管理。

星务软件分层结构与测试/回归作用位置 星务软件组成(自顶向下) 功能应用层 遥测组帧 / 遥控分发 / FDIR / 任务规划 OS 与调度层 任务管理 / 时间管理 / 中断服务 / 内存管理 硬件抽象与驱动层 1553B / CAN / RS-422 / SpaceWire / 看门狗 星务计算机硬件 CPU / 存储器 / 总线控制器 / 接口电路 关键约束 强实时 · 高可靠 · 资源受限 软硬件耦合深 · 在轨不可维修 测试层级(由内到外) 单元测试 函数 / 模块逻辑 软件在环 SIL PC 运行目标代码 / 模型 硬件在环 HIL 真实星务机 + 总线仿真 系统级测试 半实物单机 / 整星行为 自动化测试框架 激励生成 · 环境控制 响应采集 · 预期比对 报告生成 回归测试闭环 ① 变更识别 缺陷修复 / 功能增加 / 配置变更 ② 用例选择与排序 优先级 / 影响域 / 风险 ③ 自动化执行 激励注入 / 响应采集 ④ 结果比对判定 数值 / 时序 / 状态迁移 ⑤ 基线更新与报告 版本 / 配置项对应 挑战:用例规模 / 环境依赖 判定复杂 / 配置管理 用例复用

需要强调的是,自动化测试并不等于"把手工操作录制成脚本"。真正有效的星务软件自动化测试,需要把测试意图、激励条件、预期响应和判定规则显式建模。例如一条遥控指令测试,激励是特定格式的遥控帧,预期响应可能包括:指令回执遥测、相关状态字变化、执行机构动作遥测、以及若干周期后的遥测帧计数递增。这些响应分布在不同的遥测包和不同的时间点上,判定逻辑必须按时间轴组织,而不是简单比较某一帧数值。

回归测试的用例选择同样需要工程判断。全量回归成本高,因此常用基于风险的策略:优先选择与本次变更直接相关的用例(影响域分析),其次选择覆盖关键功能与安全模式的用例,最后补充边界与异常用例。对于星务软件,安全模式进入与退出、看门狗复位、总线通信超时恢复、遥控指令校验失败处理等路径,通常被列为高优先级回归项,因为它们直接关系到卫星生存。

在星务软件研制中,自动化测试与回归测试不是两个独立阶段,而是同一套测试资产在不同时间点的两种使用方式:首次执行用于验证新功能,变更后重复执行用于确认无回归。因此,测试用例的可重复性、可判定性和可追溯性,比单次执行的通过率更重要。