1. 课程导入

在智能驾驶与自动驾驶系统快速演进的今天,功能安全(FuSa)已经无法单独覆盖所有风险来源。ISO 21448 预期功能安全(SOTIF, Safety of the Intended Functionality)关注的,不是系统失效,而是系统在无故障情况下,由于性能局限、场景理解不足或可预见误用而引发的安全风险。这类风险往往不会在传统故障注入测试中暴露,却可能在真实道路的“长尾场景”中突然出现。因此,SOTIF 场景测试闭环工程成为连接安全分析、场景设计、仿真验证、实车测试与迭代改进的关键方法论。

本课程的目标,是帮助学习者建立一套可落地、可度量、可追溯的 SOTIF 场景测试闭环能力。它不是单纯讲解标准条款,而是把标准要求转化为工程动作:从危害识别到场景抽象,从参数空间采样到测试用例生成,从仿真执行到实车复现,从问题定位到闭环回归。学完本课程,你应当能够独立设计一个面向 SOTIF 的场景测试闭环,并解释每一步的输入、输出、判据与证据链。

核心价值:SOTIF 场景测试闭环工程解决的是“未知的不安全场景”如何被系统性地发现、复现、评估和收敛的问题。它让安全活动从“事后补救”转向“事前建模、事中验证、事后闭环”。

一、学习目标:从标准理解到工程闭环

本课程的学习目标分为四个层次。第一层是概念层:理解 SOTIF 与功能安全、信息安全之间的边界与交集,掌握危害、场景、触发条件、性能局限等核心术语。第二层是方法层:掌握场景分类、参数化建模、组合测试、边界值分析、故障注入与误用注入等测试设计方法。第三层是工具链层:能够使用仿真平台、场景描述语言、数据回放工具和覆盖率分析工具构建闭环。第四层是工程层:能够把测试结果反馈到需求、设计、场景库和发布准则中,形成持续改进。

需要特别强调的是,SOTIF 测试不是“测完即止”,而是闭环。闭环意味着每一次测试执行都会产生数据,数据经过分析形成结论,结论驱动场景库更新、算法改进或安全论证修订,修订后的版本再次进入测试。没有闭环,测试就只是抽样;有了闭环,测试才成为安全论证的证据生产线。

二、整体知识框架:五层闭环结构

为了便于理解和实施,本课程把 SOTIF 场景测试闭环工程划分为五个层次:安全分析层、场景建模层、测试生成层、执行验证层、闭环反馈层。安全分析层负责识别危害与触发条件;场景建模层把现实世界抽象为可计算、可组合的场景元素;测试生成层根据覆盖目标和风险优先级生成测试用例;执行验证层在仿真、台架和实车环境中运行用例并采集数据;闭环反馈层对结果进行归因、评级和回归,更新场景库与安全论证。

下图展示了这五层之间的数据流与反馈关系。请注意,闭环不是单向流水线,而是带有反馈边的迭代结构:执行结果会反向影响场景建模和测试生成,安全分析也会随着新场景的发现而更新。

SOTIF 场景测试闭环工程 · 五层结构 安全分析层 危害识别 · 触发条件 性能局限 · 误用分析 场景建模层 场景元素 · 参数空间 ODD · 逻辑场景 测试生成层 组合覆盖 · 边界值 用例优先级排序 执行验证层 仿真 · 台架 · 实车 数据采集 · 判据判定 闭环反馈层 结果归因 · 风险评级 · 场景库更新 回归测试 · 安全论证修订 执行结果 场景更新 安全分析迭代 闭环判据:场景覆盖率 ↑ · 未知不安全场景数 ↓ · 回归通过率 ↑ · 安全论证证据完整度 ↑ 每一轮迭代都必须回答:发现了什么新场景?哪些风险被降低?哪些假设需要修正?

三、方法流程:从危害到回归的七步闭环

把五层结构展开为可执行流程,可以得到七个步骤。第一步,定义 ODD 与功能边界,明确系统在哪些道路、天气、交通和光照条件下被设计使用。第二步,开展危害分析与触发条件识别,找出可能导致危害行为的性能局限和误用模式。第三步,构建参数化场景库,把自然语言场景转化为可组合的参数空间。第四步,设计测试用例,使用组合测试、边界值、等价类等方法覆盖高风险区域。第五步,执行测试,在仿真、台架和实车之间合理分配用例。第六步,分析结果并归因,区分是场景设计问题、算法缺陷还是判据不合理。第七步,更新场景库与安全论证,进入下一轮回归。

