APP下载

基于VxWorks平台的嵌入式实时软件测试方法

2010-06-05袁阳槐博超陈巨龙

船电技术 2010年8期
关键词:嵌入式软件软件测试实时性

袁阳 槐博超 陈巨龙

(1. 海军驻葫芦岛431厂军事代表室, 葫芦岛 125004;2. 中国船舶重工集团公司第712研究所,武汉 430064)

1 引言

随着计算机技术应用的不断普及,嵌入式实时软件在航空、航天、工业控制、交通、医疗和军事安全等诸多领域发挥着愈来愈重要的作用。

VxWorks是美国Wind River公司推出的一种高性能、可裁减的嵌入式实时操作系统,由于其良好的可靠性和卓越的实时性被广泛应用在通信、军事、航空、航天等实时性要求极高的领域。Tornado是用于VxWorks嵌入式系统的交叉开发环境,运行在主机上,利用 Target Server-Agent模式建立主机与目标机的交叉开发环境[1]。

2 嵌入式实时软件测试

由于嵌入式实时软件固有的嵌入性和实时性的特点,表现为嵌入式实时软件的开发环境(宿主机)和运行环境(目标机)的不一致,及嵌入式实时软件的运行环境的硬件资源比较匮乏[2]。

目前,对嵌入式系统的质量控制多停留在以硬件为主,软件为辅的阶段,问题的关键在于对嵌入系统的软件的开发和测试缺乏行之有效的手段和工具[3]。而嵌入式系统往往应用在通信、工控、航天、军事等对产品质量要求非常严格的领域,对嵌入式软件实时性要求高,又常用于一些关键性任务的控制管理,所以,寻求有效的嵌入式软件测试方法成为提高嵌入式系统质量关键所在。

2.1 嵌入式实时软件测试的手段

根据测试所处的运行环境的不同,软件测试的手段可分为两类:静态测试和动态测试。

静态测试,相当于测试人员对代码进行走查的过程,它主要是为软件的质量保证提供依据,以提高软件的可靠性和易维护性。静态测试无须执行被测代码,而是借助专用工具评审软件文档或程序,对代码的一些静态指标进行分析,借以发现程序的不足之处,减少错误出现的概率。静态测试一般由纯软件在主机上即可完成,不需要下载到目标机,不需硬件支持。

动态测试,是使被测代码在真实环境下有控制地运行,对代码在运行情况下能体现的功能、逻辑、行为、结构等多角度观察程序运行时的行为,以发现其中的错误现象。对于嵌入式系统,要想保证测试的真实性,就需将被测代码下载到目标机运行,并且测试系统不要影响原有系统的运行,就需一定硬件支持。动态测试根据测试代码层次的不同,又可以分为单元测试和系统测试。

由于软件静态测试只需要在主机上进行,方法简单,工具较多,本文主要探讨嵌入式软件的动态测试方法。

2.2 嵌入式实时软件测试的结构[4,5]

由于嵌入式实时软件的特点,嵌入式实时软件测试必须基于嵌入式实时软件目标机进行测试工作,典型的嵌入式实时软件测试结构如图1。

图1 嵌入式实时软件测试结构图

该测试结构中,最核心的是目标机测试代理机制,测试代理服务器与主机测试环境通讯,根据主机测试环境发送来的测试代码,监视被测试嵌入时软件的运行,并将测试数据发送给主机测试环境。由于目标机的资源相对匮乏,测试所得的信息在目标机上不便分析,通过主机和目标机之间的通信把测试所得信息上传回主机,再由主机中的测试结果分析工具对测试信息进行分析。

2.3 嵌入式实时软件测试的步骤

针对图1所示的嵌入式实时软件测试结构,实时嵌入式软件测试的一般步骤是:在测试开始前制定测试计划,在主机上根据不同的测试目的选择相应的测试用例,生成测试脚本,通过脚本解释器实时解释非实时生成的测试命令,并将测试命令和数据通过目标机测试代理发送至被测试目标系统;测试代理接收测试命令后运行被测试实时嵌入式应用软件,被测试软件将测试后生成信息发送到测试代理中的一个专门任务的消息队列中,此任务负责在适当的时候将这些信息发送到主机方,再由主机对测试结果进行分析和处理[6]。

3 LDRA Testbed嵌入式软件测试工具

Testbed是 LDRA公司开发的专业性软件测试工具,不仅适合于主机平台软件测试,同时适合于嵌入式平台的软件测试。LDRA Testbed主要用于在软件编程、软件测试与软件维护阶段,以提高软件产品的质量、提高软件产品开发效率、缩短开发周期。

3.1 Testbed嵌入式软件测试功能

LDRA Testbed针对基于Tornado的开发环境能够提供从编码阶段的静态分析开始,包括单元测试,系统测试的一整套的测试和质量保证手段。

1) 静态分析

LDRA Testbed的静态分析是在对源代码的语法分析的基础上进行的,因此在编码的同时就可以使用 LDRA Testbed对代码进行相关的分析和检查,具体包括如下内容:编码规则验证、复杂度分析、静态数据流分析、信息流分析、交叉索引分析、数据对象分析等。

2) 单元测试

LDRA Testbed在单元测试阶段,其单元测试模块TBrun可以自动对被测软件进行代码插装,以获得被测软件的动态执行信息,供 Testbed作动态测试分析。通过目标平台配置工具TBconfig能够很方便的完成TBrun和Tornado的集成配置。

