在汽车电控单元开发过程中,集成测试是一个独立的阶段.通过测试可发现系统功能和性能设计中存在的问题,是提高系统可靠性的重要手段[1-4].在汽车电控单元测试中,测试用例、测试方法和测试环境决定着测试结果的完备性和测试效率[5-11].文献[12]探讨了空间有效载荷系统集成测试用例的生成问题,提出了一种基于IOOPN模型的测试用例自动生成方法,有效提高了测试效率.但汽车电控单元有其特殊性,输入信号多是开关信号,互相之间存在不同的相关性和约束条件,经过逻辑组合实现各种功能,如何利用这一特征有效减少测试用例数量目前尚无研究.此外,文献[13]提出了一种基于CANoe的汽车故障诊断测试方法,通过监测CAN (control area network)总线报文,并依据网路协议对汽车电控单元的故障信息进行分析及处理.文献[14]基于Labview搭建测试系统,通过电液系统与控制系统的集成,实现了对汽车自动变速器油泵的测试,体现了集成测试高效率的优点.但由于不同汽车电控单元的测试需求不同,即便同一电控单元的测试往往也要用到不同的设备和测试策略,而现有测试设备通常只针对电控单元的部分功能和性能进行测试分析,无法实现不同测试设备的协同工作和数据共享.
为此,本文将从汽车电控单元测试的实际需求出发,结合汽车电控单元测试的特点,提出一种改进的测试用例生成算法,深入探讨基于Labview的测试设备集成调用技术和测试方法,构建满足不同电控单元测试需求的集成测试系统,并进行实验验证.
1 测试用例生成算法汽车电控单元的输入信号多是开关信号,经过逻辑组合实现各种功能.此类系统约70%的设计缺陷是由单个或两个参数作用导致的[15].因此,本文针对汽车电控单元的特点,选取两两组合覆盖准则.
IPO算法是基于参数顺序的渐进扩展,重点在于测试不同输入参数取值组合作用下的系统响应,具有较优的时间复杂度[16].考虑到作用于汽车电控单元不同功能模块的输入参数,在测试用例生成的过程中对这些参数的组合是没有意义的.因此,本文针对汽车电控单元的特点,在已有IPO算法的基础上,通过引入参数相关性和组合约束条件,满足覆盖准则的同时缩减测试用例数量,具体算法如下:1)提取输入参数相关性和组合约束条件等信息;2)依据参数相关性进行分类和排序;3)根据两两组合覆盖准则,对前两个输入参数生成测试用例集;4)新增一个输入参数,水平扩展测试用例集;5)如未满足覆盖准则,则垂直扩展测试用例集,直至包含新增输入参数的两两组合全被覆盖;6)重复步骤4)和步骤5),直到所有输入参数扩展完毕.
在上述测试用例生成算法中,考虑输入参数相关性和组合约束条件的前提下,实现对输入参数的水平扩展和垂直扩展是算法的关键.
水平扩展不增大测试用例集的规模,只是在原有测试用例集中增加一列并对其中的参数进行赋值,因此,其重点在于对新增参数的合理赋值.
为便于算法描述如下:
1) N个输入参数分别记为P1, P2, …, PN,每个参数的取值数分别记为V1, V2, …, VN;
2) 参数Pm的第n个取值记为Pmn;
3) 第m个参数与相关参数构成的集合记为TPm;
4) 第m个参数进行扩展时,未能覆盖到的参数组合记为UCm;
5) 第m个参数水平或(和)垂直扩展后生成的测试用例集记为TCm;
6) 约束条件下参数组合构成的集合记为NC.
对于新增输入参数Pi,本文提出水平扩展算法描述如下:
1) 由Pi和TPi生成UCi;
2) 在UCi中删除与NC重合的测试用例;
3) 在TCi-1中确定测试用例数量的最小值S,要求覆盖TPi中参数的两两组合;
4) 集合TCi-1中前Vi个测试用例的第i列按参数Pi的取值顺序进行赋值,计算新增参数组合数,删除UCi中相应组合,并要求新增组合不包含在NC中;
5) 以NC中不包含新增参数组合为前提,从第Vi+1到第S个测试用例计算每个Pi取值所能覆盖UCi中的参数组合数量,在当前测试用例行的第i列写入覆盖最多参数组合数量的Pi参数值,在UCi中删除由Pi参数值的写入增加的参数组合;
6) 完成参数Pi对应测试用例的水平扩展.
由于上述算法只是在原有测试用例集的基础上增加参数,不扩大其规模,其结果有可能参数两两组合没有被完全覆盖.这就需要通过参数垂直扩展,新增测试用例来覆盖剩余的参数组合.在上述水平扩展基础上,本文提出如下垂直扩展算法:
1) 设当前参数垂直扩展的最大用例数R=S+1;
2) 如果TCi-1的用例数量为S,则执行步骤3),否则执行步骤4);
3) 在TCi-1中增加1条所有输入参数都取值为“*”的测试用例;
4) 对于未覆盖组合(Pmn, Pij),从第S+1个测试用例开始查询,如查询到第m列参数值为Vn或“*”且第i列参数值为Vj或“*”的测试用例,则在新赋值参数组合不包含在NC中的前提下将该用例中第m、i列的参数分别赋值为Vn和Vj,从UCi中删除组合(Pmn, Pij),重复这一操作直至第R个测试用例,且对于所有未覆盖的参数组合均查询不到满足条件的测试用例时转入步骤5);
5) 判断R是否小于集合TCi-1中的测试用例总数,如是则令R= R+1,并对其中第R个测试用例按照步骤4)的要求进行查询和处理,直至查询不到满足条件的测试用例时转入步骤6);
6) 在TCi-1中新增1条测试用例,第m、i列参数分别赋值为Vn和Vj,其余为“*”,从UCi中删除参数组合(Pmn, Pij),并令R= R+1;
7) 对第S+1至第R个测试用例中标示为“*”的参数在其取值范围内随机取值.
8) 完成新增参数的垂直扩展.
为验证上述算法,对于可能取值数为A、B、C的输入参数个数分别为a、b、c的系统,记输入参数模型为Aa×Bb×Cc,应用本文算法生成的测试用例数量见表 1.分类{X×(Y+Z)}表示前X个参数为第1类,接下来的Y个参数为第2类,最后的Z个参数为第3类,且第1类参数与第2、3类参数均相关,但第2类参数与第3类参数不相关.从表 1中可以看出,相同的输入参数模型,不同的分类方法影响测试用例数量,且未分类对应的测试用例数量明显多于分类1和2.此外,本文算法对于输入参数数量和参数取值数量越多的系统,可更为有效地缩减测试用例的数量.
![]() |
表 1 本文算法针对不同参数模型及分类情况生成的用例数量 |
汽车电控单元(electronic control unit, ECU)常用测试设备及其功能见表 2.
![]() |
表 2 汽车电控单元常用测试设备调用技术 |
为实现集成测试,本文构建如图 1所示的汽车电控单元集成测试系统,其中电源和负载为汽车蓄电池和负载,或可控电源和负载,总线仿真测试设备用于模拟被测ECU所需网络总线通信,关键是在上位机中实现对所有测试设备的集成调用,进而实现测试设备的统一调度和数据共享.通常,测试设备控制软件会为用户提供动态链接库等接口,用于支持其他软件对该设备的操控.为此,本文将在Labview环境下,研究基于不同接口的集成调用技术,实现对汽车电控单元常用测试设备的集成调用.
![]() |
图 1 汽车电控单元集成测试系统 |
如果测试设备的控制软件为用户提供COM (component object model)服务接口,则可利用Labview的ActiveX自动化调用该设备的COM服务访问其接口,获得对测试设备的控制权,并实现对设备的直接控制,如图 2所示.因此,在Labview环境中可实现测试设备的打开、运行、停止和退出等操作,同时能够设置测试设备参数并读取测试数据,实现对测试设备的实时控制.
![]() |
图 2 基于ActiveX的自动化集成调用技术示意 |
测试数据的实时获取对于集成测试至关重要.对于测试数据,ActiveX通常采用查询方式,这在一定程度上增加了上位机的负荷.为实现测试数据的实时获取,减小上位机的负荷,本文设计了采用ActiveX事件监控测试数据变化,通过数据变化时产生的“值改变”事件触发接收测试数据的接收处理任务,可有效提高测试数据接收与处理的实时性.
2.2 基于动态链接库的集成调用如果测试设备的控制软件为用户提供的是动态链接库(dynamic link library, DLL),则可通过调用DLL库函数的方式,实现对设备的控制,如图 3所示.
![]() |
图 3 Labview调用动态链接库技术示意 |
调用DLL库函数必须正确解析库函数参数,这是实现Labview调用DLL库函数的关键技术.本文设计参数匹配模块,实现每一个参数类型与Labview数据类型的匹配,该模块可在将用户输入参数传递给库函数前进行转化,同时解析库函数的返回参数,在前面板显示结果或保存结果到数据文件中.
2.3 基于Python指令的集成调用为了实现对Python接口此类设备的集成调用,本文基于Python库文件编写Python指令,以控制指令为模块形成不同的PY文件,并保留数据传递接口.Labview对Python的调用,是通过在Labview中读取PY文件,形成系统命令行并设置其对应输入参数,而Python指令的执行则是通过“执行系统命令”节点实现的,最后读取输出参数并输出,如图 4所示.
![]() |
图 4 Labview调用Python指令技术示意 |
为解决参数输入及不同测试设备的项目配置文件格式在Labview中无法识别的问题,本文在Labview中开发参数配置界面,在界面中可以实现用户参数输入和参数之间的约束关系检验,并在输入参数错误时给出提示,确保输入参数的合理性;同时设计参数匹配模块,对不同测试设备软件提供的配置文件进行处理,获取其软件参数的设置方法.基于上述技术,用户在参数配置界面输入的参数,可在Labview中生成针对特定测试设备的项目配置文件,从而实现了同一环境下对不同测试设备的参数修改,如图 5所示.
![]() |
图 5 Labview修改项目配置文件技术示意 |
根据图 1构建的电动汽车VCU (vehicle control unit)集成测试系统如图 6所示,通过不同测试设备之间的协调控制,在车速达到40 km/h时使一路加速踏板传感器信号超出正常范围,测试VCU是否生成故障码及其对车速的控制是否满足设计要求.测试用例见表 3,其中开始测试信号用“Start”表示,“Speed”为车速,加速踏板传感器故障码记为“Acc-P-Fault”.
![]() |
图 6 电动汽车整车控制器集成测试环境 |
![]() |
表 3 汽车电控单元常用测试设备调用技术 |
执行测试时,首先由Labview读取测试用例并启动所需设备,之后自动进入就绪状态,用户设置“Start”为ON触发测试执行,直至“END”结束测试.各测试阶段上位机的需要执行的操作如下:1)Labview在“Acceleration”阶段控制虚拟仪器设备输出正常的传感器信号;2)Labview在故障生成阶段控制虚拟仪器设备输出异常的传感器信号;3)Labview在测试的过程中分别调用dSPACE和DTS读取车速信息和故障码.
从图 7所示的测试结果中可以看出,VCU能够在故障发生后快速检测到,生成故障码并采取必要的控制措施, 测试系统实现了该模块的测试.
![]() |
图 7 电动汽车VCU故障诊断测试波形 |
以车身控制器为被测对象根据图 1构建的集成测试系统,如图 8所示.以车身控制器的大灯和雨刮控制功能模块为被测对象,测试流程如图 9所示.首先利用本文方法生成测试用例集;测试过程中,上位机通过读取测试用例获取测试输入信号组合,集成调用测试设备模拟被测控制器所需工作环境,并实时采集其实际状态与期望状态进行对比分析.
![]() |
图 8 车身控制器集成测试环境实物 |
![]() |
图 9 车身控制策略测试流程 |
在测试用例生成环节,针对车身控制器的大灯和雨刮控制功能模块,以“一汽”的某款车型为例,其输入信号及其分类见表 4.
![]() |
表 4 车身控制器大灯和雨刮器功能模块信号分类 |
在表 4中,分类2和3的输入信号分属不同功能模块,无相关性,其他输入信号之间具有相关性.根据本文提出的测试用例生成算法,对输入信号进行分类,并考虑输入信号之间的相关性和约束条件下生成测试用例共16条,包含所有参数的两两组合,实现了测试的全覆盖.根据本文算法,相关输入参数组合中的参数数量和取值数量决定了测试用例的数量,所以总计16条测试用例达到了最小用例集的结果.
与之形成对比的是,如果不考虑信号分类及其相关性,采用改进前的IPO算法直接生成测试用例,则需要用21条测试用例才能够到达两两准则100%的覆盖率.由此可见,针对车身控制器的大灯和雨刮控制功能模块,相对于改进前的算法,本文给出的算法可减少测试用例数量超过20%.更为重要的是,系统逻辑关系越复杂,输入信号越多,信号可能取值数量越多,本文算法的优势就越明显.
在汽车电控系统中,尤其是车身控制系统中,存在很多逻辑复杂的功能模块,如无钥匙进入、中控门锁、电动车窗、车身防盗等功能模块,这些功能模块都可以在系统需求分析的基础上,对输入信号进行分类,并描述信号之间的相关性.因此,类似车身控制器的大灯和雨刮控制功能模块,汽车电控系统中的所有逻辑功能模块都可以采用本文的测试用例生成算法,以减少测试用例数量,提高测试效率.
根据本文算法生成的测试用例,利用图 8所示的集成测试系统对车身控制器进行测试,测试结果见表 5.在“实际输出”对应的单元格内填充灰色表示实际输出与期望输出一致.可见,本文所提测试用例自动生成算法结合集成调用技术,可实现对汽车电控单元复杂逻辑控制功能的高效、准确测试.
![]() |
表 5 大灯和雨刮模块控制策略测试结果 |
1) 针对汽车电控单元集成测试过程中需要用到多种测试设备,且已有设备无法实现协同控制与数据共享的现状,构建了能够满足不同测试需求的汽车电控单元集成测试系统,实现了上位机中基于Labview对总线仿真测试及干扰设备、参数标定设备、虚拟仪器设备、诊断测试设备和实时仿真系统等汽车电控单元常用测试设备的数据共享和实时管理.
2) 本文方法可满足不同汽车电控单元的测试需求,提高测试效率和精度,方便回归测试,有效解决了人工操作很难捕捉到的死锁、资源冲突等问题.
[1] |
PALLADINO A, FIENGO G, LANZO D. A portable hardware-in-the-loop (HIL) device for automotive diagnostic control systems[J]. ISA Transactions, 2012, 51(1): 229-236. DOI:10.1016/j.isatra.2011.10.009 |
[2] |
SHU Yang, LI Hui, WU Qian. Expansion application of dSPACE for HILS[C]//International Symposium on Industrial Electronics. Cambridge: IEEE, 2008: 2231-2235.
|
[3] |
周凯, 王旭东, 焦文良, 等. 汽车防抱死制动性能台架测试技术[J]. 电机与控制学报, 2013, 17(6): 99-106. |
[4] |
樊新海, 王战军, 安钢, 等. 装甲车辆底盘关键部件综合检测系统研制[J]. 兵工学报, 2009, 30(7): 849-852. |
[5] |
ZHOU Fang, LI Shuqin, HOU Xia. Development method of simulation and test system for vehicle body CAN bus based on CANoe[C]//Proceedings of the 7th World Congress on Intelligent Control and Automation. Chongqing: IEEE, 2008: 7515-7519.
|
[6] |
FENG Yingliang, WANG Shujuan, FENG Bin, et al. Development of an auto test system for humidity sensors[J]. Sensors and Actuators A:Physical, 2009, 152(1): 104-109. DOI:10.1016/j.sna.2009.03.001 |
[7] |
WANG Zhongyuan, SHANG Yongheng, LIU Jiarui, et al. A LabVIEW based automatic test system for sieving chips[J]. Measurement, 2013, 46(1): 402-410. DOI:10.1016/j.measurement.2012.07.015 |
[8] |
高利华, 赵志宇. 基于Labcar的车身系统硬件在环仿真测试[J]. 汽车电器, 2005(8): 56-59. |
[9] |
张艳梅, 姜淑娟, 张红昌. 一种基于动态依赖关系的类集成测试方法[J]. 计算机学报, 2011, 34(6): 1075-1089. |
[10] |
高静, 兰雨晴, 金茂忠. 基础软件平台集成测试组合选择方法[J]. 北京航空航天大学学报, 2010, 36(3): 265-269. |
[11] |
王战敏, 崔杜武, 费蓉, 等. 软件集成测试中的一种用例生成方法[J]. 西安交通大学学报, 2007, 41(12): 1427-1430. |
[12] |
贺宇峰, 赵光恒, 郭丽丽, 等. 基于改进OOPN的有效载荷系统测试用例生成方法[J]. 系统工程与电子技术, 2010, 32(11): 2470-2475. |
[13] |
丁志华, 罗峰, 孙泽昌. 基于CANoe的汽车故障诊断系统研制[J]. 汽车工程, 2007, 29(5): 449-452. |
[14] |
杨亚联, 宋安兴, 陆通, 等. 汽车自动变速器油泵测试系统的研发[J]. 汽车工程, 2013, 35(6): 510-514. |
[15] |
MAITY S, NAYAK A. Improved test generation algorithms for pair-wisetesting[C]//The 16th IEEE International Sym-posium on Software Reliability Engineering. Chicago: IEEE, 2005: 235-244.
|
[16] |
TAI Kuo-Chung, LEI Yu. A test generation strategy for pairwise testing[J]. IEEE Transactions on Software Engi-neering, 2002, 28(1): 109-111. DOI:10.1109/32.979992 |