2. 测试标准与规范:ECSS标准、DO-178C标准、GJB 438B标准的核心要求

做航天嵌入式软件测试,绕不开三个字:标准

我个人习惯把标准比作「游戏规则」。你代码写得再漂亮,测试用例设计得再巧妙,如果不符合标准要求,那在评审会上就是白搭。今天咱们就聊聊三个最核心的标准:ECSS、DO-178C 和 GJB 438B。嗯,这里要注意,它们虽然都是标准,但侧重点完全不同。

2.1 ECSS 标准:欧洲的航天「宪法」

ECSS(European Cooperation for Space Standardization)是欧洲航天局搞的一套标准体系。说白了,它是一整套从项目管理到产品保证的「百科全书」。

核心要求有哪些?

  • 分级管理:ECSS 把软件关键性分了 A、B、C、D、E 五个等级。A 级最高,载人航天那种;E 级最低,地面支持工具。不同等级,测试深度天差地别。
  • 全生命周期覆盖:从需求分析到退役,每个阶段都有对应的测试活动。我见过不少团队只盯着编码后的单元测试,结果需求阶段的问题拖到系统测试才暴露,返工成本高得吓人。
  • 独立验证:ECSS 明确要求测试团队不能是开发团队的人。这一点,我在项目中深有体会——自己测自己的代码,就像自己给自己判卷,很难发现隐藏的坑。

ECSS 测试等级与对应活动(简化版)

等级 典型应用 最低测试要求
A 载人航天器 全覆盖:单元、集成、系统、验收
B 关键卫星 全覆盖,但可适当减少冗余测试
C 一般卫星 集成测试 + 系统测试
D 科学载荷 系统测试为主
E 地面支持 功能测试即可

我的经验:ECSS 的文档体系非常庞大。刚开始接触时,别试图通读所有标准。我建议先从 ECSS-E-ST-40(软件工程)和 ECSS-Q-ST-80(软件产品保证)入手,这两份是核心。

2.2 DO-178C 标准:航空领域的「铁律」

DO-178C 是航空机载软件的标准。你想想看,飞机上的软件出问题,那可是要出人命的。所以这个标准的核心思想就一个字:

核心要求有哪些?

  • 软件等级划分(DAL):A 级(灾难性)到 E 级(无影响)。A 级软件,比如飞控系统,要求测试覆盖率达到 100% 的语句、分支、MC/DC(修正条件/判定覆盖)。
  • 目标导向:DO-178C 不规定你用什么方法,只规定你要达成什么目标。比如,它要求「测试用例应能检测出需求中的错误」,至于你是用等价类划分还是边界值分析,它不管。
  • 工具鉴定:如果你用自动化测试工具,工具本身也要经过鉴定。我记得有一次,团队用了一个第三方工具做覆盖率分析,结果工具本身有个 bug,导致覆盖率数据虚高。从那以后,我对工具鉴定这件事就特别上心。

DO-178C 各等级覆盖要求

DAL 等级 语句覆盖 分支覆盖 MC/DC 覆盖
A 必须 必须 必须
B 必须 必须 可选
C 必须 可选 不要求
D 可选 不要求 不要求
E 不要求 不要求 不要求

避坑指南:我曾经遇到一个项目,开发人员为了满足 MC/DC 覆盖,故意把条件表达式写得复杂。结果测试是过了,但代码可读性极差,后续维护成本飙升。记住,覆盖是手段,不是目的。

2.3 GJB 438B 标准:中国的军用「规矩」

GJB 438B 是咱们国家军用软件开发的标准。它和 ECSS、DO-178C 最大的区别在于:它更强调文档的规范性

核心要求有哪些?

  • 文档驱动:GJB 438B 规定了 20 多种文档的编写要求,从《软件研制任务书》到《软件版本说明》。说白了,你写什么文档、怎么写、写多详细,它都给你框死了。
  • 阶段评审:每个开发阶段结束,必须进行正式评审。评审不通过,不能进入下一阶段。我刚开始觉得这太死板,后来发现,这种「卡点」机制确实能拦住不少低级错误。
  • 配置管理:对代码、文档、测试用例的变更控制非常严格。每一次修改,都要走正式的变更申请流程。

GJB 438B 要求的核心文档(部分)

文档名称 主要内容 产生阶段
软件研制任务书 项目背景、功能性能指标 立项阶段
软件需求规格说明 功能需求、接口需求、质量需求 需求分析阶段
软件设计说明 总体设计、详细设计 设计阶段
软件测试计划 测试策略、资源、进度 测试策划阶段
软件测试报告 测试结果、缺陷分析、结论 测试执行阶段

我的建议:GJB 438B 的文档模板网上很容易找到。但别直接套模板,要根据项目实际情况裁剪。我曾经见过一个项目,文档写得比代码还多,但内容全是废话,评审时被专家批得体无完肤。

2.4 三个标准的对比与选择

你可能会问:这三个标准,我到底该用哪个?

其实不冲突。ECSS 适合欧洲背景的航天项目,DO-178C 适合航空或高安全性的航天项目,GJB 438B 是咱们国内军品项目的标配。如果你做的是商业航天,可能还要参考 NASA 的 NPR 7150.2。

核心对比

维度 ECSS DO-178C GJB 438B
起源 欧洲航天局 美国航空无线电委员会 中国军用标准
侧重点 全生命周期管理 安全性与覆盖 文档与流程规范
等级划分 A~E A~E(DAL) 按任务关键性自行定义
测试独立性 强制要求 建议但非强制 建议独立
工具鉴定 有要求 严格鉴定 有要求但较宽松

最后提醒一句:标准是死的,人是活的。别为了符合标准而写一堆没用的文档和测试用例。我见过最离谱的,是有人为了满足 DO-178C 的覆盖率要求,给一个简单的赋值语句写了 20 个测试用例。有意义吗?没有。记住,标准的目的是保证质量,不是制造工作量。