3) 系统测试

LDRA Testbed针对VxWorks和Tornado开发环境提供了多种模式来进行系统级的测试:

(1)纯软件模式的系统测试

VxWorks在真实目标机上运行时是可以支持文件系统的,因此可以用最传统的方式进行系统级的测试。即采用与主机平台一样的插装模版进行插装,然后将插装后的代码编译链接在目标机上运行,插装后的程序会将相应的测试信息写到目标机的一个文件里去;在测试完成后或者测试进行到一定程度将该数据文件传送到主机用Testbed进行分析,就可以得到相应的测试结果。

由于这种模式要进行文件的读写操作,所以对系统的实时性影响较大,因此我们在实际测试时基本不使用该模式。

(2)增强的软件模式的系统测试

基于 Tornado的开发环境提供的强大的功能,再结合LDRA Testbed的BITMAP插装技术,插装后的代码在目标机运行的时候将相应的特征值信息放到一个大小固定的数组中;当测试进行到一定阶段,需要对覆盖率信息进行分析时,通过Tornado的shell将该数组的内容读取回主机进行分析即可。

增强的软件模式的系统测试方法具有对系统实时性影响小,工程实施方便等特点,在大量的实际项目的测试中被广泛使用,并且效果极好。

(3)软/硬件结合模式的系统测试

对于系统有极端实时性要求,并且关心系统运行性能的情况,就需要采用软/硬件结合的模式。该模式需要使用硬件数据采集器 RTInsight和目标机的硬件总线进行连接,在被测程序中插入的是向端口赋值的语句。

在这种模式下,对系统的实时性影响和资源占用都是最小的,但是该模式需要进行硬件连接,导致其工程实施性不如软件模式好,但是其功能要多一些。

3.2 LDRA 单元级软件测试工具TBrun

单元级软件测试已经被公认为行之有效的软件测试方法,使用单元级软件测试可在软件开发早期发现软件故障或缺陷,从而提高软件可靠性,减少软件测试开销。

传统的用于单元级软件测试采用人工方式编写测试驱动与桩模块,因此具有测试程序可靠性低、开销大、依赖于测试人员经验等问题,同时由于大多数测试时间花费在编写测试程序上,因此测试人员积极性不高,给软件测试效果带来影响。有鉴于此,LDRA公司成功开发出单元级测试工具TBrun可自动帮助测试工程师进行单元级软件测试。使用TBrun可自动产生软件测试驱动、桩模块,从而节省时间,测试人员可将重点放在设计测试用例上,提高软件测试效率,同时提高软件测试人员效率。

3.3 嵌入式软件测试工具RTInsight

RTInsight充分考虑到嵌入式软件实时性特点,结合使用LDRA公司静态分析与代码自动插装技术,及 RTInsight硬件可实时地嵌入式系统进行代码覆盖率分析与性能分析。由于采用代码插装可准确的判断代码执行情况,同时由于采用RTInsight高速虚拟端口技术使得代码插装量可控制在每个特征点(即函数入口、出口,程序分支点)一到两条指令或语句(代码增加量可控制在 10%之内),大大减少插装代码增加对被测系统的影响。可成功用于实时嵌入式系统集成与系统测试,提供代码覆盖率分析、性能分析、变量监控、堆栈监控及系统跟踪功能。RTInsight实物图如图2所示。

图2 RTInsight实时监控器

RTInsight通过通用探头或专用探头与目标系统RAM芯片插座、CPU插座或专用总线(如PC104)相连,支持所有8位、16位及32位微处理器与微控制器。支持汇编语言,C/C++语言,ADA语言。

4 结束语

根据嵌入式系统的特点,我们提出了嵌入式实时软件的测试结构,并以LDRA Testbed工具为例介绍了嵌入式实时软件的测试的内容和方法。该工具集已经成功应用于某型潜艇电力推进系统嵌入式实时软件的测试,取得了很好的测试效果。

[1]陈智育, 温彦军, 陈琪编著. VxWorks程序开发实践[M]. 北京:人民邮电出版社,2004.5.

[2]陈敬原编著. VxWorks软件开发项目实例完全解析[M]. 北京:中国电力出版社,2005.10

[3]康一梅, 张永革. 嵌入式软件测试[M]. 北京: 机械工业出版社, 2008.7

[4]陈琦, 钱红兵等. 一种基于仿真器的嵌入式软件测试方法[J]. 计算机工程与科学,Vol.28, No.A2, 2006.

[5]Beque, L.T., Pra, T.D., Cota, E. Testing Requirements for an Embedded Operating System. Test Workshop,2009. LATW '09. 10th Latin American, March 2009.

[6]Liu Shuping, Pang Ling. The Research of V Model in Testing Embedded Software. Computer Science and Information Technology, 2008.

猜你喜欢

嵌入式软件软件测试实时性
基于OBE的软件测试课程教学改革探索
航天软件测试模型构建与应用
基于人工智能的模块化嵌入式软件开发研究
EXCEL和VBA实现软件测试记录管理
全景相机遥控器嵌入式软件V1.0 相关操作分析
航空电子AFDX与AVB传输实时性抗干扰对比
计算机控制系统实时性的提高策略
软件测试工程化模型及应用研究
基于Eclipse的航天嵌入式软件集成开发环境设计与实现
航天嵌入式软件浮点运算误差分析与控制