基于车身电子模块实现自动化软件测试的方法及系统与流程

文档序号:17079913发布日期:2019-03-09 00:08阅读:261来源:国知局
基于车身电子模块实现自动化软件测试的方法及系统与流程

本发明涉及汽车嵌入式软件测试领域,尤其涉及车身电子模块嵌入式软件测试领域,具体是指一种基于车身电子模块实现自动化软件测试的方法及系统。



背景技术:

在汽车电子领域,对项目开发进度影响及风险最大的是项目开发后期提出的需求变更,究其原因,在项目开发过程中,有些问题往往在系统测试阶段,甚至到产品交付以后才被发现,导致需求变更处于后期阶段,最终延误了产品上线节点。因此,发明一种适用于项目前中期的自动化软件集成测试方法格外重要,它既能提升传统集成测试的覆盖率和测试效率,又能使问题尽可能地提前暴露。如此一来,开发人员只需要更加关注产品功能逻辑的合理性,而不是设计实现与测试,对项目管理各方面都有不可预估的提升。



技术实现要素:

本发明的目的是克服了上述现有技术的缺点,提供了一种具备高扩展性、具备兼容性、自动化进行高效测试的基于车身电子模块实现自动化软件测试的方法及系统。

为了实现上述目的,本发明的基于车身电子模块实现自动化软件测试的方法及系统如下:

该基于车身电子模块实现自动化软件测试的方法,所述的系统包括上位机测试模块、下位机测试模块和can通信模块,其主要特点是,所述的方法包括以下步骤:

(1)系统配置车身电子模块的测试用例;

(2)所述的上位机测试模块根据用例的配置发送控制指令改变所述的下位机测试模块的输入缓存状态;

(3)所述的下位机测试模块根据输入状态执行内部功能逻辑,并将输出转化为can信号反馈给上位机测试模块;

(4)所述的上位机测试模块通过输入输出对应关系判断所述的下位机测试模块软件功能逻辑是否正确,如果是,则生成测试报表,结束测试;否则,更新本测试用例的输入状态并继续步骤(1)。

较佳地,所述的步骤(1)中的测试用例包括输入信号、输出信号和can信号。

较佳地,所述的输入信号包括不相关信号rand_in、常规开关信号normal_in、轻触式开关信号touch_in、模拟信号analog_in和频率信号freq_in。

较佳地,所述的输出信号包括不相关输出rand_out、常规输出normal_out、模拟量输出analog_out、频率输出freq_out、跳变输出change_out和蜂鸣器输出buzzer_out。

较佳地,所述的can信号包括无关信号rand_signal、周期信号period_signal和触发信号trigger_signal。

较佳地,所述的输入信号类型配置为{0,1,2,3,4}。

较佳地,所述的输出信号类型配置为{0,1,2,3,4,5}。

较佳地,所述的can信号类型配置为{0,1,2}。

较佳地,所述的步骤(2)具体包括以下步骤:

(2.1)所述的上位机测试模块读取测试用例,遍历所述的测试用例的输入信号、输出信号和can信号,并存入输入缓存in_conf_buffer、输出缓存out_conf_buffer、can缓存can_conf_buffer;

(2.2)所述的上位机测试模块将信号数据根据自定义协议编译为固定格式,发送至下位机测试模块。

较佳地,所述的步骤(3)具体包括以下步骤:

(3.1)所述的下位机测试模块将所述的输入信号解析,并根据数组下标找出对应输入的相关定义;

(3.2)所述的下位机测试模块在校验数据类型匹配后将对应输入状态更新至对应缓存中;

(3.3)所述的下位机测试模块根据输入状态运行内部逻辑处理模块,并将输出状态根据自定义协议编译为固定格式发送至上位机测试模块。

较佳地,所述的步骤(4)具体包括以下步骤:

(4.1)所述的上位机测试模块解析输出信号状态;

(4.2)所述的上位机测试模块判断所述的测试用例是否存在未完成对象,如果是,则更新本测试用例的输入状态,继续步骤(1);否则,继续步骤(4.3)

(4.3)记录测试结果及数据,进入下一条测试用例,继续步骤(1),直至所有测试用例测试完毕,退出测试模式。

该基于上述方法的基于车身电子模块实现自动化软件测试的系统,其主要特点是,所述的系统包括:

上位机测试模块,用于集成测试车身电子模块的核心算法和通信主导;

下位机测试模块,与所述的上位机测试模块相连接,用于测试车身电子模块的测试用例;

