CN105224447A - 发动机控制器软件诊断模块测试方法及测试系统 - Google Patents
发动机控制器软件诊断模块测试方法及测试系统 Download PDFInfo
- Publication number
- CN105224447A CN105224447A CN201410257766.8A CN201410257766A CN105224447A CN 105224447 A CN105224447 A CN 105224447A CN 201410257766 A CN201410257766 A CN 201410257766A CN 105224447 A CN105224447 A CN 105224447A
- Authority
- CN
- China
- Prior art keywords
- test
- engine controller
- template
- module
- diagnostic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明公开了一种基于NI公司USB-CAN网络通信设备和汽车诊断指令集工具的发动机控制器软件诊断模块测试方法,包括:设计基于Excel的诊断软件测试模板文件,根据测试模板编写符合测试模板格式的诊断软件测试用例,获取用户输入的测试模板文件,并解析用户指定的其中测试模板,生成用于描述测试模板测试用例和控制测试过程的数据结构,控制测试流程,模拟工况解析,生成诊断通讯数据帧,通讯数据帧收发,判断测试结果,实现与发动机控制器工况环境交互,测试报告输出和日志文件输出。本发明还公开了一种基于NI公司USB-CAN网络通信设备和汽车诊断指令集工具的发动机控制器软件诊断模块测试系统。本发明的测试方法能提高发动机控制器软件诊断模块测试工作的测试效率和测试质量。
Description
技术领域
本发明涉及汽车电子领域,特别是涉及一种通过NI公司(NationalInstruments美国国家仪器公司)的USB-CAN网络通信设备,结合NI公司的汽车诊断指令集工具,在普通工控机上进行发动机控制器软件诊断模块测试的方法。本发明还涉及一种采用所述测试方法形成的发动机控制器软件诊断模块测试系统。
背景技术
目前通常以人工编辑通信数据帧和手工控制诊断数据帧收发的方式,对各种版本的发动机控制器软件的诊断模块进行测试。
这种测试方式需要使用大量的人力资源,而且测试过程也非常的复杂。一套发动机控制器软件的诊断模块测试用例会包含至少几十条测试项。以传统的人工方式输入诊断数据帧存在以下几个弊端:
1、测试的工作效率极其低下,有经验的工程师测试一套发动机控制器软件诊断模块,需要耗费1至2个小时的工作量;
2、测试过程中人工输入过多,非常容易误操作;
3、对于安全访问这样的诊断服务,需要根据种子计算密钥,然后获得诊断请求数据帧,用户无法在诊断通信协议规定的、非常短的时间内获得密钥,因此会导致需要安全访问的测试用例无法执行,或者失去测试的意义;
4、判断测试结果的步骤十分复杂,需用从发动机控制器返回的诊断响应数据帧中选取相应的字节或位,然后进行换算,判断过程冗长而且容易出错;
5、由于上述弊端4,对于测试中的异常结果无法及时响应,无法判断后续测试用例是否有执行的必要,往往要等到测试结束后才能发现测试的过程中发生的异常,导致整个测试结果失去意义。
发明内容
本发明要解决的技术问题是提供一种能提高发动机控制器软件诊断模块测试工作的测试效率和测试质量的发动机控制器软件诊断模块测试方法。本发明还提供了一种采用所述测试方法形成的发动机控制器软件诊断模块测试系统。
为解决上述技术问题,本发明提供的基于NI公司USB-CAN网络通信设备和汽车诊断指令集工具的发动机控制器软件诊断模块测试方法,其特征是,包括以下步骤:
1、设计基于Excel的诊断软件测试模板文件;
A、定义测试模板至少包括以下字段:
a1、平台,发动机控制器系统平台;
a2、项目号,发动机控制器系统项目号;
a3、软件名,发动机控制器软件名称;
所述平台、项目号和软件名用于显示以及在测试报告中注明,也能用于校验用户是否正确选择了与发动机控制器软件所匹配的测试模板;
a4、诊断类型,指定诊断通信的方式“CAN”或“K”;
a5、请求ID,十六进制表示的诊断服务请求方数据链路层标识符;
a6、应答ID,十六进制表示的诊断服务应答方数据链路层标识符;
a7、波特率,十进制表示的数据通信速率,单位为bps;
a8、帧格式,CAN网络通信数据帧的格式,能采用“标准帧”、“远程帧”或“扩展帧”;
B、定义测试用例至少包括以下字段:
b1、测试序号,每个测试用例都有一个唯一的测试序号作为索引的主键,以字母“I”加自然数组成;
b2、服务请求,诊断服务的应用层请求报文,为十六进制字节组成的字符串,每两个字节之间以半角英文逗号“,”分隔;
b3、描述信息,用于提示工程师该测试项诊断服务的意义,除了提示作用以外,在实际测试和程序运行过程中没有其它意义;
b4、测试条件,已确定的发动机控制器测试工况的枚举,系统软件需要在发送该测试项的诊断服务请求之前,对通过发动机控制器测试工况设置接口,按“测试条件”中列明的内容,对发动机控制器测试工况进行设置;
b5、预期应答,发动机控制器应该对诊断服务请求应答的应用层报文,为十六进制字节组成的字符串,每两个字节之间以半角英文逗号“,”分隔;
b6、判断方式,测试结果的判断方式采用枚举,有“不需判断”、“相等”、“范围”、“频率”共4种;
b6.1、对于要求判断相等的,要求物理数值等于目标数值;
b6.2、对于要求是否在某范围内,要求物理数值在目标数值所要求的范围内;
b6.3、对于频率信号,需要检测物理数值是否翻转了相应的频率,即目标数值。
b7、物理数值,测试用例的“数据域”及其换算方法;
b8、目标数值,根据不同的“判断方式”所定义的比较目标值;
b9、出错处理,当测试用例的测试不符合期望,或者测试过程中发生异常时,跳转到下一条执行的测试用例的“测试序号”索引,或者以“break”关键字表示中止当前测试;
2、根据测试模板编写符合测试模板格式的诊断软件测试用例;
3、根据用户指定的测试模板文件和模板名称,解析测试模板文件中的测试模板,生成用于描述测试模板项测试用例和控制整个测试过程的数据结构;
4、控制测试流程,从测试模板文件中的首个测试项开始,测试通过则执行模板中下一行测试项、测试不通过则跳转至“出错处理”列所指定的测试用例或“BREAK”中断,直至执行完模板中的最后一个测试项或因指向关键字“BREAK”而终止;
5、模拟工况解析,获取测试前工况的描述信息,通过与测试环境接口的数据交互,设置模拟测试环境满足当前测试项中定义的“测试条件”;
生成诊断通讯数据帧:根据测试模板中的“诊断类型”、“请求ID”、“响应ID”、“波特率”、“帧格式”的描述,结合ISO14230或ISO15765定义的诊断通讯规范,将测试模板中“服务请求”和“预期应答”列的内容解析并生成符合上述诊断通讯协议的数据帧格式;
7、通讯数据帧收发,通过驱动指定的硬件设备,根据特定的诊断规范将诊断请求数据帧发送至发动机控制器,并接收发动机控制器返回的诊断响应数据帧;
8、判断测试结果,验证接收到发动机控制器的诊断响应数据帧、诊断响应数据帧是否符合诊断协议的规范、诊断响应数据帧中的关键字节是否符合预设的期望数值、根据“判断方式”列的定义,对比“物理数值”列的描述,是否符合“目标数值”列的期望数值;
9、实现与发动机控制器工况环境交互,根据“测试条件”列的内容设置发动机控制器的虚拟工况,根据“物理数值”列中可能包含的发动机控制器内部变量名,实现对相关变量值的获取;
10、测试报告输出,在测试结束后输出能够体现测试过程和测试结果的测试报告;
11、日志文件输出,记录每一步测试步骤中和发动机控制器的诊断通信数据帧。
一种基于NI公司USB-CAN网络通信设备和汽车诊断指令集工具的发动机控制器软件诊断模块测试系统,包括:
测试环境开启模块,依次执行发动机控制器测试环境上电、开启CCP或INCA、调用主测试程序、初始化外围硬件4个步骤,初始化测试环境和发动机控制器内部变量获取通道;
测试模板文件解析模块,用于测试模板文件的解析,测试模板文件中测试项的获取、测试用例成员的获取,将多个不同内容的测试模板,通过同一个测试模板文件解析函数,转换为系统运行周期内通用的标准.NET类的实例;生成测试用例的时候,每获得Excel中一个有效数据行,就生成一个测试项实例,
测试流程控制模块,用于管理整个测试过程;
测试用例执行模块,从最初测试项的输入到最终测试结果输出通过组合调用其他模块来实现测试用例的执行的功能;
工况分析设置模块,通过解析.NET测试用例实例的成员测试条件字符串的值获取工况,并调用发动机控制器工况设置过程;
如果不需要设置工况,则跳过LabVIEW中设置工况的调用步骤。
诊断协议解析模块,用于解析诊断通信协议;
诊断数据通信模块,CAN诊断模式下通过调用NICAN通信设备底层VI;K线诊断模式下通过RS232-K-Line通信设备实现。
测试结果分析模块,用于判断测试用例的执行结果;
日志文件记录模块,保存日志文件;
测试报告输出模块,用于在测试终了时,输出一个反映测试情况的测试报告;
测试环境关闭模块,负责在测试完成后关闭发动机控制器工况和电源;
辅助函数模块,不属于任何一个具体的功能模块,但是包含每个模块都会调用的底层功能的函数,包括数据类型的转换、字符串解析、数组操作、数学运算和逻辑运算。
本发明的方法能减少测试过程中的人工操作,杜绝人为因素引起的测试失效,提高测试效率,大幅度缩减测试所耗费的工时及人力成本;通过软件调用动态链接库的方式,实现测试过程中必需使用的安全访问算法,迅速判断每一步测试的测试结果,及时响应测试中发生的各种异常,自动决策每一步测试用例的意义,对无意义的测试用例进行终止或跳转操作。
附图说明
图1是本发明所述方法的流程示意图。
图2是本发明所述系统的结构示意图。
具体实施方式
本发明的方法利用NI公司的VeriStand+LabVIEW软件开发环境,基于NI公司USB-CAN网络通信设备和汽车诊断指令集工具的发动机控制器软件诊断模块测试方法一实施例,包括以下步骤:
1、设计基于Excel的诊断软件测试模板文件;
测试模板文件是一个.xls格式的文件,其中包含若干表单,每个表单对应一套发动机控制器软件诊断模块的测试用例,称为1个“测试模板”。1个“测试模板文件”中可包含多个表单,即包含多个“测试模板”。通常用1个“测试模板文件名”和1个“表单名”的组合定位到1个唯一的“测试模板”。
每个“测试模板”包含两个独立的表格区域,分别是“测试模板定义表”和“测试用例定义表”。前者只有1行,对整个测试用例都涉及到的一些全局参数进行了定义;而后者通常由多行组成,每一行称为一个“测试用例”,“测试用例”是测试过程中具体执行内容。
A、定义测试模板至少包括以下字段:
a1、平台,发动机控制器系统平台;(比如:ME788)
a2、项目号,发动机控制器系统项目号;(比如:788)
a3、软件名,发动机控制器软件名称;
上述平台、项目号和软件名用于显示以及在测试报告中注明,也能用于校验用户是否正确选择了与发动机控制器软件所匹配的测试模板;
a4、诊断类型,指定诊断通信的方式“CAN”或“K”;
a5、请求ID,十六进制表示的诊断服务请求方(本发明测试系统)数据链路层标识符;(比如:0x7E0)
a6、应答ID,十六进制表示的诊断服务应答方(发动机控制器)数据链路层标识符;(比如:0x7E8)
a7、波特率,十进制表示的数据通信速率,单位为bps;
a8、帧格式,CAN网络通信数据帧的格式,能采用“标准帧”、“远程帧”或“扩展帧”;
B、定义测试用例至少包括以下字段:
b1、测试序号,每个测试用例都有一个唯一的测试序号作为索引的主键,以字母“I”加自然数组成;(比如:I1)
b2、服务请求,诊断服务的应用层请求报文,为十六进制字节组成的字符串,每两个字节之间以半角英文逗号“,”分隔;
如果需要用到某种特殊算法(例如根据随机种子获取安全访问密钥的算法)而无法事先给出字节的情形,可通过约定格式的、用于指示算法函数名及参数的字符串形式表示,如“27,02,SA1(B2))”。其中“SA1”是获取密钥的算法名,映射到转换算法动态链接库中调用的函数名;“B2”是传入转换算法函数的参数,B2即测试项“I2”执行完毕后中存储的“字节域”。
算法SA1(B2)的执行结果是一个BYTE型一维数组,将这个结果数组替换掉“服务请求”字符串中的“SA1(B2)”部分即为实际要发送的诊断服务请求。
例如原“服务请求”内容为“27,02,SA1(B2)”,测试项“I2”中存储的数据域为数组“01,02,04,08”,执行SA1转换算法时传入的参数即为该数组,执行SA1后得到的结果为“08,04,02,01”,那么最终的“服务请求”的内容被替换为“27,02,08,04,02,01”;
若此条测试项不需要发送诊断服务,“服务请求”可以为空。
b3、描述信息,用于提示工程师该测试项诊断服务的意义,除了提示作用以外,在实际测试和程序运行过程中没有其它意义;
b4、测试条件,已确定的发动机控制器测试工况的枚举,系统软件需要在发送该测试项的诊断服务请求之前,对通过发动机控制器测试工况设置接口,按“测试条件”中列明的内容,对发动机控制器测试工况进行设置;
只需保证正确获取了当前测试项的“测试条件”,并要求发动机控制器测试工况接口进行工况设置,而不需要关注工况是如何设置的,以及工况是否设置成功。
目前测试模板中可能存在的工况有“延迟10秒”、“发动机停机”、“怠速工况”、“加速踏板踩到底”、“松开加速踏板”、“踩住刹车踏板”、“松开刹车踏板”共计7种;
b5、预期应答,发动机控制器应该对诊断服务请求应答的应用层报文,为十六进制字节组成的字符串,每两个字节之间以半角英文逗号“,”分隔;
如果“预期应答”中的某个位置上的某个字节注明了具体的数值,那么诊断应答报文在相应位置上的字节值必须和该数值相等,如“50,03”。
如果“预期应答”中的某个位置上的某个字节未注明具体的数值,而是以“XX”代替,这种情况含有两层意思,1、以“XX”形式出现的字节,可以不与诊断应答报文相应位置上的字节值相等;2、以“XX”形式出现的字节在诊断应答报文相应位置上的字节需要被存储起来,可能会被另一个(或当前这个)测试用例所用到。
例如“67,01,XX,XX,XX,XX”,假如实际收到的诊断应答报文是“67,01,01,02,04,08”。那么实际诊断应答报文中相对位置上的字节“01,02,04,08”被储存起来,作为当前测试用例的“字节域”;在判断诊断应答是否符合预期应答时,只需要判断“预期应答”中注明的“67,01”位置上的字节是否相等,而忽略后4个字节的值;
b6、判断方式,测试结果的判断方式采用枚举,有“不需判断”、“相等”、“范围”、“频率”共4种;
b6.1、对于要求判断相等的,要求物理数值等于目标数值;
b6.2、对于要求是否在某范围内,要求物理数值在目标数值所要求的范围内;
b6.3、对于频率信号,需要检测物理数值是否翻转了相应的频率,即目标数值。
b6.4、不需判断仅仅指不需要对当前测试产生的“数据域”进行判断,诊断通信数据帧是否与诊断协议相符合,仍然是需要判断的。即每条测试用例结果的判断,需建立在本次诊断请求得到发动机控制器肯定应答的基础上,根据判断法则进行处理。若发动机控制器在诊断通信协议规定的时间内没有反馈,或给出了否定应答,则测试用例测试不通过。
b7、物理数值,测试用例的“数据域”及其换算方式;
该换算方式可能包含数学运算,如“B15=A15*0.06836”;
也可能包含逻辑(位)运算,如“B14=A14&0x0000”;
或者包含ECU内部变量名称,如“B46=B_mil”,在这种情况下,需要通过发动机控制器内部变量值获取接口获取相关变量的值,用以后续的判断;
b8、目标数值,根据不同的“判断方式”所定义的比较目标值;
判断方式为“相等”,以半角英文逗号“,”分隔的BYTE型数组字符串,如“01,02,03,04,05”;或十六进制数值字符串,如“0x0000”;
判断方式为“范围”,以半角英文括号定义的十进制下限值和十进制上限值,如“(11.8,13)”;
判断方式为“频率”,以十进制表示的,在一定时间内数字信号1的翻转次数,如“5”;
b9、出错处理,当测试用例的测试不符合期望,或者测试过程中发生异常时,跳转到下一条执行的测试用例的“测试序号”索引,或者以“break”关键字表示中止当前测试;
2、根据测试模板编写符合测试模板格式的诊断软件测试用例;
在空白测试模板文件中的测试模板表中,填写用于整体描述测试任务的平台、项目号、软件名、诊断类型、请求ID、应答ID、波特率、帧格式各字段;
并且在测试项表中以增加行的方式添加测试项,依次填写每个测试项的测试序号、服务请求、描述信息、测试条件、预期应答、判断方式、物理数值、目标数值、出错处理各字段;
3、解析测试模板文件,生成用于描述测试模板各项测试用例和控制整个测试过程的数据结构;
所述解析是指动态链接库中的“测试模板解析函数”,将.xls格式的测试模板文件中的内容,通过逐个提取每个单元格地址和其中的字符串内容,组成动态链接库中描述测试模板的数据结构类的实例。包括测试模板实例、测试模板实例中包含的测试项实例数组,并通过测试项实例数组中每个元素各自的属性所确定的测试项之间的执行顺序和跳转逻辑关系(即控制测试过程的数据结构);
4、控制测试流程,从测试模板中的首个测试项开始,判断每一条测试用例的测试结果,测试通过则执行模板中下一行测试项、测试不通过则跳转至“出错处理”列所指定的测试用例或“BREAK”中断,直至执行完模板中的最后一个测试项或因指向关键字“BREAK”而终止;
5、模拟工况分析,获取测试前工况的描述信息,通过与测试环境接口的数据交互,设置模拟测试环境满足当前测试项中定义的“测试条件”;
6、生成诊断通讯数据帧:根据测试模板中的“诊断类型”、“请求ID”、“响应ID”、“波特率”、“帧格式”的描述,结合ISO14230或ISO15765定义的诊断通讯规范,将测试模板中“服务请求”和“预期应答”列的内容解析并生成符合上述诊断通讯协议的数据帧格式;
7、通讯数据帧收发,通过驱动指定的硬件设备,根据特定的诊断规范将诊断请求数据帧发送至发动机控制器,并接收发动机控制器返回的诊断响应数据帧;
8、判断测试结果:验证接收到发动机控制器的诊断响应数据帧、诊断响应数据帧是否符合诊断协议的规范、诊断响应数据帧中的关键字节是否符合预设的期望数值、根据“判断方式”列的定义,对比“物理数值”列的描述,是否符合“目标数值”列的期望数值;
9、实现与发动机控制器工况环境交互:根据“测试条件”列的内容设置发动机控制器的虚拟工况,根据“物理数值”列中可能包含的发动机控制器内部变量名,实现对相关变量值的获取;
10、测试报告输出,在测试结束后输出能够体现测试过程和测试结果的测试报告;
具体是以测试模板文档中的内容作为测试报告主体,增加一列作为每一个测试项的测试结果,并在测试报告头中总结本次测试结果是否通过或未通过。
11、日志文件输出,记录每一步测试步骤中和发动机控制器的诊断通信数据帧。
本发明的方法利用NI公司的VeriStand+LabVIEW软件开发环境,基于NI公司USB-CAN网络通信设备和汽车诊断指令集工具的发动机控制器软件诊断模块测试系统,一实施例包括:
测试环境开启模块,由定义好的LabVIEW底层VI实现,不涉及.NET代码,依次执行发动机控制器测试环境上电、开启CCP或INCA、调用主测试程序、初始化外围硬件4个步骤,初始化测试环境和发动机控制器内部变量获取通道;
开启CCP或INCA的前提是发动机控制器测试环境上电,调用主测试程序的前提是前二个步骤执行完毕,通过简单的Pipe-And-Filter(管道-过滤器)模式加Command(命令)模式能在本模块中得到应用。
测试模板解析模块,由LabVIEW调用.NET代码的方式实现,主要的功能是由.NET代码实现的用于模板的解析,模板中测试项的获取、测试用例成员的获取;利用Adapter(适配器)模式将多个不同内容的测试模板,通过同一个测试模板解析函数,转换为系统运行周期内通用的标准.NET类的实例;
生成测试用例的时候能采用SimpleFactory(简单工厂)模式,每获得Excel中一个有效数据行,就生成一个测试项实例;所述测试模板包含:
a)测试模板类,描述测试模板信息,其中包含了测试用例成员数组;
b)测试用例类,描述测试用例信息;
c)测试模板解析函数,用于将指定测试模板文件和表单名对应的Excel表格内容转换成测试模板类实例的共享函数;
d)单元格地址名转换函数,用于将数值型的列、行转换成字符串的Excel单元格地址表示形式,本函数为私有函数;
e)测试用例获取函数,根据测试项的索引主键测试序号,获取其在测试模板的数组成员中的下标,以确认到一个唯一的测试用例实例;
f)测试用例下标获取函数,根据测试项的索引主键测试序号,获取其在测试模板的数组成员中的下标;
g)数据域获取函数,通过数据域关键字获取具体测试序号的数据域。
测试流程控制模块,用于管理整个测试过程;采用Observer(观察者)模式,通过获取其子模块,核心的测试用例执行模块对每个测试项的执行结果,判断测试的下一步动作。
测试流程控制模块由LabVIEW实现,测试流程控制模块管理测试模板和测试用例。具体讲就是当前将哪个测试用例送入测试用例执行模块;当前测试用例测试完成后,根据其测试结果,决定下一个被送入测试用例执行模块的测试用例;直至测试中止或完成。
在测试用例类中具有属性成员“正常处理”,它将和“出错处理”同时起作用,在这个测试用例实例通过测试和未通过测试时,分别指向下一个测试用例的索引主键。
根据测试用例的测试结果,确定下一个测试项或者结束测试的功能函数通过.NET代码实现。
测试用例执行模块,从最初测试项的输入到最终测试结果输出通过组合调用其他模块来实现测试用例的执行的功能;
测试用例执行模块用于执行每个具体的测试项,测试项的执行流程都是由“工况分析设置-诊断协议解析-诊断数据通信-测试结果分析”固定的执行步骤所组成,而且每一个执行步骤的结果都会影响下一个执行步骤。采用架构模式中的Pipe-And-Filter(管道-过滤器)模式运行机制。
工况分析设置模块,由LabVIEW实现,通过解析.NET测试用例实例的成员“测试条件”字符串的值获取工况,并调用发动机控制器工况设置过程;
如果不需要设置工况,则跳过LabVIEW中设置工况的调用步骤。
由于测试条件,即工况在字段层为枚举数据类型,因此默认在测试模板不会出现非法工况的情形。
诊断协议解析模块,用于解析诊断通信协议,具体包括生成诊断请求数据帧、诊断数据帧中关键字节的获取、安全算法解析等。
诊断协议解析模块是从测试项中提取诊断协议相关的一些参数,生成描述诊断参数类的实例,在实际发生诊断数据通信时,根据实例的成员,对诊断通信的参数进行设置。诊断协议解析模块都是Prototype(原型)模式的应用,通过提取测试模板和测试项实例中与模块自身相关的那些成员,并生成由这些被提取的成员所聚合成新类的实例。
诊断协议解析模块包括:
a)诊断信息类,从测试模板实例和测试用例实例中提取的,诊断通信参数相关成员组合成的新类;
b)安全算法解析类,从测试项实例的“服务请求”属性成员中是否包含安全访问算法相关的信息,如果包含,则生成一个安全算法解析类的实例;
c)诊断信息实例获取函数,实现从测试模板和测试项中提取成员并返回诊断信息类的实例;
d)KWP数据帧生成函数重载1和重载2,根据诊断信息类的实例成员,遵循KWP诊断协议生成诊断请求数据帧;
e)诊断请求字节获取函数,根据KWP诊断协议,从诊断请求数据帧中提取关键的请求(命令)字节,用于和诊断响应数据帧中的响应字节对比,以确认诊断请求是否根据协议被应答;
f)诊断响应字节获取函数,根据KWP诊断协议,从诊断响应数据帧中提取关键的应答字节,用于和诊断请求数据帧中的请求字节对比,以确认诊断请求是否根据协议被应答;
g)安全算法信息获取函数,依据合法的安全算法名,从测试用例的“服务请求”成员中提取安全算法类实例;
h)诊断应答数据帧解析函数,在测试结果分析模块中使用,根据测试用例实例的“预期应答”成员,结合实际接收的诊断数据帧,判断是否收到了预期的响应。
诊断数据通信模块,由LabVIEW底层功能VI实现。CAN诊断模式下通过调用NICAN通信设备底层VI;K线诊断模式下通过RS232-K-Line通信设备实现。
诊断数据通信的功能需要依赖相关的设备硬件才能实现,用LabVIEW和硬件交互的底层VI并加以修改实现本模块的功能。在不同的诊断模式下,调用不同事先定义好的VI,用户不需要知道具体调用了哪个VI,只要知道诊断通信是否已经按照诊断协议的规定完成即可。Proxy(代理)模式正是这个模块在整个软件中作用的体现——智能地实现诊断通信。
测试结果分析模块,用于判断测试用例的执行结果;
测试结果的分析需要依次经过判断诊断协议、判断期望字节、“物理数值”解析、脚本表达式解析、“目标数值”解析、脚本表达式执行、对比判断这些步骤,其中任何一个步骤都影响最终结果,符合TemplateMethod(模板方式)模式。
在“相等”的判断模式下,根据数据类型的不同可能涉及到数组相等、十六进制值相等、十进制值相等多种判断形式,这又存在Strategy(策略)模式的应用。
测试结果分析模块包括:
a)频率获取函数,从一个数组中提取连续的数值“1”出现次数;
b)范围判断函数,判断一个待判断数值是否处于上下限范围内;
c)相等比较判断函数,判断两个数值是否相等,分别对Byte型数组、Byte型、UShort型、UInteger型、ULong型、Double型数据类型进行相等判断;
c)获取位运算操作结果,通过Flee控件,执行位运算脚本表达式,并获取位运算结果;
e)获取数学运算结果,通过Flee控件,执行数学运算脚本表达式,并获取数学运算结果;
f)表达式解析函数,包括获取表达式包含的运算类型的函数,以及从测试用例的“物理数值”成员中获取表达式的函数;
g)发动机控制器变量处理函数,包括从测试用例的“物理数值”成员中获取包含的发动机控制器变量名称的函数,以及将得到的发动机控制器变量值字符串替换掉“物理数值”中变量名字符串的函数;
用于需要在诊断服务完成后对发动机控制器软件内部变量值进行判断的测试项中,执行时先判断测试项的“物理数值”成员中是否包含合法的变量名,如果包含,通过底层VI获取发动机控制器软件内部变量值,最后将变量值转换成字符串并替换“物理数值”中变量名,以形成一个可以通过Flee解析的表达式。
h)比较数据类,用于将测试用例实例的“物理数值”和“目标数值”成员转换成统一的、可供进一步比较的类,通过该类的两个实例之间相同数据类型的成员进行对比;
i)比较数据类实例生成函数;
j)获取测试结果函数,这个函数通过依次调用诊断协议解析函数、表达式解析函数、表达式执行函数、比较数据类生成函数、频率范围数值比较函数,最终判断测试用例是否通过测试。
日志文件记录模块,保存日志文件。文件名在LabVIEW程序中根据测试当天的日期生成,通过调用.NET日志文件记录函数来实现。
日志文件记录模块包括:
a)日志文件记录函数,记录诊断收发数据帧;
测试报告输出模块,用于在测试终了时,输出一个反映测试情况的测试报告。测试报告以测试模板为母本,添加一个测试结果列,如果一个测试项测试通过,该行以白色为底色;如果测试部通过,该行以黄色为底色。
日志文件记录模块由LabVIEW程序调用.NET代码实现,通过Memento(备忘)模式,建立一个和测试模板实例的测试用例成员基本一致的备份。在测试报告中,将这个备份中的每个测试用例逐一添加到测试报告中,作为测试报告的主体。然后只要根据每项的测试用例是否通过,通过Decorator(装饰)模式进行一些诸如单元格底色的修改等润色步骤。
测试环境关闭模块,由用户实现定义好的LabVIEW底层VI实现,不涉及.NET代码,负责在测试完成后关闭发动机控制器工况和电源;
辅助函数模块,不属于任何一个具体的功能模块,但是包含每个模块都会调用的底层功能的函数,包括数据类型的转换、字符串解析、数组操作、数学运算和逻辑运算。
这辅助函数被包含在一个动态链接库中,包括:
a)一个包含许多共享函数的类;
b)初始化Byte型数组函数,建立一个指定长度的Byte型数组,长度可以为0;
c)追加Byte型数组函数,通过VB特有的动态改变数组长度的Redim方法,在一个数组的后面追加另一个数组;
d)无符号整型数值转换成字符串函数;
e)字符串转换成无符号整型数值的系列函数,分别转换成Byte、UShort、UInteger、Ulong以及根据基数转换;
f)十进制或十六进制字符串和Double型数值相互转换函数;
g)字符串和Byte数组相互转换函数;
以上通过具体实施方式和实施例对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。
Claims (3)
1.一种基于NI公司USB-CAN网络通信设备和汽车诊断指令集工具的发动机控制器软件诊断模块测试方法,其特征是,包括以下步骤:
1)设计基于Excel的诊断软件测试模板文件,包括:
A、定义测试模板至少包括以下字段:平台、项目号、软件名、诊断类型、请求ID、应答ID、波特率、和帧格式;
B、定义测试用例至少包括以下字段:测试序号、服务请求、描述信息、测试条件、预期应答、判断方式、物理数值、目标数值和出错处理;
2)根据测试模板编写符合测试模板格式的诊断软件测试用例;
3)根据用户指定的测试模板文件和模板名称,解析测试模板文件中的测试模板,生成用于描述测试模板各项测试用例和控制测试过程的数据结构;
4)控制测试流程,从测试模板文件中的首个测试项开始,测试通过则执行模板中下一行测试项、测试不通过则跳转至“出错处理”列所指定的测试用例或“BREAK”中断,直至执行完模板中的最后一个测试项或因指向关键字“BREAK”而终止;
5)模拟工况解析,获取测试前工况的描述信息,通过与测试环境接口的数据交互,设置模拟测试环境满足当前测试项中定义的测试条件;
6)生成诊断通讯数据帧,根据测试模板中的诊断类型、请求ID、响应ID、波特率、帧格式的描述,结合ISO14230或ISO15765定义的诊断通讯规范,将测试模板中服务请求和预期应答列的内容解析并生成符合上述诊断通讯协议的数据帧格式;
7)通讯数据帧收发,通过驱动指定的硬件设备,根据特定的诊断规范将诊断请求数据帧发送至发动机控制器,并接收发动机控制器返回的诊断响应数据帧;
8)判断测试结果,验证接收到发动机控制器的诊断响应数据帧、诊断响应数据帧是否符合诊断协议的规范、诊断响应数据帧中的关键字节是否符合预设的期望数值、根据判断方式列的定义,对比物理数值列的描述,是否符合目标数值列的期望数值;
9)实现与发动机控制器工况环境交互,根据测试条件列的内容设置发动机控制器的虚拟工况,根据物理数值列中可能包含的发动机控制器内部变量名,实现对相关变量值的获取;
10)测试报告输出,在测试结束后输出能够体现测试过程和测试结果的测试报告;
11)日志文件输出,记录每一步测试步骤中和发动机控制器的诊断通信数据帧。
2.如权利要求1所述的发动机控制器软件诊断模块测试方法,其特征是:步骤1)中定义的测试条件,至少包括:延迟10秒、发动机停机、怠速工况、加速踏板踩到底、松开加速踏板、踩住刹车踏板和松开刹车踏板。
3.一种基于NI公司USB-CAN网络通信设备和汽车诊断指令集工具的发动机控制器软件诊断模块测试系统,其特征是,包括:
测试环境开启模块,依次执行发动机控制器测试环境上电、开启CCP或INCA、调用主测试程序、初始化外围硬件,是初始化测试环境和发动机控制器内部变量获取通道;
测试模板文件解析模块,用于测试模板文件的解析,测试模板文件中测试项的获取、测试用例成员的获取,将多个不同内容的测试模板,通过同一个测试模板文件解析函数,转换为系统运行周期内通用的标准.NET类的实例;生成测试用例的时候,每获得Excel中一个有效数据行,就生成一个测试项实例,
测试流程控制模块,用于管理整个测试过程;
测试用例执行模块,从最初测试项的输入到最终测试结果输出通过组合调用其他模块来实现测试用例的执行的功能;
工况分析设置模块,通过解析.NET测试用例实例的成员测试条件字符串的值获取工况,并调用发动机控制器工况设置过程;
如果不需要设置工况,则跳过LabVIEW中设置工况的调用步骤。
诊断协议解析模块,用于解析诊断通信协议;
诊断数据通信模块,CAN诊断模式下通过调用NICAN通信设备底层VI;K线诊断模式下通过RS232-K-Line通信设备实现。
测试结果分析模块,用于判断测试用例的执行结果;
日志文件记录模块,保存日志文件;
测试报告输出模块,用于在测试终了时,输出一个反映测试情况的测试报告;
测试环境关闭模块,负责在测试完成后关闭发动机控制器工况和电源;
辅助函数模块,不属于任何一个具体的功能模块,但是包含每个模块都会调用的底层功能的函数,包括数据类型的转换、字符串解析、数组操作、数学运算和逻辑运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410257766.8A CN105224447B (zh) | 2014-06-11 | 2014-06-11 | 发动机控制器软件诊断模块测试方法及测试系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410257766.8A CN105224447B (zh) | 2014-06-11 | 2014-06-11 | 发动机控制器软件诊断模块测试方法及测试系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105224447A true CN105224447A (zh) | 2016-01-06 |
CN105224447B CN105224447B (zh) | 2017-11-14 |
Family
ID=54993432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410257766.8A Active CN105224447B (zh) | 2014-06-11 | 2014-06-11 | 发动机控制器软件诊断模块测试方法及测试系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105224447B (zh) |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106053098A (zh) * | 2016-07-22 | 2016-10-26 | 上汽通用汽车有限公司 | 一种汽车模拟方法、装置及汽车测试模拟系统 |
CN106598851A (zh) * | 2016-12-05 | 2017-04-26 | 广州唯品会信息科技有限公司 | 软件接口测试方法及系统 |
CN107423492A (zh) * | 2017-06-30 | 2017-12-01 | 林德(中国)叉车有限公司 | 一种基于模板的叉车诊断测试方法及系统 |
CN107450515A (zh) * | 2017-07-31 | 2017-12-08 | 北京新能源汽车股份有限公司 | 故障诊断自动测试方法及装置 |
CN107544463A (zh) * | 2017-09-08 | 2018-01-05 | 北京新能源汽车股份有限公司 | 一种车用控制器诊断功能的自动测试方法及测试装置 |
CN107612919A (zh) * | 2017-09-29 | 2018-01-19 | 交控科技股份有限公司 | 协议配置方法及装置 |
CN107797540A (zh) * | 2016-09-07 | 2018-03-13 | 上海汽车集团股份有限公司 | 变速器故障测试方法、装置及终端 |
CN107888328A (zh) * | 2016-09-30 | 2018-04-06 | 西门子公司 | 信息处理方法 |
CN108345288A (zh) * | 2017-01-23 | 2018-07-31 | 长城汽车股份有限公司 | Can信号接口软件的自动生成方法、系统及车辆 |
CN108490922A (zh) * | 2018-04-27 | 2018-09-04 | 北京新能源汽车股份有限公司 | 一种统一诊断服务测试用例的生成方法及装置 |
CN109491660A (zh) * | 2018-09-30 | 2019-03-19 | 大连莱克科技发展有限公司 | 一种机车事件数据动态解析方法 |
CN109560994A (zh) * | 2018-12-21 | 2019-04-02 | 北京雄信息科技有限公司 | 汽车故障诊断仪检测系统和检测方法 |
CN109656822A (zh) * | 2018-12-12 | 2019-04-19 | 郑州云海信息技术有限公司 | 一种自动化测试的保护方法及装置 |
CN109709932A (zh) * | 2017-10-26 | 2019-05-03 | 大陆汽车投资(上海)有限公司 | 基于dSPACE-HIL系统的用于诊断电子设备的方法和装置 |
CN109885817A (zh) * | 2019-01-25 | 2019-06-14 | 中国科学院国家空间科学中心 | 一种航天器有效载荷上注指令的生成方法及系统 |
CN110287126A (zh) * | 2019-07-04 | 2019-09-27 | 上海睿赛德电子科技有限公司 | 一种适用于嵌入式系统的单元测试框架 |
WO2019183864A1 (zh) * | 2018-03-29 | 2019-10-03 | 罗伯特·博世有限公司 | 选择性催化还原信息处理系统和方法 |
CN111103861A (zh) * | 2018-10-25 | 2020-05-05 | 上汽通用汽车有限公司 | 开发基于车辆售后诊断需求的集成系统的方法和装置 |
CN111177006A (zh) * | 2019-12-31 | 2020-05-19 | 惠州市德赛西威汽车电子股份有限公司 | 一种车载娱乐导航测试用例自动生成系统 |
CN112445195A (zh) * | 2019-08-29 | 2021-03-05 | 北京新能源汽车股份有限公司 | 一种车辆控制器的功能测试方法和装置 |
CN112462727A (zh) * | 2019-09-09 | 2021-03-09 | 广州汽车集团股份有限公司 | 一种车载零部件测试方法和装置 |
CN112506759A (zh) * | 2020-11-23 | 2021-03-16 | 四川航天烽火伺服控制技术有限公司 | 伺服系统控制软件的自动化测试方法、装置及存储介质 |
CN114265762A (zh) * | 2021-10-28 | 2022-04-01 | 中国航发西安动力控制科技有限公司 | 一种发动机控制软件测试方法 |
CN115361320A (zh) * | 2022-08-15 | 2022-11-18 | 武汉思普崚技术有限公司 | 一种自动化测试旁路设备吞吐性能的测试方法及测试系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101089895A (zh) * | 2006-06-15 | 2007-12-19 | 广西梧州三原高新科技有限公司 | 汽车不解体检测诊断系统 |
US20120072159A1 (en) * | 2010-09-16 | 2012-03-22 | Linsong Wang | Universal quality assurance automation framework |
CN103279415A (zh) * | 2013-05-27 | 2013-09-04 | 哈尔滨工业大学 | 基于组合测试的嵌入式软件测试方法 |
CN103577168A (zh) * | 2012-07-27 | 2014-02-12 | 鸿富锦精密工业(深圳)有限公司 | 测试用例创建系统及方法 |
-
2014
- 2014-06-11 CN CN201410257766.8A patent/CN105224447B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101089895A (zh) * | 2006-06-15 | 2007-12-19 | 广西梧州三原高新科技有限公司 | 汽车不解体检测诊断系统 |
US20120072159A1 (en) * | 2010-09-16 | 2012-03-22 | Linsong Wang | Universal quality assurance automation framework |
CN103577168A (zh) * | 2012-07-27 | 2014-02-12 | 鸿富锦精密工业(深圳)有限公司 | 测试用例创建系统及方法 |
CN103279415A (zh) * | 2013-05-27 | 2013-09-04 | 哈尔滨工业大学 | 基于组合测试的嵌入式软件测试方法 |
Non-Patent Citations (2)
Title |
---|
刘大鹏 等: "CAN网络的车载控制平台设计", 《计算机测量与控制》 * |
孙琦: "车载电控单元诊断测试技术的研究", 《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》 * |
Cited By (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106053098A (zh) * | 2016-07-22 | 2016-10-26 | 上汽通用汽车有限公司 | 一种汽车模拟方法、装置及汽车测试模拟系统 |
CN106053098B (zh) * | 2016-07-22 | 2018-05-08 | 上汽通用汽车有限公司 | 一种汽车模拟方法、装置及汽车测试模拟系统 |
CN107797540A (zh) * | 2016-09-07 | 2018-03-13 | 上海汽车集团股份有限公司 | 变速器故障测试方法、装置及终端 |
CN107797540B (zh) * | 2016-09-07 | 2021-03-16 | 上海汽车集团股份有限公司 | 变速器故障测试方法、装置及终端 |
CN107888328A (zh) * | 2016-09-30 | 2018-04-06 | 西门子公司 | 信息处理方法 |
CN106598851A (zh) * | 2016-12-05 | 2017-04-26 | 广州唯品会信息科技有限公司 | 软件接口测试方法及系统 |
CN108345288B (zh) * | 2017-01-23 | 2020-01-31 | 长城汽车股份有限公司 | Can信号接口软件的自动生成方法、系统及车辆 |
CN108345288A (zh) * | 2017-01-23 | 2018-07-31 | 长城汽车股份有限公司 | Can信号接口软件的自动生成方法、系统及车辆 |
CN107423492A (zh) * | 2017-06-30 | 2017-12-01 | 林德(中国)叉车有限公司 | 一种基于模板的叉车诊断测试方法及系统 |
CN107423492B (zh) * | 2017-06-30 | 2021-04-20 | 林德(中国)叉车有限公司 | 一种基于模板的叉车诊断测试方法及系统 |
CN107450515A (zh) * | 2017-07-31 | 2017-12-08 | 北京新能源汽车股份有限公司 | 故障诊断自动测试方法及装置 |
CN107544463B (zh) * | 2017-09-08 | 2019-12-13 | 北京新能源汽车股份有限公司 | 一种车用控制器诊断功能的自动测试方法及测试装置 |
CN107544463A (zh) * | 2017-09-08 | 2018-01-05 | 北京新能源汽车股份有限公司 | 一种车用控制器诊断功能的自动测试方法及测试装置 |
CN107612919B (zh) * | 2017-09-29 | 2020-05-08 | 交控科技股份有限公司 | 协议配置方法及装置 |
CN107612919A (zh) * | 2017-09-29 | 2018-01-19 | 交控科技股份有限公司 | 协议配置方法及装置 |
CN109709932A (zh) * | 2017-10-26 | 2019-05-03 | 大陆汽车投资(上海)有限公司 | 基于dSPACE-HIL系统的用于诊断电子设备的方法和装置 |
WO2019183864A1 (zh) * | 2018-03-29 | 2019-10-03 | 罗伯特·博世有限公司 | 选择性催化还原信息处理系统和方法 |
CN108490922B (zh) * | 2018-04-27 | 2020-03-24 | 北京新能源汽车股份有限公司 | 一种统一诊断服务测试用例的生成方法及装置 |
CN108490922A (zh) * | 2018-04-27 | 2018-09-04 | 北京新能源汽车股份有限公司 | 一种统一诊断服务测试用例的生成方法及装置 |
CN109491660A (zh) * | 2018-09-30 | 2019-03-19 | 大连莱克科技发展有限公司 | 一种机车事件数据动态解析方法 |
CN111103861A (zh) * | 2018-10-25 | 2020-05-05 | 上汽通用汽车有限公司 | 开发基于车辆售后诊断需求的集成系统的方法和装置 |
CN111103861B (zh) * | 2018-10-25 | 2023-04-07 | 上汽通用汽车有限公司 | 开发基于车辆售后诊断需求的集成系统的方法和装置 |
CN109656822A (zh) * | 2018-12-12 | 2019-04-19 | 郑州云海信息技术有限公司 | 一种自动化测试的保护方法及装置 |
CN109560994A (zh) * | 2018-12-21 | 2019-04-02 | 北京雄信息科技有限公司 | 汽车故障诊断仪检测系统和检测方法 |
CN109885817A (zh) * | 2019-01-25 | 2019-06-14 | 中国科学院国家空间科学中心 | 一种航天器有效载荷上注指令的生成方法及系统 |
CN110287126A (zh) * | 2019-07-04 | 2019-09-27 | 上海睿赛德电子科技有限公司 | 一种适用于嵌入式系统的单元测试框架 |
CN112445195A (zh) * | 2019-08-29 | 2021-03-05 | 北京新能源汽车股份有限公司 | 一种车辆控制器的功能测试方法和装置 |
CN112462727A (zh) * | 2019-09-09 | 2021-03-09 | 广州汽车集团股份有限公司 | 一种车载零部件测试方法和装置 |
CN111177006A (zh) * | 2019-12-31 | 2020-05-19 | 惠州市德赛西威汽车电子股份有限公司 | 一种车载娱乐导航测试用例自动生成系统 |
CN111177006B (zh) * | 2019-12-31 | 2024-02-02 | 惠州市德赛西威汽车电子股份有限公司 | 一种车载娱乐导航测试用例自动生成系统 |
CN112506759A (zh) * | 2020-11-23 | 2021-03-16 | 四川航天烽火伺服控制技术有限公司 | 伺服系统控制软件的自动化测试方法、装置及存储介质 |
CN112506759B (zh) * | 2020-11-23 | 2023-11-14 | 四川航天烽火伺服控制技术有限公司 | 伺服系统控制软件的自动化测试方法、装置及存储介质 |
CN114265762A (zh) * | 2021-10-28 | 2022-04-01 | 中国航发西安动力控制科技有限公司 | 一种发动机控制软件测试方法 |
CN115361320A (zh) * | 2022-08-15 | 2022-11-18 | 武汉思普崚技术有限公司 | 一种自动化测试旁路设备吞吐性能的测试方法及测试系统 |
CN115361320B (zh) * | 2022-08-15 | 2023-11-17 | 武汉思普崚技术有限公司 | 一种自动化测试旁路设备吞吐性能的测试方法及测试系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105224447B (zh) | 2017-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105224447A (zh) | 发动机控制器软件诊断模块测试方法及测试系统 | |
Zage et al. | Evaluating design metrics on large-scale software | |
CN110781082A (zh) | 接口的测试用例的生成方法及装置、介质和设备 | |
CN102866944B (zh) | 一种压力测试系统及方法 | |
CN108270640B (zh) | 一种智能营配信息集成系统信息互操作一致性测试方法 | |
CN101930400A (zh) | Sdk自动化测试系统及方法 | |
US20190050213A1 (en) | System and method for generating a domain-specific programming language program from a cloud-based computing system | |
US20110161063A1 (en) | Method, computer program product and apparatus for providing an interactive network simulator | |
Albinet et al. | The MeMVaTEx methodology: from requirements to models in automotive application design | |
US9098622B2 (en) | System and method for automated and objective assessment of programming language code | |
CN108460068A (zh) | 报表导入导出的方法、装置、存储介质及终端 | |
CN106325860B (zh) | 一种航天嵌入式软件接口数据的自动化维护方法 | |
Coppit et al. | Software assurance by bounded exhaustive testing | |
CN114217887A (zh) | 微服务编排方法、执行方法、装置及服务器 | |
CN101303646B (zh) | 基于可执行元语言的电信领域建模方法 | |
Sandmann et al. | Autosar-compliant development workflows: From architecture to implementation-tool interoperability for round-trip engineering and verification and validation | |
CN116049014A (zh) | Amba总线的验证平台生成方法及装置 | |
CN111400162B (zh) | 一种测试方法及测试系统 | |
KR20110063084A (ko) | 웹 서비스 상호 운용성 시험 장치 및 그 방법 | |
CN117032634A (zh) | 组件处理方法及系统 | |
CN116467211A (zh) | 一种基于数字化仿真环境的系统级测试验证方法 | |
Hartmann et al. | A UML-based approach for validating product lines | |
CN112015715A (zh) | 工业互联网数据管理服务测试方法及系统 | |
CN116319242A (zh) | 一种基于rpa技术的云管平台微服务调度方法及装置 | |
Elias et al. | Assessing systems architecture: an exploratory framework |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |