CANOE 仿真+测试

CANoe的自动化测试系统简介

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

Canoe TFS(Test Feature Set)

Canoe Test Feature Set是一套专为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:检查DLC(数据长度代码)不一致的情况。
  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设置为5testResetMsgDlc(EngineState);将报文EngineState的DLC重置为默认值。
testSetMsgCycleTime(0x150,50);故障注入,将引擎报文的循环周期设置为50ms。
TestDisableMsg(0x250);禁用报文0x250TestWaitForTimeout(2000);等待超时时间为2000毫秒。
TestSetMsgEvent(0x250);设置报文0x250的事件。
TestEnableMsg(0x250);启用报文0x250}
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:CANoe报XL_ERR_QUEUE_IS_FULL错误是由于CANoe的消息队列已满导致的。这个错误通常发生在CANoe接收到的消息数量超过了其消息队列的容量。这可能是因为CANoe的消息处理速度跟不上消息的接收速度,或者是由于系统资源不足导致的。要解决这个问题,可以尝试增加CANoe的消息队列容量,或者优化CANoe的消息处理速度。引用\[2\]:在CANoe中,可以通过设置总线背景来监听特定的CAN通道上的报文。可以使用CAPL脚本来设置总线背景,并等待特定的CAN报文。引用\[3\]:在CANoe中,可以使用CAPL脚本来检测错误帧。可以调用ChkStart_ErrorFrameOccured函数开始检测错误帧,并使用TestAddCondition函数添加检测条件。如果在指定的时间内检测到错误帧,则可以使用TestStepFail函数输出错误信息。根据你提供的信息,CANoe报XL_ERR_QUEUE_IS_FULL错误可能与消息队列已满有关。你可以尝试增加CANoe的消息队列容量或优化消息处理速度来解决这个问题。 #### 引用[.reference_title] - *1* [Driver error 11](https://blog.csdn.net/Sknpz/article/details/127094358)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【CANoe之CAPL基础学习_函数用法】](https://blog.csdn.net/qq_32462925/article/details/131083017)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值