can通信模块,与所述的上位机测试模块和下位机测试模块相连接,用于实现与测试对象进行数据交互;

测试程序,所述的测试程序根据配置的测试用例对测试对象内部功能逻辑进行测试,最终生成测试报表,具体进行以下步骤处理:

(1)系统配置车身电子模块的测试用例;

(2)所述的上位机测试模块根据用例的配置发送控制指令改变所述的下位机测试模块的输入缓存状态;

(3)所述的下位机测试模块根据输入状态执行内部功能逻辑,并将输出转化为can信号反馈给上位机测试模块;

(4)所述的上位机测试模块通过输入输出对应关系判断所述的下位机测试模块软件功能逻辑是否正确,如果是,则生成测试报表;否则,

较佳地,所述的步骤(1)中的测试用例包括输入信号、输出信号和can信号。

较佳地,所述的输入信号包括不相关信号rand_in、常规开关信号normal_in、轻触式开关信号touch_in、模拟信号analog_in和频率信号freq_in。

较佳地,所述的输出信号包括不相关输出rand_out、常规输出normal_out、模拟量输出analog_out、频率输出freq_out、跳变输出change_out和蜂鸣器输出buzzer_out。

较佳地,所述的can信号包括无关信号rand_signal、周期信号period_signal和触发信号trigger_signal。

较佳地,所述的输入信号类型配置为{0,1,2,3,4}。

较佳地,所述的输出信号类型配置为{0,1,2,3,4,5}。

较佳地,所述的can信号类型配置为{0,1,2}。

较佳地,所述的步骤(2)具体包括以下步骤:

(2.1)所述的上位机测试模块读取测试用例,遍历所述的测试用例的输入信号、输出信号和can信号,并存入输入缓存in_conf_buffer、输出缓存out_conf_buffer、can缓存can_conf_buffer;

(2.2)所述的上位机测试模块将信号数据根据自定义协议编译为固定格式,发送至下位机测试模块。

较佳地,所述的步骤(3)具体包括以下步骤:

(3.1)所述的下位机测试模块将所述的输入信号解析,并根据数组下标找出对应输入的相关定义;

(3.2)所述的下位机测试模块在校验数据类型匹配后将对应输入状态更新至对应缓存中;

(3.3)所述的下位机测试模块根据输入状态运行内部逻辑处理模块,并将输出状态根据自定义协议编译为固定格式发送至上位机测试模块。

较佳地,所述的步骤(4)具体包括以下步骤:

(4.1)所述的上位机测试模块解析输出信号状态;

(4.2)所述的上位机测试模块判断所述的测试用例是否存在未完成对象,如果是,则更新本测试用例的输入状态,继续步骤(1);否则,继续步骤(4.3)

(4.3)记录测试结果及数据,进入下一条测试用例,继续步骤(1),直至所有测试用例测试完毕,退出测试模式。

采用了本发明的基于车身电子模块实现自动化软件测试的方法及系统,具备高扩展性和兼容性,可自动化进行高效的软件集成测试,既能提升传统集成测试的覆盖率和测试效率,又能使问题尽可能地提前暴露。如此一来,开发人员只需要更加关注产品功能逻辑的合理性,而不是设计实现与测试,对项目管理各方面都有不可预估的提升。

附图说明

图1为本发明的基于车身电子模块实现自动化软件测试的方法的流程图。

图2为本发明的基于车身电子模块实现自动化软件测试的方法及系统的上位机软件主要的uml类图。

图3为本发明的基于车身电子模块实现自动化软件测试的方法及系统的输入输出及can信号关系的映射图。

具体实施方式

为了能够更清楚地描述本发明的技术内容,下面结合具体实施例来进行进一步的描述。

该基于车身电子模块实现自动化软件测试的方法,所述的系统包括上位机测试模块、下位机测试模块和can通信模块,其主要特点是,所述的方法包括以下步骤:

(1)系统配置车身电子模块的测试用例;

(2)所述的上位机测试模块根据用例的配置发送控制指令改变所述的下位机测试模块的输入缓存状态;

(3)所述的下位机测试模块根据输入状态执行内部功能逻辑,并将输出转化为can信号反馈给上位机测试模块;

(4)所述的上位机测试模块通过输入输出对应关系判断所述的下位机测试模块软件功能逻辑是否正确,如果是,则生成测试报表,结束测试;否则,更新本测试用例的输入状态并继续步骤(1)。

