ECU-TEST笔记使⽤技巧01
说明
1)所述均基于如下环境:ECU-TEST 8.0、Win10系统、NI Veristand 2018(HIL测试)。不排除因为版本及软件环境问题,所述⽅法不奏效或有更好的⽅法,欢迎交流,⼀起提⾼。
2)本博客以问答形式进⾏,所述问题均来⾃于实际测试(包括MIL、HIL测试)遇到的问题及需求,⽬的是提⾼测试效率和⾃动化测试序列的可维护性。
3)本博客尽量从测试⽅法及ECU-TEST原理层⾯去解释使⽤⽅法,以期达到举⼀反三的⽬的。
4)不定期更新,⽂后会附上更新⽇志。
Q1. 【执⾏时间】HIL测试中,test case中单个步骤的执⾏时间不稳定,从3ms~20ms不等,如何测试具有时序要求及时间边界(时间较短)这类情况?
对于需要判定时序或时间的情况,判定放在trace analysis中进⾏。在test case中做如下处理:
1)不做时间判定。
2)存在时序的步骤,建议如果间隔时间短于500ms,test case中不做时序判定,放在trace analysis中⽤触发+时间计算去判定。
3)存在时序的步骤,建议如果间隔时间长于500ms,test case中对后⼀个步骤设置time until true,且把时间写的⽐实际长,约在实际时间上增加50~500ms。然后在trace analysis中⽤触发+时间计算去判定。
缘由:所使⽤的测试上位机为Windows系统,⽽该系统不是实时操作系统,⽆法做到对信号的实时响应,故会存在两个步骤之间执⾏时间从3ms~20ms不等。⽽trace中的⽂件,⽐如说是tdms格式的⽂件,它是ECU-TEST在执⾏测试⽤例的时候向veristand 发送了⼀个记录信号的指令,然后这个信号就被记录下来,然后再被ECU-TEST点过来分析,所以同⼀个测试⽤例下⼀个⼯具产⽣的trace⽂件时钟是同步的。但是涉及到多个⼯具,可能会时钟不同步,这个时候需要在trace analysis 对齐。--答复来⾃ECU-TEST⼯程师 李志远
存疑处:veristand运⾏在Windows系统中?trace中获取的信号理论上也应该是⾮实时的。如何能使信号对齐?variable怎么记
Q2.【variable迁移】当含有某个variable量的package做成了模块库被调⽤,⽽该variable⼜需要显⽰在project的set of
parameter中,如何处理?
如果进⾏调⽤该模块库package时,没有将其中的variable附带过来显⽰在当前variable列表中,则单独将需要使⽤的variable复制过来即可。
注:ECU-TEST当前版本不⽀持直接识别到模块库package中的variable,因为其是local量。
Q3. 【MIL/HIL复⽤】如果某个步骤只在HIL测试中使⽤,⽽在MIL测试中不需要执⾏,是否可使⽤IfDef代替If-Then-Else使阅读界⾯更简洁易读?
可以使⽤。IfDef的条件表达式中写的是全局常量,该表达式(可以只有全局常量)如果为true,则执⾏该步骤,否则屏蔽。对于MIL/HIL 复⽤时,只在HIL中执⾏的步骤,可以定义⼀个全局常量,然后使⽤IfDef语句即可(只使⽤全局常量⽽不使⽤表达式时,如果全局常量为1,则该步骤执⾏;如果为0,则ECU-TEST会⾃动屏蔽该步骤)。
缘由:ECU-TEST的执⾏语⾔为python,故其中的表达式语法均与python语法⼀致。
Q4.【⾃动化测试数据管理】对于同⼀类产品不同项⽬间,如何管理⾃动化测试数据,如global constants,parameter set?
写在Excel中,通过Python脚本调⽤Excel⽣成parameter set或global constants
Q5.【global  mapping替换】global mapping发⽣⼤⾯积变动时,如何通过脚本实现修改?场景:MIL/HIL切换
调⽤ECU-TEST的api接⼝实现:GetItem()-->GetTargetPath()-->CreatNewMapping()
注:待验证
Q6.【⾃动化操作ECU-TEST】如何做到⾃动化启动ECU-TEST、部署、执⾏等⼀系列操作?
com api⽤于操作ECU-TEST
注:如果是调试project中多个package或parameter set的运⾏,则可⽤Python脚本,这样就不⽤⼿动去屏蔽不需要执⾏的package。
Python脚本:脚本中使⽤"r''是为了防⽌Python转义,如果路径名中含有:“00_”这类,使⽤"r"则不会报错。
import Python类⽂件,再实例化:Api = Apiclient,之后便可以⽤Api.XX.XX.XX调⽤接⼝函数
【更新⽇志】
20191009:加⼊Q4~Q6
20190908:初版。