4. 覆盖分析的基本原理
覆盖分析回答的是一个非常具体的问题:我们设计的测试,到底把需求“碰”到了什么程度?在航天器测试中,需求不是抽象条目,而是对应着具体可观测、可激励、可判读的对象——一条遥测参数、一个指令、一种工作模式、一段时序、一个故障保护逻辑。覆盖分析就是把这些对象与测试用例建立映射,再用明确的准则判断“算不算覆盖”,用度量给出量化结论,最后把没覆盖到的部分识别为覆盖缺口并驱动补充测试。
一、覆盖对象:先确定“要覆盖什么”
覆盖对象是覆盖分析的锚点。航天器测试中常见的覆盖对象可分为几类:功能对象(如姿态控制、太阳翼展开、推进加压)、接口对象(如1553B总线消息、CAN帧、串口指令)、参数对象(遥测点、遥控指令码、阈值)、状态对象(工作模式、冗余通道、故障状态)、时序对象(动作先后、延时、超时窗口)。
以某型卫星“太阳翼展开”功能为例,其覆盖对象可拆解为:展开指令发送、火工品解锁回路导通、展开到位遥测由0变1、展开电流曲线在合理区间、展开超时保护触发条件。只有把这些对象逐条列出,后续的覆盖准则和度量才有落点。若覆盖对象定义过粗(只写“太阳翼展开功能”),覆盖分析就会变成一句空话;定义过细(细到每个门电路),又会超出测试需求的合理粒度。工程上通常以需求条目可验证的最小单元作为覆盖对象粒度。
二、覆盖准则:判断“算不算覆盖”
覆盖准则是覆盖判定的规则。同一组测试用例,采用不同准则会得到不同的覆盖结论。航天器测试中常用的准则包括:
- 语句/条目覆盖:每条需求至少被一个测试用例引用并执行。这是最弱准则,只证明“测过”,不证明“测对”。
- 分支/状态覆盖:需求的每个判断分支或每个工作状态都被激励到。例如故障保护逻辑中“正常—告警—保护—恢复”四个状态都要进入。
- 参数边界覆盖:对阈值类需求,取最小值、最大值、略超上下限及典型值。例如温度告警阈值设为-20℃与+60℃,测试点应包含-20℃、+60℃、-21℃、+61℃及常温。
- 接口消息覆盖:每条总线消息、每个指令码至少被发送并收到预期响应一次。
- 时序覆盖:关键动作的先后顺序、延时窗口、超时保护均被验证。
准则选择要与需求类型匹配:功能类需求适合分支/状态覆盖,性能类需求适合边界覆盖,接口类需求适合消息覆盖。准则一旦确定,就应写入测试需求追踪矩阵,作为判定依据,而不是事后凭印象判断。
三、覆盖度量:把结论变成数字
覆盖度量是把覆盖结果量化的过程。最基础的形式是:
覆盖率 = 已覆盖对象数 / 覆盖对象总数 × 100%
但单一数字容易掩盖问题,工程上通常按对象类型分别统计,并区分“已覆盖、部分覆盖、未覆盖”三态。例如某卫星测试需求共120条,其中功能类60条、接口类35条、参数类25条。经映射后:功能类已覆盖54条、部分覆盖4条、未覆盖2条;接口类已覆盖35条;参数类已覆盖22条、未覆盖3条。则总覆盖率为(54+35+22)/120=92.5%,但功能类中仍有2条完全未覆盖,参数类有3条未覆盖,这些才是需要优先处理的对象。
部分覆盖尤其值得关注。例如某条需求要求“展开到位后遥测由0变1,且展开电流在2A~5A之间”,若测试只验证了遥测变化,未记录电流,则该需求只能算部分覆盖。部分覆盖在度量中应单独计数,不能简单归入已覆盖,否则会高估测试充分性。
四、覆盖缺口:从“没覆盖”到“补什么”
覆盖缺口是覆盖分析最直接的输出。缺口通常有三类来源:需求未映射(需求存在但没有测试用例引用)、用例未执行(有用例但未在本次测试中运行)、执行未通过(执行了但结果不满足判据)。三类缺口的处理方式不同:第一类要补充测试用例设计,第二类要安排执行,第三类要定位是产品问题还是测试问题。
缺口分析不能只列清单,还要给出补充建议。例如参数类3条未覆盖需求中,2条是温度阈值边界未测,建议在热真空试验中增加-21℃与+61℃两个测点;1条是某遥测点未采集,建议在综合测试中增加该点采样并记录。补充后应重新计算覆盖率,形成闭环。
五、从原理到执行:一个可操作的覆盖分析流程
把上述四个概念串起来,覆盖分析的实际执行可以按以下顺序展开。第一步,从需求规格说明书中提取覆盖对象,建立对象清单,每条对象标注类型、来源需求编号、验证方式。第二步,为每类对象选定覆盖准则,写入追踪矩阵的判定列。第三步,将测试用例与覆盖对象建立映射,逐条标注“已覆盖/部分覆盖/未覆盖”,部分覆盖要注明缺失的判据项。第四步,按类型统计覆盖率,生成覆盖度量表。第五步,提取未覆盖与部分覆盖对象,形成覆盖缺口清单,逐条给出补充测试建议、责任人和计划执行节点。第六步,补充测试执行后更新映射与度量,直到缺口关闭或经评审确认可接受。
总结来说,覆盖对象解决“覆盖什么”,覆盖准则解决“怎么算覆盖”,覆盖度量解决“覆盖了多少”,覆盖缺口解决“还差什么、怎么补”。四者构成一个从定义到判定、从量化到闭环的完整链条,是航天器测试需求追踪中判断测试充分性的核心方法。