基于CAN总线的自动化测试系统
2024-07-30胡海华季金强钱正华
收稿日期:2024-05-21
*基金项目:江苏省科技计划项目(BE2023074)。
作者简介
胡海华(1980—),男,高级工程师,硕士,主要从事新能源整车及零部件等方面的研究工作。
【摘 要】为提高车辆功能测试的效率与可靠性,设计一种基于CAN总线的自动化测试系统,期望实现测试用例构建与管理、自动化测试、实时数据采集、自动报告生成等功能,并通过试验充分验证系统的可行性。
【关键词】CAN总线;自动化测试;数据采集;测试管理
中图分类号:U463.7 文献标识码:A 文章编号:1003-8639( 2024 )07-0067-04
Automated Testing System Based on CAN Bus*
HU Haihua,JI Jinqiang,QIAN Zhenghua
(Asiastar Motor Coach Co.,Ltd.,Yangzhou 225116,China)
【Abstract】To improve the efficiency and reliability of vehicle functional testing,a CAN bus based automated testing system is designed,aiming to achieve functions such as test case construction and management,automated testing,real-time data collection,and automatic report generation. The feasibility of the system is fully verified through experiments.
【Key words】CAN bus;automated testing;data collection;test management
控制器局域网络(Controller Area Network,CAN)总线是一种重要的串行通信协议,广泛应用于车辆的电子控制单元ECU之间的信息传递。通过CAN总线,多个ECU可以通过单一的通道高效地交换信息,极大地提高了车辆的控制效率和可靠性。然而,随着汽车功能的复杂化,传统的车辆功能测试面临诸多挑战。测试人员通常需要依据测试大纲和具体功能,模拟测试环境,采集并分析数据波形,最终由人工编制测试报告,这一过程不仅耗时而且易于出错。在这种背景下,设计一种基于CAN总线的自动化测试系统显得尤为重要。本系统设计了一套自定义的语法结构,支持用户在Execl文件中进行测试用例的编制和管理。系统实现测试用例的语法解析、测试过程的自动化、实时数据采集和自动报告生成功能。同时系统提供了良好的用户交互界面,简化操作。本系统避免了过多的人为干预,显著提高测试的准确性和效率,降低了人为误判等风险。
1 系统的设计和实现
1.1 系统的架构和功能
综合考虑系统的功能性和实用性需求,构建其整体结构方案,系统结构图如图1所示。
语法结构是系统的核心基础,本系统设计了4大类语法结构,以指导测试用例的编制和测试系统的执行。
测试用例管理负责编制和管理测试用例。操作人员需提前在Excel模板中依照规定的格式和语法将功能测试大纲转换为语法版测试用例,同时,工作表中设计了测试用例库,便于对可复用的测试用例进行维护。
自动化测试软件是系统的核心执行部分,操作人员可以在界面进行系统配置、文件导入、测试用例选择等。当测试开始后,软件会自动根据测试用例进行语法解析、数据采集和逻辑判断,并实时显示测试进度和结果。在测试完成后自动进行报告生成。
1.2 测试语法结构
在自动化测试系统中,一套能满足各种测试用例设计需求的语法结构是非常重要的,这些语法必须能够支持从基础数据读写到高级逻辑判断,并且能实现复杂逻辑、多变条件以及循环嵌套的测试步骤,这样才能确保测试流程的完整性和深度。本系统基于模块化和可扩展性原则,设计了14种语法结构,具体如下:①基础语法:read、assert、sendmsg、capture、stopcapture、end;②判断语法:if/elif/else;③循环语法:while、break;④辅助语法:alert、wait、creatnum、write、math。部分语法结构说明如表1所示。
1.3 测试用例管理
本系统的测试用例管理采用Execl文件进行管理,分为4个工作表。
1)TestCase:根据测试大纲编写的测试步骤。
2)InitStep:测试用例的初始化步骤。
3)ClearupStep:测试结束时的清理步骤。
4)CustomStep:用户自定义的步骤。
在TestCase工作表中,可以通过标签调用其他3个工作表中的内容,从而实现测试用例库的建立与调用,测试用例库的调用方案如图2所示。
1.4 测试软件功能介绍
自动化测试软件实现过程是由操作人员先进行系统配置,包括对CAN设备、通道、DBC文件等内容进行配置。然后,导入测试用例文件,成功导入文件后,根据需要选择测试条目,调整测试条目执行顺序。当开始测试后,软件将根据语法结构逐行解析,并进行数据采集、处理、判断等,测试过程中会将单条测试步骤的详情按顺序更新在界面上,当执行完单个测试条目后,将当前测试条目的测试结果更新在界面上。当执行完所有的测试条目后,软件会自行进行报告生成,内容包括测试概况、详细测试条目、执行时间和数据曲线分析等,为进一步分析提供了详实的数据支持。自动化测试软件实现流程图如图3所示。
1.4.1 测试用例加载与显示逻辑
操作人员通过导入按键打开文件对话框,并选择一个包含测试用例的Excel文件。导入测试文件后,软件会解析文件工作表中的测试条目,读取特定的行列以构建测试用例的层次结构,在界面上通过树状结构进行显示,对于树的根节点和子节点,动态添加了复选框,用于供操作人员进行选择。软件中为每个复选框绑定了一个事件处理函数,当复选框的状态改变时,这个函数负责同步更新父节点或子节点的选中状态,允许用户通过选中一个顶级用例自动选择所有相关的子用例,或者通过取消选择顶级用例来取消所有子用例,可以简化操作过程。在操作人员选定测试用例后,软件收集所有被选中的测试节点,用于后续加载测试步骤使用。测试用例加载与显示基本流程图如图4所示。
1.4.2 测试执行实现逻辑
测试开始后,软件会根据上述选中的测试节点,重新读取测试用例文件中的测试步骤,通过字典结构将测试步骤构建成层级结构,同时,通过多线程不断监听CAN通道以接收消息,采用PyQt的信号和槽机制处理接收到的数据和其他异步事件,提高了系统的响应能力和实时性。
在测试用例解析方面,主要是根据不同的语法结构,制定不同的解析方案,并执行具体的测试步骤逻辑。所有测试步骤结果实时更新,并在执行完毕每条测试步骤后,将结果显示在界面上,包括所执行的测试步骤、当前步骤执行时间及具体结果等关键信息。
HWwo++ALhIni4rRflY2o5Q==针对判断语句解析,软件会先检查if条件是否成立。如果条件为真,软件则执行if语句块内的相关操作。若条件为假,并且存在elif语句,软件会依次检查每个elif语句的条件。如果这些条件也不满足,软件最终将执行else语句块(如果存在),以处理未满足任何先前条件的情况。if语句逻辑实现流程图如图5所示。
针对循环语句解析,特别是复杂的循环嵌套结构,系统采用递归方法进行处理。解析到以while为起始的测试步骤时,系统会创建一个字典来记录循环逻辑及其嵌套步骤,并将这个字典存储在列表中,以跟踪测试执行流程。这个列表充当堆栈,管理嵌套的测试步骤。当一个循环或条件结构被另一个循环包围时,它会被添加到堆栈中的字典里。软件会评估每个while循环的条件,若条件成立,则执行循环体内包含的所有步骤,包括进一步的嵌套循环或条件语句。循环体的执行通过递归调用实现,允许系统深入每一层嵌套并执行其中的所有步骤。
2 试验验证
测试系统软件布局如图6所示,主要包括:界面配置功能区、操作功能区、日志显示区、测试用例执行显示区等。
2.1 测试用例导入验证
图7为基于某款车型策略文件编制的测试用例Excel文件。
在导入测试用例文件后,界面上可以成功加载出所有的功能、ID和名称,通过复选框可以勾选所需的测试用例。图8为测试用例加载显示界面。
2.2 测试语法解析验证
当自动化测试启动后,所有正在执行的测试步骤会在界面的左侧栏目中显示,而右侧栏目则展示当前的测试条目,绿色背景的测试条目为测试通过,红色背景表示测试失败,黄色表示正在执行,人为跳过或其他测试异常的测试条目也用黄色背景标识,测试过程的界面如图9所示。
在测试执行中,如果识别到alert语句,软件会弹出一个提示框显示必要的信息,图10为alert语句提示框。
图11为判断语句if条件为真的执行过程,可以看出:当if条件满足后,执行了一次内部的read语句,执行完内部read语句后会跳出if判断体,执行assert语句。
图12为循环执行的过程,可以看出当while条件成立,会执行while内部的wait语句,并会持续循环条件判断,直到while条件不成立。
2.3 自动报告生成验证
当自动化测试软件完成测试后,会自动生成PDF格式报告,会将测试结果进行汇总统计,并通过图表的方式进行生成,如图13所示。
测试中所有执行的步骤、时间及结果都会用表格的形式进行生成,当测试用例中有capture语句时,会开始进行数据采集,当执行到stopcapture语句时,会停止数据采集,报告中会将采集的CAN信号通过曲线图的方式插入到相应的位置中,如图14所示。
3 结束语
本文针对目前车辆测试行业内出现的效率低、人为误判等问题,提出了一种自动化测试解决方案,本系统实现了通过Execl文件进行测试用例管理,设计了一套实用性较强的语法结构,可以覆盖广泛的测试用例和场景,同时系统软件也实现了测试用例解析、实时数据采集、自动化测试、自动生成报告等功能,大幅提高了测试的准确性和效率,并且经过测试可以满足实际需求。
参考文献:
[1] 刘瑶秋,季金强,赵苗苗,等. 整车CAN总线数据测试系统的研究[J]. 客车技术与研究,2020,42(6):36-39.
[2] 金虎. 自动化软件测试技术研究[D]. 成都:四川大学,2006.
[3] 张弘. 基于CAN总线的信号采集与处理模块研究[D]. 南京:南京航空航天大学,2007.
[4] 黄胜龙. 汽车发动机ECU的自动化HIL仿真测试平台的研究与实现[D]. 长春:吉林大学,2013.
[5] 黄建军,李宥谋,刘婧,等. 基于Python语言的自动化测试系统的设计与实现[J]. 现代电子技术,2017,40(4):39-43.
(编辑 凌 波)