浅谈丨功能安全测试,汽车的守护者

news2024/11/24 1:30:30

随着新能源汽车迅猛的发展,各类车型频频面世,同时辅助驾驶/自动驾驶等智驾功能也在不断迭代,使得整个汽车系统的复杂性越来越高,最终导致消费者不得不对如今的汽车质量和安全性提出质疑。

如何打破质疑?

那就不得不搬出我们的主题了----功能安全。

本文主要针对功能安全定义、测试用例开发及测试流程进行概念上的阐述与简要的介绍。

  • 功能安全定义

    不了解功能安全的过往,又怎知它的难得可贵呢?

从功能安全的提出到如今的标准成熟,可谓经历了一个漫长的发展历程,具体如图1所示:

图1-功能安全发展史

那功能安全到底是什么呢?

功能安全定义:Absence of unreasonable risk due to hazards caused by malfunctioning behavior of E/E systems(避免因电子电气系统故障而导致不合理的风险)。

通俗点理解:功能安全就是指汽车即使出现电子电气故障,但这个故障也是可控的,不会出现“车毁人亡”类的延伸风险。

既然已经知道功能安全的定义了,如果想要更深一步探索,那就不得不提及为其量身定制的专用标准——ISO26262。

图2-ISO26262图解

ASIL分析主要由严重度(S)、暴露率(E)、可控性(C)三部分构成,其中所谓的暴露率是指事件场景的暴露率,而非功能失效本身的暴露率。

定义

备注

严重度Severity(S)

发生故障的严重程度

S值越大则故障越严重,S值根据轻微到严重分为S0至S3四级

暴露率Exposure(E)

故障发生的时长占平均运行时长的比例,用来表征故障发生的概率大小

E值越大则故障发生的概率越大

可控性Controllability(C)

故障发生以后,是否可以对故障状态加以控制

C值越大则越难以控制

表1-S/E/C简介

分析出S/E/C数值有什么用呢?

分析至此也不难看出,一项需求发生故障之后的安全风险,可以用公式计算得出:

Risk=S * E * C

计算出此安全风险后,可依据此风险等级采取相对应的措施,从而避免因电子电气系统故障而导致不合理的风险。

严重程度

可能性

可控性

C1
(简单可控)

C2
(正常可控)

C3
(不可控)

S1
(
轻度和中度损伤)

E1(非常低)

QM

QM

QM

E2(低)

QM

QM

QM

E3(中等)

QM

QM

A

E4(高)

QM

A

B

S2
(
严重且危及生命)
(可能存活)

E1(非常低)

QM

QM

QM

E2(低)

QM

QM

A

E3(中等)

QM

A

B

E4(高)

A

B

C

S3
(
危及生命的致命伤)

E1(非常低)

QM

QM

A

E2(低)

QM

A

B

E3(中等)

A

B

C

E4(高)

B

C

D

表2-ASIL评级表

注:比如车辆的迈速表出了故障,车子启动开始就不显示任何信息,此场景可归类为QM,因为司机可以很容易的感知故障,并且选择不开车或者非常谨慎的驾驶,可以理解为,场景可控性非常高,严重程度很低;相比之下,如果车辆无法进行控制,驾驶员在高速行驶时刹车失灵的情况可以归类于ASIL-D,因为此时导致人严重受伤的概率很高。

  • 功能安全测试用例开发

如何开发及编制测试用例呢?

依据所提供的功能安全文档,针对电子电气系统故障所采取的安全措施项,设计相关测试用例,以确保发生故障时正确响应,从而避免不合理的风险

功能安全文档:包括软件需求文档、架构设计文档、单元设计文档等。

图3-功能安全文档概括及目标

功能安全文档检查项:属性是否完整、ASIL等级、FTTI时间、验证方法、验证准则、承接元素、安全机制描述和功能描述是否清晰等。

注:因为所有的测试用例开发源都在功能安全文档上,如果源头产生错误,那对后续的用例开发编制及测试会产生很大的影响,故在开始前需仔细检查。

