嵌入式系统原理与设计 教学课件 ppt 作者 蒋建春 主编 第9章 嵌入式软件测试基础

上传人:E**** 文档编号:89494404 上传时间:2019-05-25 格式:PPT 页数:61 大小:258KB
返回 下载 相关 举报
嵌入式系统原理与设计 教学课件 ppt 作者 蒋建春 主编 第9章 嵌入式软件测试基础_第1页
第1页 / 共61页
嵌入式系统原理与设计 教学课件 ppt 作者 蒋建春 主编 第9章 嵌入式软件测试基础_第2页
第2页 / 共61页
嵌入式系统原理与设计 教学课件 ppt 作者 蒋建春 主编 第9章 嵌入式软件测试基础_第3页
第3页 / 共61页
嵌入式系统原理与设计 教学课件 ppt 作者 蒋建春 主编 第9章 嵌入式软件测试基础_第4页
第4页 / 共61页
嵌入式系统原理与设计 教学课件 ppt 作者 蒋建春 主编 第9章 嵌入式软件测试基础_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《嵌入式系统原理与设计 教学课件 ppt 作者 蒋建春 主编 第9章 嵌入式软件测试基础》由会员分享,可在线阅读,更多相关《嵌入式系统原理与设计 教学课件 ppt 作者 蒋建春 主编 第9章 嵌入式软件测试基础(61页珍藏版)》请在金锄头文库上搜索。

1、嵌入式系统原理与设计 第九讲 嵌入式软件测试基础,本节提要,1,2,3,嵌入式软件的质量控制,软件测试的基本概念,嵌入式软件测试基础,嵌入式软件测试技术,4,9.1 嵌入式软件的质量控制,9.1.1 嵌入式软件开发的质量问题 嵌入式软件作为一种特殊的软件,对安全性和可靠性的要求都是相当高的。 通过实际项目的统计,得出在不同的阶段发现和更改错误的费用是不同的,如表9-1所示。,表9-1 不同阶段更改错误的费用,另一方面,统计表明一个项目中的80%的错误往往是由20%的程序引起的。,表9-2 嵌入式软件各开发阶段、各种活动发现错误的情况,9.1.2 嵌入式软件的质量模型,9.1.3 软件缺陷,1软

2、件缺陷的定义 软件在它的生命周期内各个阶段都可能发生问题,发生问题的情况和形式是各不相同的,大家都习惯使用“bug(软件缺陷)”这个词来描述这些问题,它包含一些偏差、谬误或错误,更多地表现在功能上的失败(failure)和实际需求的不一致,及矛盾(inconsistency)。 在IEEE Standard729中对软件缺陷的定义是: 此产品内部看,软件缺陷是软件产品开发或维护过程中所粗在的错误、毛病等各种问题。 从外部来看,软件缺陷是系统所需要实现的某种功能的失效或违背。,下列情况认为是软件缺陷: 功能、属性没有实现或者部分实现; 设计不合理,存在潜在缺陷; 实际结果和预期结果不一致; 运行

3、错误,包括运行中断、系统崩溃、界面混乱等; 数据结果不正确、精度不够; 用户不能接受的其他问题,如存取时间过长、界面不美观等。,2软件缺陷产生的原因 由于软件系统越来越复杂,不管是需求分析、系统结构设计、编码、测试都面临越来越大的挑战。软件缺陷产生是不可避免的,基于软件开发过程归纳出软件开发各阶段软件缺陷产生的原因。,图9-3软件缺陷构成比例示意图,规格说明书为什么是引入软件缺陷最多的几种原因。 用户是非计算机专业人士,软件开发人员和用户的沟通存在较大困难,对要开发的软件产品功能理解不一致。 由于软件产品还没有设计、开发,完全靠想象去描述软件系统的实际情况,所以有些特性思考得不够清晰。 需求变

4、化的不一致。用户的需求总是在不断变化的,这些变化如果没有在产品规格说明书中得到正确的描述,容易引起前后的矛盾。 对于规格说明书普遍不够重视,在规格说明书的设计和写作上投入的人力、时间不足。 软件缺陷发现后,要尽快修复缺陷,不然会随着产品开发过程的进行,缺陷会越变越大,以至于造成严重的后果。缺陷发现或解决得越晚,成本就越高。,9.1.4 提高嵌入式软件质量的方法,可以通过以下方法来提高嵌入式软件的质量: 重视缺陷的评估分级。 建立文档和缺陷管理制度。 强调测试自动化。,测试自动化主要包括: 测试准备的自动化。 测试用例的自动化生成; 测试的实施、记录和诊断的自动化。 关键在前两点,目前主要有两种

