嵌入式软件测试的基本方法

一、引言随着数字化时代的到来 , 大量系统架构复杂、功能日益强大的嵌入式系统正不断进入市场 , 应用也日趋复杂 , 这对嵌人式软件的开发技术和测试技术提出了更高的要求 。 嵌人式系统的复杂性和集成度越来越高 , 其中的软件部分也开始在整个嵌入式系统中占有越来越多的比例 , 并经常实现硬件的功能 。
嵌入式系统的专用程度较高 , 所以对其可靠性的要求也比较高 , 为了保证系统的稳定性 , 避免由于其可能出现的失效而导致灾难性的后果 , 要求对嵌人式系统 , 包括嵌入式软件进行严格的测试、确认和验证 。
基于嵌入式软件自身的特点 , 如实时性(Real-timing) , 内存不丰富 , I/O通道少 , 开发工具昂贵 , 并且与硬件紧密相关 , CPU种类繁多 , 其缺陷不像PC软件的缺陷容易修补等等 。 传统的软件测试理论不能直接用于嵌入式软件测试 , 因此 , 研究嵌入式软件的测试方法和策略 , 对于提高和改善嵌入式软件的质量有重要意义 。
二、嵌入式软件测试的基本方法嵌入式系统是以应用为中心 , 以计算机技术为基础 , 软件硬件可剪裁 , 适应应用系统对功能、可靠性、成本、体积及功耗严格要求的专用计算机系统 。 嵌入式系统的软硬件功能界限模糊 , 测试比PC系统软件测试要困难得多 , 嵌入式软件系统测试具有如下特点:
(1)测试软件功能依赖不需编码的硬件功能 , 快速定位软硬件错误困难;
(2)强壮性测试、可知性测试很难编码实现;
(3)交叉测试平台的测试用例、测试结果上载困难;
(4)基于消息系统测试的复杂性 , 包括线程、任务、子系统之间的交互 , 并发、容错和对时间的要求;
(5)性能测试、确定性能瓶颈困难;
(6)实施测试自动化技术困难 。
大量统计资料表明 , 软件测试的工作量往往占软件开发总工作量的40%以上 , 在极端情况 , 测试那种关系人的生命安全的重要的行业中的嵌入式软件所花费的成本 , 可能相当于软件工程其他开发步骤总成本的三倍到五倍 。
在嵌入式软件测试中 , 既要考虑软件本身 , 还要考虑软件同硬件平台和操作系统的集成 , 同时还有条件苛刻的时间约束和实时要求 , 以及其他合性能相关的要求 。
1、全数字模拟测试
全数字模拟测试是指采用数学平台的方法 , 将嵌入式软件从系统中剥离出来 , 通过开发CPU指令、常用芯片、I/O、中断、时钟等模拟器在开发主机平台(Host)上实现嵌入式软件的测试 。 该方法操作简单 , 适用于功能测试 , 是一种可以借鉴的常规软件测试方法 。
但是全数字模拟测试有较大的局限性 , 使用不同语言编写的嵌入式软件需要不同的仿真程序来执行 , 通用性差 , 实时性与准确性难以反映出嵌入式软件的真实情况 , 当并发事件要求一定的同步关系时 , 维护统一、精确地系统时钟 , 理顺时序关系相当困难 。 因此 , 设计一个能进行系统测试的环境代价太大 , 全数字模拟测试只能作为嵌入式软件测试的辅助手段 。
2、交叉测试(Host/Target测试)
自从出现高级语言 , 嵌入式系统的开发环境和运行环境通常是存在差异的 , 开发环境被认为是主机平台(Host) , 软件运行环境为目标平台(Target) , 相应的测试为Host Target测试(交叉测试) 。 测试过程中 , 充分利用高级语言的可移植性 , 将系统中与目标环境无关的部分工作转移到PC平台上完成 , 在硬件环境未建好或调试工具缺乏时就可以开展 , 这时可以借鉴常规的软件测试方法 。
【嵌入式软件测试的基本方法】系统中与硬件密切相关的部分在Target上完成 , 用到的测试工具需要支持目标环境 。 最后 , 在目标环境中进行验证确认 。 交叉测试适用于高级语言 , 操作方便 , 测试成本较低 , 但是实时性受调试环境的制约 , 在目标环境中测试时要占用一定的目标资源 。


推荐阅读