作为本发明的优选实施方式,所述的步骤(1)中的测试用例包括输入信号、输出信号和can信号。

作为本发明的优选实施方式,所述的输入信号包括不相关信号rand_in、常规开关信号normal_in、轻触式开关信号touch_in、模拟信号analog_in和频率信号freq_in。

作为本发明的优选实施方式,所述的输出信号包括不相关输出rand_out、常规输出normal_out、模拟量输出analog_out、频率输出freq_out、跳变输出change_out和蜂鸣器输出buzzer_out。

作为本发明的优选实施方式,所述的can信号包括无关信号rand_signal、周期信号period_signal和触发信号trigger_signal。

作为本发明的优选实施方式,所述的输入信号类型配置为{0,1,2,3,4}。

作为本发明的优选实施方式,所述的输出信号类型配置为{0,1,2,3,4,5}。

作为本发明的优选实施方式,所述的can信号类型配置为{0,1,2}。

作为本发明的优选实施方式,所述的步骤(2)具体包括以下步骤:

(2.1)所述的上位机测试模块读取测试用例,遍历所述的测试用例的输入信号、输出信号和can信号,并存入输入缓存in_conf_buffer、输出缓存out_conf_buffer、can缓存can_conf_buffer;

(2.2)所述的上位机测试模块将信号数据根据自定义协议编译为固定格式,发送至下位机测试模块。

较佳地,所述的步骤(3)具体包括以下步骤:

(3.1)所述的下位机测试模块将所述的输入信号解析,并根据数组下标找出对应输入的相关定义;

(3.2)所述的下位机测试模块在校验数据类型匹配后将对应输入状态更新至对应缓存中;

(3.3)所述的下位机测试模块根据输入状态运行内部逻辑处理模块,并将输出状态根据自定义协议编译为固定格式发送至上位机测试模块。

作为本发明的优选实施方式,所述的步骤(4)具体包括以下步骤:

(4.1)所述的上位机测试模块解析输出信号状态;

(4.2)所述的上位机测试模块判断所述的测试用例是否存在未完成对象,如果是,则更新本测试用例的输入状态,继续步骤(1);否则,继续步骤(4.3)

(4.3)记录测试结果及数据,进入下一条测试用例,继续步骤(1),直至所有测试用例测试完毕,退出测试模式。

该基于上述方法的基于车身电子模块实现自动化软件测试的系统,其主要特点是,所述的系统包括:

上位机测试模块,用于集成测试车身电子模块的核心算法和通信主导;

下位机测试模块,与所述的上位机测试模块相连接,用于测试车身电子模块的测试用例;

can通信模块,与所述的上位机测试模块和下位机测试模块相连接,用于实现与测试对象进行数据交互;

测试程序,所述的测试程序根据配置的测试用例对测试对象内部功能逻辑进行测试,最终生成测试报表,具体进行以下步骤处理:

(1)系统配置车身电子模块的测试用例;

(2)所述的上位机测试模块根据用例的配置发送控制指令改变所述的下位机测试模块的输入缓存状态;

(3)所述的下位机测试模块根据输入状态执行内部功能逻辑,并将输出转化为can信号反馈给上位机测试模块;

(4)所述的上位机测试模块通过输入输出对应关系判断所述的下位机测试模块软件功能逻辑是否正确,如果是,则生成测试报表;否则,

作为本发明的优选实施方式,所述的步骤(1)中的测试用例包括输入信号、输出信号和can信号。

作为本发明的优选实施方式,所述的输入信号包括不相关信号rand_in、常规开关信号normal_in、轻触式开关信号touch_in、模拟信号analog_in和频率信号freq_in。

作为本发明的优选实施方式,所述的输出信号包括不相关输出rand_out、常规输出normal_out、模拟量输出analog_out、频率输出freq_out、跳变输出change_out和蜂鸣器输出buzzer_out。

作为本发明的优选实施方式,所述的can信号包括无关信号rand_signal、周期信号period_signal和触发信号trigger_signal。

作为本发明的优选实施方式,所述的输入信号类型配置为{0,1,2,3,4}。

作为本发明的优选实施方式,所述的输出信号类型配置为{0,1,2,3,4,5}。

作为本发明的优选实施方式,所述的can信号类型配置为{0,1,2}。

作为本发明的优选实施方式,所述的步骤(2)具体包括以下步骤:

(2.1)所述的上位机测试模块读取测试用例,遍历所述的测试用例的输入信号、输出信号和can信号,并存入输入缓存in_conf_buffer、输出缓存out_conf_buffer、can缓存can_conf_buffer;

