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
    CANOE 仿真+测试_第1张图片

  2. 空白位置右击,新建测试环境,并命名。
    CANOE 仿真+测试_第2张图片

  3. 插入CAPL测试模块,并简单配置该模块。
    CANOE 仿真+测试_第3张图片

  4. 双击该测试名称,进入编辑界面,点击下方的小铅笔,可以开始进行测试脚本编写。
    CANOE 仿真+测试_第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,需要先运行项目,然后进行仿真,最后测试面板点击三角符号,进行仿真测试
    CANOE 仿真+测试_第5张图片
  2. 测试结果查看
    CANOE 仿真+测试_第6张图片
    CANOE 仿真+测试_第7张图片
  3. 查看函数的含义,测试过程中有一个比较重要的函数是ChkStart_MsgSignalValueRangeViolation,如果不清楚函数的含义,可以鼠标移动到函数的位置,点击F1查看官方的帮助文档。
    CANOE 仿真+测试_第8张图片

其他常用函数

  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}

你可能感兴趣的:(车载测试,网络)