杜延,嵌入式软件测试技术的探讨,移动通信,2006年8月增刊
1. 嵌入式软件测试技术
软件测试有两种基本方法,即黑盒测试和白盒测试,嵌入式软件测试也不例外。
由于嵌入式软件和硬件是不可分离的,嵌入式软件的测试需要在相关的硬件平台上进行。脱离硬件,嵌入式软件测试就无法进行。这与主机平台软件的测试是不同的,主机平台软件的测试不需要专门的硬件平台,只需在计算机平台上进行。
2. 黑盒测试技术
又称为功能测试,是一种基于需求的测试。将被测试的软件看作是一个盒子,黑盒测试不需要了解程序的内部结果,只是根据软件的用途和外部特征查找软件缺陷。
黑盒测试的最大优势在于不依赖代码,而是从实际使用的角度进行测试。因为黑盒测试与需求紧密相关,需求规格说明的质量会直接影响测试的结果,黑盒测试只能限制在需求的范围内。
嵌入式软件的黑盒测试一般在嵌入式系统上进行,不需要借助于测试工具和测试平台。
3. 白盒测试技术
又称为结构化测试,是一种基于结构的测试。白盒是指可以看到盒子的内部结构和运作情况。白盒测试是一种按照软件内部的逻辑结构和编码结构设计数据的方法,主要进行软件的控制流测试(语句覆盖、分支条件判断覆盖等)和数据流测试。白盒测试要根据源代码的组织结构查找软件缺陷,要求测试人员对软件的结构和作用有详细的了解,一般选择最重要的代码进行白盒测试。
覆盖率和性能是衡量嵌入式软件质量的重要指标,也是白盒测试的主要内容。
覆盖率分析是通过对源代码插装来实现。它的原理是:对被测试软件进行静态分析,确定代码中的分支点,并且给每个分支点分配统一的编号。插装就是在所有分支点上设置“探头”—插装代码。当执行到这个点时,探头就输出这个编号到特定文件中。从这个文件中就可以得到程序执行的历史信息和所经过的路径,从而计算出代码的覆盖率。
性能分析则通过提供有关时间的数据,说明执行时间是如何消耗的,是什么时候消耗的,以及每个过程所用的时间。根据这些数据,可以决定如何优化软件,从而获得更好的时间性能。性能分析还可以引导测试人员发现系统调用中存在的错误以及程序结构上的缺陷。