CANOE 仿真+测试

编程入门 行业动态 更新时间:2024-10-21 14:18:16

CANOE 仿真+<a href=https://www.elefans.com/category/jswz/34/1771117.html style=测试"/>

CANOE 仿真+测试

仿真+测试

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

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. 仿真测试
    此测试项目参考 =1001.2014.3001.5501,需要先运行项目,然后进行仿真,最后测试面板点击三角符号,进行仿真测试
  2. 测试结果查看

  3. 查看函数的含义,测试过程中有一个比较重要的函数是ChkStart_MsgSignalValueRangeViolation,如果不清楚函数的含义,可以鼠标移动到函数的位置,点击F1查看官方的帮助文档。

其他常用函数

  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设置为5。
testResetMsgDlc(EngineState);将报文EngineState的DLC重置为默认值。
testSetMsgCycleTime(0x150,50);故障注入,将引擎报文的循环周期设置为50ms。
TestDisableMsg(0x250);禁用报文0x250。
TestWaitForTimeout(2000);等待超时时间为2000毫秒。
TestSetMsgEvent(0x250);设置报文0x250的事件。
TestEnableMsg(0x250);启用报文0x250。
}

更多推荐

CANOE 仿真+测试

本文发布于:2024-03-07 23:11:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1719162.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:测试   CANOE

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!