4. 测试需求分析与用例设计
系统需求描述的是“航电系统应当具备什么能力”,而测试需求描述的是“我们如何证明这些能力确实存在且满足约束”。两者之间不是简单复制关系,而是一次可验证性转换:把“应支持”“应满足”“应能在某条件下工作”这类系统级陈述,拆解为可观察、可激励、可判定的测试条件。测试需求分析的核心任务,就是完成这次转换,并建立从系统需求到测试用例的双向追踪关系。
一、从系统需求到测试需求:先做可验证性分解
以一条典型的航电系统需求为例:“系统应能在惯导有效时,以不低于20 Hz的频率向显示单元输出姿态信息,姿态误差不超过0.5°。”这条需求包含功能、接口、性能、精度和前置条件五类信息。直接写一条“测试姿态输出”的用例无法覆盖它,必须分解为若干测试需求:
- 功能测试需求:惯导有效时,姿态信息输出功能应被激活;惯导失效时,应给出有效标志或降级提示。
- 接口测试需求:输出接口的协议格式、数据字定义、更新周期与接收端一致。
- 性能测试需求:输出频率≥20 Hz,且在系统负载正常与高负载两种状态下均成立。
- 精度测试需求:在给定姿态激励下,输出姿态与基准姿态的偏差≤0.5°。
- 边界与异常测试需求:惯导数据超时、数据跳变、频率临界、姿态角跨越±180°时的行为。
分解完成后,每条测试需求都应具备“可激励、可观察、可判定”三要素。若某条测试需求无法找到激励点或观察点,说明系统设计阶段的可测试性不足,应反馈到需求或接口设计,而不是在测试用例里勉强绕过。
二、追踪关系:双向矩阵比单向列表更有用
测试需求追踪通常用需求追踪矩阵(RTM)表达。矩阵至少应包含:系统需求编号、测试需求编号、测试用例编号、覆盖类型、验证方法、当前状态。正向追踪回答“每条系统需求是否都有测试覆盖”,反向追踪回答“每条测试用例是否都能追溯到某条系统需求”。反向追踪尤其重要,它能发现两类问题:一是无源用例,即没有需求依据的冗余测试;二是需求遗漏,即用例存在但系统需求未定义,提示需求本身可能不完整。
覆盖类型建议区分:完全覆盖(功能、接口、性能、精度均有用例)、部分覆盖(仅覆盖功能,性能待补)、间接覆盖(通过系统级场景间接验证)。状态可设为“已设计、已评审、已执行、已通过、阻塞”。这样矩阵不只是台账,而是测试进展与风险的可视化依据。
三、功能覆盖与接口覆盖:两条主线不能混
功能覆盖关注“系统是否做了该做的事”,接口覆盖关注“系统与外部/内部交联对象之间的数据是否正确、及时、完整地交换”。在航电系统中,接口覆盖往往比功能覆盖更容易被低估。以ARINC 429或AFDX总线为例,接口覆盖至少应包含:数据字标签与SDI/SSM位、刷新周期、源/目的标识、数据有效性标志、总线负载下的时延与丢包行为。若只测“功能能跑通”,很可能漏掉标签错位、周期抖动或有效位未更新这类问题。
建议为每个接口建立接口测试清单,逐项确认:物理层连接、协议帧格式、数据字映射、更新率、超时与重传策略、错误注入后的行为。功能覆盖与接口覆盖在用例层面可以合并执行,但在追踪矩阵中应分别标记,避免“功能通过”掩盖“接口未覆盖”。
四、边界与异常用例设计:等价类、边界值、场景法组合使用
边界与异常用例是发现系统脆弱点的关键。常用方法包括等价类划分、边界值分析、错误推测和场景法。以姿态角为例,有效范围设为-180°~+180°,则边界点包括-180°、-179.9°、0°、+179.9°、+180°,以及跨越±180°的跳变点。异常输入包括:惯导数据超时(如超过100 ms无更新)、数据跳变(单帧跳变超过10°)、频率低于20 Hz、数据字有效位为无效、总线负载突增导致周期抖动。
设计时可采用“正常—边界—异常—恢复”四类用例组合。例如:
| 用例编号 | 测试条件 | 激励/输入 | 预期结果 | 覆盖类型 |
|---|---|---|---|---|
| TC-05 | 姿态角边界 | 转台给定+180.0° | 输出姿态为+180.0°,误差≤0.5°,无溢出 | 边界值 |
| TC-06 | 跨越±180° | 转台从+179.5°连续转到-179.5° | 输出连续,无跳变超过0.5°,符号处理正确 | 边界+功能 |
| TC-07 | 惯导数据超时 | 断开惯导数据超过100 ms | 姿态标志置为无效,告警输出,显示降级提示 | 异常 |
| TC-08 | 数据跳变 | 单帧注入+15°跳变 | 系统应抑制或标记该帧,不直接输出跳变姿态 | 异常 |
| TC-09 | 输出频率下限 | 系统高负载,测量输出周期 | 频率≥20 Hz,周期抖动在允许范围内 | 性能边界 |
| TC-10 | 恢复过程 | 惯导恢复有效后重新接入 | 姿态输出自动恢复,标志由无效转为有效,无残留告警 | 恢复 |
表中TC-05至TC-10均为示例设计,实际阈值需依据系统需求与接口控制文件确定。边界值的选择应优先覆盖“刚好等于、刚好小于、刚好大于”三类点,异常用例则应覆盖“单点故障、组合故障、故障后恢复”三种情形。
五、用例设计成果:可执行的测试用例模板
测试用例最终要落到可执行层面。一个完整的航电测试用例至少应包含:用例编号、追踪的测试需求、前置条件、激励设备与激励方式、观察点与采集工具、判定准则、通过/失败判据、备注。下面给出一个可直接参考的示例结构:
用例编号:TC-02
追踪需求:TR-03(姿态精度≤0.5°)
前置条件:惯导有效,转台已校准,总线记录仪已启动
激励方式:转台依次给定 0°、+30°、-30°、+90°、-90°、+180°、-180°
观察点:显示单元姿态输出、总线记录仪原始数据字
判定准则:每个给定角度下,输出姿态与转台基准偏差≤0.5°
采样要求:每个角度稳定保持5 s,采样不少于100帧
通过判据:全部角度满足偏差要求,且无数据字有效位异常
备注:若某角度超差,记录该角度、偏差值、时间戳与原始帧
综上,从系统需求到测试需求的关键动作是“可验证性分解”,从测试需求到用例的关键动作是“覆盖类型标注与追踪绑定”,而边界与异常用例则是把系统从“能工作”推向“可信工作”的必要补充。三者结合,才能形成可评审、可执行、可追溯的测试需求与用例体系。