宋 茜,吴速超,耿宗起,石玉庆
(潍柴动力股份有限公司发动机技术研究院,山东 潍坊 261061)
随着发动机电控技术的不断更新,国产自主ECU也逐渐崭露头角。潍柴自主开发的ECU控制器就完全可以适用于欧VI柴油发动机的控制。
潍柴自主开发的ECU控制器会不断根据市场反馈以及法规要求,对控制软件进行更新升级,以及修复一些bug。为了更加全面准确地测试软件性能,我们引入了HIL(硬件在环),但一台HIL的价格比较昂贵,所以可用的测试资源是有限的。因此为了实现资源的最优化分配,以及实现资源在公司内部及各子公司之间的共享,我们利用Jenkins和ECUTEST来解决这个问题。
测试工程师使用ECU-TEST在个人本地电脑编写测试用例,将其上传到SVN服务器,然后触发测试任务。Jenkins接收到测试任务之后,会自动查询可用的HIL资源,并将测试用例发布到合适的HIL上进行运行。运行结束后,测试报告自动上传数据库,并邮件通知对应的测试工程师,可以去数据库中下载测试报告。
在这整个过程中,免除了测试工程师自己去找HIL资源的麻烦。同时,集团内部其他子公司也可以远程实现ECU软件的硬件在环测试,实现了资源的共享和最大化利用。
ECU-TEST是一个自动化测试软件,主要应用于MiL/SiL/HiL测试环境中的自动化测试用例的编辑、实现、执行、测试数据分析以及测试报告的生成。借助ECU-TEST,即使没有任何测试自动化和编程方面的知识,用户也可以在每个开发阶段直观地为其软件创建自动化测试用例并自动运行它们。尽管使用该工具所需的工作量非常低,但在所有级别上都可以保持异常高的测试品质,这得益于其丰富的测试工具接口和很好的易用性,ECU-TEST在国内外汽车公司内的MiL/SiL/HiL测试中得到了非常广泛的应用。
Jenkins是一个开源的、提供友好操作界面的持续集成工具,主要用于持续、自动地构建/测试软件项目、监控外部任务的运行。Jenkins通常与版本管理工具、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant。
整个功能架构如图1所示。根据功能的不同,我们将整个架构分为3个部分。
1)操作界面:测试工程师的主要任务就是在操作界面上编写软件功能的逻辑测试用例以及对应的自动测试用例,创建测试任务,显示测试任务执行状态机结果等。
2)后台运行工具:后台使用的工具有数据库、SVN以及Jenkins。数据库主要用来存储逻辑用例、测试计划相关信息以及测试报告;SVN用来存储自动测试用例;Jenkins用来寻找合适的HIL资源并将测试任务配置到该HIL资源上运行。
3)测试执行工具:执行工具主要有HIL以及安装了ECU-TEST的电脑。ECU-TEST会连接INCA和HIL,自动执行测试任务中所有的自动测试用例,并生成测试报告。测试报告会上传到数据库中。
图1 功能架构图
3.2.1 界面功能
界面设置分为3个部分:菜单栏、树状结构选项栏、内容栏。如图2所示。
图2 界面图示例
3.2.1.1 菜单栏
菜单栏的主要功能有:①新建测试用例:点击该选项,会自动跳出新建测试用例的界面;②新建测试计划:点击该选项,会自动跳出新建测试计划的界面;③导入/导出:点击该选项,可以选择导入或导出测试用例。
3.2.1.2 树状结构栏
树状结构栏主要有3个子项。
1)测试用例:该项下面列举了所有项目名称,每个项目名称下面又划分不同的方向。
点击不同方向名称,可以在右边的内容栏中显示该项目该方向的所有测试用例列表。
点击项目名称,在右边的内容栏中显示该项目的所有测试用例列表。
点击“测试用例”这个主选项,在内容栏显示所有测试用例列表。
右键点击各选项,可以选择导入/导出选项,可以从Excel表中导入测试用例到该选项下,或者将该选项下的部分或所有用例导出到Excel表中。
2)测试计划:该项下面列举了所有项目名称,点击项目名称,在内容栏可以看到该项目所有的测试计划。点击“测试计划”这个主选项,在内容栏显示所有测试计划列表。
3)监控项:监控HIL运行状态。
3.2.1.3 内容栏
内容栏会根据用户在树状结构栏中选择的内容不同而显示不同的内容。如图2所示,选中TEST项目名后,内容栏分为上下两部分:上半部分显示测试用例列表,下半部分显示用例的具体内容。
如果树状结构选择测试计划,内容栏显示内容与上述类似,如图3所示。
图3 测试计划内容栏显示
如果树状结构选择监视器,内容栏会显示所有HIL的运行状态。
3.2.2 后台功能
用户在前端界面对逻辑测试用例以及自动测试用例编写完成之后,系统的后台程序会自动将测试计划放入数据库中,并根据优先级对测试计划进行排队。然后按照顺序依次执行测试计划。具体的操作流程如下。
1)测试工程师在自己电脑上,使用ECU-TEST编写自动测试用例。
2)完成后,将测试用例上传到SVN。
3)然后在本地电脑上创建一个新的测试计划,并提交到数据库中。
4)Jenkins安装在服务器上,一直运行,周期性地遍历HIL的运行状态。
5)一旦发现有空闲的HIL,就去数据库中遍历测试计划,查找优先级最高的、创建时间最早的、适合在该HIL运行的测试计划。
6)Jenkins将测试计划中包含的ECU-TEST编写的自动测试用例从SVN上拉取到HIL对应的电脑上,并启动ECU-TEST工具,开始执行自动测试用例。
7)测试结束后,Jenkins关闭ECU-TEST,并将测试报告上传到SVN。
8)邮件通知测试工程师,测试已完成,以及提供测试报告连接。
9)释放HIL节点。
后台功能的实现,主要依托于Jenkins、ECU-TEST和Python。使用ECU-TEST编写的自动测试用例,实现了ECU软件测试的自动化。Jenkins将界面的请求运行测试计划与ECU-TEST运行关联起来,实现了整个系统的连接。使用Python语言编写了几个小脚本,实现了Jenkins从SVN拉取和上传数据以及发送邮件给测试工程师等几个小功能。
该系统采用Java编写前端界面,使用Python、ECU-TEST和Jenkins在后端实现测试功能。实现了ECU软件测试的自动化。同时因为可以远程控制测试计划的执行,所以可以显示HIL资源的共享,以及HIL资源的24h不间断运行,提高HIL的利用率。