嵌入式系统的系统测试和可靠性评估
时间:03-09
来源:互联网
点击:
引言
随着嵌入式系统硬件体系结构的变化,嵌入式系统的发展趋势向嵌入式系统高端,即嵌入式软件系统转移,具体体现在嵌入式操作系统趋于多样和应用软件日渐复杂。由于嵌入式系统软硬件功能界限模糊,研究如何进行系统测试和进行质量评估来保证嵌入式系统的产品质量具有重要意义。
首先,这里明确嵌入式系统的系统测试定义,是将开发的软件系统(包括嵌入式操作系统和嵌入式应用软件)、硬件系统和其它相关因素(如人员的操作、数据的获取等)综合起来,对整个产品进行的全面测试。嵌入式系统的系统测试比PC系统软件测试要困难得多,主要体现如下:
①测试软件功能依赖不需编码的硬件功能,快速定位软硬件错误困难;
②强壮性测试、可知性测试很难编码实现;
③交叉测试平台的测试用例、测试结果上载困难;
④基于消息系统测试的复杂性,包括线程、任务、子系统之间的交互,并发、容错和对时间的要求;
⑤性能测试、确定性能瓶颈困难;
⑥实施测试自动化技术困难。
1 测试方法
根据Goodenough和Gerhart提出的软件测试充分性准则可知,软件测试具有非复合性的特点,也就是说,即使以软件所有成分都进行了充分的测试,也并不意味着整个软件的测试已经充分。所以,即使通过了需求测试、设计测试、编码测试,并不意味着已经完全了充分的测试,还要进行软硬件全面测试,即系统测试。正确的系统测试方法能设计出良好的测试事例,而良好的测试事例是测试成功的关键。测试事例质量特性主要有以下几点。
*检验性:检测软件缺陷的有效性,是否能发现缺陷或至少可能发现缺陷。
*可仿效性:可以支持测试多项内容,减少测试事例的数量。
*开销:测试事例的执行、分析和调试是否经济。
*修改性:每次软件修改后对测试事例的维护成本。
测试方法不仅要保证测试事例具有发现缺陷的高可移植性,而且还要保证测试事例设计的经济有效。因此,在实际测试工作中,将嵌入式系统的测试方法分类如下:根据测试是否动态运行被测程序分为静态测试方法和动态测试方法;根据测试阶段分为需求测试方法、设计测试方法、编码测试(单元测试、集成测试)方法及系统测试方法;根据测试目的分为功能测试、性能测试、可靠性测试(容错性、可恢复性、成熟度测试*及信息安全保护等测试。参看表1嵌入式软件测试方法对照。其中“√”代表相关性。所有这些方法的具体定义这里不一一介绍。由于不同的嵌入式系统面向的应用不同,测试方法的侧重也很不相同。本文后面将对一个具体的便携式信息处理嵌入式系统(PDA、便携式翰林电子书)的系统测试方法详细说明。
表1 嵌入式软件测试方法及阶段对照表
2 可靠性评估
可靠性是嵌入式系统最重要的质量指标。ISO9000国示质量标准(ISO/IEC 9126-1991)规定,软件产品的可靠性含义是:在规定的一段时间和条件下,软件能维持其性能水平的能力有关的一组属性,可用成熟性、容错性、易恢复性三个基本子特性来度量。根据我们在评估嵌入式系统中的成功经验,一般采取以下简单有效的评估方法(可以采用百分制或十分制)。
(1)成熟性度量
①错误发现率DDP(Defect Detection Percentage)。在测试中查找出来的错误越多,实际应用中出错的机会就越小,软件也就越成熟。
DDP=测试发现的错误数量/已知的全部错误数量
已知的全部错误数量是测试已发现的错误数量加上可能会发现的错误数量之和。
②测试覆盖率度量。测试的覆盖率,可以用测试项目的数量和内容进行度量。除此之外,如果测试软件的数量较大,还要考虑数据量。测试的覆盖率,可以根据表2所示在测试指标进行评价。通过检查这些指标达到的程度,就可以度量出测试内容的覆盖程度。
表2 测试覆盖程度表
表3 可信度测试表
随着嵌入式系统硬件体系结构的变化,嵌入式系统的发展趋势向嵌入式系统高端,即嵌入式软件系统转移,具体体现在嵌入式操作系统趋于多样和应用软件日渐复杂。由于嵌入式系统软硬件功能界限模糊,研究如何进行系统测试和进行质量评估来保证嵌入式系统的产品质量具有重要意义。
首先,这里明确嵌入式系统的系统测试定义,是将开发的软件系统(包括嵌入式操作系统和嵌入式应用软件)、硬件系统和其它相关因素(如人员的操作、数据的获取等)综合起来,对整个产品进行的全面测试。嵌入式系统的系统测试比PC系统软件测试要困难得多,主要体现如下:
①测试软件功能依赖不需编码的硬件功能,快速定位软硬件错误困难;
②强壮性测试、可知性测试很难编码实现;
③交叉测试平台的测试用例、测试结果上载困难;
④基于消息系统测试的复杂性,包括线程、任务、子系统之间的交互,并发、容错和对时间的要求;
⑤性能测试、确定性能瓶颈困难;
⑥实施测试自动化技术困难。
1 测试方法
根据Goodenough和Gerhart提出的软件测试充分性准则可知,软件测试具有非复合性的特点,也就是说,即使以软件所有成分都进行了充分的测试,也并不意味着整个软件的测试已经充分。所以,即使通过了需求测试、设计测试、编码测试,并不意味着已经完全了充分的测试,还要进行软硬件全面测试,即系统测试。正确的系统测试方法能设计出良好的测试事例,而良好的测试事例是测试成功的关键。测试事例质量特性主要有以下几点。
*检验性:检测软件缺陷的有效性,是否能发现缺陷或至少可能发现缺陷。
*可仿效性:可以支持测试多项内容,减少测试事例的数量。
*开销:测试事例的执行、分析和调试是否经济。
*修改性:每次软件修改后对测试事例的维护成本。
测试方法不仅要保证测试事例具有发现缺陷的高可移植性,而且还要保证测试事例设计的经济有效。因此,在实际测试工作中,将嵌入式系统的测试方法分类如下:根据测试是否动态运行被测程序分为静态测试方法和动态测试方法;根据测试阶段分为需求测试方法、设计测试方法、编码测试(单元测试、集成测试)方法及系统测试方法;根据测试目的分为功能测试、性能测试、可靠性测试(容错性、可恢复性、成熟度测试*及信息安全保护等测试。参看表1嵌入式软件测试方法对照。其中“√”代表相关性。所有这些方法的具体定义这里不一一介绍。由于不同的嵌入式系统面向的应用不同,测试方法的侧重也很不相同。本文后面将对一个具体的便携式信息处理嵌入式系统(PDA、便携式翰林电子书)的系统测试方法详细说明。
表1 嵌入式软件测试方法及阶段对照表
测试方法分类 | 需求测试 | 设计测试 | 编码测试 | 系统测试 | |
静态测试方式; | 基本思想 | ||||
Yourdon的结构化走通 | 结构化审阅 | √ | √ | √ | |
Fagan检查测试 | 检查并评估 | √ | √ | √ | |
动态测试方法; | 基本思想 | ||||
控制流测试 | 语句测试 | √ | √ | ||
路径测试 | √ | ||||
条件测试 | √ | ||||
数据流测试 | 数据定义引用 | √ | √ | ||
分域测试 | 划分子域测试 | √ | √ | √ | |
功能测试 | 划分功能测试 | √ | √ | ||
随机测试 | 不限定范围 |
2 可靠性评估
可靠性是嵌入式系统最重要的质量指标。ISO9000国示质量标准(ISO/IEC 9126-1991)规定,软件产品的可靠性含义是:在规定的一段时间和条件下,软件能维持其性能水平的能力有关的一组属性,可用成熟性、容错性、易恢复性三个基本子特性来度量。根据我们在评估嵌入式系统中的成功经验,一般采取以下简单有效的评估方法(可以采用百分制或十分制)。
(1)成熟性度量
①错误发现率DDP(Defect Detection Percentage)。在测试中查找出来的错误越多,实际应用中出错的机会就越小,软件也就越成熟。
DDP=测试发现的错误数量/已知的全部错误数量
已知的全部错误数量是测试已发现的错误数量加上可能会发现的错误数量之和。
②测试覆盖率度量。测试的覆盖率,可以用测试项目的数量和内容进行度量。除此之外,如果测试软件的数量较大,还要考虑数据量。测试的覆盖率,可以根据表2所示在测试指标进行评价。通过检查这些指标达到的程度,就可以度量出测试内容的覆盖程度。
表2 测试覆盖程度表
测试覆盖项 | 测试覆盖率指标测试描述 | 测试结果 |
界面覆盖 | 符合需求(所有界面图标、信息区、状态区) | |
静态功能覆盖 | 功能满足需求 | |
动态功能覆盖 | 所有功能的转换功能正确 | |
正常测试覆盖 | 所有硬件软件正常时处理 | |
异常测试覆盖 | 硬件或软件异常时处理(不允许的操作) | 测试结束判断 |
表3 可信度测试表
测试功能 | 甲 | 乙 | 丙 | 丁 | 平均 | 最大值-最小值 |
功能1 | ||||||
功能2 | ||||||
功能3 |
- 在嵌入式多核集群中利用OCP处理高速缓冲器一致流量(07-20)
- 嵌入式智能设备的测试方法研究(11-29)
- 基于ARM的信号发生器人机交互系统设计(01-23)
- 采用C8051F020设计的嵌入式测试仪(01-17)
- 关于嵌入式智能设备的测试方法的研究(01-28)
- 基于μC/OS-II的电力参数监测仪设计(02-23)