(2.2)所述的上位机测试模块将信号数据根据自定义协议编译为固定格式,发送至下位机测试模块。

作为本发明的优选实施方式,所述的步骤(3)具体包括以下步骤:

(3.1)所述的下位机测试模块将所述的输入信号解析,并根据数组下标找出对应输入的相关定义;

(3.2)所述的下位机测试模块在校验数据类型匹配后将对应输入状态更新至对应缓存中;

(3.3)所述的下位机测试模块根据输入状态运行内部逻辑处理模块,并将输出状态根据自定义协议编译为固定格式发送至上位机测试模块。

作为本发明的优选实施方式,所述的步骤(4)具体包括以下步骤:

(4.1)所述的上位机测试模块解析输出信号状态;

(4.2)所述的上位机测试模块判断所述的测试用例是否存在未完成对象,如果是,则更新本测试用例的输入状态,继续步骤(1);否则,继续步骤(4.3)

(4.3)记录测试结果及数据,进入下一条测试用例,继续步骤(1),直至所有测试用例测试完毕,退出测试模式

在本发明的具体实施方式中,本发明旨在提供针对车身电子模块的自动化测试的方法。上位机根据每一条用例的配置发送控制指令改变下位机的输入缓存状态,下位机软件根据不断变化的输入状态执行内部功能逻辑,并将所有的输出转化为can信号反馈给上位机,上位机通过输入输出对应关系判断当前下位机软件功能逻辑是否正确,最终所有用例测试完毕后生成测试报表。

为了实现上述目的,方案中的测试用例是这样配置的:

一个测试用例中包含若干输入信号,输出信号,can信号。

输入信号分为不相关信号rand_in,常规开关信号normal_in,轻触式(自复位)开关信号touch_in,模拟信号analog_in,频率信号freq_in。

输出信号分为不相关输出rand_out,常规输出normal_out,模拟量输出analog_out,频率输出freq_out,跳变输出change_out,蜂鸣器输出buzzer_out。can信号分为无关信号rand_signal,周期信号period_signal,触发信号trigger_signal。

对以上信号配置说明:输入信号类型在具体配置项中分为{0,1,2,3,4},分别对应上述各输入信号类型,如不相关信号对应配置为0;同理,输出信号类型在具体配置项中分为{0,1,2,3,4,5},can信号类型在具体配置项中分为{0,1,2}。所有信号量若为无关项,则填写0。

测试用例配置完成后,即可开始测试。上位机读取测试用例后,进行一系列处理后对下位机进行控制,并根据反馈信息判断该用例测试结果。

为了实现上述目的,上位机软件是这样工作的:

上位机在逐行读取每一条测试用例过程中,遍历每一个输入信号、输出信号、can信号,存到输入缓存in_conf_buffer[][],输出缓存out_conf_buffer[][],can缓存can_conf_buffer[]中。对于in_conf_buffer[]中的每一个数组成员,调用input_ctrl_dealing()函数处理该信号量的发送状态,存储到in_send_buffer[]中。其中input_ctrl_dealing()函数涉及到输入量是否需要随机变化的处理;频率信号的占空比处理;模拟信号值的计算,轻触式开关的按键有效性处理等。之后通过can_msg_dealing()函数将需要发送的信号数据根据自定义协议编译为固定格式后发送。

下位机软件接收到符合协议的固定格式数据后,通过can_inmsg_parsing()函数将每一个输入信号解析出来,并存储到in_parsed_buffer[]中,根据该数组下标找到对应输入的相关定义。校验数据类型匹配后,将对应输入状态更新到对应缓存中。之后下位机根据输入状态自动运行内部逻辑处理模块,并更新输出状态缓存out_status_buffer[]。每个while大循环结尾执行out_can_feedback()函数将每一个out_status_buffer[]中的状态根据自定义协议编译为固定格式发送到上位机。

上位机通过can_outmsg_parsing()解析输出信号状态后存入out_parsed_buffer[],接着调用case_judge()函数判断该用例逻辑是否正确。其中涉及到各输入输出信号的遍历校验以及当前输入状态缓存与输出状态缓存的版本号校验。若该用例存在未完成对象,如频率信号,则继续更新输入状态,进行下一个测试循环。若该用例测试已完成,则记录测试结果及数据,进入下一条测试用例,直到所有用例测试完毕并退出测试模式。