功能安全文档检查无问题后,便可以开始着手开发编制测试用例。

  1. 仔细阅读和理解需求文档,识别关键功能和性能点,以及可能的边界条件和异常情况;
  2. 将整体需求划分为更小的、可测试的需求单元(或称为测试点)。对于每个测试点,明确前提条件、预期输出结果和可能的执行路径。根据功能安全需求,确定测试的范围,包括需要测试的功能点、测试的边界条件、预期的测试结果等;
  3. 根据测试范围,设计具体的测试用例。测试用例应覆盖所有可能的正常操作场景和异常场景,确保系统在不同情况下都能保持安全性能。

图4-功能安全测试点

类别

简述

故障注入测试用例

汽车控制器故障注入测试用例是为了验证汽车控制器(ECU)在面临各种潜在故障情况下的鲁棒性和安全性。

边界值测试用例

边界值的取值依据输入的范围区间不同而有所不同,但是都需要用上点值、离点值和内点值,只是取点的位置不同,边界点分为上点、内点和离点。

失效模式和影响分析测试用例

根据失效模式和影响分析的结果,设计相应的测试用例,来验证系统在各种失效模式下的安全性能。

通信故障测试用例

测试系统在通信链路中出现故障或异常情况时的安全性能,例如节点丢失、信号延迟等。

人机界面测试用例

测试系统的人机界面是否符合人体工程学原理,以确保用户在操作系统时不会因为界面设计不当而引发安全问题。

表3-功能安全测试用例编制方法

注:功能安全测试用例是为了验证系统在发生故障或异常情况下的安全性能而设计的测试用例。

  • 功能安全测试流程

功能安全测试流程:确认测试范围→覆盖测试需求→明确测试目标→分配测试环境→应用测试设备→采取测试方法→得到测试结果。

前三项流程上文已覆盖,便不过多的叙述,针对后续流程,我们逐一介绍。

分配测试环境

    因功能安全测试范围广泛且深入,且测试方法也较为复杂繁琐,故所需要的测试环境也多种多样。目前测试环境主要包括:单件测试环境、多件交互测试环境、整车级低压台架测试环境、整车级高压台架测试环境、实车测试环境等。

应用测试设备:

1、对于总线类故障注入测试项,推荐使用Vector总线采集和记录设备,如CANoe配合VN1640A/VN5650和总线记录仪GL5000系列;

2、对于电压、电源故障测试等测试项,可采用不同等级的电源模拟器进行调控测试;

3、对于节点丢失、信号延迟、CAN信息量过大导致丢包等通信异常测试项,可采用连接VT机箱、高压或低压BOB控制盒等进行操作测试。

采取测试方法:

以下通过一个应用实例,简单介绍一种测试方法。

安全目标:ACC激活时,只有驾驶员未踩刹车时,才可以输出大于0的推进扭矩。

安全状态:ACC关闭纵向控制。

测试用例:

用例编号

初始状态

操作步骤

期望结果

测试环境

FunctionSafety-1

车辆启动,进入ACC模式

使刹车踏板信号输出为有效值

推进扭矩=0

实车

FunctionSafety-2

车辆启动,进入ACC模式

使刹车踏板信号输出为无效值(invalid)

推进扭矩=0

实车

FunctionSafety-3

车辆启动,进入ACC模式

使刹车踏板信号输出为无效值

(CRC错误)

推进扭矩=0

实车

FunctionSafety-4

车辆启动,进入ACC模式

使刹车踏板信号输出为无效值

(counter错误)

推进扭矩=0

实车

FunctionSafety-5

车辆启动,进入ACC模式

使刹车踏板信号丢失

推进扭矩=0

实车

表4-测试用例

     测试方法:

  1. 将ECU搭载到实车上,连接CANoe等设备;
  2. 启动车辆,激活ACC,并检查实车无其他故障;
  3. 在ACC模式行驶过程中,通过CANoe注入刹车踏板信号的无效值等,检查ECU的功能表现与预期结果是否一致。

四、结语

本文主要从功能安全定义、测试用例开发及测试流程三个方面展开介绍,希望能对各位小伙伴理解功能安全理念和基本测试内容有一定的帮助,后续我们会根据实际项目推出更多更深入的针对功能安全应用实例的文章,敬请期待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2246347.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

