摘要:软件测试是一项十分复杂和多样化的工作,它对保证自动变速控制系统软件质量进而推动其产品化进程有着重要的意义。本文结合自动变速控制系统软件开发,就控制系统软件测试技术基本概念、测试分析方法及测试过程进行了介绍。
关键词:软件测试 自动变速 控制系统
1 前 言
现代控制理论、电子技术、计算机技术、车辆自动变速理论及人工智能技术的发展与应用,为车辆动力传动系统自动操纵的实现提供了理论支持和技术保障。自动变速控制系统软件存储于TCU(Transmission Control Unit,变速器控制单元)的ROM 中,主要由数据采集与处理、数据通信、决策调度、控制协调、驱动控制等模块和换档规律及相关经验数据等部分组成。共同完成驾驶员意图及环境参数识别、档位决策、故障诊断、起步控制、换档控制、制动控制、倒车控制及与外部通信等功能,实现发动机与传动系共同工作的最佳匹配[1 ,2 ]。作为质量保证的重要手段,软件测试技术的研究与应用,对提高AMT 控制系统软件质量并推动其产品化进程有着重要的意义。
2 自动变速控制系统软件测试基本概念
2.1 测试目的及对象
自动变速控制系统软件测试的目的是发现控制软件的错误,而不是去证明其正确性。在测试活动中,应始终把目标对准未被发现的隐藏错误。找出软件错误不只是找出程序中的错误,所有与软件开发有关的文档资料也应是软件测试的对象。据我们在开发过程中的统计表明,在查找出的软件错误中,属需求分析和软件设计的错误约占64%,而代码编写的错误仅占36%。所以自动变速控制系统软件测试的对象应包括软件需求分析、设计规格说明及程序代码等方面的内容。
2.2 测试原则
自动变速控制系统软件测试遵循如下原则:
(1)测试用例(Test Case)应由测试输入数据及对应的预期输出结果两部分组成,其设计必须兼顾有效与无效输入、正确与错误输入[3 ]。
(2)编程人员避免测试本人的程序,为此在自动变速控制软件开发小组中设置专业测试人员。
(3)检查一个模块是否完成了所有的功能,只是完成了测试工作的一半。另一半是要检查该模块是否还有预料之外的行为。
(4)充分注意测试中的群集现象。经验表明,测试后模块中残存的错误数与该模块中已发现的错误数或检错率成正比[4 ]。
(5)应在系统有错的假定下进行测试。
2.3 错误类型
就错误发生的环境而言,自动变速控制系统软件错误类型可分类如下:
(1)功能错误:文档不完整、有歧义、一致性差,从而导致对系统功能的误解。
(2)系统错误:包括与外部通信协议错误、参数引用及子程序调用出错、I/O 操作及I/O 地址错误、
中断处理错误、控制序列错误、资源分配出错等。
(3)过程错误:运算、初始化及逻辑错误等。
(4)数据错误:信息、参数与控制数据混淆、数据结构与属性错误等。
(5)编码错误:语法、变量名错;局部与全局变量混淆等。
2.4 测试信息流
自动变速控制系统软件测试过程中的信息流如图1 所示。 (图片)
图1 自动变速控制系统软件测试信息流 测试过程需要三类输入信息:①软件配置,包括软件需求规格说明书、软件设计规格说明书、源程序等;②测试配置,包括测试计划、测试用例、测试驱动程序等,在软件生存期过程中,它实际上只是软件配置的一个子集;③测试工具,指测试过程中为便于测试而使用的软件工具。
把测试结果和预期结果进行比较后可以得出是否有错的信息,如果有错需进行纠错处理,经改正后的软件(包括文档)需重新测试,直到错误消除为止。另一方面,可根据出错情况建立软件可靠性模型,用于可靠性预测。
3 自动变速控制系统软件测试分析方法
3.1 静态分析方法
静态分析的主要特点是无需运行软件系统本身,而是以一些人工的技术对自动变速控制系统软件开发各阶段所形成的软件配置进行测试,主要是对需求分析、设计和编码阶段的成果进行测试,以保证软件质量。经验表明,静态分析方法能够有效地发现30%~70%的需求分析、逻辑设计和编码错误,是一种行之有效的软件测试分析方法。
(1)软件需求规格说明书的静态分析
在自动变速控制系统软件需求规格说明书里,通常要给出软件系统的功能、性能及输入/输出。对这些进行静态分析,首先列出检查表(Check List),然后利用它逐项地做人工检查。在检查表中列出的各种可能出现问题的条目,这些条目反映以下特性:相容性、必要性、充分性、可行性及可测性。
(2)软件设计规格说明书的静态分析
在自动变速控制系统软件设计规格说明书包含有数学方程、算法、模块功能描述、模块的接口、数据流程图、程序流程图、存储数据结构等设计环节。同样也要列出检查表对这些设计环节进行分析。检查表条目体现相容性、必要性、充分性及正确性。
(3)源代码的静态分析
对源代码进行静态分析有两种方法:一是程序特性信息分析,即在获取程序特性信息之后用人工方法来查找错误。这些特性信息包括模块 (或子程序 )的调用关系、变量或其它符号名的交叉引用情况、模块的循环特性及模块的参数特性等;另外就是进行程序正确性分析,查找程序中特定类型错误或发现程序结构上异常现象。包括对模块逻辑结构错误、循环控制变量未被赋初值、数组使用越界、零做除数等情况的检查。
为提高静态分析的效率,人工测试的形式也很重要,在自动变速控制系统软件开发过程中常采用以下几种形式:
(1)桌前检查(Desk Checking)
在进行单元测试之间,由编程人员检查自己编写的程序(或模块),对源代码进行分析、检查,并补充相关的文档,目的是发现程序中的错误。检查项目包括:变量或符号的交叉引用表、模块 (或子程序 )的调用关系、标准、风格、控制流、选择/激活路径、与规格说明是否一致等。实施此方法时要求编程人员注意避免主观片面性。
(2)评审会(Inspection)
由有经验的编程人员主持(非软件的设计者或程序的编写者本人),吸收程序的作者或参加过设计的人员参加,也邀请有关专家和技术人员参加。
与会者在评审会前应研究过被评审软件的有关资料。会上由程序作者介绍任务来源和程序的编写与调试情况。参加者提出问题,作者回答,使用错误检查表(常见错误清单),逐步进行检查,其中涉及到数据引用、数据说明、计算、比较、控制流程、接口、输入和输出等方面。会议时间不太长,以保持审查的效率。评审会的目的只是为了发现问题。
(3)走查会(Walkthroughs)
会前工作与评审会相同,会上不是简单地读程序和对照错误清单进行检查,而是让与会者集体“充当”计算机。即会前由测试人员准备好有代表性的测试用例,提交给走查小组。会上由集体扮演计算机,让测试用例沿程序的逻辑“运行”一遍,随时记录程序踪迹,供分析和讨论之用。
3.2 动态分析方法
对自动变速控制系统软件进行动态分析是在运行(或仿真)程序(或模块)的条件下,取得程序(或模块)的动态特性信息,通过这些信息来发现软件配置中存在的错误。自动变速控制系统软件动态分析包括以下几个步骤:
(1)对软件需求规格说明书进行动态分析
典型的方法是黑盒测试(又称功能测试),即根据功能需求来设计测试用例,并通过测试结果来检验功能是否实现。
(2)对软件设计规格说明书进行动态分析
根据设计过程中所涉及到的计算公式、算法、模块功能及接口等设计环节设计测试用例,进行动态测试。从各个不同的设计方面设计不同的测试用例,使各个设计环节均能得到相应的验证。
(3)对程序(或模块)进行动态测试
一般采用白盒测试(又称结构测试或逻辑驱动测试)方法,即根据程序(或模块)的内部逻辑结构及有关信息(包括语句、分支、路径等)设计测试用例,对程序(或模块)的所有逻辑路径进行测试,通过不同点检查程序(或模块)的状态,确定实际的状态是否与预期的状态一致。白盒测试包括语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖等测试方法,从语句覆盖到路径覆盖测试强度呈递增的趋势。实际上,对于自动变速控制系统软件这种控制逻辑比较复杂的程序,其执行路径比较庞大,采用完全路径覆盖方法进行测试是不现实的且没有必要,通常的做法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,用于设计测试用例。
4 自动变速控制系统软件测试过程
自动变速控制系统软件测试过程分三步进行:单元测试、集成测试和确认测试。
4.1 单元测试(Unit Test)
又称模块测试,是针对自动变速控制系统软件实现的最小单位――程序模块进行检查,以发现各模块内部可能存在的各种错误。单元测试在模块编码阶段进行,各模块的测试可平行、单独地进行。一般使用白盒测试法。
单元测试的内容主要包括五个方面:模块接口、局部数据结构、重要执行路径、错误处理及边界测试。由于自动变速控制系统软件的模块本身并非独立的执行单位,为完成单元测试,往往需要编写一个驱动模块(Driver)和若干桩模块(Stub),前者相当于被测模块的主程序,后者则用来代替被测模块所调用的模块。模块的内聚性决定了单元测试的工作量。
4.2 集成测试(Integrated Test)
又称组装测试或整体测试。在单元测试的基础上,将各模块联接起来进行测试,发现并排除在模块连接中可能出现的问题。这些问题可能是:穿越模块接口数据丢失、一个模块功能对另一模块功能产生负面影响、各子功能组合后不能完成预期的父功能、全局数据结构的使用存在问题等。
选择什么方式将模块组装成一个系统,直接影响到模块测试用例设计、模块编号及测试顺序、生成测试用例的费用及调试费用等。常用的组装方式有两种:一次性组装和渐增式组装。
一次性组装首先对每个模块分别进行单元测试,然后再把所有模块组装在一起进行测试。这种方法试图在分别完成单元测试的基础上将所有模块连接起来进行测试,但实际上由于不可避免地涉及模块间接口和全局数据结构的问题,一次运行成功的可能性并不大,结果往往是发现有错误时查错和纠错都很困难。
对自动变速控制系统软件的组装方式应采用渐增式组装。即先对一个个模块独立进行测试,然后将这些模块逐步组装成较大的系统,在组装过程中边连接边测试,以发现模块连接过程中出现的问题,在规模渐增的过程中完成自动变速控制系统软件的组装。我们在实际中采用先自底向上( Bottom-up)将关键模块组装成功能比较完整且相对独立的子系统、然后再由主模块开始进行自顶向下(Top-down)组装的混合渐增式组装测试方式,其优点是在减少桩模块的同时,能及时发现主要控制方面的问题。
4.3 确认测试(Validation Test)
自动变速控制系统软件确认测试的任务是测试软件的功能、性能及其它特性是否达到用户要求,是对软件综合特性的全面测试。在这一阶段要完成有效性测试、软件配置复查、a 测试、b 测试及验收测试。
5 结束语
本文结合自动变速控制系统软件开发实践,对自动变速控制系统软件测试技术基本概念、测试方法和测试过程进行了较为全面的介绍。软件测试技术的研究与应用,有效地保证了自动变速控制系统软件质量,对其它汽车电控系统软件开发也有一定的借鉴意义。
参考文献
1 葛安林编著.车辆自动变速理论与设计.北京:机械工业出版社,1993
2 阴晓峰.车辆动力传动力自动操纵系统体系结构及支撑软件开发的研究:[博士学位论文].长春:吉林大学,2002.6
3 李伟华等.实时软件测试用例构造的充要策略研究.航空计算技术,1996,(2)
4 周之英编著.现代软件工程(上).北京:科学技术出版社,2000
5/30/2005
|