车载TBOX嵌入式设备软件的性能测试

news2024/11/26 0:20:13

作者 | 李伟 上海控安安全测评中心安全测评部总监

来源 | 鉴源实验室

01 ECU软件和通用软件性能测试的区别

通用软件进行性能测试时通常会通过压力测试、负载测试、稳定性测试、疲劳强度测试、用户并发访问测试等等方法来了解当前软件系统的各项性能指标数据,并在这些测试过程中发现并修复系统存在的问题,或者优化系统运行效率等。

通用软件和ECU软件使用场景的不同产生的需求不同,从而出现了性能测试的差异和侧重点的不同。

首先系统运行场景的不同,通用软件一般直接面向客户使用,如果是提供在线web服务的系统,面向的客户群体有时候会是一个庞大数量。车载ECU一般不会面向最终用户,ECU的数据输入和输出对象一般是其他ECU或者系统TSP后台,以Tbox为例,车内通讯对象有网关、娱乐主机等,外部通讯对象是TSP后台,以及单个用户的手机蓝牙或者WiFi。

除使用场景和服务对象的不同外,性能需求也不一样。通用软件对于系统的在线并发处理,同时在线用户数等性能有较高的要求。车载ECU不会有多个最终用户的并发使用情况,所有信息通讯交互对象都是有限定的,从功能安全和产品需求设计出发,性能需求集中在系统长时间运行稳定性,以及各种场景下内存溢出和泄漏测试。

02 Tbox的性能测试项

在进行tbox性能测试项设计时,我们常用的做法是先进行使用场景的梳理,在梳理场景过程中,对数据流和逻辑的控制流相结合按照不同业务进行细分析,对这些过程中发现的瓶颈处设计性能测试项进行验证。

以Tbox为中心形成的车内子系统中,CAN总线上的通讯数据是明确固定的,意思是CAN总线上主动向TBOX发送的各种信号是明确的,tbox被动响应的或主动向网络发送的信号也是明确的,这部分信号在项目的早期就被确定下来,在项目研发过程中会有轻微的调整,tbox对这部分数据的处理是依靠自身的CAN通讯芯片,这部分的设计已经非常成熟,设计师选型会留有充分的余量,这部分的性能测试通常会放在硬件部分跟CAN网络和诊断测试在项目早期一起完成,系统级的性能测试一般不会考虑这部分内容。

Tbox和各子系统的通讯如下图所示,子系统间的通讯通常有从车端至云端,从TSP端至车端,周期性和触发型等几个部分。在这些通讯过程中,除了云端的TSP平台,车端还会跟Internet上的各种网络服务有通讯,主要是给娱乐主机提供各种定制化的服务,但是这些服务不会主动从云端向车端发起。

图 1

从车端上报至TSP端的通讯,周期性上报数据通常包括:大数据、新能源国标或地标上报等。触发型上报数据通常包括:各种报警信息、娱乐系统互联网服务。

从TSP端至车端的通讯,一般只包含触发型数据,不会从TSP端向车端主动发起周期性的通讯请求,通常包括:车况的查询与上报、远程控制车辆等。

经过分析我们可以看到,在这个子系统中,场景比较简单,消费子系统资源的最终用户是单一的,不存在通用软件类似大量用户并发访问的情况,我们对系统的性能要求主要集中在稳定性,和一定负载下的长时间疲劳测试中。通常的性能测试设计主要集中在以下几个方面:

车端网络上传下载速率测试,对tbox整体的上传和下载的最大速率进行测试,确定是否存在车端上传下载在网络速率上的瓶颈。

车端和云端网络通讯长时间的稳定性测试,一般测试24小时以上,测试车端和云端的通讯是否存在丢包,网络抖动等情况。

系统内存溢出和泄漏测试,通过对系统增加一定的负载,长时间运行并对系统资源使用情况进行监控,确认是否存在系统资源异常消耗的事件存在。

03 Tbox性能测试工具

Tbox系统运行软件一般是在各种Linux环境之上,如Ubuntu、CentOS、Android等,所以各种性能测试的开源工具是比较多的,我们列举常用的一些跟大家分享。

Speedtest,无论是Linux还是windows环境下,speedtest都是非常好用的网络带宽测试工具,可以测试出当前网络连接Internet的上传和下载最大速率,平均速率,网络延迟等参数,在针对车端上网性能的测试项时我们一般都会用到这款工具。

