欢迎来到学术参考网

试论嵌入式软件测试

发布时间:2015-08-11 09:17

摘 要:本文通过对嵌入式软件测试概念、特点、环境、难点以及策略的分析来阐述了嵌入式软件测试。

关键词:嵌入式;软件测试;环境;难点;策略
一、 嵌入式软件测试概述
(一) 嵌入式软件测试的概念
  嵌入式软件测试又叫交叉测试(cross一test),其目的和非嵌入式软件是相同的。在嵌入式系统设计中,硬件慢慢都被软件取代,此时就需要更好的测试方法和工具进行嵌入式和实时软件的测试来降低系统的成本,从而增加灵活性。在可靠性方面,嵌入式系统的要求是比较高的。在安全性方面,如果其安全性失效,那么可能会导致灾难性的后果。此时嵌入式软件就必须进行严格的测试、确认和验证。
(二) 嵌入式软件测试的特点
  嵌入式软件测试有以下几方面的特点:(1)只有在特定的硬件环境下,嵌入式软件才能运行。(2)除了上述的必须保证在特定硬件环境下外,还要保证嵌入式软件的实时性。(3)嵌入式软件测试除了要进行性能测试、GUI测试、覆盖分析测试外,由于嵌入式软件不允许内存在运行有泄漏的情况出现,因此还需要对内存进行测试。(4)使嵌入式产品能够在满足所有功能的同时安全可靠地运行是嵌入式软件测试的最终目的,因此还要进行产品测试。
二、 嵌入式软件测试环境
(一)嵌入式软件仿真测试环境
  1.全实物仿真测试环境
  在全实物仿真测试环境中,被测软件处在完全真实的运行环境中,直接将整个系统(包括硬件平台和嵌入式软件)和其交联的物理设备建立真实的链接,形成闭环进行测试。全实物仿真测试侧重于对被测系统与其它设备的接口进行测试。对测试环境的要求相对较低。
  2.半实物仿真测试环境
  半实物仿真测试环境是利用仿真模型来仿真被测系统的交联系统,而被测系统采用真实系统。所有被测系统由输入、输出关系的设备以及他们之间的I/0接口所构成的硬件与软件的综合成为被测系统的交联环境。测试环境需要对被测软件进行自动的、实时的、非侵入性的闭环测试,要求能够逼真地模拟被测软件运行所需要的真实物理环境的输入和输出,并且能够阻止被测软件的输入来驱动被测软件运行,同时接受被测软件的输出结果。
  3.全数字仿真测试环境
  全数字仿真测试环境是指仿真嵌入式系统硬件及外围环境的一套软件系统。全数字仿真环境是通过CPU控制芯片、拍、终端、时钟等仿真的组合在宿主机上构造嵌入式软件运行所必须的硬件环境,为嵌入式软件的运行提供一个精确的数字化硬件环境模型。全数字仿真测试是三类测试用对测试环境要求最为复杂的一种。
(二)交叉测试方式
  采用串口通信方式对于主机和目标机之间的通信连接,其实也可以以太网口,一般基于TCP/IP协议传输。通用软件的调试与嵌入式软件的调试存在明显的差异。在嵌入式操作系统中,开发主机和目标机处于不同的机器中,可以通过交叉调试(cross Debug)的方式来实现主机要对目标机程序进行调试及测试控制、捕捉目标机上被测试程序是否正常接受测试数据。交叉调试也称远程调试(Remote Debug),即调试器在宿主机的桌面操作系统上运行,而被调试/测试程序在目标机的嵌入式操作系统上运行。在运用交叉调试时,调试器以某种方式控制被调试进程的运行方式是被允许的,并具有查看和修改目标机上内存单元、寄存器以及被调试进程中变量值等各种调试功能。这种方式有效地解决了主机如何对目标机程序进行测试控制,也就是解决了交叉测试的第二个问题。
(三)插桩技术
  在动态测试中,插桩技术是一种基本的测试手段,对源程序进行一些语句的添加,其测试目的的实现主要是通过对程序语句的执行、变量的变化等情况进行检查。对程序进行动态测试时,一般要使用程序插桩来进行覆盖测试。程序当前的状态主要是通过插桩点来进行捕获。插桩语句植入被测试的源程序,在插桩函数库中定义插桩语句,在目标文件连接成可执行文件时,必须连入插桩函数库。
三、嵌入式软件测试的难点
  首先,设计者的分析、理解和设计能力决定测试用例和测试例程是否能够正确的反映对被测对象的质量要求。测试用例及测试例程缺乏指导性方法的、需要技巧的设计活动。其次,在测试管理方面的资料目前是比较缺乏的,几乎没有可供参考的、已实现的测试管理与测试实施模式。再次,嵌入式软件测试的有效实施需要开发组织与测试组织充分配合。最后,在测试工作中,人力和物力的充分投入是必须的,充分估计工作的难度和消耗。
四、嵌入式软件测试的策略
  嵌入式软件测试又称交叉测试,其在测试的各个阶段有着通用的策略:
(一)单元测试
  对于单元测试来讲,除非特别指定单元测试在目标环境下进行,其它所有的单元级测试都可以在主机环境进行。在主机平台上运行测试速度要比目标平台上快,当在主机平台完成测试,还可以在目标环境中做一遍简单的确认测试,测试结果不会受主机和目标机的不同而不同。目标环境进行确认测试主要是为了确定一些未知的,为预料到的,未说明的主机与目标机的不同。例如,目标编译器可能有bug,但在主机编译器上没有。
(二)集成测试
  软件集成也可在主机环境上完成,在主机平台上模拟目标环境运行,当然在目标环境上重复测试也是必须的,在此级别上的确认测试将确定一些环境上的问题,比如内存定位和分配上的一些错误。在主机环境上的集成测试的使用,依赖于目标系统的具体功能有多少。有些嵌入式系统与目标环境藕合的非常紧密,若在主机环境做集成是不切实际的。一个大型软件的开发可以分几个级别的集成。低级别的软件集成在主机平台上完成有很大优势,越往后的集成越依赖于目标环境。
(三)系统测试和确认测试
  所有的系统测试和确认测试必须在目标环境下执行。当然在主机上开发和执行系统测试,然后移植到目标环境重复执行是很方便的。对目标系统的依赖性会妨碍将主机环境上的系统测试移植到目标系统上,况且只有少数开发者会卷入系统测试,所以有时放弃在主机环境上执行系统测试可能更方便。确认测试最终的实施舞台必须在目标环境中,系统的确认必须在真实系统之下测试,而不能在主机环境下模拟。这关系到嵌入式软件的最终使用。使用有效的CROSS一test测试策略可极大的提高嵌入式软件开发测试的水平和效率。
参考文献:
[1] 王奉国,刘宏生. 某嵌入式软件可靠性仿真测试系统设计与实现[J].电子测试, 2009,(03) .
[2] 章亮,刘斌,陆民燕. 嵌入式软件测试开发环境的框架设计[J].北京航空航天大学学报, 2005,(03) .
[3] 杜晓东. 面向嵌入式系统的测试工具研究[D].电子科技大学, 2003 .

上一篇:软件安全漏洞自动化识别原理评析

下一篇:除尘间控制系统的设计与实现