capl自动化测试模版

/*@!Encoding:936*/

1、TC-1测试引擎转速区间  故障注入函数

2、测试引擎报文长度是否与DBC中定义的一致

3、TC-3测试总线上未定义的报文

4、测试引擎报文的循环时间

5、Tc-5 测试总线错误帧
includes
{
  
}

variables
{
  const KTIMEOUT =5000; //设置常量等待时间为5秒
}

//1.CAPL测试模块
//测试模块入口函数
void MainTest()
{
  testModuleTitle("Demo002Test");//测试模块名称
  testModuleDescription("这是CAPL自动化测试模块");//测试模块描述
  testGroupBegin("Demo002测试组","Demo002测试组包含5个用例");//测试组开始 测试组名 测试组描述
  Check001();
  CheckEngineSpeed();
  CheckEngineStateDLC();
  CheckUndefinedMessage();
  CheckEngineMsgCycleTimer();
    CheckErrorFrame(); 
  
  testGroupEnd();//测试组结束
  
}
   
//测试用例模版
testcase  Check001() //自定义一条测试用例
{
  write("这是一条测试用例样板");
}

testcase CheckEngineSpeed()
{
  dword checkId;
  testCaseTitle("TC-1","TC-1测试引擎转速区间");
  checkId=ChkStart_MsgSignalValueRangeViolation(Engine::EngineSpeed,800,3500);//测试引擎的转速区间在800~3500
  testAddCondition(checkId);//添加测试条件
  testWaitForTimeout(KTIMEOUT);//测试等待时间
  testRemoveCondition(checkId);//测试后移除测试条件
}

//TC-2测试引擎报文长度是否与DBC中定义的一致
//EngineState
testcase CheckEngineStateDLC()
{
  dword checkId;
  testCaseTitle("TC-2","TC-2测试引擎报文长度");
  checkId=ChkStart_InconsistentDlc(EngineState);//检查DLC长度
  testAddCondition(checkId);
  testWaitForTimeout(KTIMEOUT);
  testRemoveCondition(checkId);
}

//故障注入函数
On key 'z'
{
 testSetMsgDlc(EngineState,3);//故障注入 设置报文EngineState的DLC为3
}

//2.3 TC-3测试总线上未定义的报文
testcase CheckUndefinedMessage()
{
  dword checkId;
  testCaseTitle("TC-3","TC-3:测试总线上未定义的报文");
  checkId=ChkStart_UndefinedMessageReceived();//检查总线上未定义的报文
  testAddCondition(checkId);
  testWaitForTimeout(3000);
  testRemoveCondition(checkId); 
}

On key's'
{
  message *undefinedmsg;//声明未定义的报文
  undefinedmsg.can=1;
  undefinedmsg.id=0x666;
  undefinedmsg.dlc=4;
  undefinedmsg.byte(0)=0x60;
  undefinedmsg.byte(1)=0x70;
  undefinedmsg.byte(2)=0x80;
  undefinedmsg.byte(3)=0x90;
  output(undefinedmsg);


//2.4 测试引擎报文的循环时间
testcase CheckEngineMsgCycleTimer()
{
  dword checkId;
  float minCycleTime=100;//最小时间
  float maxCycleTime=110;//最大时间
  testCaseTitle("TC-4","TC-4:测试引擎报文循环时间");
  checkId =ChkStart_MsgAbsCycleTimeViolation(Engine::EngineState,minCycleTime,maxCycleTime);
  testAddCondition(checkId);//添加测试条件
  testWaitForTimeout(3000);//测试等待时间
  testRemoveCondition(checkId);//测试后移除测试条件 

on key 'p'
{
  testSetMsgCycleTime(0X150,50);//故障注入,设置引擎报文的循环周期为50ms
}

//2.5Tc-5 测试总线错误帧
testcase CheckErrorFrame()
{
  dword checkId;
  dword numCheckEvents;//错误帧数量
  testCaseTitle("IC-5","TC-5:测试总线错误帧");
  checkId=ChkStart_ErrorFramesOccured();//错误帧出现函数
  testAddCondition(checkId);
  testWaitForTimeout(100000);//测试等待时间
  testRemoveCondition(checkId);//测试后移除测试条件
  numCheckEvents=ChkQuery_NumEvents(checkId);//统计错误帧数量
  if(numCheckEvents>0)
    testStepFail("错误帧出现");
  else
    testStepPass("没有错误帧");
}
 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CAPL(通用应用程序编程语言)是一种专为控制器区域网络(CAN)开发的一种编程语言,被广泛用于车辆网络通信和自动化测试案例的开发。下面是关于CAPL自动化测试案例的回答: CAPL自动化测试案例主要包括以下几个方面: 1. CAN消息的模拟和发送:使用CAPL语言可以模拟各种CAN消息,并通过自动发送这些消息,用来测试ECU是否正确地接收和处理这些消息。 2. 信号的生成和采集:使用CAPL语言可以生成各种信号,例如车速、引擎转速等,以便测试ECU对这些信号的采集和处理能力。 3. 事件触发和相应处理:CAPL语言允许定义各种事件触发条件,并指定相应的处理函数。这可以用来模拟车辆发生特定事件(例如刹车踏板被踩下)时ECU的相应行为,并进行相应的测试和验证。 4. 数据记录和分析:CAPL语言提供了强大的数据记录和分析功能。可以通过在测试过程中记录关键数据,并使用CAPL语言进行分析和验证,以确保ECU的功能和性能符合要求。 5. 网络通信的测试CAPL语言还可以用来模拟车辆网络通信环境,例如模拟不同的节点之间的通信,测试ECU在不同网络通信环境下的可靠性和稳定性。 总之,CAPL自动化测试案例通过使用CAPL语言,可以模拟车辆网络通信环境,并对ECU的功能和性能进行全面的自动化测试和验证。这样可以大大提高测试效率,减少人工测试的工作量,并确保ECU的质量和稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值