本发明涉及汽车软件集成测试领域,特别涉及一种基于can通信接口植入模拟的自动化集成测试方法。
背景技术:
::1、随着汽车电子技术的发展,车载智能化功能已经渗透到多个方面,汽车上所用的电控单元也不断增多,这使得整车网络环境更加复杂,一旦某个节点的性能出现异常,可能会对整个车辆系统的稳定性带来严重影响,因此在开发过程中,严格且全面的can一致性测试是确保车辆网络性能的关键步骤。通过对各个节点和通信系统的全面检测,能够及时发现并纠正潜在的通信错误,从而提升整个车辆网络的运行效率和稳定性,更能在很大程度上增强车辆的智能化水平,减少因通信问题导致的功能故障或安全风险。2、dbc(database can)是一种由vector公司定义的一种网络通信文件格式,是can总线数据库文件。can总线中传输的二进制帧信号不利于分析报文的具体内容,dbc文件最基础的作用就是帮助解释二进制的帧信号,以便分析报文信息。每个报文都有唯一的id,并且包含一个或多个信号,用于表示数据。每个信号都有一些属性,例如名称、起始位、长度,因素值等等,通过解析此文件拿到报文和信号的信息,将文件转化为程序可识别的代码。3、当can信号量大,传统的手工测试中测试人员需要手动发送和接收can数据,检查数据的正确性,而且每次can table导入都需要人工手动确认can 报文的发送和接收情况,测试速度太慢,也容易错漏。技术实现思路1、本发明的目的是克服现有技术缺陷,提供一种基于can通信接口植入模拟的自动化集成测试方法,通过使用python自定义的方式实现测试用例,测试报告以及测试植入代码等的自动生成,通过实现上位机端程序,跟植入的接口代码通信,达到can报文的收发和比对测试结果,测试过程无需人工干预,自动输出测试报告,为项目组节省测试人力和时间。2、本发明的目的是这样实现的:一种基于can通信接口植入模拟的自动化集成测试方法,其特征在于,包括pc端,硬件驱动pcan,硬件驱动jlink和车机mcu;所述pc端包括上位机和软件freemaster,测试方法包括以下步骤:3、1)利用dbc文件特有的格式,通过python的open方式读取文件并进行解析,通过上位机的程序实现dbc文件的解析;4、2)通过调用开源库python-can的api实现一个工具类can_tool,通过上位机得程序实现can报文的收发功能;5、3)使用软件freemaster对车机mcu的elf文件中的测试变量进行读写,提供作为服务端的rpc通信接口,上位机通过实现客户端的程序,与服务端进行通信,完成上位机程序对车机中内存地址的读写;6、4)通过上位机中自动生成的测试代码文件程序,生成测试代码;将测试代码植入到mcu的周期性task中,替代原有的应用软件层asw的接口调用;7、5)在上位机中对实际操作类进行封装,用于调用can和freemaster程序;8、6)运行上位机程序中的实际操作类,程序启动开始测试,测试结束后自动生成测试用例,并自动输出测试结果和测试日志。9、作为本发明的进一步限定,所述步骤1)具体包括:10、1-1)封装两个属性类message和signal,所述message类包含报文名称,报文id、报文长度、网络节点、循环时间和发送类型;所述signal类包含信号名称、起始位置、信号长度、排序方式、信号类型、因素值、偏移量、最大数和最小数;11、1-2)导入dbc源文件,循环读取文件内容,根据关键字进行正则匹配筛选,解析出报文信息装入对应的message和signal中。12、作为本发明的进一步限定,所述步骤2)具体包括:13、2-1)初始化can通道的函数,设置参数包括设备名称、通道和波特率,实例化一条can_bus总线;14、2-2)发送can消息函数:用can.message()类创建一条message,can_bus对象调用send函数将创建的message实例发送到总线;15、2-3)接收can消息函数:使用notifier和listener,notifier对象用作总线的消息分发器;通过notifier创建一个线程来从总线读取消息并将它们分发给listeners;16、2-4)消息过滤函数:允许对传入的消息进行过滤,使用set_filters()设置过滤报文,对bus接收到的所有报文进行过滤,返回过滤器匹配的消息;17、2-5)记录和回放can消息:记录can总线上的通信,并将其保存到日志文件中;根据日志文件进行调试、分析通信问题或者测试;18、2-6)关闭can通道函数,释放资源。19、作为本发明的进一步限定,所述步骤3)具体包括:采用rpc方案通过实现客户端代理类freemaster_cal,自动控制软件freemaster来标定变量;20、3-1)打开freemaster应用:openproject(project);21、3-2)启动freemaster连接:startcomm(name);22、3-3)读取内存函数:readmemory(addr,size,data,retmsg);23、3-4)写入内存函数:writememory(addr,size,data,retmsg);24、3-5)停止freemaster连接:stopcomm()。25、作为本发明的进一步限定,步骤4)中所述通过上位机中自动生成的测试代码文件程序,生成测试代码具体包括:通过上位机程序对车机mcu的源代码整体遍历,根据变量命名规则再结合dbc文件中的信息,从代码中筛选出符合要求的rte层的读变量rte_read和写变量rte_write,生成测试文件代码test.c以及上位机程序会用到的读变量read_variable.txt文件和写变量write_variable.txt文件。26、作为本发明的进一步限定,所述步骤5)具体包括:初始化工具类;创建读线程函数:用于can报文数据发送,从rte_read接口buffer读取数据和测试数据比对结果;创建写线程函数:rte_write接口写入数据,从can报文获取数据比对结果。27、作为本发明的进一步限定,步骤6)中所述测试用例采用等价划分法,边界值法的方法设定,根据测试的信号的长度幂运算,信号的长度决定中间值的个数多少;所述自动输出测试结果:根据测试结果动态写入表格后输出结果,并在测试的过程中记录测试日志用于问题追踪。28、本发明采用以上技术方案,与现有技术相比,有益效果为:1)降低测试成本:通过使用此方法降低了对实际硬件设备和外部服务的依赖,从而减少了测试环境搭建的成本;模拟外部接口和依赖的行为可以显著减少对昂贵或难以配置的测试资源的需求;同时还可以有效减少测试人员的数量,从而降低了成本。29、2)提高测试效率:相较于传统手动测试,本发明方法能够快速、准确地执行测试用例,可以在无人看管的情况下运行,在流程结束时查看结果,大大提高测试效率;同时,还可以自动化执行重复性测试,从而节省测试人员的时间和精力。30、3)提升测试覆盖率:本发明方法可以在短时间内执行大量的测试用例,并可以检测出隐藏在代码中的潜在错误,从而提升测试覆盖率;此外,还可以进行回归测试,确保新的代码变更不会影响系统的稳定性。31、4)易于维护和扩展:在持续集成和持续交付(ci/cd)环境中,可以很容易地更新和维护;随着系统功能的扩展和修改,可以通过自定义脚本或插件等方式,确保测试用例始终与最新的系统需求保持一致;这种灵活性对于快速迭代和频繁更新的软件项目尤为重要。32、5)提高代码质量:开发人员可以更早地发现和修复代码中的缺陷,减少了集成后期发现问题的风险;通过在开发初期进行详尽的测试,可以显著提高代码的质量和稳定性,降低了项目的总体缺陷率。当前第1页12当前第1页12
技术特征:1.一种基于can通信接口植入模拟的自动化集成测试方法,其特征在于,包括pc端,硬件驱动pcan,硬件驱动jlink和车机mcu;所述pc端包括上位机和软件freemaster,测试方法包括以下步骤:
2.根据权利要求1所述的一种基于can通信接口植入模拟的自动化集成测试方法,其特征在于,所述步骤1)具体包括:
3.根据权利要求1所述的一种基于can通信接口植入模拟的自动化集成测试方法,其特征在于,所述步骤2)具体包括:
4.根据权利要求1所述的一种基于can通信接口植入模拟的自动化集成测试方法,其特征在于,所述步骤3)具体包括:采用rpc方案通过实现客户端代理类freemaster_cal,自动控制软件freemaster来标定变量;
5.根据权利要求1所述的一种基于can通信接口植入模拟的自动化集成测试方法,其特征在于,步骤4)中所述通过上位机中自动生成的测试代码文件程序,生成测试代码具体包括:通过上位机程序对车机mcu的源代码整体遍历,根据变量命名规则再结合dbc文件中的信息,从代码中筛选出符合要求的rte层的读变量rte_read和写变量rte_write,生成测试文件代码test.c以及上位机程序会用到的读变量read_variable.txt文件和写变量write_variable.txt文件。
6.根据权利要求1所述的一种基于can通信接口植入模拟的自动化集成测试方法,其特征在于,所述步骤5)具体包括:初始化工具类;创建读线程函数:用于can报文数据发送,从rte_read接口buffer读取数据和测试数据比对结果;创建写线程函数:rte_write接口写入数据,从can报文获取数据比对结果。
7.根据权利要求1所述的一种基于can通信接口植入模拟的自动化集成测试方法,其特征在于,根据权利要求1所述的一种基于can通信接口植入模拟的自动化集成测试方法,其特征在于,步骤6)中所述测试用例采用等价划分法,边界值法的方法设定,根据测试的信号的长度幂运算,信号的长度决定中间值的个数多少;所述自动输出测试结果:根据测试结果动态写入表格后输出结果,并在测试的过程中记录测试日志用于问题追踪。
技术总结本发明公开了一种基于CAN通信接口植入模拟的自动化集成测试方法,1)利用DBC文件特有的格式,通过python的open方式读取文件并进行解析,通过上位机的程序实现DBC文件的解析;2)通过调用开源库python‑can的API实现一个工具类Can_Tool,通过上位机的程序实现CAN报文的收发功能;3)使用软件FreeMaster对车机MCU的ELF文件中的测试变量进行读写,提供作为服务端的RPC通信接口;4)通过上位机中自动生成的测试代码文件程序,生成测试代码;5)在上位机中对实际操作类进行封装;6)运行上位机程序中的实际操作类,程序启动开始测试,自动输出测试结果和测试日志。本发明通过使用python自定义的方式实现测试用例,测试报告以及测试植入代码等的自动生成,提高测试效率。
技术研发人员:胡静,赵宣,金庭瑶
受保护的技术使用者:深圳市航盛电子股份有限公司
技术研发日:技术公布日:2024/9/23