使用ECU-TEST 进行IO 接口批量自动化测试的研究
2020-11-27吴速超石玉庆
宋 茜, 吴速超, 王 龙, 石玉庆
(潍柴动力股份有限公司电控研究院, 山东 潍坊 261061)
随着发动机技术的不断更新,欧VI柴油机中匹配的传感器和执行器数量不断增加,这使得ECU的接口测试工作量大幅增加。
在测试过程中,我们发现,同一类型的IO接口的测试方法存在共性,例如模拟输入接口,都是需要HIL给出一个模拟输出信号,然后ECU接收信号并验证接收的信号是否正确。这些具有共性的工作,需要人为地更改一些变量,然后不断重复进行,这样导致测试效率低下,而且没有发挥测试工程师的真正作用。所以,我们使用ECU-TEST软件中的ParameterGenerator功能,将这些重复性的工作进行参数化和自动化,解放人力,提高测试效率。
1 ECU-TEST简介
ECU-TEST是一个自动化测试软件,主要应用于MiL/SiL/HiL测试环境中的自动化测试用例的编辑、实现、执行、测试数据分析以及测试报告的生成。借助ECU-TEST,即使没有任何测试自动化和编程方面的知识,用户也可以在每个开发阶段直观地为其软件创建自动化测试用例并自动运行它们。尽管使用该工具所需的工作量非常低,但在所有级别上都可以保持异常高的测试品质,这得益于其丰富的测试工具接口和很好的易用性,ECU-TEST在国内外汽车公司内的MiL/SiL/HiL测试中得到了非常广泛的应用。
在使用ECU-TEST编辑自动化测试用例时,可充分应用参数化、模块化的思想,减少重复编辑相似用例的工作量,在接口测试中效果尤为显著。ParameterGenerator是ECUTEST中用于自动生成测试参数组的一个Python生成器,其应用ECU-TESTObjectApi和Pythonopenpyxl库实现了将Excel中定义的测试参数表格自动生成为ECU-TEST中的测试参数组合并与模块化的测试用例匹配结合的功能,从而实现大批量的可执行的自动化测试用例。
2 功能实现
2.1 准备工作
在进行批量化自动处理之前,首先要对ECU接口进行梳理和归类,并将属性一致的接口放在同一个表格中。例如,对于模拟量输入针脚,需要HIL给定一个输入量,电压值或者电阻值,然后ECU中对应的有一个测量量,需要测试这个测量量的值是否与HIL输出的值一致。
以模拟输入量为例,如表1所示,第1列是ECU测量量的名称,例如“发动机水温”和“油门踏板”都是模拟量输入信号。第3列针脚类型主要是区分这个针脚是电压型还是电阻型,如果是电压型,那么第5列HIL控制变量中设置的就应该是电压值,如果是电阻型,HIL控制变量中设置的就应该是电阻值。
表1 ECU模拟输入表
将这些测试过程中需要用到的关键参数都放到一个Excel表格中,并尽可能涵盖所有测试内容,后续使用ECUTEST软件可以直接读取相关参数,减少人为工作量。
2.2 Parameter Generator功能实现
使用ECU-TEST中Parameter Generator功能,需要分为3步:①修改python程序;②编写测试用例;③生成测试工程文件。
2.2.1 修改python程序
在ECU-TEST中,Parameter Generator功能已经给使用者提供了一个python程序的框架。使用者只需要修改其中的几个关键参数即可。图1为代码编写流程。
图1 代码编写流程
在IO接口测试过程中,我们会改变HIL中某个传感器或执行器的状态,然后需要检测ECU中对应的变量的值是否改变了。因此,在ECU-TEST中,我们可能会需要从global mapping文件(ECU-TEST中一个存放ECU或HIL变量的xam文件) 中调取相关变量。但为了测试用例的通用性,我们不会直接调用具体的变量,而是采用一个通用变量,generic value,然后把具体的变量名称写入Excel表格中,通过python代码,将这个具体的变量名与generic value关联起来。这个功能是通过ECU-TEST中自带的模块库Api Client中的Create Xa Model Label等相关函数实现的。
UUID是parameter generator的一个标识ID,每个generator的UUID必须不同。
修改generator的名字是为了更加方便管理和使用。
将Excel中的数据读取到python程序的变量中,然后将这些变量与ECU-TEST中定义的输入变量相关联,那么在生成一个新的project文件的时候,Excel表中的数据就会自动填充到测试用例的输入中。
2.2.2 编写自动测试用例
根据测试需求编写测试用例。将Excel中的参数作为输入参数,如图2黑框中所示。在红色框中,首先将Excel表中的Engine Speed的值写入名为“VALUE”的变量中,而“VALUE”对应的是表中Engine Speed列的变量。我们假设了这个HIL变量可以控制发动机转速,所以可以从ECU的global mapping文件中调取发动机转速变量engine speed进行检查,看是否等于Engine Speed的值。
图2 package示例
2.2.3 生成测试工程文件
测试用例完成之后,我们就可以用Parameter Generator功能来自动批量创建不同参数值的测试用例工程了。如图3所示,新建一个工程文件,将自动测试用例拖到工程文件中,然后点击Parameter Generator功能按钮(黑色圆圈中的按钮),就会生成红色圈中的generator。然后右键选择Generator Project,就会生成图4中的一个新的工程文件Param Set Generator_Test。在这个新的工程文件中,Excel表中每一行可以生成一组数据,自动测试用例会依次调用每一组数据进行测试。
图3 创建工程
图4 自动生成的测试用例工程
3 结论
通过使用ECU-TEST中的Parameter Generator功能,可以实现批量发动机接口自动测试功能,将一些重复性的工作实现自动化,解放了人力,提高了测试效率。