10.嵌入式系统可靠性测试与评估

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3
muchunyang@126.com
10.1 软件测试与可靠性评估
1、软件测试相关概念
软件测试方法
软件的缺陷存在于软件生存期的各个阶段; 不同阶段缺陷的性质是不同的; 不同的缺陷对应不同的测试方法。 软件测试方法的分类,有2种分法: 静态测试方法和动态测试方法; 黑盒测试方法和白盒测试方法。 静态测试方法: ①静态测试的基本特征:对软件和相关文档进行分析、检查,而不实际运 行被测试程序。 ②适用于软件开发过程的早期阶段; ③主要靠人来完成; ④包括完备性测试、一致性测试、正确性测试等; ⑤目前比较常用的静态测试方法:Yourdon的结构走通法、IBM的Fagan 检查法等。
6
muchunyang@126.com
10.1 软件测试与可靠性评估
1、软件测试相关概念
软件测试的基本步骤
软件测试贯穿于软件的整个生存期。 按照时间顺序,分为以下几个步骤: ① 单元测试:对软件中的基本组成单元进行测试,对应于软件开发的单 元编码阶段。 ② 集成测试:软件中各个模块在集成时进行的测试,对应于软件开发的 功能验证阶段。 ③ 系统测试:对软件中已经集成好的子系统或系统进行测试以验证正确 性,对应于软件开发的系统验证阶段。 ④ 验收测试:向用户展示软件时进行的测试,一般其测试数据是系统测 试数据的子集。 ⑤ 回归测试:软件投入运行以后的测试,对应于软件开发的维护阶段。
课程名称:嵌入式系统原理与应用
Agenda: 10.1 软件测试与可靠性评估 10.2 嵌入式软件测试 10.3 软件可靠性测试 10.4 嵌入式软件的可靠性测试与评估 10.5பைடு நூலகம்嵌入式系统可靠性评价 10.6 嵌入式系统可靠性相关技术的进展
主讲:穆春阳
电气信息工程学院
muchunyang@126.com
注释: a)程序一次运行所需要的测试数据被称为 测试用例。 b)一个测试用例的好坏在于它能否发现至 今尚未发现的错误。 c)生成高质量的测试用例是当今软件测试 技术中很重要的一个研究方向。
5 muchunyang@126.com
10.1 软件测试与可靠性评估
1、软件测试相关概念
软件测试方法
黑盒测试方法: ①黑盒测试:在测试时,把软件当成一个黑盒,测试者只需知道程序的输 入/输出之间的关系或程序的功能,不需知道程序内部结构,又称功能测试、 数据驱动测试、基于用户的测试。 ②黑盒测试方法的适用场合: a)在得不到程序源代码时,只能用黑盒测试; b)对于系统功能级的测试、可靠性测试等,只能用黑盒测试。 白盒测试方法: ①白盒测试:在测试时,测试者可以查看被测程序的源代码,通过代码级 的程序运行来分析程序的内部构造和逻辑结构,又称结构测试、逻辑驱动测 试、基于程序的测试。 ②进行白盒测试时,要求对被测程序的结构特性做到一定程度的覆盖。
9
muchunyang@126.com
10.1 软件测试与可靠性评估
2、软件可靠性评估相关概念
软件可靠性评估方法
目前,在软件可靠性评估技术中,通常采用的2种方法: ②基于软件可靠性建模的方法 a)在测试时,将所确定的失效交由开发者分析和修 改,建立软件的一个新的版本,再进行下一次测试。在 “测试——排错——建立新版本”的迭代过程中,被发现 的软件错误不断被剔除,软件可靠性呈增长趋势,故又 称为软件可靠性增长建模,它是当前软件可靠性建模的 主要内容。 b)与“验证法”比较,共同点:故障情况也要依赖于 测试;区别:在进行测试的同时修改故障,并通过对所 收集的故障行为进行建模分析,从而估计软件可靠性的 实际水平,指导软件设计人员进行下一步的工作。 c)主要用于软件的开发阶段,测试与缺陷的排除联 系在一起,一般安排在开发过程的系统测试阶段进行。 d) 流程图:如右图。
13 muchunyang@126.com
10.1 软件测试与可靠性评估
3、软件测试与软件可靠性评估的关系
二者关系密切
软件测试是软件可靠性评估的基础,是提高软件可靠性的主要手段: 软件可靠性模型利用软件测试所提供的故障数据,估算软件的可靠性,对 软件将来的故障行为进行预测,以协助开发人员监督软件开发过程,辅助软 件过程管理。 软件可靠性评估可以为软件测试服务: 软件可靠性评估的结果是衡量软件测试工作充分性与否的判断依据。
7
muchunyang@126.com
10.1 软件测试与可靠性评估
2、软件可靠性评估相关概念
软件可靠性评估概述
定义:指运用统计推理技术,通过采集在软件测试和软件运行期间得到的 实效数据,确定模型参数及评估系统当前的软件可靠性指标。 目前,软件可靠性评估主要是以一些常用的软件可靠性模型为基础进行的 可靠性指标的评估:利用软件失效数据选择合适的统计方法,对模型参数进 行估计,在此基础上得到软件可靠性指标的各种统计推断。 它是一门得到普遍承认,但仍处于不成熟的、正在发展确立阶段的新兴工 程学科: ①20世纪60年代后期,国外开始加强对软件可靠性的研究工作; ②历经20年左右的研究,推出了各种可靠性模型和预测方法,于1990年 前后,形成了较为系统的软件可靠性工程体系。
17
muchunyang@126.com
10.2 嵌入式软件测试
2、嵌入式软件测试工具分类
按测试工具的构成,可分为3类:
纯硬件测试工具 ①纯硬件工具,如逻辑分析仪、仿真器,通常用于系统的硬件设计与测试 工作,不对干扰目标系统的运行,可以获得真实数据,但是用于软件分析测 试时,效果并不理想。 ②特点: a)由于周期性因素的影响,采用硬件工具不大可能针对整个系统进行分 析,覆盖面极其有限; b)它是从系统总线直接捕获数据,因此目标硬件系统中的Cache、DMA 等将会对软件的执行和数据结果造成影响,导致无法确定真实性能; c)不能对内存分配进行分析和检查。 硬件辅助软件的测试工具 ①继承了纯软件/纯硬件工具的功能:将插桩函数改为插桩赋值语句,周 期性采样改为系统总线监控,插桩语句的结果由读总线数据获取。 ②特点:极大地降低了目标系统的开销,增大了测试覆盖面,可以获取比 较精确的测试数据。
14
muchunyang@126.com
课程名称:嵌入式系统原理与应用
Agenda: 10.1 软件测试与可靠性评估 10.2 嵌入式软件测试 10.3 软件可靠性测试 10.4 嵌入式软件的可靠性测试与评估 10.5 嵌入式系统可靠性评价 10.6 嵌入式系统可靠性相关技术的进展
主讲:穆春阳
电气信息工程学院
muchunyang@126.com
10.2 嵌入式软件测试
1、嵌入式软件的测试阶段
阶段划分及测试方法
按照嵌入式软件工程的过程,测试阶段包括:需求测试、设计测试、编码 测试、系统测试、静态测试等。 各阶段采用的测试方法:
一个良好的软件测试体系应该包括的3个重要部分:①源代码级测试;② 终端产品测试;③应用模拟测试。
“使用人工或自动的手段来运行或测定某个系统的过程,其目的在于检验 它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别。” 几点说明: 软件测试的目的在于发现程序中的错误从而进行否定,而不是试图肯 定程序没有错误; 对于不同的软件需求,软件测试所包含的概念存在差异: ①对于一般的软件需求,软件测试仅意味着正确性测试; ②对于某些关键性软件的需求,除了正确性测试之外,还要进行可靠 性测试、健壮性测试、效率测试、性能测试等; 软件测试是保证软件正确性和提高软件可靠性的最基本和最重要的手 段。
10 muchunyang@126.com
10.1 软件测试与可靠性评估
2、软件可靠性评估相关概念
软件可靠性建模
软件可靠性模型是软件可靠性评估中的一个重要概念,是软件可靠性定量 分析技术的基础。 目的:根据与软件可靠性有关的数据,以统计的方法给出软件可靠性的估 计值或预测值。 软件可靠性工程中使用的2种模型: ①类似硬件可靠性模型的软件可靠性结构模型; ②软件可靠性预计模型。
嵌入式软件的可靠性测试与评估
从通用软件测试和可靠性评估技术发展而来; 与通用软件相比,嵌入式软件对可靠性的要求更高,其可靠性测试和评估 更为重要; 目前,关于嵌入式软件的可靠性测试和评估理论还不成熟。
2
muchunyang@126.com
10.1 软件测试与可靠性评估
1、软件测试相关概念
定义(IEEE标准1983年)
4 muchunyang@126.com
10.1 软件测试与可靠性评估
1、软件测试相关概念
软件测试方法
动态测试方法: ①动态测试:通过运行软件来检验软件的动态行为和运行结果的正确性。 ②适用于软件生存期的编码阶段之后。 ③动态测试的两个基本要素: a)被测试程序; b)测试数据。 ④动态测试的流程: 关键步骤:产生测试用例。
16 muchunyang@126.com
10.2 嵌入式软件测试
2、嵌入式软件测试工具分类
按测试工具的构成,可分为3类:
纯软件测试工具 ①目前最常用的方法,采用交叉测试技术,有2个重要任务: a)插桩:在被测代码中插入一些函数,用以完成数据的生成,并将数据 传送到目标系统的共享内存中。 b)在目标系统中运行一个预处理任务,完成共享内存中数据的预处理, 将处理后的数据通过目标机的网口或串口等传送到宿主机平台。 ②特点: a)对目标系统的运行效率有很大影响(严重时>50%); b)测试数据不够精确,难以对目标系统中函数和任务的运行时间等性能 指标进行准确分析,无法观察内存的动态分配情况; c)限制了单元测试的覆盖率。
8
muchunyang@126.com
10.1 软件测试与可靠性评估
2、软件可靠性评估相关概念
软件可靠性评估方法
目前,在软件可靠性评估技术中,通常采用的2种方法: ①基于软件可靠性测试的验证方法 a)软件可靠性验证方法:在给定的统计置信度下,验证软件当前的可靠 性水平是否满足用户的要求(即软件规格说明书中规定的可靠性指标)。 b)一般在软件验收阶段进行,在软 件需求方参与的情况下实施。 c)主要过程:根据现场测试的故障 情况,利用双方都认可的某种可靠性验 收模型或某些软件进行可靠性的定量评 价,以判断该软件是否达到需求说明书 中约定的可靠度。 d)流程图:如右图。
10.1 软件测试与可靠性评估
0、概述
嵌入式系统可靠性测试与评估
对嵌入式系统进行可靠性的定量描述,需要进行可靠性评估; 可靠性评估的基础是可靠性测试:只有通过可靠性测试中所发现的缺陷数 目和发现缺陷的时间等因素才能够评估系统的可靠性指标; 根据评估出的可靠性指标,可以对照系统的可靠性要求来决定是否还需要 进行可靠性测试,以进一步提高可靠性指标。 硬件的可靠性测试与评估技术已很完善,而软件可靠性问题已成为嵌入式 系统的一个瓶颈。
18 muchunyang@126.com
10.2 嵌入式软件测试
3、有限状态机测试模型
测试模型(Test Model)的定义
12 muchunyang@126.com
10.1 软件测试与可靠性评估
2、软件可靠性评估相关概念
典型的软件可靠性建模
Musa和Okumoto提出的模型分类方案 将软件安装以下特征进行分类: ①时间域(Time domain):时钟时间与执行时间的比较。 ②类(Category):在确定时间内的失效总数,分为有限和无限2个子类。 ③ 型 (Type) : 时 间 t 的 失 效 数 分 布 , 一 般 分 为 泊 松 (Poisson) 和 二 项 式 (Binomial)2个类型。 ④组(Class):用期望失效数目表示失效强度函数的函数形式,仅对有限 失效类有效。 ⑤族(Family):用期望失效数目表示失效强度函数的函数形式,仅对无限 失效类有效。 根据以上特征分类,常见出的几种可靠性模型: ①指数类失效时间模型 ②Weibull Gamma失效时间模型 ③无限失效类模型 ④贝叶斯模型
11
muchunyang@126.com
10.1 软件测试与可靠性评估
2、软件可靠性评估相关概念
软件可靠性建模
软件可靠性预计模型
①软件的失效率总体上随时间的增加而减小; ②在任意给定时间里,可以观察到软件失效率的历史; ③通过对结果的统计可以预测失效率曲线,从而知道达到规定目标还需要 多少测试时间,以及测试结束时软件可靠性的期望值。
相关文档
最新文档