5、途径来实现测试自动化: 利用被测对象设计阶段的建模结构; 对源代码进行自动分析,本节提要,1,2,3,嵌入式软件的质量控制,软件测试的基本概念,嵌入式软件测试基础,嵌入式软件测试技术,4,9.2 软件测试的基本概念,9.2.1 软件测试的定义 在IEEE Std 829-1998对IEEE(1983)修订版中,将测试定义为:测试(A)一个或多个测试用例集,或(B)一个或多个测试过程集,或(C)一个或多个测试用例和测试过程集,是软件的分析过程,其目的在于发现软件功能特性等实现和要求不一致的地方(也即软件错误)及对软件的评估。,9.2.2 软件测试的目的和作用 测试的最基本目标应是以最少的时间和人

6、力找出软件中潜在的各种错误和缺陷,可以通过严格的测试过程和精心的测试用例选取来达到这一目的。 基于此,有一些典型的认识,包括: 测试是为了寻找错误而运行程序的过程。 一个好的测试用例是指可能找到的迄今为止尚未发现错误的用例。 一个成功的测试是指揭示了迄今为止尚未发现错误的测试。 软件测试的更高层次的目标应体现质量改进、验证与确认、可靠性评估。,1. 质量改进 如果应用于关键应用中的计算机和软件系统出现问题,后果十分严重的。软件错误将引起巨大的损失,比如导致飞机失事、火箭失去控制、股市交易中断等。软件质量和可靠性对于嵌入式应用系统而言,更是生死攸关的大问题。 质量意味着产品符合设计的要求规范。正

7、确性是指软件符合环境下可运行的要求,是软件质量的最低要求。调试是软件测试中的一个重要方法,是程序员定位和修复软件错误的一个过程。发现和修复错误是程序调试的只要目的。,2. 验证和确认 软件质量是客观的,能精确地度量和比较。质量属性包括功能性、可用性、安全性、可靠性和可测性等。 软件测试的一个重要目的是验证和确认软件质量。质量因素表现在三个典型方面:功能性、工程性和适应性。这三方面的因素可视为软件质量的三维空间。 功能性(外在质量):正确性、可靠性、可用性、完整性。 工程性(内在质量):有效性、可测性、文档化。 适应性(未来质量):可扩展性、可重要性、可维护性。,3. 可靠性评估 软件可靠性体现

8、在软件的许多方面。ISO9000质量标准(ISO/IEC9126-1991)规定,软件产品的可靠性是指软件系统在规定的时间内及规定的环境条件下,完成规定功能的能力,可用成熟性、容错性、易恢复性三个基本子特性来度量。,9.2.2 软件测试分类和软件测试技术,1. 软件测试的分类 软件测试按测试的重点不同可分为不同的类型。 1)按测试对象:可分为文档测试(包括需求规格说明、概要设计规格说明书、详细设计规格说明书、用户手册等文档)、代码测试、配置项测试等。 2)按测试顺序:可分为单元测试、集成测试、确认测试、系统测试。 3)按实现技术:按测试过程中软件运行情况可分为静态测试和动态测试,按测试中所针对

9、的软件功能和结构的不同,测试可分为黑盒测试和白盒测试。 4)按测试专题:可分为功能测试、性能测试、可靠性测试、安全测试、强度测试、安装测试、恢复测试、余量测试。 5)按用途:可分为正确性测试、性能测试、可靠性测试、安全性测试和回归测试等。 6)按生命周期:可分为需求阶段测试、设计阶段测试、程序编码阶段测试、安装阶段测试、验收阶段测试和维护阶段测试。,2. 软件测试技术 软件测试技术有很多中,如图9-4所示。原则上,软件测试技术可分为静态测试技术和动态测试技术。动态测试技术又包括黑盒测试技术和白盒测试技术以及程序与规格说明相结合的测试技术。黑盒测试技术和白盒测试技术是广泛使用的两种测试技术。,静

10、态测试是不执行程序代码而寻找程序代码中可能存在的缺陷或评估程序代码的过程。 动态测试包括白盒测试、黑盒测试和程序与规格书说明相结合的测试,即灰盒测试。 (1)静态测试 静态测试又称静态分析,是对被测软件进行特性分析的一些方法的总称。 (2)动态测试 和静态测试相对应,动态测试使用测试用例运行软件,获得软件运行的真实情况。,任何工程产品都可以使用以下两种方法之一进行测试: 1)已知产品的功能设计规格,通过测试证明实现的每个功能是否符合要求。 2)已知产品的内部工作过程,通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经经过检查。 这两种立场不同的测试,就是两种常用的测试方法,前者

11、为黑盒测试,后者为白盒测试。 黑盒测试 黑盒测试又称为功能测试或数据驱动测试。这种测试方法把测试对象看做一个黑盒子,不考虑程序的内在逻辑,只根据需求规格说明书的要求来建华擦程序的功能是否符合要求。 白盒测试 白盒测试又称为结构测试和逻辑驱动测试。这种测试方法把测试对象看做是一个透明的盒子,允许测试人员针对程序内部的逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑路径进行测试。,本节提要,1,2,3,嵌入式软件的质量控制,软件测试的基本概念,嵌入式软件测试基础,嵌入式软件测试技术,4,9.3.1 嵌入式软件测试的特点,和一般的应用软件的可靠性测试相比,嵌入式软件测试有自身的特点 : 嵌入式软