Iperf,是一款已经存在了很多年的著名网络测试工具,应用非常广泛,可以设置参数对TCP、UDP等协议进行性能测试,获得网络带宽、MTU/MSS,网络丢包,延迟等数据。我们在测试长时间的网络稳定性时会用到这款工具。

Monit,是Linux上最灵活、功能最强大的监视工具之一,已经存在了很多年,支持各种参数的自定义设置和报警阈值设置,还提供一个轻量化的web服务,方便用户通过浏览器来监视系统资源情况。我们在进行长时间内存泄漏探测时,会用到这款工具。

目前各种性能测试的小工具是非常多的,实际的使用中首先是根据测试设计的需要来进行选取,其次对工具的测试精确度,易操作性,成本等进行考虑,最终确认适合项目产品测试的最佳工具。

04 总 结

车载ECU的性能测试跟传统的通用软件,特别是提供web服务的互联网软件系统有非常大的区别,并发测试不再是tbox测试的重点,TBOX的运行稳定性和探测内存泄漏溢出成为了首要测试目标。车载的其他ECU也存在类似的情况,我们需要通过系统的ECU设计使用场景分析,基于数据和控制流对功能模块全面覆盖细分类考虑,来具体情况具体对待。

 

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

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

相关文章

【mybatis】实现分页查询

