1、引言

  随着软硬件技术的发展,嵌入式系统在生产、生活以及军工等各项领域中都有着越来越广泛的应用。嵌入式系统的功能越来越强大,相应地,其核心控制软件的规模也变得越来越庞大,复杂性也越来越高。如何开展有效的嵌入式软件测试,提高嵌入式系统的质量和可靠性,成为目前软件测试领域亟需解决的问题。另一方面,软件工程化是各个软件组织所追求的目标,按工程化的原则和方法组织嵌入式软件测试工作,探索出一个有效的嵌入式软件测试工程化方法,对提高嵌入式软件的质量和效率以及增强软件组织自身的软件测试能力具有极其重要的意义。

  2、嵌入式软件的特点

  与通用计算机软件相比,专用性是嵌人式软件固有的特点。嵌入式软件只能在需求所指定的硬件平台上执行,通常其开发平台与应用平台是分离的,并且执行状态受资源和时间的约束。

  嵌入式软件往往作为一个嵌入式系统的组成部分,与其他组成部分之间通过各种方式进行交互。嵌入式软件通过传感器接收信号,给动作器发送输出信号,动作器控制着真实的物理环境。此外,嵌入式软件还可能通过各种类型的I/O接口或总线与其他系统交联,进行信息的交互。虽然不同的嵌入式系统其核心软件在功能和性能上千差万别,但总体上,嵌入式软件所实现的功能大致包括以下基本模块:系统初始化、任务调度、数据解算、时序控制、I/O通信、定时管理、中断管理、任务间的通信/同步/互斥管理及内存管理等。

  嵌入式软件的这些特点决定了对其进行测试的复杂性和困难度,嵌入式软件的测试仍然是目前测试行业的难点之一。近研究…表明,超过50%的嵌入式软件开发项目比计划延迟数月;仅44%的设计满足了既定功能和性能的20%;超过50%的开发精力花费在测试上。

  3、嵌入式软件测试的重要性

  在嵌入式系统设计中,软件正越来越多地取代某些硬件的功能,这样可以降低系统的成本,获得更大的灵活性。嵌人式系统的质量和可靠性越来越依赖于嵌入式软件的质量和安全性。

  嵌人式系统中软件所占的比重越来越大,相应的由嵌入式软件失效而引起的故障比例也越来越大。根据美国宇航局NASA的统计,在2O世纪80年代初,软件与硬件引起的故障比率约为1.1:1.0,到了20世纪80年代末,这一比率已达到2.5:1.0。在我国的武器装备系统研制过程中,由于近年来广泛采用了比较先进的电子技术、计算机技术和信息技术,给我国武器装备的性能带来了革命性的变化_2J。但是在研制或者使用过程中,大量的故障都来源于软件的因素,不仅影响装备的研制进度,甚至造成设备损害和人员伤害。因此,提高嵌入式软件的质量成为目前迫切需要解决的问题。众所周知,软件测试是保证高质量、高可靠性软件的重要手段,对嵌人式软件来说更是如此。实践证明,在软件开发过程中,通过软件测试来发现其中的缺陷是提高软件质量和可靠性的一种非常有效的方法。目前,许多软件开发组织在嵌入式软件的研制过程中已深刻认识到软件测试的重要性,也或多或少地开展嵌入式软件的测试工作,但是缺乏一个行之有效的工程化方法指导。这样使得开发组织在着手开展嵌入式软件测试时常常无从下手,从而导致测试过程缺乏计划性、进度经费不可控、有效性无法保证等情况的发生,难以适应现代软件工程的需要。

  4、嵌入式软件测试工程化

  软件工程包括方法、工具和过程三方面的因素。软件测试是软件工程中的一个子过程,为使软件测试工作系统化、工程化,必须合理组织软件测试过程,制定测试计划、组织测试人员、建立测试环境、监控项目进展等。

  4.1 软件测试过程模型

  及其产生的输出包括如下方面。

  1)制定测试计划:依据测试需求,确定测试范围、测试方法、测试环境、启动准则、评价准则、完成准则、工作步骤、人员、进度等。

  2)制定测试说明:细化测试计划的有关内容,根据相关文档设计测试用例,制定测试规程,给出相关的说明,并建立测试环境。

  3)执行测试:执行测试用例,记录测试结果,记录发现的缺陷。跟踪问题,必要时补充测试用例,进行回归测试,直至问题处理完毕。

  4)评估测试:依照评价准则,评价测试工作,当发现测试工作不足时,应修订测试计划,重复步骤1),直到测试完备时止。