CAPLE实现CAN路由的自动化测试

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.运行脚本
在这里插入图片描述执行结果
在这里插入图片描述测试报告
在这里插入图片描述
在这里插入图片描述

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值