一 .使用原生分页器的实体类 1.1 java代码部分 方法多 不易书写 package cn.bdqn.entity;public class Page {private Integer pageIndex;//页码private Integer pageSize;//页大小 显示多少行数据private Integer totalCounts;//数据的总行数private Integer totalPages;//…

docker安装部署dragonfly2镜像加速服务

Dragonfly安装部署文档 ​ Dragonfly 作为龙蜥社区的镜像加速标准解决方案,是一款基于 P2P 的智能镜像和文件分发工具。它旨在提高大规模文件传输的效率和速率,最大限度地利用网络带宽。在应用分发、缓存分发、日志分发和镜像分发等领域被大规模使用。 …

鸟哥的Linux私房菜读书笔记:Linux磁盘与文件系统管理

系统管理员很重要的任务之一就是管理好自己的磁盘文件系统, 每个分区不可太大也不能太小, 太大会造成磁盘容量的浪费, 太小则会产生文件无法储存的困扰。 前面谈到的文件权限与属性中, 这些权限与属性分别记录在文件系统的哪个区块…

[Golang实战]如何快速接入chatgpt/openai?[引入go-gpt3][新手开箱可用]

如何快速接入chatgpt?[引入go-gpt3]上文介绍了如何在网页使用chatgpt?V1.介绍下在golang中使用chatgpt?1.查看官网推荐的chatgpt项目2.访问go-gpt33.使用并运行在自己的项目中...(是因为例子很难理解,所以一一对应了属性做了配置)3.1安装项目3.2换上自己的代码3.3换上自己的…

LeetCode - 1109 - 航班预定统计

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 1109. 航班预订统计 - 力扣(LeetCode) 题目描述 这里有 n 个航班,它们分别从 1 到 n 进行编号。 有一份航班预订表 bookings ,表中第 i 条预订记录 bookin…

【C语言】BCD码、十进制互相转换

目录 0. 前言: 1. BCD码 2. 算法原理 3. 进制转换 3.1 两位BCD码的转换: 3.2 其他进制转换 3.3 任意进制转二进制 参考资料: 0. 前言: 记录今天用15单片机写DS1302时钟芯片程序的时候遇到的问题 时间显示是这个样的 0 1…

电源浪涌保护器的演化发展与未来创新方向

随着科学信息技术和城市经济的发展,感应雷、电磁脉冲和雷电波浸入所造成的危害大大增加。一般建筑物的外部防雷措施只能预防直击雷,而强大的电磁场产生的感应雷和脉冲电压却能潜入室内危及电路上的设备。如今通讯网络、电脑仪器和各类用电设备越来越精密…

2023VR视频加密解决方案

如今VR技术在各个领域中的使用,使得我们在日常生活中也可以看到它的身影,常见的就是应用到培训、影院和游戏当中,我们都知道VR视频比传统的平面视频能给用户带来更好的体验,而且现在在教育、娱乐等领域VR类视频也越来越多。相比于…

运动基元(二):贝塞尔曲线

贝塞尔曲线是我第一个深入接触并使用于路径规划的运动基元。N阶贝塞尔曲线具有很多优良的特性,例如端点性、N阶可导性、对称性、曲率连续性、凸包性、几何不变性、仿射不变性以及变差缩减性。本章主要介绍贝塞尔曲线用于运动基元时几个特别有用的特性。 一、贝塞尔曲线的定义 …

C++复习笔记4

编译器给一个类默认生成的六个成员函数: 构造函数、析构函数、拷贝构造函数、赋值运算符重载、对象取地址运算符以及常对象取地址运算符。其中析构函数不能重载,默认的拷贝和赋值两个函数存在浅拷贝的问题。 对象取地址运算符重载和常对象取地址运算符…

KD03丨选品种-横截面动量

大家好,今天我们分享可达鸭系列第3篇策略——横截面动量。 想必这种逻辑大家也都熟悉,为了照顾大部分新人朋友,开始还是简单介绍一下该该逻辑理论。 横截面是一种非时序动量逻辑,从统计学感性描述(非严谨客观描述&am…

windows安装PaddleSpeech(无需visual studio)

前言 首先啊,狠狠的批评一下paddle,不想看请直接跳到用法,另外我python版本是3.9,所以包找的也都是3.9。 1.分成许多子项目涵盖AI的不同领域,初心是好,安装起来得安装多个环境。 2.官方文档推荐linux安装&…

anaconda详细介绍、安装及使用(python)

anaconda详细介绍、安装及使用1 介绍1.1 简介1.2 特点1.3 版本下载2 Anaconda管理Python包命令3 安装3.1 windows安装4 操作4.1 Conda 操作4.2 Anaconda Navigator 操作4.3 Spyder 操作4.4 Jupyter Notebook 操作5 示例参考1 介绍 1.1 简介 Anaconda是用于科学计算&#xff08…

力扣sql简单篇练习(十四)

力扣sql简单篇练习(十四) 1 银行账户概要|| 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 高于相当于大于的意思 SELECT u.name,t.balance FROM Users u INNER JOIN (SELECT account,sum(amount) balanceFROM TransactionsGROUP BY accountHAVIN…

Kafka入门(四)

下面尝试一下Kafka 的生产者客户端和消费者客户端的实现。 1、客户端简介 生产者就是负责向Kafka发送消息的应用程序,消费者就是拉取Kafka消息的应用程序。 在Kafka的历史版本中,主要的客户端如下: 基于Scala语言编写的客户端,称…

JAVA工具篇--3 maven项目转gradle项目

前言:将已有的Maven 项目转换为Gradle 项目; 1 项目转换: 1.1 winr 打开cmd命令窗口, 然后进入到maven项目根目录后,输入命令: gradle init --info --type pom1.2 选择构建的语言: 输入 1 然后回车; 1.3…

Rust编码的信息窃取恶意软件源代码公布,专家警告已被利用

黑客论坛上发布了一个 用Rust编码的信息窃取恶意软件源代码 ,安全分析师警告,该恶意软件已被积极用于攻击。 该恶意软件的开发者称,仅用6个小时就开发完成,相当隐蔽, VirusTotal的检测率约为22% 。 恶意软件开发者在…

canal使用说明:MySQL、Redis实时数据同步

1. canal简介 canal是阿里开源的数据同步工具,基于bin log可以将数据库同步到其他各类数据库中,目标数据库支持mysql,postgresql,oracle,redis,MQ,ES等 canal分成服务端deployer和客户端adapter,我们可以部署多个,同时为了方便管…

AssertionError: 618 columns passed, passed data had 508 columns【已解决】

问题描述 程序中断,报错如下AssertionError: 618 columns passed, passed data had 508 columns Exception has occurred: ValueError 618 columns passed, passed data had 508 columns AssertionError: 618 columns passed, passed data had 508 columnsThe abo…

< CSDN周赛解析:第 27 期 >

CSDN周赛解析:第 27 期👉 前言👉 第一题: 幸运数字> 解析> 解决方案> 拓展知识👉 第二题: 投篮> 解析> 解决方案👉 第三题: 通货膨胀-x国货币> 解析> 解决方案…