3、常规软件测试方法

  嵌入式系统中与目标环境无关的大部分测试工作可以在PC平台上完成,这可以充分借用PC软件的测试方法。

  3.1 静态测试和动态测试

  静态测试(Static Test)包括代码检查、静态结构分析等,是指对软件文档或程序进行扫描分析,无需运行程序,与嵌入式环境无关。人工或借助专用的软件测试工具评审软件文档或程序,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处。

  动态测试(Dynamic Test)是指选择适当的测试用例,实际运行被测代码,观察代码运行时所体现的功能、逻辑、行为、结构等,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能。

  3.2 黑盒测试和白盒测试

  白盒测试和黑盒测试是动态测试的两种主要方法。

  白盒测试又称为结构化测试,是一种基于结构的测试,主要进行软件的控制流测试(语句覆盖、分支覆盖等)和数据流测试。覆盖率和性能是衡量软件质量的重要指标,也是白盒侧试的主要内容。白盒测试主要测试依据是软件设计,它对软件内部工作过程的细致检查,允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。

  黑盒测试又称为功能测试或行为测试,是一种基于需求的测试,目的是验证被测软件是否符合软件的需求。它着眼于软件的外部结构,不考虑程序的逻辑结构和内部特性,仅依据软件的需求规格说明书,在软件界面上检查程序的功能是否符合要求,以此判定测试结果的正确性。黑盒测试不是白盒测试的替代品,而是辅助白盒测试发现其他类型的错误。嵌人式软件的黑盒测试一般在嵌入式系统上进行,不需借助于测试工具和测试平台。

  3.3 单元测试和集成测试

  单元测试和集成测试是软件测试的两个阶段。

  单元测试又称模块测试,是指依据详细的设计描述对每一个功能相对独立的程序模块逐个测试,多个模块可以平行的独立进行单元测试。所有单元级测试都可以在主机环境上进行,除非少数情况,特别具体指定了单元测试直接在目标环境进行。在主机平台上运行测试的速度比在目标平台上快得多,当在主机平台完成测试时,可以在目标环境上重复作一次简的确认测试,确认测试结果在主机和目标机上没有被它们的不同影响。

  集成测试是指在单元测试的基础上,将所有模块按照设计要求组装起来进行测试,主要测试内容有程序模块间的接口参数传递、集成后的功能实现以及模块间的相互影响等。软件集成可在主机环境上完成,在主机平台上模拟目标环境运行,当然在目标环境上重复测试也是必须的,在此级别上的确认测试将确定一些环境上的问题,比如内存定位和分配上的一些错误。在主机环境上的集成测试的使用,依赖于目标系统的具体功能有多少。有些嵌入式系统与目标环境耦合的非常紧密,若在主机环境做集成是不切实际的。一个大型软件的开发可以分几个级别的集成。低级别的软件集成在主机平台上完成有很大优势,越往后的集成越依赖干目标环境。由于嵌入式软件终要运行在目标环境中,所以必须在实际运行环境中,将嵌入式软件与计算机硬件、外设、某些支持软件、数据和人员等元素结合在一起,对整个系统进行的测试。