资源预览内容
第1页 / 共121页
第2页 / 共121页
第3页 / 共121页
第4页 / 共121页
第5页 / 共121页
第6页 / 共121页
第7页 / 共121页
第8页 / 共121页
第9页 / 共121页
第10页 / 共121页
亲,该文档总共121页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软件测试技术软件测试技术教材o 软件测试 佟伟光 主编 人民邮电出版社,2008-5o 软件测试(原书第二版):Ron Patton著,张小松等译机械工业出版社,2006-4关于职业毕业后, 你的 理想职业是什么?Program ManagementProduct ManagementUser EducationLogistics ManagementDevelopmentTestingCommunicationA Team:2007中国软件测试从业人员调查报告2007中国软件测试从业人员调查报告2007中国软件测试从业人员调查报告o 测试人员与开发人员比例 “调研数据显示, 2007 年软件测试从业人 员所在公司测试人员与开发人员的平均比例 为1: 4 1: 5, 与国外软件业1: 1 相 差甚远, 表明国内软件测试人才需求和职 业发展潜力巨大”。2007中国软件测试从业人员调查报告2007中国软件测试从业人员调查报告2007中国软件测试从业人员调查报告2007中国软件测试从业人员调查报告2007中国软件测试从业人员调查报告2007中国软件测试从业人员调查报告第 1 章 软件测试概述 o1.1 软件、软件危机、软件工程 o1.2 软件缺陷与软件故障o1.3 软件质量与质量模型 o1.4 软件测试 o1.5 软件测试人员的基本素质o 软件测试是软件工程的一个重要部 分,是确保软件工程质量的重要手段。o 最近几年来,由于软件工程的复杂 度的不断增强,更由于软件的工业化发展 趋势,软件测试得到广泛的重视。软件的四个发展阶段(1) 早期阶段计算机的主要用途是快速计算,软件编程简单, 不存在什么系统化的方法,开发没有任何管理,程序 的质量完全依赖于程序员个人的技巧。(2) 第二阶段多用户系统引入了人机交互的新概念,实时系统 需要从多个源收集、处理数据,从而使得进程以毫秒 而不是分钟来进行,在线存储的发展产生了第一代数 据库管理系统。 在这个时期,出现了软件产品和“软件作坊“的概 念,设计人员开发程序是为了用户更好地使用计算机 ,人们开始采用“软件工程“的方法来解决“软件危机“ 问题。软件的四个发展阶段(3) 第三阶段分布式系统极大地提高了计算机系统的复杂 性,特别是微处理器的出现和广泛应用,孕育了 一系列的智能产品。软件开发技术的度量问题受 到重视,著名的有软件能力成熟度模型 CMM等 。(4) 第四阶段是强大的桌面系统和计算机网络迅速发展的 时期,面向对象技术在许多领域迅速取代了传统 软件开发方法,专家系统和人工智能软件终于走 出实验室进入了实际应用,虚拟现实和多媒体系 统改变了与最终用户的通讯方式,出现了并行计 算和网络计算的研究。 软件下一个阶段是什么样子?1.1 软件、软件危机、软件工程o 1.1.1软件、软件危机、软件工程的基本概念o 1.1.2软件工程的目标及其一般开发过程o 1.1.3 可供选择的软件过程模型1.1.1软件、软件危机、软件工程的基本 概念o 计算机软件:是计算机系统中与硬件相互依 存的另一部分,它是包括程序,数据及其相 关文档的完整集合 o 软件危机:在计算机软件的开发和维护过程 中所遇到的一系列严重问题,软件生产与市 场需求出现极不适应的严重现象 o 软件工程:应用计算机科学、数学及管理科 学等原理开发软件的工程软件的特点1. 软件是逻辑的,而不是物理的产品。 2. 软件没有明显的制造过程。 3. 软件在运行和使用期间,存在退化问题。软件产品硬件产品软件的特点4. 大多数软件是自定的,而不是通过已有构件组 装而成的。 5. 软件成本相当昂贵。 IBM360研制人员最多时可达1000多人,耗 时四年,费用为5亿美元。Vista 耗时近六年 ,费用60亿美元。 6. 软件本身是复杂的。 软件比任何其他人类制造的结构更复杂,这使 得软件产品难以理解和维护。软件危机o 软件危机爆发于20世纪60年代末期,至今依然困 绕着我们,软件危机的具体表现如下: 1. 软件开发的进度难以控制,经常出现经费超预算、 完成期限一再拖延的现象。 2. 软件需求在开发初期不明确,导致矛盾在后期集中 暴露,从而对整个开发过程带来灾难性的后果。 3. 由于缺乏完整规范的资料,加之软件测试不充分, 从而造成软件质量低下,运行中出现大量问题。软件工程的概念o 1983年,IEEE的定义:软件工程 是研究和 应用如何以系统化的、规范的、可度量的方 法去开发、运行和维护软件,即把工程化应 用到软件上。o 一个软件产品从形成概念开始,经过开发、测 试、使用和维护,直到最后退出使用的全过程 称为软件生存周期。 o 软件生存周期根据软件所处的状态,以及软件 开发活动的目的和任务,可划分为若干个阶段 。一般软件生存周期包括软件定义、软件开发 、软件测试、软件使用与维护等几个部分。1.1.2软件工程的目标及其一般开发过程 软件生存周期 o 软件生存周期是指软件产品从考虑其概念开始到该 软件产品交付使用,直至最终退役为止的整个过程 ,一般包括: 1.计划 2.分析 3.设计 4.实现 5.测试 6.运行与维护o 可行性分析的任务是了解用户的要求及实现 环境,从技术、经济和社会等几个方面研究 并论证软件系统的可行性。 o 需求分析的任务是确定所要开发软件的功能 需求、性能需求和运行环境约束,编制软件 需求规格说明、软件系统的确认测试准则。 软件的性能需求包括软件的适应性、安全性 、可靠性、可维护性错误处理等。 1软件定义o 软件开发是按照需求规格说明的要求,由抽象到具体,逐步生成软件的过程。软件开发一般由设计、实现和测试等阶段组成。 2软件开发o 软件需经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。o 整个测试过程分单元测试、集成测试、系统测试以及验收测试四个阶段进行。o 测试的方法主要有白盒测试和黑盒测试。3软件测试o 软件的使用是在软件通过测试后,将软件安装在用户确定的运行环境中移交给用户使用。软件的维护是对软件系统进行修改或对软件需求变化做出反应的过程。 4软件使用和维护软件开发过程中存在各种复杂因素,为了解决由此而带来的种种问题,软件开发者们经过多年的摸索,给出了多种实现软件工程的 方式软件过程模型,如瀑布过程模型、螺旋过程模型和增量过程模型等。 1.1.3 可供选择的软件过程模型o 瀑布过程模型反映了人们早期对软件工程 的认识水平,是人们所熟悉的一种线性思 维的体现。 o 瀑布过程模型强调阶段的划分及其顺序性 、各阶段工作及其文档的完备性,是一种 严格线性的、按阶段顺序的、逐步细化的 开发模式,如图1-1所示。 1瀑布过程模型软件开发模型o 大棒模式 o 边写边改模式 o 流水模式(瀑布模式) o 螺旋过程模式 o 增量过程模式 o 快速原型过程模式边做边改模型(Build-and-Fix Model)在这种模型中 ,既没有规格说明 ,也没有经过设计 ,软件随着客户的 需要一次又一次地 不断被修改,如图 所示:图1-1 瀑布过程模型 o 螺旋过程模型的基本思路是,依据前一个版本的结果构造新的版本,这个不断重复迭代的过程形成了一个螺旋上升的路径,如图1-2所示。2螺旋过程模型图1-2 螺旋过程模型 o 有些时候可能会用一种几乎连续的过程小幅度地推进项目,这就是增量过程模型,如图1-3所示。 3增量过程模型图1-3 增量过程模型 o 快速原型过程模型首先是快速进行系统分析 , 在设计人员和用户的紧密配合下,快速确 定软件系统的基本要求,尽快实现一个可运 行的、功能简单的原型系统,然后通过对原 型系统逐步求精,不断扩充完善得到最终的 软件系统。4快速原型过程模型1.2 软件缺陷与软件故障o 1. 什么是软件缺陷和软件故障 o 软件缺陷是存在于软件(文档、数据、程序 )之中的那些不希望或不可接受的偏差。其 结果是软件运行于某一特定条件时出现软件 故障,这时称软件缺陷被激活。 o 软件故障是指软件运行过程中出现的一种不 希望或不可接受的内部状态,此时若无适当 措施(容错)加以及时处理,便产生软件失效 。2. 软件缺陷和软件故障案例1.美国迪斯尼公司狮子王游戏软件兼容性问题 2.美国航天局火星登陆事故 3.跨世纪“千年虫”问题 4.爱国者导弹防御系统 5. “冲击波”计算机病毒 6. Windows 2000 中文输入法漏洞 7.金山词霸出现的错误软件缺陷产生的原因软件缺陷的修复费用¥1¥10¥100¥1000+费用开发阶段 说明书 设计 编码 测试 发布 软件复杂性 交流不够、交流上有误解或者根本不 进行交流 程序设计错误 需求变化 时间压力 代码文档贫乏 软件开发工具3. 软件产生错误的原因1.3 软件质量与质量模型o 软件质量是软件的生命,它直接影响软件的使用与维护。 通常软件质量由以下几方面进行评价。 软件需求是衡量软件质量的基础,不符合需求 的软件就不具备质量。设计的软件应在功能、 性能等方面都符合要求,并能可靠地运行。 软件结构良好,易读、易于理解,并易于修改 、维护。 软件系统具有友好的用户界面,便于用户使用 。 软件生存周期中各阶段文档齐全、规范,便于 配置、管理。o 软件的质量因素很多,如正确性、精确性 、可靠性、容错性、性能、效率、易用性 、可理解性、简洁性、可复用性、可扩充 性、兼容性等。 o 软件质量因素也称为软件质量特性,反映 了质量的本质。讨论一个软件的质量,问 题最终要归结到定义软件的质量特性。o 面对众多的质量因素如何取折衷,这实际上 就是区分质量因素对软件质量影响程度轻重 的问题,这个问题已经有了解决方案,即软 件质量模型。 o 图1-4所示为McCall软件质量模型,质量模 型中的质量概念基于11个特性之上,这11 个特性分别面向软件产品的运行、修正、转 移。图1-4 McCall质量模型o 图1-5所示为ISO/IEC 91261991标准 规定的软件质量度量模型。它由3层组成, 其中第1层称为质量特性,第2层称为质量 子特性,第3层称为度量。图1-5 ISO软件质量度量模型 o 图1-6所示为新的ISO/IEC 9126软件质量 模型,软件质量包括“内部质量”、“外部质量 ”和“使用质量”三部分。图1-6 新的ISO/IEC 9126软件质量模型o 所谓的内部质量是从内部观点出发的软件产 品特性的总体,是针对内部质量需求被测量 和评价的质量。 o 内部质量特征主要包括:可维护性、灵活性 、可移植性、可重用性、可读性、可测试性 、可理解性。o 外部质量的定义是:软件产品在规定条件下 使用时满足需求的程度。外部质量是从外部 观点出发的软件产品特性的总体,它是当软 件执行时,更典型地是使用外部度量在模拟 环境中,用模拟数据测试时,所被测量和评 价的质量,即在预定的系统环境中运行时可 能达到的质量水平。 o 外部质量特征主要包括:正确性、可用性、 效率、可靠性、完整性、适应性、精确性、 坚固性。o 使用质量的定义是:在规定的使用环境下软 件产品使特定用户在达到规定目标方面的能 力。它是从用户观点出发,来看待软件产品 用于特定环境和条件下的质量,反映的是从 用户角度看到的软件产品在适当系统环境下 满足其需求的程度。 o 使用质量用以下质量特征表述:有效性、生产 率、安全性、满意程度等。1.4 软 件 测 试 o 1.4.1 软件测试的定义及目的o 简单地说,软件测试就是为了发现错误而执行程序的过程。 o 在IEEE提出的软件工程标准术语中,软件测试被定义为:“使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清 楚预期结果与实际结果之间的差别。” 软件测试是与软件质量密切联系在一起的,归根结底,软件测试是为了保证软
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号