嵌入式系统的系统测试和可靠性评估
关键词:嵌入式系统 系统测试 测试方法 可靠性评估
引言
随着嵌入式系统硬件体系结构的变化,嵌入式系统的发展趋势向嵌入式系统高端,即嵌入式软件系统转移,具体体现在嵌入式操作系统趋于多样和应用软件日渐复杂。由于嵌入式系统软硬件功能界限模糊,研究如何进行系统测试和进行质量评估来保证嵌入式系统的产品质量具有重要意义。
首先,这里明确嵌入式系统的系统测试定义,是将开发的软件系统(包括嵌入式操作系统和嵌入式应用软件)、硬件系统和其它相关因素(如人员的操作、数据的获取等)综合起来,对整个产品进行的全面测试。嵌入式系统的系统测试比PC系统软件测试要困难得多,主要体现如下:
①测试软件功能依赖不需编码的硬件功能,快速定位软硬件错误困难;
②强壮性测试、可知性测试很难编码实现;
③交叉测试平台的测试用例、测试结果上载困难;
④基于消息系统测试的复杂性,包括线程、任务、子系统之间的交互,并发、容错和对时间的要求;
⑤性能测试、确定性能瓶颈困难;
⑥实施测试自动化技术困难。
1 测试方法
根据Goodenough和Gerhart提出的软件测试充分性准则可知,软件测试具有非复合性的特点,也就是说,即使以软件所有成分都进行了充分的测试,也并不意味着整个软件的测试已经充分。所以,即使通过了需求测试、设计测试、编码测试,并不意味着已经完全了充分的测试,还要进行软硬件全面测试,即系统测试。正确的系统测试方法能设计出良好的测试事例,而良好的测试事例是测试成功的关键。测试事例质量特性主要有以下几点。
*检验性:检测软件缺陷的有效性,是否能发现缺陷或至少可能发现缺陷。
*可仿效性:可以支持测试多项内容,减少测试事例的数量。
*开销:测试事例的执行、分析和调试是否经济。
*修改性:每次软件修改后对测试事例的维护成本。
测试方法不仅要保证测试事例具有发现缺陷的高可移植性,而且还要保证测试事例设计的经济有效。因此,在实际测试工作中,将嵌入式系统的测试方法分类如下:根据测试是否动态运行被测程序分为静态测试方法和动态测试方法;根据测试阶段分为需求测试方法、设计测试方法、编码测试(单元测试、集成测试)方法及系统测试方法;根据测试目的分为功能测试、性能测试、可靠性测试(容错性、可恢复性、成熟度测试*及信息安全保护等测试。参看表1嵌入式软件测试方法对照。其中“√”代表相关性。所有这些方法的具体定义这里不一一介绍。由于不同的嵌入式系统面向的应用不同,测试方法的侧重也很不相同。本文后面将对一个具体的便携式信息处理嵌入式系统(PDA、便携式翰林电子书)的系统测试方法详细说明。
表1 嵌入式软件测试方法及阶段对照表
测试方法分类
需求测试 设计测试 编码测试 系统测试 静态测试方式; 基本思想 Yourdon的结构化走通 结构化审阅 √ √ √ Fagan检查测试 检查并评估 √ √ √ 动态测试方法; 基本思想控制流测试 语句测试 √ √ 路径测试 √ 条件测试 √ 数据流测试 数据定义引用 《嵌入式系统的系统测试和可靠性评估》