CAPLE实现CAN路由的自动化测试
需求:
网联域控制收到报文,并进行转发,转发的关系根据客户提供的路由关系表进行映射。
讯享网
测试环境:
讯享网使用2路CAN设备,这里考虑采用CANOE VN1640A作为硬件测试,上位机采用VECTOR 16 SP2进行caple脚本编写,调试。 将被测试设备输入端,与CANOE 的通道1连接 将被测试设备输出端,与CANOE 的通道2连接
测试点:
通过caple脚本,实现输入端与输出端的对比,从而判断测试结果。
测试思路
讯享网通过在caple test Moudle中赋值给环境变量,在Network Node中对环境变量的值进行监测,当环境变量值发送变化,就发出报文。
脚本编写
1.新建工程 新建工程选择2ch,要用2个通道。

讯享网 2.硬件通道配置
3.环境变量
环境变量设置,发送端报文的每个信号都要设置环境变量。可以"E_"与信号名称拼接。

4.设置发送节点
点击“Insert NetWork Node”,新建发送节点。
点击编辑按钮,新建发送文件,如can1_tx.can
例如:当环境变量中E_CIM_310_CheckSum名称发送变化时,就以环境变量的新值作为报文信号值,发送报文。
5.设置caple节点
在CAN2通道上新建CAPLE test节点
新建can2_rx.can文件。

讯享网variables { int act_dirs; float act_value,expt_value,i; int act_dlc; dword gCycCheckId; dword act_id; int exdirs=0; } void MainTest () { long time[8]; char target[200]; addTimeToMeasurementStartTime(timeNowNS(), time); write("%02d/%02d/%02d %02d:%02d:%02d.%-3d",time[5]+1, time[4], time[6]-100, time[3], time[2], time[1], time[0]); TestModuleTitle("Router Test Report"); TestModuleDescription("This test module calls some test cases to demonstrate "); TestReportAddSUTInfo("Company", "CIVCD"); TestReportAddSUTInfo("Serial No.", "A012345BC"); //报告执行时间 TestReportAddSUTInfo("Manufactured", "%02d-%02d-%02d %02d:%02d:%02d.%-3d", time[6]-100, time[5]+1,time[4],time[3], time[2], time[1], time[0]); TestReportAddEngineerInfo("Test Engineer", "D.Patel"); //报告存放路径及文件名 snprintf(target,elcount(target),"./report/OUB_can8RouterCan2-%02d-%02d-%02d_%02d-%02d-%02d.%-3d", time[6]-100, time[5]+1,time[4], time[3], time[2], time[1], time[0]); testReportFileName(target); //can1_can8 TC_YW_Router_NotMessageRouter_0x254_001(); //执行的脚本 } testcase TC_YW_Router_NotMessageRouter_0x254_001() { /* 前置条件:1.被测板的CAN2连接CANoe的CAN1,被测板的CAN8连接CANoe的CAN2连接 2.被测板子正常启动 测试步骤:1.使用CANoe工具,在CANOE中对应CAN1通道上发送报文名称:MRR_0x254,报文ID:0x254中信号 ADAS_254_CheckSum=0/1/10/100/200/255 2.报文周期设定为20ms,DLC=8发送报文 期望结果:2.在CANOE中对应CAN2通道能收到报文名称:MRR_0x254,报文ID:0x254分别对应以下信号值 ADAS_254_CheckSum=0/1/10/100/200/255 收到报文周期为20ms,DLC=8 */ message CAN2::MRR_0x254 testMessage; dword expt_id = 0x254;//路由后的报文ID float MessageCycleTime = 20;//声明接收报文周期时间 int exp_dirs = 0;//声明接收报文方向 //用例标题 TestCaseTitle("106","TC_YW_Router_NotMessageRouter_0x254_001"); testCaseDescription ("Test case is used to check the 0x254 router status"); TestStep("步骤1-1","ADAS_254_CheckSum-->ADAS_254_CheckSum"); for(i=255;i>=0;i=i-1){ @CAN3::MRR_0x254::E_ADAS_254_CheckSum = i;//与环境变量中保持一致, //根据路由表,进行映射 expt_value = i; testWaitForSignalChange(CAN2::MRR_0x254::ADAS_254_CheckSum,5000);//等待接收端信号值改变,设置超时5000ms act_value = getSignal(CAN2::MRR_0x254::ADAS_254_CheckSum); testassertResult(testMessage,i,expt_value,act_value,"ADAS_254_CheckSum"); } } testassertResult(message *testMessage,int tx_value,int expt_value,int act_value,char signale_name[]){ testStepPass("tx_singal_value ","send signal value is %d",tx_value); write("实际获取信号值 is %d",act_value); if(act_value != expt_value) testStepFail("check status ","%s::%s result is Fail,expect value is %d ,actul value is %d",testMessage.name,signale_name,expt_value,act_value); else testStepPass("check status ","%s::%s result is pass,expect value is %d ,actul value is %d",testMessage.name,signale_name,expt_value,act_value); }
6.运行脚本
执行结果
测试报告
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/44620.html