5)测试总结:总结测试执行情况,统计软件问题数量和

  大体上来讲,嵌入式软件测试过程的框架、基本测试活动类型,生成测试报告。图1给出了嵌入式软件测试的过程模型,该模型已成功运用于嵌入式软件测试实践中。软件测试与软件开发一样,自动化程度还很低,在测试过程中人是决定性的因素,必须协调好相关人员之间的职责划分和关联关系。在测试活动中,不同的人员各自担负着一个或多个角色,每个角色承担着一定的职责。各个角色的工作内容之间存在着一定的关联,这要求每个角色的工作必须按照计划有序地进行。同时,各种角色之间还必须建立及时有效的协同工作模式,以及交流和沟通的手段。与测试活动相关的人员角色主要有:测试负责人、测试人员、开发人员、配置管理人员、质量保证人员等,在测试过程中各角色及其职责。

  此外,与通用计算机软件的测试过程相比,嵌入式软件测试过程中对测试环境有特殊的要求,针对不同类型的嵌入式软件以及在测试过程的不同阶段应建立良好的测试环境以满足测试的要求。良好的测试环境包括已加载到目标计算机的并在目标计算机环境的高逼真仿真中经过测试的软件。为了提高测试的可信度,应使用目标计算机仿真器或宿主机模拟器来完成测试,因为某些错误仅在这个环境中才能检测到。后,为了保证软件测试项目按预定的计划进行,对测试过程进展要实施监控。监控是以计划为基础的。监控项目包括进度监控、人员监控、经费监控和质量监控。

  4.2 嵌入式软件测试方法与技术

  嵌入式软件由于自身的特点,决定了不同的嵌入式软件必须有不同的测试方法,但对它们的测试仍然还是存在着许多类似的需求和类似的解决方案。

  首先,嵌入式软件测试按测试阶段可分为单元测试、集成测试、确认测试和系统测试。

  1)单元测试:找出软件单元编写时产生的错误以及软件单元编写与软件设计的偏差,内容包括软件单元的功能测试、接口测试、重要执行路径测试、局部数据结构测试、语句覆盖和分支覆盖测试。单元测试主要采用白盒测试方法,且一般可以在宿主机环境中进行。

  2)集成测试:检验软件单元和(或)软件部件间的接IZI关系,逐步将软件单元和(或)软件部件集成为一个新的符合设计要求的软件部件,终形成软件配置项。测试内容包括软件单元之间的接口测试、软件部件的功能测试、全局数据结构测试。集成测试主要采用黑盒测试和白盒测试相结合的方法,可在宿主机或目标机环境中进行。

  3)确认测试:对软件系统进行全面的测试,确保软件系统满足需求并且遵循设计。测试内容包括功能测试、性能测试、边界测试。确认测试主要采用黑盒测试方法,一般在目标机环境中进行。    4)系统测试:在真实系统工作环境下检验完整软件配置项是否能和系统正确连接,并满足软件研制任务书的功能和性能要求。系统测试采用黑盒测试技术,且要求与系统其余部件综合起来作为整体在目标机环境中进行。

  其次,嵌人式软件测试可采用代码审查、静态分析和动态测试等技术。代码审查无须执行被测代码,而由同行专家根据软件需求和设计文档对源程序进行全面审查,借以及早发现程序的不足之处,减少后续出现错误的概率。静态分析也不必运行被测代码,而是借助专用的软件工具对源程序进行各种分析,如编码规则检查、变量定义分析、数据流分析、圈复杂度分析等。试图在软件设计早期能发现程序尽可能多的潜在缺陷或错误。一段复杂的很难理解的代码虽然不一定是错的,但它是很难维护的,也是不可靠的,因为它隐含错误的可能性很大,且不易发现。通过静态分析,可有效提高软件开发的质量,减少在后续测试阶段出现错误的概率。动态测试是使被测代码在真实环境下有控制地运行,对代码在运行情况下能体现的功能、逻辑、行为、结构等多角度观察程序运行时的行为,以发现其中的错误。

  再次,从测试方法上讲黑盒测试和白盒测试构成动态测试的基本内容。黑盒测试是把程序看成是一个内部不可见的黑盒,测试者无需顾及程序内部结构、语句、分支、路径等的情况,只需根据需求,设计相应的测试用例,根据输出结果判断程序功能以及性能的正确性。白盒测试是一种对程序内部的逻辑结构和编码结构进行测试的方法。这种测试方法主要考虑程序的控制流和数据流测试,如语句覆盖、分支覆盖、路径覆盖以及内存数据异常等的测试。在嵌入式软件的测试过程中,如果只进行黑盒测试,限于测试用例的有限性,总会有一部分代码分支的运行结果难以被检测到,即使将软件需求中的功能都检测到了,仍无法对测试进行充分性判别,因此,要确保嵌入式软件的测试质量,在开始黑盒测试之前必须进行足够的白盒测试。