软件测试技术(-).ppt_第1页
软件测试技术(-).ppt_第2页
软件测试技术(-).ppt_第3页
软件测试技术(-).ppt_第4页
软件测试技术(-).ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件测试技术 中国水利水电出版社 21世纪高等院校计算机系列教材 第一章概述 本章要点 软件测试的发展历史 软件测试技术的分类方法 软件测试原则 软件测试的定义 软件测试同软件开发之间的关系 软件测试与开发模型 软件测试工作流程 本章目标 了解软件测试的发展历程和行业现状 掌握软件测试技术的分类 理解软件测试的目的和软件测试原则 以及了解人们对软件测试行业的错误认识 掌握软件测试中的基本定义 基本知识 理解软件开发与软件测试的关系 1 1软件测试的发展历程及现状1 1 1软件测试的发展历程20世纪50 60年代 软件仍然处于次要位置 测试理论和方法的发展比较缓慢 70年代以后 软件技术的成熟和完善使得软件测试的规模和复杂度加大 软件测试也逐渐形成了一套完整的体系 逐渐走向规范化 1 1 2软件测试的现状与一些发达国家相比 国内测试工作还存在一定的差距 国内测试人员所占比例小 但是 在软件测试实现方面都是相当的 而且向产业化方向发展 1 2什么是软件测试1 2 1软件测试的定义根据侧重点的不同 主要有以下三种观点 1 1983年IEEE将软件测试定义为 使用人工或自动手段运行或测定某个系统的过程 其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别 该定义明确地提出了软件测试以检验是否满足需求为目标 2 Myers认为 是为了发现错误而执行程序的过程 明确提出了 寻找错误 是测试目的 3 从软件质量保证的角度看 是一种重要的软件质量保证活动 其动机是通过一些经济 高效的方法 捕捉软件中的错误 从而达到保证软件内在质量的目的 测试过程中的活动包括 分析 软件 静态测试 和 运行 软件 动态测试 也有人认为软件测试 softwaretesting 就是在软件投入运行前 对软件需求分析 设计规格说明和编码的最终复审 是软件质量保证的关键步骤 软件测试有两个基本职责 即验证和确认 注意 区分软件测试和软件调试 1 2 2软件测试生命周期测试的生命周期 softwaretestinglifecycle 分为几个阶段 如图1 1所示 前三个阶段就是引入程序错误阶段 后三个阶段就是清除程序错误的阶段 图1 1测试生命周期 1 2 3软件开发与测试模型下面我们将介绍几种典型的软件开发与测试模型 一 软件开发与测试V模型在传统开发过程中测试不受重视 仅把它作为在需求分析 概要设计 详细设计及编码之后的一个阶段 尤其在瀑布模型中 如图1 2所示 在V模型中 描述了一些不同的测试级别 并说明了这些级别所对应的生命周期中不同的阶段 清楚地描述了这些测试阶段和开发过程期间的对应关系 图1 2V模型示意图 V模型适用于所有类型的开发过程 但并不一定适用于开发和测试过程的所有方面 二 软件开发与测试W模型由于各种原因 开发的每一个环节都可能产生错误 如果坚持各个阶段的技术评审 就能够尽早发现和预防错误 图1 3为软件开发与测试的W模型 形象地说明了软件测试与开发的这种同步性 图1 3W模型示意图 应用该模型的优点在于 每个软件开发活动结束后就可以执行相应的测试 如 在需求分析结束后 就可以进行需求分析测试 三 软件开发与测试H模型与前两种模型相比 H模型充分地体现了测试过程 如图1 4所示的H模型揭示了 1 软件测试不仅仅指测试的执行 还包括很多其他的活动 2 软件测试是一个独立的流程 贯穿产品的整个开发周期 与其它流程并发进行 3 软件测试要尽早准备 尽早执行 图1 4H模型示意图 4 软件测试根据被测物的不同是分层次的 不同层次的测试活动可以是按照某个次序先后进行的 但也可能是反复的 1 2 4与软件测试相关的术语1 错误 Error 程序员在编写代码时会出错 我们把这种错误称之为bug 随着开发过程的进行 错误会不断的放大 2 缺陷 Default 缺陷是错误的结果 更精确的说是错误的表现 3 失效 Failure 在缺陷运行时 常常会发生失效的情况 一种是过错缺陷对应的失效 一种是遗漏缺陷对应的失效 4 测试 Test 测试是一项采用测试用例执行软件的活动 在这项活动中某个系统或组成的部分将在特定的条件下运行 然后要观察并记录结果 以便对系统或组成部分进行评价 5 测试用例 TestCase 测试用例是为特定的目的而设计的一组测试输入 执行条件和预期的结果 6 回归测试 Regressiontesting 回归测试的目的是为了测试由于修正缺陷而更新的应用程序 以确保彻底修正了上一个版本的缺陷 并且没有引入新的软件缺陷 1 3软件测试技术分类从不同的角度 可以把软件测试技术分成不同种类 如 一 从是否需要执行被测软件的角度 可分为静态测试和动态测试 那些不利用计算运行被测程序 而是通过其他手段达到测试目的的方法称作静态测试 下面我们对这几种静态测试分别加以介绍 代码检查 代码走查 桌面检查 同行评分下面我们将要介绍的黑盒测试和白盒测试就属于动态测试 二 从软件测试用例设计方法的角度 可分为黑盒测试 Black BoxTesting 和白盒测试 White BoxTesting 三 按照软件测试的策略和过程分类 软件测试可分为单元测试 UnitTesting 集成测试 IntegrationTesting 确认测试 ValidationTesting 系统测试 SystemTesting 和验收测试 VerificationTesting 1 4软件测试的目的测试真正的目的是使我们通过对软件错误的原因和分布进行归纳 来发现并排除当前软件产品的缺陷 对在需求和设计过程中存在的问题查缺补漏 从而确保软件产品的质量 G Myers给出了关于测试的一些规则 我们也可以把这些规则看作是测试的目标 1 软件测试是为了发现错误而执行程序的过程 2 测试是为了证明程序有错 而不是证明程序无错 3 一个好的测试用例在于他能发现至今未发现的错误 4 一个成功的测试是发现了至今未发现的错误的测试 这里要强调的一点是 软件测试不只是软件测试人员的工作 也是软件开发人员和软件使用者的工作 1 5软件测试的原则1 5 1尽早地和不断地进行软件测试IBM的研究结果表明 缺陷存在放大趋势 图1 5表示了缺陷放大模型大致状况 图1 5缺陷放大模型 由此可见 问题发现越早 解决问题的代价就越小 这是软件开发过程中的黄金法则 1 5 2不可能完全的测试对一个程序进行完全测试就是意味着在测试结束之后 再也不会发现其它的软件错误了 其实 这是不可能的 主要原因有以下几点 一 不可能测试程序对所有可能输入的响应 二 不可能测试到程序每一条可能的执行路径三 无法找出所有的设计错误四 不能采用逻辑来证明程序的正确性 1 5 3增量测试 由小到大 图1 7测试资源关系图 由小到大 指的是软件测试的粒度 无论是传统的软件测试还是面向对象的软件测试都要遵循这样的原则 如图1 7所示 多个单元组合过渡到集成测试阶段 集成测试阶段过渡到更高级别的系统测试阶段 虚线是各个测试阶段的发布基线 随着测试的逐步深入 范围的逐步扩大 测试时间 可用资源也随之增大 1 5 4避免测试自己的程序避免程序员测试自己的代码的主要原因归纳如下 1 程序员轻易不会承认自己写的程序有错误 2 程序员的测试思路有局限性 在做测试时很容易受到编程思路的影响 3 多数程序员没有严格正规的职业训练 缺乏专业测试人员的意识 4 程序员没有养成错误跟踪和回归测试的习惯 1 5 5设计周密的测试用例软件测试的本质就是针对要测试的内容确定一组测试用例 测试用例至少应该包括如下几个基本信息 1 在执行测试用例之前 应满足的前提条件 2 输入 合理的 不合理的 3 预期输出 包括后果和实际输出 图1 8显示了一个典型的测试用例所应该具有的基本信息 图1 8典型的测试用例信息 测试用例是测试工作的核心 应该尽量设计的周密细致 这样才能更好的保证测试工作的质量 下面举例来说明这一点 以一个实现登录功能的小程序为例 它允许用户选择城市和地区 输入自己的账号和密码 如图1 9所示 通过Alt F4组合键和 Exit 按钮来终止程序 Tab键在区域中间移动 图1 9登录窗口 下面根据组成页面的具体元素 分别从几个方面做了一些比较全面的测试用例 1 下拉框和输入框测试用例表1 1下拉框和输入框测试用例 2 功能测试 表1 2功能测试用例 3 各种错误数据的测试表1 3错误数据的测试用例 4 特殊测试表1 4特殊测试用例 1 5 6注意错误集中的现象软件缺陷的 扎堆 现象的常见形式 1 对话框的某个控件功能不起作用 可能其他控件的功能也不起作用 2 某个文本框不能正确显示双字节字符 则其他文本框也可能不支持双字节字符 3 联机帮助某段文字的翻译包含了很多错误 与其相邻的上下段的文字可能也包含很多的语言质量问题 4 安装文件某个对话框的 上一步 或 下一步 按钮被截断 则这两个按钮在其他对话框中也可能被截断 1 5 7确认BUG的有效性有时候测试人员提交的BUG并不是真正的BUG 图1 10具体地描述了无效BUG的来源 一般由A测试人员发现的BUG 一定要由另外一个B测试人员来进行确认 如果发现严重的BUG可以召开评审会进行讨论和分析 图1 10无效BUG来源构成图 1 5 8合理安排测试计划合理的测试计划有助于测试工作顺利有序地进行 因此要求在对软件进行测试之前所作的测试计划中 应该结合了多种针对性强的测试方法 列出所有可使用资源 建立一个正确的测试目标 要本着严谨 准确的原则 周到细致地做好测试前期的准备工作 避免测试的随意性 尤其是要尽量科学合理地安排测试时间 图1 11错误依赖关系 1 5 9回归测试 这些错误之间存在单纯的依赖或者复杂的多重依赖关系 如图1 11所示 其中 a 图中的A B关系表达为 A错误依赖于B错误的关闭而关闭 如果多了一条路径 如 b 图中A B C关系 A错误依赖于B错误和C错误的同时关闭而关闭 c 图是 a 和 b 的复合方式 因程序中的错误存在着一对多 多对多的复杂关系而变得难以处理 并且有些错误关联和依赖关系处于隐性状态 1 5 10测试结果的统计和分析只有对这些输出信息进行深入地统计 分析和比较 才能够正确的鉴别测试后输出的数据 给出清晰的错误原因分析报告 当输出的信息很庞大时 我们可以借助专业的测试工具 1 5 11及时更新测试事实上 有可能导致测试失败的原因还有很多 可大致归纳为如下几点 1 测试团队管理者失职 2 测试团队中沟通不好 3 测试团队和项目团队沟通不良 4 测试过程中 执行角色无准确定义 5 测试团队缺乏良好的培训 1 6软件测试工作流程一般的软件测试总体工作流程如图1 12所示 图1 12软件测试工作总体流程图 1 需求阶段需求阶段是软件测试活动的前提 需求阶段测试工作流程如图1 13所示 图1 13需求阶段测试活动流程图 2 设计 编码阶段测试工作流程 图1 14设计 编码阶段测试流程图 这一环节以模块为单位循环 单元测试方案制定 编码 单元测试是否通过 测试抽检是否通过 重新编写没有通过单元测试和测试抽检的代码 最终形成一份单元测试总结报告 具体流程如图1 14所示 3 集成测试 系统测试和验收测试阶段该测试阶段流程如图1 15所示 图1 15集成测试 系统测试和验收测试阶段流程图 1 7软件测试中的误区误区1调试和测试是一样的误区2软件测试在软件开发过程中并不重要误区3在软件开发结束之后进行测试误区4过分依赖Beta测试误区5过分依赖自动化测试误区6测试是可穷尽的误区7测试是证明软件的正确性误区8可以忽略测试的设计1 8一个贯穿全文的例子 电厂两票管理系统 1 8 1系统简介操作票 工作票 简称两票 是 电业 电厂 安全工作规程 中的核心内容之一 对保证电业安全生产具有重要的作用 操作票是保证正确电气倒闸 热机 操作的重要环节和前提条件 使用操作票的目的是为了保障人身与设备的安全 确保电气设备倒闸操作的正确性 防止电气误操作事故发生 工作票是保证电气 电厂设备 检修工作安全的重要措施 是检修人员在运行设备上或运行区域内进行检修和试验工作 以及做可能影响设备的正常运行或备用状态的其它工作的重要书面依据 两票 的办理过程基本上都是开票 各部门负责人或三种人审批签字 工作结束 部门或厂部检查审核这样的一种线性办理过程 电力部门分为水电 火电 供电三种类型 各厂 局要处理的两票类型通常有 水电厂 电气一种工作票 电气二种工作票 水力机械工作票 一级动火工作票 二级动火工作票 电气倒闸操作票 继保安措票 脚手架工作单 水力机械操作票 溢洪闸门操作票火电厂 电气一种工作票 电气二种工作票 水力机械工作票 一级动火工作票 二级动火工作票 电气倒闸操作票 继保安措票 脚手架工作单 热力工作票供电局 电气一种工作票 电气二种工作票 水力机械工作票 一级动火工作票 二级动火工作票 电气倒闸操作票 继保安措票 脚手架工作单 一种工作票 线路二种工作票 为了使读者更好的了解两票系统以及后面各章节的内容 在这里对一些电力系统专业术语作如下解释 一次图 电气主接线是由高压电器通过连接线 按其功能要求组成接受和分配电能的电路 成为传输强电流 高电压的网络 故又称为一次接线 那么用规定的设备文字和图形符号并按工作顺序排列 详细地表示电气设备或成套装置的全部基本组成和连接关系的单线接线图 成为主接线电路图 这里简称为一次图 二次图 在电力系统中 凡监视 控制 测量以及起保护作用的设备 如机电保护 控制和信号装 置等 皆属于二次设备 二次接线就是由二次设备构成的回路 这里我们就把二次设备接线图简称为二次图 分厂 发电厂通常由多个分厂组成 其中电气分厂 汽机分厂和锅炉分厂是发电厂的几个重要的分厂 电气设备 为满足生产的需要 发电厂中安装有各种设备 通常把生产和分配电能的设备称为一次设备 具体包括如下几种 生产和转换电能的设备 接通或断开电路的开关电器 限制故障电流和防御过电压的电气 接地装置 载流导体 此外还有一些对一次设备进行测量 控制 监视和保护用的二次设备 如 仪用互感器 机电保护及自动装置 直流电源设备等 在本书中提到的刀闸 开关等设备就属于电气设备 五妨 规则 电力系统的倒闸操作具有前后顺序和严格的逻辑规则 五防 规则就是根据电气运行人员多年的运行经验 总结出来的倒闸操作规则 如下 1 防止误分合断路器 防止带地线合刀闸2 防止带负荷拉合隔离开关 3 防止带电挂接地线或接地刀闸 4 防止带接地线或合接地刀闸送电 5 防止误入带电间隔 1 8 2系统运行环境客户端平台 windows98 2000 windowsNTworkstation Linux等所有具有支持JAVA的浏览器系统 服务器端平台 windows2000server windowsNTServer Linux UNIX等所有支持JAVABean的系统平台 数据库服务器 Oracle数据库或SQLServer2000数据库或ACCESS数据库 Web服务器 Tomcat5 0 1 8 3系统总体结构两票系统主要由两部分构成 即 操作票子系统和工作票子系统 整个系统的总体结构如图1 16所示 1 8 4系统功能 略 图1 16两票系统总体结构图 本章小结本章介绍了软件测试发展的历程 以及其在国内的发展状况 随着软件开发过程和开发技术的不断改进 软件测试理论和方法也在不断完善 测试工具也在蓬勃发展 通过本章的论述 可以了解到软件测试已经不再只是进行简单的程序逻辑检查 而是一个伴随着整个软件开发过程的活动 测试对象也不仅仅是程序代码 而开发过程中产生的所有软件产品 甚至是产品使用说明也包括在内 测试过程中为了更好的保证软件测试的质量 首先要遵循一定的测试原则 最为重要的就是应该尽早的进行测试 其次 正确处理开发与测试之间的关系 更好的把开发与测试过程集成到一起 从而提高测试效率 节约测试成本 本章所介绍的几种软件开发与测试模型 如 V模型 W模型和H模型 三种模型在不同程度上反映了软件开发与软件测试的关系 其中 V模型非常明确地标明了测

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论