3. AURIX安全软件需求分析与测试需求追溯

在AURIX安全软件开发中,安全需求(Safety Requirement)与测试需求(Test Requirement)之间并不是一对一关系。一条安全目标(Safety Goal)经过功能安全概念、技术安全需求(TSR)、硬件安全需求(HSR)与软件安全需求(SSR)逐层分解后,往往对应多条软件测试需求;反过来,一条软件测试需求也可能同时验证多条安全需求。因此,需求分析与测试需求追溯的核心任务,是建立“安全需求—软件安全需求—软件测试需求—测试用例—测试结果”的可追踪链路,并保证每条安全需求都有测试覆盖,且覆盖关系可量化、可审查。

一、从安全需求到软件测试需求的分解逻辑

以AURIX TC3xx平台上一个典型安全机制为例:安全目标“避免电机控制输出非预期扭矩”可分解为技术安全需求“在检测到旋变信号失效时,应在10ms内进入安全状态(关闭PWM输出)”。该TSR进一步分解为软件安全需求:

  • SSR-01:软件应周期性采集旋变解码芯片的故障状态寄存器,周期≤2ms;
  • SSR-02:当连续3个周期检测到故障标志置位时,软件应在6ms内将PWM输出使能位清零;
  • SSR-03:软件应记录故障发生时刻的时间戳与故障码,并写入NVM。

对应的软件测试需求则从“验证SSR是否被正确实现”出发,例如:

  • TR-01:验证旋变故障状态采集周期不超过2ms;
  • TR-02:验证连续3次故障标志置位后,PWM使能位在6ms内被清零;
  • TR-03:验证故障时间戳与故障码被正确写入NVM,且掉电后不丢失;
  • TR-04:验证在故障标志抖动(单次置位后立即恢复)时,不触发安全状态,避免误动作。

可以看到,SSR-02对应TR-02和TR-04两条测试需求,前者验证正常触发路径,后者验证抗抖动边界。这种“一条安全需求对应多条测试需求”的分解方式,正是ISO 26262对验证充分性的要求。

二、ISO 26262追溯矩阵的构建方法

ISO 26262-8第6章要求建立双向追溯(Bidirectional Traceability)。在工程实践中,追溯矩阵通常以表格形式维护,行与列分别代表不同层级的需求与验证工件。对于AURIX项目,建议至少包含以下列:安全目标ID、TSR ID、SSR ID、测试需求ID、测试用例ID、测试方法、覆盖状态、ASIL等级、备注。

构建追溯矩阵时,需要遵循三条规则:第一,每条SSR必须至少关联一条测试需求,否则视为“未验证需求”;第二,每条测试需求必须至少关联一条测试用例,否则视为“未实现测试”;第三,测试用例执行后必须回写结果状态(Pass/Fail/Blocked),并保留测试报告链接。对于ASIL D需求,还要求追溯链路上每一层都经过独立评审。

追溯矩阵示例(节选):

SG IDTSR IDSSR IDTR IDTC ID测试方法状态ASIL
SG-01TSR-01SSR-01TR-01TC-101时间戳测量PassD
SG-01TSR-01SSR-02TR-02TC-102故障注入PassD
SG-01TSR-01SSR-02TR-04TC-104边界抖动FailD
SG-01TSR-01SSR-03TR-03TC-103NVM读写PassD

表中TC-104状态为Fail,说明抗抖动逻辑未满足预期,需要回溯到SSR-02的软件实现或测试用例设计。这种“失败可定位”的能力,正是追溯矩阵的工程价值。

三、需求覆盖度与测试用例映射

需求覆盖度(Requirement Coverage)通常从两个维度度量:一是需求覆盖率,即已被至少一条测试用例覆盖的安全需求数占总安全需求数的比例;二是测试用例映射率,即每条测试需求平均对应的测试用例数,用于评估验证深度。对于ASIL D项目,需求覆盖率应达到100%,且关键安全需求建议至少2条测试用例(正常路径+异常/边界路径)。

在AURIX工程中,测试用例映射通常借助需求管理工具(如DOORS、Polarion)与测试管理工具(如TestRail、ECU-TEST)的接口实现。映射时需注意:测试用例的“前置条件”必须与SSR的触发条件一致;测试用例的“预期结果”必须可量化,例如“PWM使能位在6ms内清零”而不是“系统进入安全状态”。

AURIX安全需求—测试需求追溯链路 安全目标 SG-01 避免非预期扭矩 技术安全需求 TSR-01 10ms内进入安全状态 软件安全需求 SSR SSR-01/02/03 测试需求 TR TR-01~04 SSR-01:采集周期 ≤ 2ms 对应 TR-01 → TC-101 SSR-02:6ms内清零PWM使能 对应 TR-02/TR-04 → TC-102/TC-104 SSR-03:故障码写入NVM 对应 TR-03 → TC-103 TC-101 时间戳测量 · Pass TC-102 故障注入 · Pass TC-104 边界抖动 · Fail TC-103 NVM读写 · Pass 需求覆盖度统计 SSR总数:3 已覆盖SSR:3 需求覆盖率:100% 失败用例:1(TC-104) 安全目标 技术安全需求 软件安全需求 测试需求/用例 失败用例

上图展示了从安全目标到测试用例的完整追溯链路。可以看到,SSR-02同时映射到TC-102和TC-104,其中TC-104因边界抖动场景失败,需要回溯到SSR-02的实现逻辑或测试用例的前置条件设计。这种可视化追溯关系,能帮助测试工程师快速定位“哪条安全需求未被充分验证”或“哪个测试用例失败影响哪条安全目标”。

四、工程实践中的常见问题与处理

在AURIX项目中,需求追溯最常见的三个问题是:第一,SSR描述过于抽象,导致测试需求无法量化。例如“软件应快速响应故障”无法直接映射测试用例,应改为“软件应在6ms内将PWM使能位清零”。第二,测试用例只覆盖正常路径,遗漏边界与故障注入场景。对于ASIL D需求,建议每条SSR至少设计正常、边界、故障三类用例。第三,追溯矩阵更新滞后,需求变更后未同步更新测试需求与用例。建议将追溯矩阵纳入配置管理,需求变更时自动触发影响分析。

操作建议:在AURIX TC3xx项目中,可利用AUTOSAR标准接口(如Dem、NvM)的配置参数作为SSR的量化输入。例如Dem模块的故障确认阈值(DemDebounceCounterFailedThreshold)直接对应SSR-02中的“连续3个周期”,测试用例TC-102应将该参数配置为3,并通过故障注入验证6ms内PWM使能位清零。测试结果应记录实际时间戳与预期时间戳的偏差,偏差超过1ms即判定为Fail。

需求覆盖度的计算应定期执行,建议在每个软件基线发布前完成一次全量追溯审查。审查时重点关注:是否存在无测试需求的SSR、是否存在无测试用例的测试需求、是否存在失败用例未关闭、是否存在ASIL等级降级但未记录理由的情况。只有追溯链路完整、覆盖度达标、失败项闭环,才能认为安全软件的测试需求分析达到了ISO 26262的验证充分性要求。