CANOE 仿真+测试

news2024/9/21 18:46:24

仿真+测试

  • CANoe的自动化测试系统简介
  • Canoe TFS常用函数
    • 测试判别函数
    • 测试架构函数
    • 测试报告函数
    • 检测函数
  • 创建自动化测试工程
    • 其他常用函数

CANoe的自动化测试系统简介

基于CANoe的自动化测试系统架构,根据ECU的测试环境和测试规范,搭建基于CANoe的测试系统,通过开始测试模块(Test Module)或测试单元(Test Unit)、网络控制硬件接口(如VN2600)、外围的硬件在环设备(如TV System)以及数据采集和控制I/O等板卡,实现高效的自动化测试。

Canoe TFS常用函数

测试判别函数

函数功能描述
TestCaseFail用于将当前测试用例的判别设为fail
TestGetVerdictLastTestCase用于返回上一次测试用例的判别结果
TestGetVerdictModule用于返回测试模块的当前判别结果
TestSetVerdictModule用于设定测试模块的当前判别结果
TestStepFail用于描述当前测试步骤的错误信息

测试架构函数

函数功能描述
TestCaseDescription用于将测试用例的描述写入测试报告
TestCaseSkipped用于在测试报告描述中跳过某个测试用例
TestCaseTitle用于设定测试用例的标题
TestCaseReportMeasuredValue用于在测试报告中添加测试参数的测量值
TestGroupBegin用于测试分组的开始
TestGroupEnd用于测试分组的结尾
TestModuleDescription用于在测试报告中描述测试模块
TestModuleTitle用于设定测试模块的标题
TestStep用于报告测试步骤信息,而不对测试结果有任何影响
TestStepErrorInTestSystem用于描述某个测试步骤在测试系统中发生一个错误
TestStepFail用于描述某个测试步骤发生错误
TestStepInconclusive用于描述某个测试步骤测试结果无法判别通过(pass)还是失败(fail)
TestStepPass用于描述某个测试步骤测试结果通过(pass),满足期望结果
TestStepWarning用于描述某个测试步骤的警示信息
TestInfoTable用于创建一个新表格,使测试报告显示更加结构化
TestInfoHeadingBegin用于在表格中添加一个表头
TestInfoHeadingEnd用于在表格中添加表头结束
TestInfoRow用于在表格中添加一个行
TestInfoCell用于在表格或者表头行添加单元格内容

测试报告函数

函数功能描述
TestCaseComment用于在测试用例中添加一个备注信息
TestReportAddEngineerInfo用于在测试报告中添加一些测试配置信息,如测试员、测试设定和待测样品等
TestReportAddSetupInfo用于在测试报告中添加一些测试配置信息,如测试员、测试设定和待测样品等
TestReportAddSUTInfo用于在测试报告中添加一些测试配置信息,如测试员、测试设定和待测样品等
TestReportAddExtendedInfo用于在测试报告中直接添加其他协议的信息(如HTML、text或XML),而处理不依赖于CANoe
TestReportAddExternalRef用于在测试报告中添加外部应用(如URL)
TestReportAddImage用于在测试报告中添加图片
TestReportAddMiscInfo用于在测试报告中添加一些额外信息
TestReportAddMiscInfoBlock用于在测试报告中添加一些额外信息区域
TestReportAddWindowCapture用于在测试报告中对某个测试用例抓取指定窗口图片
TestReportFileName用于动态设定测试报告名称
TestReportWriteDiagObject用于将某些指定对象以HTML表格形式写入测试报告
TestReportWriteDiagResponse用于将接收到的诊断响应以一个HTML表格的形式写入测试报告

检测函数

