白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试。采用这一测试方法,测试者可以看到被测的源程序,用以分析程序的内部构造,并且根据其内部构造设计测试用例。这时测试者可以完全不顾程序的功能。白盒测试方法又包括逻辑覆盖、符号测试、路径分析、程序插桩和程序变异等基于软件内部结构的测试技术。白盒测试与代码覆盖率密切相关,可以在白盒测试的同时计算出测试的代码覆盖率,保证测试的充分性。由于严格的安全性和可靠性的要求,嵌入式软件测试同非嵌入式软件测试相比,通常要求有更高的代码覆盖率。在软件工程的测试中有一个颇为实用的覆盖准则,即当语句覆盖率100%,分支覆盖率≥85%时,认为测试是理想的,软件错误可查出近90%,且允许时间和空间的消耗。日本日立公司和美国空军均采用此标准。对于嵌入式软件,白盒测试一般不必在目标硬件上进行,更为实际的方式是在开发环境中通过硬件仿真进行,所以选取的测试工具应该支持在宿主环境中的测试。
嵌入式软件测试强调的是白盒测试,一般的白盒测试包括语句覆盖、分支覆盖和条件覆盖。
嵌入式系统软件的独特之处
嵌入式系统由于自己本身的特点,如实时性强、内存不丰富、I/O通道少、开发工具昂贵并且与硬件紧密相关、CPU种类繁多等等,决定了不同的嵌入式系统必须有不同的测试方法,下面介绍几种不同的嵌入式产品在测试时应特别关注的问题。
唯一系统——“一次性”开发
某些系统,比如人造卫星,一旦发射之后就无法对其进行维护。这样的系统是“唯一系统”,意味着其建造是一次性的。
自治系统
有些嵌入式系统可以在无限长的时间内自主运行,它们担负某种任务。一旦运行后,就不再需要有人干预或与人交互。
硬件限制
硬件资源的局限性会给嵌入式软件带来一定的约束,比如内存使用和电力消耗。有时候特定的硬件也依赖于软件中计时的解决方法。对软件方面的这些约束并不会影响到需求的系统功能,但它们却是系统运行的首要条件,需要对此进行大量深入而技术性又很强的测试。
硬实时行为
“实时”的本质就是输入或输出在发生的瞬间就能够影响到系统的行为。
控制系统
控制系统通过连续的反馈机制和环境相互作用:系统的输出会影响环境,而环境反过来会影响到控制的行为。
强调安全系统
在嵌入式系统中当嵌入式系统的故障会导致对人体健康的严重伤害(或更为可怕的后果)时,则称该系统是“强调安全”的。大量的嵌入式系统都和人体有直接的物理接触,故障会直接导致身体的损伤,例如航空电子设备、医疗设备及核反应堆等。对这样的系统进行风险分析是极其重要的,需要采用严格的技术来分析并提高系统的可靠性。
极端的环境条件
有些系统需要在极端的环境条件下进行连续的操作,比如极热或极冷、机械震动、化学物质或放射性等环境条件。测试这些系统需要有特殊的设备来提供极端条件。当真实环境中的测试太危险时,就需要用设备来模拟环境。
嵌入式软件集成测试注意事项
嵌入式软件集成测试不仅要求软件行为的正确性,而且它要与其被控制的硬件设备实现正确的交互。在具体测试过程中可包含以下几个方面的测试工作
任务测试:首先独立测试系统中的每个任务,对每个任务设计白盒测试和黑盒测试用例。任务测试可以发现任务中的逻辑错误和功能错误,不能发现实时性错误和行为错误;行为测试:通过使用 CASE工具创建的软件模型来仿真实时系统,按照外部事件(如中断、控制信号和数据)的序列检查其行为的正确性,可以先对每个事件进行独立测试,然后随机的把事件输入给系统来检查系统行为的正确性;
任务间测试:独立的任务测试完成后,就可以多个任务一起来测试时间相关的错误,错误用不同的数据率和处理负载来测试任务间的通信,来确定任务间的同步是否会产生;另外,测试通过消息队列和数据存储进行通信的任务以发现这些数据存储区域大小方面的错误。
集成测试:集成软件和硬件一起测试,来发现软硬件之间接口错误,同时测试是否存在中断处理方面的错误,包括中断优先级的分配是否正确、中断的处理是否正确、中断处理是否满足时间要求、多个中断出现的情况下系统的功能和性能是否存在问题。
原文转自:http://www.uml.org.cn/Test/201202235.asp