background image

嵌入式系统是否由于测试环境的移植而受到影响。由于受到硬件目标环境资源不足、测试结
果输出方式等限制,嵌入式软件的确认测试一般采用黑盒测试方案。

 

  

2 嵌入式软件测试技术 

  

2.1 静态测试技术 

  静态测试可以充分发挥人的逻辑思维能力,包括代码检查、静态结构分析以及代码质量
度量等方式。

 

  (

1)代码检查。代码检查主要包括对嵌入式软件开发的代码审查、代码走读等工作。代

码检查的内容主要包括分析代码是否遵循嵌入式软件设计、开发标准,数据是否正确,接口
是否正确等内容。

 

  代码检查能够快速地找到嵌入式软件的缺陷,可以发现

70%以上的编码和逻辑设计缺

陷。因此,在实际应用中,代码检查可能比动态测试更加有效。

 

  (

2)静态分析。静态分析是借助测试工具对软件代码进行分析的方法,只可以分析是

否存在内存泄露等特定的缺陷,受其他模块的影响较小。静态分析主要包括对数据流的分析、
对控制流的分析以及对软件度量的分析等。

 

  嵌入式软件的静态测试,主要是通过开发、测试人员对软件源代码进行审核分析,不需
要进行测试用例的设计,因此嵌入式软件不需要特定的测试环境。

 

  

2.2 动态测试技术 

  根据是否需要了解软件内部结构的区别,嵌入式软件的动态测试包括黑盒测试和白盒
测试两种。

 

  (

1)白盒测试技术。在对嵌入式软件进行白盒测试时,需要对软件进行如下几个方面

的检查:至少对系统中所有独立路径进行一次测试;至少在循环限内和循环边界对循环测
试一次;对所有的逻辑判定都需要测试一次;对内部数据结构的有效性进行测试。

 

  与通用的

PC 应用软件相比,嵌入式软件的白盒测试需要更高的代码覆盖率。而且嵌入

式软件的白盒测试不需要在目标硬件环境中运行。

 

  (

2)黑盒测试技术。黑盒测试需要知道用户需要哪些功能,可能会遇到什么样的问题,

在嵌入式软件自动化测试时,采用黑盒测试技术较为方便。但是,黑盒测试的代码覆盖率较
低,一般仅为总代码量的

30%左右。 

  

2.3 覆盖测试技术 

  覆盖测试技术根据嵌入式软件的内部结构来进行测试用例的设计,是白盒测试技术的
一种。覆盖测试的基本准则是:所设计的测试用例要能够尽可能覆盖嵌入式系统的内部结构,
从而发现嵌入式系统的问题和错误。覆盖测试的内容包括提高测试覆盖率、未被测试用例激
活代码的测试、代码冗余检测等。因此,覆盖测试也是一个提高软件质量的手段,覆盖测试
一般在嵌入式系统的单元测试中应用。

   2.4 程序插桩技术 

  程序插桩技术是覆盖测试的一个重要实现手段,其含义就是通过对程序测试状态的跟
踪,来发现嵌入式软件中的缺陷。

 

  程序插桩的基本思想包括:

 

  (

1)探针插入。可以在嵌入式程序中插入计数器、打印语句或者赋值语句来采集程序运

行状态。

 

  (

2)探针编译。根据设计好的测试用例,重新编译嵌入式软件,通过执行探针来获取

嵌入式软件执行的动态信息。

 

  (

3)特征数据处理。对特征数据进行分析和处理,从而获得嵌入式软件的数据流或者

控制流信息,并且最终得到嵌入式软件的判定覆盖、语句覆盖等信息,并且形成最终报表。

 

  由于嵌入式软件运行的真实运行环境往往会受到输出方式的限制,为此嵌入式软件的
程序插桩测试通常都采用宿主机和目标机结合的方式,其测试流程如图

1 所示。