这七步不是一次性完成的,而是随着系统版本、ODD 扩展和新法规要求不断循环。工程实践中,建议用配置化方式管理场景参数和测试判据,例如:

scenario:
  id: SOTIF-ODD-RAIN-003
  odd: highway_night_rain
  trigger: "前方静止车辆 + 低照度 + 摄像头眩光"
  parameters:
    ego_speed_kph: [60, 80, 100]
    ttc_s: [1.5, 2.0, 3.0]
    rain_level: [light, moderate, heavy]
  oracle:
    min_ttc_s: 1.2
    max_decel_mps2: 6.0
  priority: high
  status: regression_required

这种结构化描述让场景可版本化、可追溯、可复用。当算法更新后,只需重新执行标记为 regression_required 的用例,即可验证改进是否引入新的风险。

四、案例场景:夜间雨天静止车辆识别

假设某 L2+ 系统在夜间雨天行驶时,未能及时识别前方静止车辆,导致紧急制动过晚。传统功能安全分析可能认为传感器和制动系统均无故障,因此不构成失效。但从 SOTIF 视角看,这是典型的性能局限:摄像头在低照度与雨滴散射下对比度下降,毫米波雷达对静止目标过滤策略过于保守,融合算法在置信度不足时延迟输出。

闭环工程的处理方式是:首先把该场景抽象为“夜间 + 降雨 + 静止车辆 + 本车速度 + TTC”的参数组合;然后生成覆盖不同雨量、照度、车速和距离的测试矩阵;接着在仿真中批量执行,筛选出失败用例;再把失败用例迁移到台架和实车进行复现;最后根据复现数据调整感知阈值和融合策略,并把该场景加入回归场景库。整个过程形成一条完整的证据链:危害 → 场景 → 用例 → 执行 → 归因 → 改进 → 回归。

五、常见误区与复盘要点

误区一:把 SOTIF 测试等同于功能安全测试。功能安全关注故障,SOTIF 关注无故障下的性能局限和误用,两者测试目标、判据和场景来源不同。

误区二:只追求场景数量,不关注覆盖质量。一万条随机场景不如一百条针对高风险参数边界的场景。覆盖目标应围绕触发条件和危害行为设计。

误区三:闭环只闭在测试团队内部。如果测试结果不能反馈到需求、设计和场景库,闭环就是断的。闭环必须跨团队、跨工具链。

误区四:忽视判据的合理性。判据过松会漏掉风险,过严会产生大量误报。判据本身也需要通过数据校准和评审。

复盘时建议回答四个问题:本轮测试新增了哪些场景?哪些场景从“未知”变为“已知安全”或“已知不安全”?哪些改进被验证有效?下一轮优先级如何调整?只有把这些问题回答清楚,闭环才真正转动起来。

六、学习路径与课程清单

本课程共 30 章,建议按“概念 → 方法 → 工具 → 案例 → 复盘”的路径学习。下表给出第一阶段的核心学习清单,帮助你建立整体地图。

阶段 核心主题 关键产出 建议投入
概念建立 SOTIF 与 FuSa 边界、危害与触发条件 术语表、危害清单 2 章
场景建模 ODD、逻辑场景、参数空间、场景库 参数化场景库 v0.1 6 章
测试设计 组合测试、边界值、误用注入、覆盖率 测试用例集与覆盖报告 8 章
执行验证 仿真、台架、实车、数据回放 测试执行记录与问题单 7 章
闭环反馈 归因、评级、回归、安全论证 闭环报告与回归基线 7 章

学习建议:每学完一个模块,尝试用自己所在项目的真实 ODD 做一个最小闭环练习。哪怕只有 10 个场景、1 个仿真工具、1 份判据表,也能帮助你理解闭环工程的关键难点:场景抽象是否充分、判据是否可执行、反馈是否真正改变了下一轮测试。

SOTIF 场景测试闭环工程的核心,不是追求一次性通过,而是建立一种持续发现风险、持续收敛风险的能力。当你能够用场景库、测试用例、执行数据和回归基线讲清楚“系统为什么是安全的”,你就真正掌握了这门课程要传递的工程方法。