bridge-multicast-igmpsnooping

# 1.topo # 2.创建命名空间 ip netns add ns0 ip netns add ns1 ip netns add ns2 ip netns add ns3 # 3.创建veth设备 ip link add ns0-veth0 type veth peer name hn0-veth0 ip link add ns1-veth0 type veth peer name hn1-veth0 ip link add ns2-veth0 type veth pe…

密码学11

概论 计算机安全的最核心三个关键目标(指标)/为:保密性 Confidentiality、完整性 Integrity、可用性 Availability ,三者称为 CIA三元组 数据保密性:确保隐私或是秘密信息不向非授权者泄漏,也不被非授权者使…

MIT 6.S081 | 操作系统 | Lab1: Xv6 and Unix utilities

Lab1: Xv6 and Unix utilities 文章目录 Lab1: Xv6 and Unix utilities实验任务1.启动XV6(easy)2.Sleep(easy)-练手的,就是熟悉一下怎么在xv6项目中加.c文件,生成可执行程序并进行测试的1.解析rm.c2.argc 如何被赋值3.Sleep代码4.makefile编辑5.通过make…

在SpringBoot项目中集成MongoDB

文章目录 1. 准备工作2. 在SpringBoot项目中集成MongoDB2.1 引入依赖2.2 编写配置文件2.3 实体类 3. 测试4. 文档操作4.1 插入操作4.1.1 单次插入4.1.2 批量插入 4.2 查询操作4.2.1 根据id查询4.2.2 根据特定条件查询4.2.3 正则查询4.2.4 查询所有文档4.2.5 排序后返回 4.3 删除…

美团-Leaf ID算法集成到SpringBoot项目

提前准备 下载源码 GitHub地址&#xff1a;https://github.com/Meituan-Dianping/Leaf 下载下来 然后 maven install 安装到本地仓库 再需要用到该ID算法的项目中引入 以下内容 <!-- 本地仓库中的Leaf --> <dependency><artifactId>leaf-boot-starte…

AI+若依框架项目

基础应用篇 1.若依搭建 技术选型 RuoYi-Vue版本&#xff0c;采用了前后端分离的单体架构设计&#xff1a; 软件环境&#xff1a;JDK、MySQL 、Redis 、Maven、Node 技术选型&#xff1a;Spring Boot、Spring Security、MyBatis、Jwt、V 官方推荐 课程版本 JDK > 1.8 …

RabbitMQ高可用延迟消息惰性队列

目录 生产者确认 消息持久化 消费者确认 TTL延迟队列 TTL延迟消息 惰性队列 生产者确认 生产者确认就是&#xff1a;发送消息的人&#xff0c;要确保消息发送给了消息队列&#xff0c;分别是确保到了交换机&#xff0c;确保到了消息队列这两步。 1、在发送消息服务的ap…

将django+vue项目发布部署到服务器

1.部署django后端服务 部署架构 1.1 下载依赖插件 pip3.8 freeze > requirements.txt1.2 安装依赖插件 pip3 install -r requirements.txt1.3 安装mysql数据库 apt install mysql-server初始化数据库 CREATE USER admin% IDENTIFIED WITH mysql_native_password BY 123…

论文阅读:SIMBA: single-cell embedding along with features

Chen, H., Ryu, J., Vinyard, M.E. et al. SIMBA: single-cell embedding along with features. Nat Methods 21, 1003–1013 (2024). 论文地址&#xff1a;https://doi.org/10.1038/s41592-023-01899-8 代码地址&#xff1a;https://github.com/pinellolab/simba. 摘要 大多…

商业物联网:拥抱生产力的未来

在现代商业格局中&#xff0c;数据占据至高无上的地位。物联网&#xff08;IoT&#xff09;站在这场数字革命的前沿&#xff0c;将以往模糊不清的不确定因素转变为可衡量、可付诸行动的深刻见解。物联网技术为日常物品配备传感器与连接功能&#xff0c;使其能够实时收集并传输数…

【FRP 内网穿透 从0到1 那些注意事项】

