background image

是类或类的实例,也可以是网页中的一个按钮。单元测试可以发现编码问题或详细设计中的
错误,保证单元的最大覆盖率。嵌入式软件系统的单元测试通常在主机环境中进行,主机环
境中的运行测试速度明显快于目标环境。

 

  

2.2 集成测试。按照软件系统结构通过单元测试的模块集成起来进行的测试。使用白盒技

术和黑盒技术。集成测试可以发现系统架构和系统结构设计的缺陷。嵌入式软件的集成测试
通常也在主机环境中进行。

 

  

2.3 系统测试和确认测试。系统测试是对集成的软、硬件系统进行的测试。检验系统是否

符合需求规格说明书的要求。包括对系统功能、性能、接口、系统界面、可靠性、安全性等的全
面测试。使用黑盒技术进行测试。确认测试是对系统的有效性测试,使用黑盒技术。嵌入式软
件的系统测试和确认测试依赖目标环境,需要在目标环境中真实有效的反应嵌入式系统的
功能,所以需要在目标环境中进行测试。

 

  

3 嵌入式软件测试技术 

  

3.1 嵌入式软件白盒测试技术。白盒测试指从程序内部的逻辑结构出发来设计测试用例

的方法。又被称为结构测试、逻辑驱动测试。嵌入式软件的白盒测试的关键技术主要包括:词
法语法分析、静态结构分析、插桩分析等。

 

  语义分析和静态结构分析属于静态测试技术,静态测试技术指被测系统并不运行,而
是从软件的编程格式以及代码结构等方面对进行程序特性的分析。程序插桩则属于动态测试
技术,所谓动态测试指实际运行被测程序,通过测试用例的输入,对软件运行情况进行的
分析,主要是分析软件输入与输出的对应关系。

 

  (

1)语义分析。语义分析之前首先要进行词法、语法分析。词法语法分析主要是分析程

序的结构。一般和程序设计语言有关。词法分析的主要目的是识别程序中的单词,这个阶段
需要对源程序进行由左到右、由上到下逐个字符的读入操作,用来根据构词规则识别单词符
号。语法分析要在词法分析的基础上进行,主要目的是识别程序中的关键字、表达式、语句、
函数等,用来判断程序的逻辑结构是否正确。经过语法分析后源程序在结构上应该是一个规
范的,这时要进行有关上下文性质的检查,这就是语义分析,也就是源程序的类型审查。通
常我们可以借助工具进行语义分析。比如:

Yacc 工具。 

  (

2)静态结构分析。静态结构分析通常借助测试工具来进行,是以图形的表现形式来

表示程序的内部结构的方法。包括源程序的数据结构、控制逻辑、系统结构等内部结构。使测
试人员对程序结构的分析更加直观。

 

  (

3)程序插桩技术。程序插桩属于动态测试。程序插桩技术是借助向被测程序中插入探

针操作,通过验证探针返回的数据来实现测试目的的方法。通过程序插桩技术可以获得程序
逻辑覆盖等动态信息。最常用的插桩方法是在程序中插入一些打印或输出语句,来获得程序
的控制流、数据流等信息。

 

  程序插桩测试的流程如图

1 所示。编译通过的代码进行程序插桩,在宿主机上编译。如

果编译通过则转到目标机中执行,目标机将程序执行后的数据返回到宿主机,并由宿主机
处理数据。

 

  图

1 程序插桩测试流程 

  (

4)覆盖率分析。代码的覆盖率是衡量代码可靠性的重要指标。 覆盖率分析是能够消

除测试套件中缝隙的结构化测试技术。覆盖率分析可以通过程序插桩来实现。嵌入式软件的
覆盖率分析通常借助工具来实现。

 

  

3.2 嵌入式软件黑盒测试技术。通常,对嵌入式软件进行白盒测试完毕,需要对其进行

黑盒测试,主要包括功能测试、接口测试和性能测试等方面。常用的黑盒测试技术包括常用
的等价类划分法、边界值分析法、因果图与决策表法、功能图法等等,这些黑盒测试方法所关
注的重点是如何设计出合理、有效的测试用例。通过执行测试用例,分析预期结果与实际结