1. 星务软件测试概述
星务软件(On-Board Data Handling Software,OBDH 软件)是卫星平台中承担星上数据管理、任务调度、遥测遥控、姿态与轨道控制接口、载荷数据组织、故障检测与安全模式处置等功能的嵌入式软件集合。它并不等同于某一台单机内部的固件,而是运行在星务计算机(通常为星载计算机或综合电子单元)上的软件系统,向上支撑整星任务,向下管理各类总线设备。理解星务软件测试,首先要理解它"测的是什么"——不是一段孤立的代码,而是一个与硬件、总线、时序、任务周期强耦合的实时系统。
从组成上看,星务软件通常包含以下几个层次:底层是硬件抽象与驱动层,负责 CPU、存储器、看门狗、中断控制器以及 1553B、CAN、RS-422、SpaceWire 等总线的访问;中间是操作系统与调度层,常见为实时操作系统(RTOS)或时间片/周期调度内核,提供任务管理、时间管理、中断服务与内存管理;上层是功能应用层,包括遥测采集与组帧、遥控指令解析与分发、自主健康管理(FDI/FDIR)、任务规划与模式管理、载荷数据管理与存储转发等。各层之间通过明确的接口和周期节拍协同工作,任何一个环节的时序偏差都可能表现为整星行为异常。
星务软件具有几个鲜明特点,这些特点直接决定了测试的难度。其一是强实时性:遥测采集、控制律计算、指令响应都有明确的周期与截止时间,错过截止时间可能造成姿态失控或任务失败。其二是高可靠性要求:卫星在轨不可维修,软件缺陷的代价极高,因此对异常路径、边界条件和故障恢复的覆盖要求远高于普通软件。其三是资源受限:星载 CPU 主频、内存、存储空间有限,软件必须在有限资源下长期稳定运行。其四是软硬件耦合深:软件行为依赖具体总线时序、寄存器定义和单机响应,脱离硬件环境难以完整验证。其五是长周期与不可重复:在轨运行周期长达数年,地面难以完全复现在轨的时序与故障组合。
自动化测试在星务软件研制中的地位,可以从三个层面理解。第一,提高覆盖与频次:星务软件接口多、周期任务多、状态组合多,人工逐条执行遥测遥控用例效率低且易漏,自动化脚本可以按周期批量注入激励、采集响应并比对预期。第二,保证一致性:同一组用例在不同版本、不同阶段重复执行时,自动化能消除人为操作差异,使结果可比。第三,支撑回归:当软件因缺陷修复、功能增加或配置变更而修改后,必须确认"改对了、没改坏",回归测试就是这一确认过程,而自动化是让回归可持续、可度量的前提。
回归测试在星务软件中面临的挑战尤为突出。首先是用例规模与执行时间的矛盾:完整回归可能包含数千条用例,若全部在硬件在环环境执行,耗时以天计,难以在每次提交后完成。其次是环境依赖:部分用例依赖特定单机、特定总线负载或特定故障注入设备,环境占用成为瓶颈。再次是判定标准复杂:星务软件的"正确"不仅是数值相等,还包括时序关系、状态迁移顺序、遥测帧计数连续性、指令执行回执等,判定逻辑本身需要精心设计。最后是版本与配置管理:软件版本、硬件配置、总线拓扑、参数表都可能变化,回归基线必须与配置项严格对应,否则回归结果失去意义。
为应对上述挑战,工程上通常采用分层测试策略:单元测试在宿主机或目标板仿真环境验证函数与模块逻辑;软件在环(SIL)测试在 PC 上运行被测软件模型或目标代码,验证功能与算法;硬件在环(HIL)测试接入真实星务计算机与总线仿真设备,验证时序、接口与故障响应;系统级测试则接入真实或半实物单机,验证整星行为。自动化测试框架一般由激励生成、环境控制、响应采集、预期比对和报告生成五部分构成,回归则在此基础上增加用例选择、优先级排序和基线管理。
需要强调的是,自动化测试并不等于"把手工操作录制成脚本"。真正有效的星务软件自动化测试,需要把测试意图、激励条件、预期响应和判定规则显式建模。例如一条遥控指令测试,激励是特定格式的遥控帧,预期响应可能包括:指令回执遥测、相关状态字变化、执行机构动作遥测、以及若干周期后的遥测帧计数递增。这些响应分布在不同的遥测包和不同的时间点上,判定逻辑必须按时间轴组织,而不是简单比较某一帧数值。
回归测试的用例选择同样需要工程判断。全量回归成本高,因此常用基于风险的策略:优先选择与本次变更直接相关的用例(影响域分析),其次选择覆盖关键功能与安全模式的用例,最后补充边界与异常用例。对于星务软件,安全模式进入与退出、看门狗复位、总线通信超时恢复、遥控指令校验失败处理等路径,通常被列为高优先级回归项,因为它们直接关系到卫星生存。