CANoe为用户提供了多种检测函数(CheckDescriptions),主要包括以下几个方面的检测。

  1. SignalEvaluation〔信号验证〕:包括信号的数值有效性、周期和稳定性等检测。
  2. MessageEvaluation(报文验证〕:包括报文丢失、周期、数据长度、错误帧等检测。
  3. TimeEvaluation〔时间验证〕:包括连续帧及超时等检测。

创建自动化测试工程

  1. 点击Test下面的Test Setup
    在这里插入图片描述

  2. 空白位置右击,新建测试环境,并命名。
    在这里插入图片描述

  3. 插入CAPL测试模块,并简单配置该模块。
    在这里插入图片描述

  4. 双击该测试名称,进入编辑界面,点击下方的小铅笔,可以开始进行测试脚本编写。
    在这里插入图片描述

  5. 测试脚本样例

variables
{
  const kTIMEOUT=5000;//常变量 测试等待时间为5s
}

void MainTest()//void返回值为空 ,测试程序的主入口
{
  testModuleTitle("TestDemo002");//测试模块名称
  testModuleDescription("这是Demo002的测试集");//测试模块描述
  testGroupBegin("测试组","测试组描述");//测试组开始
  checkEngineSpeed();
  testGroupEnd();//测试组结束

}


testcase checkEngineSpeed()
{
  dword checkId;//存放检测函数的返回值
  testCaseTitle("TC-1","TC-1测试引擎转速区间");//测试用例标题
  testCaseDescription("应用报文的功能测试");//测试用例描述
  //判断信号的值所在区间
  checkId=ChkStart_MsgSignalValueRangeViolation(Engine::EngineSpeed,2000,5000);
  testAddCondition(checkId);//添加测试条件
  if(checkId!=0)
  {
    testStepPass("引擎转速区间在2000-5000之间");
  }
  else
  {
    testStepFail("引擎转速区间不在2000-5000之间");
  }
  testWaitForTimeout(kTIMEOUT);//添加测试等待时间
  testRemoveCondition(checkId);//测试结束后 移除测试条件
  //测试报告的测试用例处添加
  TestReportAddMiscInfoBlock("测试参数");//额外信息区域
  TestReportAddMiscInfo("Max. voltage", "19.5 V");//额外信息
  TestReportAddMiscInfo("Max. current", "560 mA");
  TestReportAddImage("IP Snapshot", "IP.png", "400px", "");
}
  1. 仿真测试
    此测试项目参考 https://blog.csdn.net/m0_48468018/article/details/133847476?spm=1001.2014.3001.5501,需要先运行项目,然后进行仿真,最后测试面板点击三角符号,进行仿真测试
    在这里插入图片描述
  2. 测试结果查看
    在这里插入图片描述
    在这里插入图片描述
  3. 查看函数的含义,测试过程中有一个比较重要的函数是ChkStart_MsgSignalValueRangeViolation,如果不清楚函数的含义,可以鼠标移动到函数的位置,点击F1查看官方的帮助文档。
    9.

其他常用函数

  1. ChkStart_InconsistentDlc
  2. ChkStart_UndefinedMessageReceived
  3. ChkStart_MsgAbsCycleTimeViolation
  4. ChkStart_MsgRelCycleTimeViolation
  5. ChkStart_NodeMsgsRelCycleTimeViolation
  6. ChkStart_ErrorFramesOccured
  7. ChkQuery_NumEvents
  8. ChkStart_MsgOccurrenceCount
  9. ChkStart_MsgDistViolation
  10. ChkStart_AllNodesDead
  11. ChkStart_AllNodesBabbling
  12. ChkStart_NodeMsgsAbsDistViolation
  13. ChkStart_MsgRelOccurrenceViolation
  14. ChkStart_MsgSignalValueInvalid
  15. ChkStart_SignalValueChange
  16. ChkStart_SignalCycleTimeViolation
  17. ChkStart_Timeout
  18. 故障注入函数
On key 'z'
{
  testSetMsgDlc(EngineState,5);//设置报文EngineState的DLC为5
  testResetMsgDlc(EngineState);
  testSetMsgCycleTime(0x150,50);//故障注入 设置引擎报文的循环周期为50ms
  TestDisableMsg(0x250);
  TestWaitForTimeout(2000);  
  TestSetMsgEvent(0x250);
  TestWaitForTimeout(2000);
  TestEnableMsg(0x250);
}

可以自己动手操作一下,理解函数的含义。

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

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

相关文章

深入了解 Elasticsearch 8.1 中的 Script 使用

一、什么是 Elasticsearch Script? Elasticsearch 中的 Script 是一种灵活的方式,允许用户在查询、聚合和更新文档时执行自定义的脚本。这些脚本可以用来动态计算字段值、修改查询行为、执行复杂的条件逻辑等等。 二、支持的脚本语言有哪些 支持多种脚本…

用已安装好的系统级别PsychoPy软件配置Python虚拟环境

原创内容,仅供参考,欢迎大家批评指正! 本人在使用PsychoPy软件开发实验系统的时候遇到一个问题:我已经在win10系统安装了PsychoPy软件,同时基于友好的图形化界面开发了大部分系统功能,但我需要在我anaconda…

FreeRTOS深入教程(任务创建的深入和任务调度机制分析)

文章目录 前言一、深入理解任务的创建二、任务的调度机制1.FreeRTOS中任务调度的策略2.FreeRTOS任务调度策略实现的核心3.FreeRTOS内部链表源码解析4.如何通过就绪链表管理任务的执行顺序 三、一个任务能够运行多久1.高优先级任务可抢占低优先级任务一直运行2.相同优先级的任务…

深入浅出排序算法之基数排序

目录 1. 前言 1.1 什么是基数排序⭐⭐⭐ 1.2 执行流程⭐⭐⭐⭐⭐ 2. 代码实现⭐⭐⭐ 3. 性能分析⭐⭐ 3.1 时间复杂度 3.2 空间复杂度 1. 前言 一个算法,只有理解算法的思路才是真正地认识该算法,不能单纯记住某个算法的实现代码! 1.…

黑盒测试、白盒测试详解

前言 对于很多刚开始学习软件测试的小伙伴来说,如果能尽早将黑盒、白盒测试弄明白,掌握两种测试的结论和基本原理,将对自己后期的学习有较好的帮助。今天,我们就来聊聊黑盒、白盒测试的相关话题。 同时,我也为大家准备…

SparkSQL综合案例-省份维度的销售情况统计分析

一、项目背景 二、项目需求 (1)需求 ①各省销售指标,每个省份的销售额统计 ②TOP3销售省份中,有多少家店铺日均销售额1000 ③TOP3省份中,各个省份的平均单价 ④TOP3省份中,各个省份的支付类型比例 &#x…

基于jquery+html开发的json格式校验工具

json简介 JSON是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族…

打破信息孤岛,如何从API、数据中台突围

“烟囱”林立,零售企业“数据孤岛”现象突出 所谓数据孤岛,是指零售企业不同组织机构之间、不同部门之间或不同软件之间的数据无法连接互动,数据信息不能共享,设计、管理、生产的数据不能相互交流,数据出现脱节的现象…

tomcat必要的配置

tomcat要配置两个,不然访问不了localhost:8080 名:CATALINA_HOME 值:D:\software\computer_software\Tomcat\tomcat8.5.66

C/C++版数据结构和算法知识概要

数据结构和算法是计算机科学领域中的重要基础知识,无论您是初学者还是有经验的程序员,都必须深入了解这些概念。本篇博客将为您提供关于数据结构、抽象数据类型、算法、算法分析以及面向对象编程的综合概述,每个部分都将附有具体的代码示例。…

技术栈 业务架构 插件库

大前端 技术栈 业务架构 插件库

软考高项-计算题(3)

题10 问题一 EV50*0.525 问题二 EACBAC/CPI CPIEV/AC25/28 EAC50*28/2556 问题三 因为CPI<1&#xff0c;所以项目实际费用超支 题11 PV2000500010000750006500020000177000 AC2100450012000860006000015000179600 EV200050001000075000*0.965000*0.720000*0.351370…

vite的.env个人使用总结

以.env开头,后面是自定义环境,如gaga 配置文件内以VITE_开头 使用时,用--mode指定模式 在react中用import.meta.env为前缀获取对应值 在配置文件中使用方法:需要从vite中导入loadEnv包,再将defineConfig改成函数,返回对象. const env loadEnv(mode.mode, process.cwd());这一…

CCF CSP认证历年题目自练 Day40

题目 试题编号&#xff1a; 201412-3 试题名称&#xff1a; 集合竞价 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 256.0MB 问题描述&#xff1a; 问题描述   某股票交易所请你编写一个程序&#xff0c;根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量…

Csdn文章编写参考案例

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

【javaweb】学习日记Day12 - tlias智能管理系统 - 登录校验 JWT令牌 过滤器 拦截器 全局异常处理

目录 一、登录功能 &#xff08;1&#xff09;Controller层 &#xff08;2&#xff09;Service层 &#xff08;3&#xff09;Mapper层 二、登录校验 1、会话技术概述 2、会话跟踪方案 &#xff08;1&#xff09;Cookie &#xff08;2&#xff09;Session —— 基于Co…

kaggle新赛:AI Village夺旗赛挑战

赛题名称&#xff1a;AI Village Capture the Flag DEFCON31 赛题链接&#xff1a;https://www.kaggle.com/competitions/ai-village-capture-the-flag-defcon31 赛题背景 夺旗赛这款广受欢迎的竞技游戏&#xff0c;不仅可以在户外进行。数字夺旗赛指的是一系列需要参赛者利…

python操作MySQL,SQL注入问题,视图,触发器,事务,存储过程,内置函数,流程控制,索引

一、python操作MySQL 导入第三方模块&#xff1a;pymysql 操作步骤&#xff08;文字描述&#xff09;&#xff1a; 1. 先链接MySQL host&#xff0c;port&#xff0c;username&#xff0c;password&#xff0c;charset&#xff0c;库&#xff0c;autocommit等 2. 在python中书…

06条件判断

if语句的基本语法 if关键字后面跟一个判断条件 如果条件成立那么就运行判断条件里面的代码 else处理条件不满足时候的代码块 m 9 if m > 10:print("买一瓶醋") else:print("钱不够&#xff0c;请带够钱再来吧&#xff01;")#条件判断流程图 进入网…

stream流—关于Collectors.toMap使用详解

目录 使用规则&#xff1a;1.将list转成以id为key的map&#xff0c;value是id对应的某对象2.假如id存在重复值&#xff0c;则会报错Duplicate key xxx3.想获得一个id和name对应的Map<String, String>3.1 name为空时null3.2 id重复时 4.分组 使用groupingby 使用规则&…