上述方法中上位机软件设计可通过visualstudio的mfc或其他界面开发ide完成;下位机测试模块中各输入输出信号的映射需根据各项目的具体定义修改,单片机型号不限;can通信可根据实际现有设备建立底层开发库,以适配上位机开发环境。

为了能够更清楚地理解本发明的技术内容,举一条测试用例的测试循环实例。上位机软件以mfcc++编程实现,can通信工具采用valuecan,下位机单片机采用16位富士通mb96f386rsb。

某条测试用例中包含以下信号量:

in1:左转向开关,类型3,有效值为24(v);in2:点火锁ign开关,类型1,有效值为1;in3:车速信号,类型4,频率值为15hz;in4:门锁状态信号,类型1,有效值为1;in5:后视镜加热开关,类型2,有效值为1;其他输入项为无关项。

out1:左转向灯,类型3,频率1.5hz,out2:门锁输出,类型4,跳变时间300ms;out3:后视镜加热输出,类型1,有效值为1;蜂鸣器输出,类型5,声音类型1,其他均为无关项。

以下为一个测试用例中的单一时序:

上位机读取该条用例并经过处理后,左转向开关信号状态in_send_buffer[0][0]赋类型3,in_send_buffer[0][1]赋值24,代表该信号为模拟信号,电压值为24v;点火锁ign开关in_send_buffer[1][0]赋类型1,in_send_buffer[1][1]赋值1,代表该信号为常规开关,有效值为高电平;车速信号in_send_buffer[2][0]赋类型4,in_send_buffer[2][1]赋值150,代表该信号为频率信号,频率值为15hz;以此类推。can数据的编译及解析则根据自定义协议通信即可。

下位机接收到上位机can控制信号后,根据in_send_buffer[i][0]的类型执行switch函数,跳转到对应输入buffer寻址函数中,如左转向开关信号类型通过读取in_send_buffer[0][0]的值得到类型为3,对应寻址函数analog_in_update(charindex),找到编号index为0的模拟量信号——该信号已在下位机软件头文件中定义,用于映射上位机信号编号与下位机开关量定义的对应关系。类似地,常规开关为类型1,对应寻址函数common_in_update(charindex),

轻触式开关信号类型为2,对应寻址函数touch_in_update(charindex);频率信号类型为4,对应寻址函数freq_in_update(charindex);找到对应类型的寻址函数后,根据in_send_buffer[i][1]中的值更新对应输入信号的值。当前循环中功能逻辑模块运行完毕后,按照can协议将输出信号状态返回上位机。

上位机判断用例正确的标准:判断所有输入输出相关项的信号是否与用例中的配置相符。因此,对于下位机返回的输出信号数据,须遍历输出相关项。其中,out_conf_buffer[i][0]的值决定了该输出项的类型,out_conf_buffer[i][1]中的值决定了该输出项需要测试的循环时长,该时长决定了单用例需由多少个测试循环时序组成。由于一个用例中存在一个或多个输出项,因此需要以最长时长为测试标准,确定每一个输出项均符合测试用例正确判断标准。

out_conf_buffer[i][2]中的值决定了该类型的参数值,常规信号记录了有效电平,频率信号记录了频率,跳变信号记录了多少时间后跳变,模拟量信号记录了参考值,蜂鸣器输出记录了声音类型。

对于常规输出信号,只需持续监测该信号是否保持有效状态即可;对于频率输出信号,需要根据多个时序测出输出信号的频率,根据该输出项的参数值决定一个范围阈值判定是否正确;对于模拟量输出信号,同样根据该输出项的参数值决定一个范围阈值判定是否正确;对于跳变信号,需要根据多个时序,记录信号量跳变的时间节点,并与该信号的参数值做范围比对,判断是否在合理的跳变时间内;对于蜂鸣器输出,只需要对比声音类型参数是否与下位机反馈的声音类型匹配。

当该用例的所有时序运行完毕后,即可判断该测试用例是否完全正确。在经过数据处理服务将测试数据存储到数据库并发布到上位机界面后,即可进入下一条测试用例,直到该项目所有测试用例执行完毕。

采用了本发明的基于车身电子模块实现自动化软件测试的方法及系统,具备高扩展性和兼容性,可自动化进行高效的软件集成测试,既能提升传统集成测试的覆盖率和测试效率,又能使问题尽可能地提前暴露。如此一来,开发人员只需要更加关注产品功能逻辑的合理性,而不是设计实现与测试,对项目管理各方面都有不可预估的提升。

在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1