【摘要】 最近跟第三方团队调试问题&#xff0c;遇到一个比较烦的操作。就是&#xff0c;你必须要发个版到公网环境&#xff0c;他们才能链接到你的接口地址&#xff0c;才能进行调试。按理说&#xff0c;也没啥&#xff0c;就是费点时间。但是&#xff0c;在调试的时候&#…

最新Kali安装详细版教程(附安装包,傻瓜式安装教程)

本文主要详细介绍 kali 的安装过程&#xff0c;以及安装完成后的基本设置&#xff0c;比如安装增强工具&#xff0c;安装中文输入法以及更新升级等操作。 文章目录 实验环境准备工作步骤说明安装虚拟机安装 Kali安装增强工具安装中文输入法更新升级 实验环境 VMware &#x…

【山大909算法题】2014-T1

文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 为带表头的单链表类Chain编写一个成员函数Reverse&#xff0c;该函数对链表进行逆序操作&#xff08;将链表中的结点按与原序相反的顺序连接&#xff09;&#xff0c;要求逆序操作就地进行&#xff0c;不分配…

论文浅尝 | MindMap:知识图谱提示激发大型语言模型中的思维图(ACL2024)

笔记整理&#xff1a;和东顺&#xff0c;天津大学硕士&#xff0c;研究方向为软件缺陷分析 论文链接&#xff1a;https://aclanthology.org/2024.acl-long.558/ 发表会议&#xff1a;ACL 2024 1. 动机 虽然大语言模型&#xff08;LLMs&#xff09;已经在自然语言理解和生成任务…

Win11 22H2/23H2系统11月可选更新KB5046732发布!

系统之家11月22日报道&#xff0c;微软针对Win11 22H2/23H2版本推送了2024年11月最新可选更新补丁KB5046732&#xff0c;更新后&#xff0c;系统版本号升至22621.4541和22631.4541。本次更新后系统托盘能够显示缩短的日期和时间&#xff0c;文件资源管理器窗口很小时搜索框被切…

SpringSecurity创建一个简单的自定义表单的认证应用

1、SpringSecurity 自定义表单 在 Spring Security 中创建自定义表单认证应用是一个常见的需求&#xff0c;特别是在需要自定义登录页面、认证逻辑或添加额外的表单字段时。以下是一个详细的步骤指南&#xff0c;帮助你创建一个自定义表单认证应用。 2、基于 SpringSecurity 的…

Cloud Native 云原生后端的开发注意事项

在云原生后端开发里&#xff0c;数据管理和存储这块得好好弄。数据库选型得综合考虑&#xff0c;像关系型数据有复杂查询需求就选 MySQL、PostgreSQL&#xff0c;海量非结构化数据就可以考虑 MongoDB、Cassandra 这些。设计数据库得遵循规范化原则&#xff0c;像设计电商订单表…

通达OA前台submenu.php存在SQL注入漏洞(CVE-2024-10600)

通达OA前台submenu.php存在SQL注入漏洞(CVE-2024-10600) pda/appcenter/submenu.php 未包含inc/auth.inc.php且 $appid 参数未用’包裹导致前台SQL注入 影响范围 v2017-v11.6 fofa app"TDXK-通达OA" && icon_hash"-759108386"poc http://url…

TCP连接(三次握手)(四次挥手)

建立TCP连接&#xff08;三次握手&#xff09; 以下是简单阐述 在确定目标服务器 IP 地址后&#xff0c;则经历三次握手建立TCP 连接 三次握手 代表客户端和服务端 之间的传递信息有三次 A说&#xff1a;我想和你聊天 &#xff0c;你能听到我说话吗 B说&#xff1a;我可以听到…

【MySQL实战45讲笔记】基础篇——事务隔离

系列文章 基础篇——MySQL 的基础架构 基础篇——redo log 和 binlog 目录 系列文章1. 事务隔离1.1 隔离性与隔离级别1.2 如何实现事务隔离1.3 事务的启动方式1.4 思考&#xff1a; 使用什么方案来避免长事务 1. 事务隔离 简单来说&#xff0c;事务就是要保证一组数据库操作&…