12、件是在特定的硬件环境下才能运行的软件。 嵌入式软件测试除了要保证嵌入式软件在特定硬件环境中运行的高可靠性,还要保证嵌入式软件的实时性。 嵌入式软件产品为了满足高可靠性的要求,除了对软件进行性能测试、覆盖分析测试等测试同普通软件测试一样都不可或缺之外,还需要对内存进行测试。 嵌入式软件测试的最终目的是使嵌入式产品能够在满足所有功能的同时安全可靠地运行。,嵌入式软件测试除了要遵循普通软件测试的原则之外,还应该遵循以下几个原则: 嵌入式软件测试对软件在硬件平台的测试是必不可少的。 嵌入式软件测试需要在特定环境下对嵌入式软件进行测试。 必要的可靠性负载测试。 除了要对嵌入式软件系统的功能进行测试之外,

13、还需要对实时性进行测试。 在对嵌入式软件产品进行测试的时候,需要在特定硬件平台上进行性能测试、内存测试、覆盖分析测试。 对嵌入式软件产品进行测试时,需要对生产出来的第一件产品进行测试。,9.3.2 嵌入式软件软件统一测试模型,9.3.3 嵌入式软件目标机环境测试和宿主机环境测试,嵌入式软件测试与普通软件测试不同的是嵌入式软件的测试方法。嵌入式软件测试分为目标机环境测试和宿主机环境测试两种。 在嵌入式软件测试中,常常要在基于目标机的测试和基于宿主机的测试之间作出折衷。目前的趋势是把更多的测试转移到宿主机环境中进行,但是,他不可能完全模拟目标机环境的复杂性和独特性。,9.3.4 嵌入式软件的测试步

14、骤概述,系统平台测试 系统平台测试包括硬件电路测试、操作系统及底层驱动程序的测试等。 单元模块测试 通常,大型的嵌入式软件系统会被划分为若干个相对较小的单元任务模块,由不同的程序员分别同时对其进行编码。 集成测试 软件模块测试通过测试通过之后,应将所有模块集成起来进行测试。集成测试阶段的主要任务是找出各模块之间数据传递错误和系统组成后的逻辑结构的错误。 系统测试 集成测试完成后,退出宿主机测试环境,把系统移植到目标机上,以将其应用到现场环境中。 确认测试 确认测试时嵌入式软件测试哦最后一个活动,它的主要任务是将嵌入式软件交给委托人使用,通过这种方式来验证软件的功能、性能及其他特性是否与用户的要

15、求一致。,9.3.5 嵌入式软件测试和普通软件测试的区别,嵌入式软件同普通软件相比,有其自身的一些特点: 开发与运行环境分开。 开发平台复杂多样。 硬件资源、时间有严格限制。 缺乏可视化编程模式。 不同的嵌入式软件在不同环境下的可靠性、安全性的要求是不同的。,从嵌入式软件同普通软件在开发过程中可以得到嵌入式软件同普通软件在测试方面的区别: 因为嵌入式软件开发和运行的环境是开发的,因此,各个阶段测试的平台是不一样的。 单元测试阶段:所有单元级测试都可以在宿主机环境下进行,只有个别情况下会特别指定单元测试要直接在目标机环境下进行。 集成测试阶段:软件集成也可在宿主机环境下完成,在宿主机平台上模拟目

16、标环境运行,在此级别上的确认测试可确定一些与环境有关的问题,比如内存定位和分配方面的一些错误。 系统测试和确认测试阶段:所有系统测试和确认测试必须在目标机环境下执行。 由于开发平台的复杂多样,使得嵌入式软件的测试从测试环境的建立到测试用例的编写也是复杂多样的。,由于嵌入式软件在开发时受目标机的硬件资源的限制,因此嵌入式软件在测试时应当充分考虑到对软件的性能进行测试,并且充分利用性能测试的数据来进一步优化软件。 最终的测试需要在目标机平台上进行,在对目标机进行测试时,我们需要对在宿主机上编译通过的代码进行插桩处理 因为嵌入式软件对系统的可靠性和安全性要求比一般的软件系统高,所以还需要进行系统的可靠性测试。,图9-8 插桩测试原理图,本节提要,1,2,3,嵌入式软件的质量控制,软件测试的基本概念,嵌入式软件测试基础,嵌入式软件测试技术,4,9.4 嵌入式软件测试技术,嵌入式软件测试和普通软件测试一样,通常都要进行静态测试和动态测试,以发现不同的问题。 int Add(int*int1,int*int2)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号