软件测试白盒黑盒测试.ppt_第1页
软件测试白盒黑盒测试.ppt_第2页
软件测试白盒黑盒测试.ppt_第3页
软件测试白盒黑盒测试.ppt_第4页
软件测试白盒黑盒测试.ppt_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

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

文档简介

主讲 于海洋 高等院校计算机系列课程 软件测试 教材 软件测试技术 21世纪高等院校计算机系列教材作者 曲朝阳等编著 出版社 中国水利水电出版社 2006 8 1 ISBN 7508439295 参考教材 软件测试教程 重点大学计算机教材作者 宫云战主编 出版社 机械工业出版社 2008 9 1 ISBN 711124897 参考教材 软件测试 作者 美 Paul Jorgensen译者 韩柯杜旭涛出版社 机械工业出版社原出版社 CRC 参考教材 计算机软件测试技术 郑人杰清华大学出版社 1990 参考教材 软件测试教程 作者 贺平出版社 电子工业出版社页数 319定价 29 0出版时间 2005 06 01 教学目标 了解软件测试的基本原理和基本概念掌握基本的软件测试方法和技术提高软件质量控制的意识和素质培养工程实践及团队合作精神 评分标准 上机实践 熟练运用软件测试的方法和技术 在对实际程序进行测试 同时遵照软件文档规范提交设计文档 源程序和测试报告 20 平时出勤及课堂练习 10 期末考试 闭卷考试 70 软件错误无处不在 只要是人编写的软件 就不能避免软件错误的发生 软件错误的案例 1 迪斯尼的狮子王游戏时间 1994 1995背景 迪斯尼公司首次进军儿童游戏市场 市场宣传力度很大 前期销售情况很好出现的问题 该游戏在一些PC机上无法玩原因 迪斯尼公司没有对市场上已经投入运行的PC机型进行调研 并且进行测试 导至该游戏只在程序员开发游戏的系统上可以运行 但在大众使用的常见系统中无法运行结果 迪斯尼公司不得不承担客户的投诉 产品退货 更换光盘 以及又一轮的调试 修改和测试的所有费用 软件错误的案例 2 Intel奔腾浮点除法软件缺陷时间 1994背景 Intel发布的一款新处理器问题 在装有这款处理器计算机的计算器中执行算式 4195835 3145727 3145727 4195835 不等于0原因 老式奔腾CPU的浮点除法软件有缺陷结果 Intel事实上在芯片发布之前 已经发现了这个缺陷 但认为不严重 没有修正 被外界发现后 试图掩饰 最终 迫于舆论压力公开道歉 花费4亿美元更换老芯片 软件错误的案例 3 美国航天局火星极地登陆时间 1999年12月3日背景 火星极地登陆飞船在试图登陆火星表面时失踪 问题 某一个数据位被意外复位 原因 测试过程分两组 一组是测试飞船脚的落地打开过程 另一组是测试飞船打开后的着陆过程 前一组没有注意数据位是否被置位 因为这不是他们负责的范围 而后一个组在每次测试之前又重置计算机 清除所有的数据位 双方独立工作都很正常 但两个组没有进行集成测试 结果 飞船坠毁 软件错误的案例 4 千年虫时间 20世纪90年代背景 随着21世纪的到来 很多的计算机系统都面临着 千年虫 的危害问题 这样就导致2000年以后的年份的记录出现问题 如00年是指1900还是2000 原因 20世纪70年代时 由于计算机存储空间很小 并且十分昂贵 所以在计算机中记录时间采用了 偷懒 的方式 例如将1973缩减为73结果 世界各地为了更换和升级系统 花费了上百亿的美元 软件错误的案例 5 爱国者导弹防御系统炸死自家人背景 海湾战争时导弹防御系统问题 软件系统缺陷原因 系统时间的累计错误 延时14个小时 造成跟踪系统失去了准确度 结果 爱国者导弹炸死28名美军士兵 软件测试工程师 需要具备哪些能力 通用技能上 1 基本计算机知识 操作系统 数据库 通讯协议原理 熟悉至少一门编程语言 2 基本软件测试知识 各种测试理论 测试方法论 测试用例编写 缺陷界定标准 软件质量评估 3 简单项目管理知识 软件测试工程师 需要具备哪些能力 性格上 有牛皮糖属性的为佳 越 不要脸 越好测试工程师提交的BUG越多 意味着研发工程师工作质量越差 需要返工的工作量也越大 甚至会影响绩效 所以测试工程师有时候很容易得罪研发部门 一个可以相对坚持原则 比如3级BUG以上一定要改 又能拉下脸和不愉快的研发工程师保持较好关系的测试工程师 会对项目质量起到很关键作用 软件测试工程师 需要具备哪些能力 你不是产品 但你知道产品是怎么工作的 你不是运营 但你知道用户关心什么 你不是开发 但你知道开发同事怎么工作 你不是设计 但你有你对交互逻辑的理解 你不是销售和编辑 但你熟悉产品业务 第一章概述 本章要点 软件测试的发展历史 软件测试技术的分类方法 软件测试原则 软件测试的定义 软件测试同软件开发之间的关系 软件测试与开发模型 软件测试工作流程 本章目标 了解软件测试的发展历程和行业现状 掌握软件测试技术的分类 理解软件测试的目的和软件测试原则 以及了解人们对软件测试行业的错误认识 掌握软件测试中的基本定义 基本知识 理解软件开发与软件测试的关系 1 1软件测试的发展历程及现状1 1 1软件测试的发展历程20世纪50 60年代 软件仍然处于次要位置 测试理论和方法的发展比较缓慢 70年代以后 软件技术的成熟和完善使得软件测试的规模和复杂度加大 软件测试也逐渐形成了一套完整的体系 逐渐走向规范化 如今对软件质量的要求越来越高 质量的控制已经不仅仅是传统意义上的基于代码运行上的测试 软件测试已经是一个基于整个软件生命周期的质量控制活动 1 1软件测试的发展历程及现状1 1 2软件测试的现状与一些发达国家相比 国内测试工作还存在一定的差距 国内测试人员所占比例小 微软的开发工程师与测试工程师的比例是1 2 国内一般公司是6 1 与发达国家相比 我们的差距主要在测试意识 测试理论的研究 测试工具软件的开发以及从业人员的数量等方面 1 1软件测试的发展历程及现状近年来 随着软件外包行业的兴起 国内软件质量保证的意识也在加强 占整体外包业务85 的对日软件外包中主要的工作就是软件测试 IBM 百度 华为 惠普 盛大 联想等大型IT企业均表示出对成熟软件测试人员的期盼 1 2什么是软件测试 softwaretesting 1 2 1软件测试的定义根据侧重点的不同 主要有以下三种观点 1 使用人工或自动手段运行或测定某个系统的过程 其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别 该定义明确地提出了软件测试以检验是否满足需求为目标 2 软件测试是为了发现错误而执行程序的过程 明确提出了 寻找错误 是测试目的 3 从软件质量保证的角度看 是一种重要的软件质量保证活动 其动机是通过一些经济 高效的方法 捕捉软件中的错误 从而达到保证软件内在质量的目的 最终目的是验证软件是否按着预期运行 测试过程中的活动包括 分析 软件 静态测试 和 运行 软件 动态测试 也有人认为软件测试 softwaretesting 就是在软件投入运行前 对软件需求分析 设计规格说明和编码的最终复审 是软件质量保证的关键步骤 软件测试有两个基本职责 确认 保证开发过程中软件符合产品说明书的过程验证 保证最终产品满足用户要求的过程经常会确认了但没有验证 例如1990年哈勃天文望远镜事件 注意 区分软件测试和软件调试 1 调试分析和定位BUG 不能完全代替测试 2 调试是为了使软件正确运行 测试是找错误 3 调试对象是源代码 测试的对象是开发过程各个阶段的所有产品 1 2 2软件测试生命周期测试的生命周期 softwaretestinglifecycle 分为几个阶段 如图1 1所示 前三个阶段就是引入程序错误阶段 后三个阶段就是清除程序错误的阶段 图1 1测试生命周期 1 2 3软件开发与测试模型下面我们将介绍几种典型的软件开发与测试模型 一 软件开发模型1 大爆炸模型一大堆能量 这里指开发软件所需的人力和物力 放在一起 巨大的能量进行释放 通常的结果可能是产生了优秀的软件产品或成为一堆 废品 不成功的软件 优点 思路简单 计划 进度和正规开发过程几乎没有 所有的精力集中在开发软件和编写代码上 通常可能是开发者的 突发奇想 缺点 开发过程是非工程化的 随意性大 由于软件已经完成 不可能回头修复已经无法挽回的问题 软件测试的工作其实只是向用户报告发现的问题 关于测试 有的较简单 有的则非常困难 测试工作妨碍软件的交付 测试越深入 就会发现越来越多的缺陷 实际中测试几乎不作 1 2 3软件开发与测试模型一 软件开发模型1 大爆炸模型 1 2 3软件开发与测试模型一 软件开发模型瀑布模型瀑布模型是将软件生命周期的各项活动 规定为按照固定顺序相连的若干个阶段性工作 形如瀑布流水 最终得到软件产品 1 2 3软件开发与测试模型一 软件开发模型瀑布法优点 易于理解 调研开发的阶段性 强调早期计划及需求调查 能够确定何时能够交付产品及何时进行评审与测试 缺点 需求调查分析只进行一次 不能适应需求变化 顺序的开发流程 使得开发中的经验教训不能反馈到该项目的开发中去 不能反映出软件开发过程的反复与迭代性 没有包含任何类型的风险评估 开发中出现的问题直到开发后期才能够显露 因此失去及早纠正的机会 边写边改法采用边写边改法的软件开发通常只是有了比较粗略的想法就开始进行简单的设计 然后进行较长的反复编写 测试与修复 是一个循环的过程 在认为无法更精细的描述软件产品要求时 就发布产品 优点 能够较为迅速的展现成果 适合需要快速制作而且用完就扔的小项目 如示范程序 演示程序等 缺点 其编码和测试可能将是长期的循环往复的过程 快速原型模型快速原型模型的第一步是建造一个快速原型 实现客户或未来的用户与系统的交互 用户或客户对原型进行评价 进一步细化待开发软件的需求 通过逐步调整原型使其满足客户的要求 开发人员可以确定客户的真正需求是什么 第二步则在第一步的基础上开发客户满意的软件产品 螺旋模式法螺旋模式是瀑布模式与边写边改演化模式相结合 并加入风险评估所建立的软件开发模式 每一个螺旋周期 为开发的一次迭代在每次迭代中 没有固定定义的软件活动 而是根据需要选择 将开发活动与风险分析相结合 用于降低和控制风险 软件开发与软件测试的关系 测试与开发各阶段的关系 软件测试与软件开发过程的关系 1 2 3软件开发与测试模型一 软件开发与测试V模型在传统开发过程中测试不受重视 仅把它作为在需求分析 概要设计 详细设计及编码之后的一个阶段 尤其在瀑布模型中 V模型 描述了一些不同的测试级别 级别对应的生命周期中不同的阶段 这些测试阶段和开发过程期间存在对应关系 V模型示意图 二 软件开发与测试W模型开发的每一个环节都可能产生错误 如果坚持各个阶段的技术评审 就能够尽早发现和预防错误 W模型 形象地说明了软件测试与开发的这种同步性 W模型的优点在于 每个软件开发活动结束后就可以执行相应的测试 如 在需求分析结束后 就可以进行需求分析测试 图1 3W模型示意图 三 软件开发与测试H模型与前两种模型相比 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软件测试的目的测试真正的目的是使我们通过对软件错误的原因和分布进行归纳 来发现并排除当前软件产品的缺陷 对在需求和设计过程中存在的问题查缺补漏 从而确保软件产品的质量 测试的目标 1 软件测试是为了发现错误而执行程序的过程 2 测试是为了证明程序有错 而不是证明程序无错 3 一个好的测试用例在于他能发现至今未发现的错误 4 一个成功的测试是发现了至今未发现的错误的测试 软件测试不只是软件测试人员的工作 也是软件开发人员和软件使用者的工作 1 5软件测试的原则1 5 1尽早地和不断地进行软件测试缺陷存在放大趋势 图1 5缺陷放大模型 问题发现越早 解决问题的代价就越小 这是软件开发过程中的黄金法则 1 5 2不可能完全的测试对一个程序进行完全测试就是意味着在测试结束之后 再也不会发现其它的软件错误了 这是不可能的 主要原因有以下几点 一 不可能测试程序对所有可能输入的响应 1 对所有有效输入2 对所有无效输入3 对所有编辑过的输入 如Backspace反复编辑 4 对所有输入时机的变化 输入的随机中断 无法进行完全测试的例子 程序P X Y Z 若X Y为所有可能的整数在字长32位机上测试X1 Y1 Z1 Xn Yn Znn 232 232 264 1 84 1019 1 5 2不可能完全的测试二 不可能测试到程序每一条可能的执行路径 1 5 2不可能完全的测试三 无法找出所有的设计错误四 不能采用逻辑来证明程序的正确性 1 5 3增量测试 由小到大 测试资源关系图 1 5 4避免测试自己的程序避免程序员测试自己的代码的主要原因 1 程序员轻易不会承认自己写的程序有错误 2 程序员的测试思路有局限性 在做测试时很容易受到编程思路的影响 3 多数程序员没有严格正规的职业训练 缺乏专业测试人员的意识 4 程序员没有养成错误跟踪和回归测试的习惯 1 5 5设计周密的测试用例软件测试的本质就是针对要测试的内容确定一组测试用例 测试用例至少应该包括如下几个基本信息 1 在执行测试用例之前 应满足的前提条件 2 输入 合理的 不合理的 3 预期输出 包括后果和实际输出 图1 8显示了一个典型的测试用例所应该具有的基本信息 测试用例是测试工作的核心 应该尽量设计的周密细致 这样才能更好的保证测试工作的质量 以一个实现登录功能的小程序为例 它允许用户选择城市和地区 输入自己的账号和密码 通过Alt F4组合键和 退出 按钮来终止程序 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 一般由A测试人员发现的BUG 一定要由另外一个B测试人员来进行确认 如果发现严重的BUG可以召开评审会进行讨论和分析 1 5 7确认BUG的有效性有时候测试人员提交的BUG并不是真正的BUG 无效BUG来源构成图 1 5 8合理安排测试计划合理的测试计划有助于测试工作顺利有序地进行 要求 结合多种针对性强的测试方法 列出所有可使用资源 建立一个正确的测试目标 要本着严谨 准确的原则 周到细致地做好测试前期的准备工作 避免测试的随意性 尤其是要尽量科学合理地安排测试时间 1 5 9回归测试 程序员修正BUG时 完全有可能会引入一处或多处错误 当需求变更时 对现有系统也会产生类似的波及效应 导致错误产生 这是因为错误具有关联现象 因此 当程序改动时 需要进行多次回归测试以保证错误被正确关闭 错误依赖关系 1 5 9回归测试错误具有关联现象 a 图中的A B关系表达为 A错误依赖于B错误的关闭而关闭 b 图 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设计 编码阶段测试流程图 这一环节以模块为单位循环 单元测试方案制定 编码 单元测试是否通过 测试抽检是否通过 重新编写没有通过单元测试和测试抽检的代码 最终形成一份单元测试总结报告 3 集成测试 系统测试和验收测试阶段该测试阶段流程如图1 15所示 图1 15集成测试 系统测试和验收测试阶段流程图 1 7软件测试中的误区误区1调试和测试是一样的1 软件测试是找出软件已经存在的错误 而调试是定位错误 修改程序以修正错误 2 软件测试从一个已知的条件开始 有预知的结局而调试从未知的条件开始 其结局不可预知3 软件测试可以计划 可以预先制定测试用例和过程 工作进度可以度量 而调试不能计划 进度不可度量 4 测试的对像可以是文档和代码而调试的对像只能是代码 1 7软件测试中的误区误区2软件测试在软件开发过程中并不重要误区3在软件开发结束之后进行测试误区4过分依赖Beta测试误区5过分依赖自动化测试误区6测试是可穷尽的误区7测试是证明软件的正确性误区8可以忽略测试的设计 1 8软件测试过程 1 8 1制定测试计划1 8 2测试执行过程 1 8 1制定测试计划 1 制定计划本阶段的主要工作内容 对需求规格说明书的仔细研究 将要测试的产品分解成可独立测试的单元 为每个测试单元确定采用的测试技术 为测试的下一个阶段及其活动制定计划制定计划包括 1 概要测试计划 2 详细测试计划 1 8 2测试执行过程 1 测试执行过程的三个阶段 1 初测期 测试主要功能和关键的执行路径 排除主要障碍 2 细测期 依据测试计划和测试大纲 测试用例 逐一测试大大小小的功能 方方面面的特性 性能 用户界面 兼容性 可用性等等 预期可发现大量不同性质 不同严重程度的错误和问题 3 回归测试期 系统已达到稳定 在一轮测试中发现的错误已十分有限 复查已知错误的纠正情况 确认未引发任何新的错误时 终结回归测试 测试执行过程 续 三个测试期阶段图示 2 集成测试过程中的两个重要里程碑在集成测试过程中的两个重要的里程碑是功能冻结和代码冻结的确定 这两个里程碑界定出回归测试期的起止界限 功能冻结 Function FeatureFreeze 经过测试 符合设计要求 确认系统功能和其他特性均不再做任何改变 代码冻结 CodeFreeze 理论上 在无错误时冻结程序代码 但实际上 代码冻结只标志系统的当前版本的质量已达到预期的要求 冻结程序的源代码 不再对其做任何修改 这个里程碑是设置在软件通过最终回归测试之后 测试执行过程 续 1 9软件质量保证 1 9 1软件错误与质量保证1 9 2软件质量管理1 9 3软件能力成熟度模型1 9 4ISO9000标准简介 1 9 1软件错误与质量保证 1 9 1 1程序正确性情况1 9 1 2软件错误类型1 9 1 3程序中隐藏错误的估计 1 9 1 1程序正确性情况 程序编写无语法错误 这是程序运行的最起码条件 否则无法通过编译程序的检查程序执行中未发现明显的运行错误 这是指程序运行时 没有因为产生过大或过小的数据 由于溢出而无法执行 也没有遇到死循环等情况程序中无不适当语句 程序尽管符合语法规则 也未出现运行错误 但有些语句不适当 例如 有的变量经过说明 但未曾引用 或有的变量未置初始值而被有引用 有的变量经过多次赋值 但未引用等 程序正确性情况 续 程序运行时能通过典型的有效测试数据 得到正确的预期结果 这说明程序能够接受规格说明所规定的正常条件下的合理数据 并给出正确结果程序运行时能通过典型的无效测试数据 得到正确的结果 程序能够接受规格说明中多规定的异常条件下的不合理数据 并给出正确结果程序运行时能通过任何可能给出的数据 给出正确的结果 1 9 1 2软件错误类型和严重程度 根据错误的性质 我们可以将软件错误分为以下几种类型 软件需求错误 软件需求制定的不合理或不正确 需求不完全 其中含有逻辑错误 需求分析的文档有误等 功能和性能错误 功能或性能规定的有错误 或是遗漏了某些功能 或是规定了某些冗余的功能 为用户提供的信息有错 或者信息不正确 对意外的异常情况处理有误等 软件错误类型和严重程度 续 软件结构错误 程序控制流或控制顺序有误 处理过程有误等 数据错误 数据定义或数据结构有误 数据存取或数据操作有误等 例如动态数据与静态数据混淆 参数与控制数据混淆等 软件实现和编码错误 编码错 或按键错 违背编码风格要求或是编码标准的问题 包括语法错 数据名错 局部变量与全局变量混淆 或是程序逻辑有误等 软件错误类型和严重程度 续 软件集成错误 软件的内部接口 外部接口有误 软件各相关部分在时间配合 数据吞吐量等方面不协调软件系统结构错误 操作系统调用错或使用错 恢复错误 诊断错误 分割及覆盖错误 以及引用环境的错误等 测试定义与测试执行错误 测试的错误往往被人们所忽略 它可能包括测试方设计与测试实施的错误 测试文档的问题 测试用例不够充分等 软件错误类型和严重程度 续 软件错误分类统计 软件错误类型和严重程度 续 按错误发生的影响和后果 错误的严重程度可以分为如下几类 较小错误 这类错误只是对系统的输出结果有一些非实质性的影响 如输出的数据格式不符合要求中等错误 对系统的运行有局部影响 如输出的某一部分数据有错误或出现冗余较严重错误 系统的行为由于错误的干扰而出现明显不合情理的现象 如开出0 00元的支票 系统的输出结果完全不可信赖 严重错误 系统运行不可跟踪 一时不能掌握其规律 时好时坏 非常严重的错误 系统运行中突然停机 其原因不明 且无法软启动 最严重错误 运行被测的软件导致环境遭到破坏 或者造成事故 引起生命 财产的损失 1 9 1 3程序中隐藏错误 数量的估计 SeedingModel假设鱼塘中只有一个品种的鱼 目标是估计它的数目N方法 向鱼塘中释放Nt条带标记的鱼 使其与其他未作标记的鱼充分混合 几天后 再从池塘中取一些样本 并根据标记进行区别 得到带标记的鱼nt条 没有标记的n条 如果这一取样是随机进行的 那么可以得到如下的关系 程序中隐藏错误数量的估计 续 Hyman的改进的方法 Hyman分别测试法 两个 或多个 程序员一开始针对同一个程序分别独立的进行排错工作 假设这个工作大约需要4个月完成 在开始的几周内 由一位分析员来评价他们的工作 可以利用公式来估算错误的数量 这样的估算每隔几周就进行一次 直到得到满意的N为止 在过一个月或两个月后 让第二个人去做其他的工作 将工作移交给第一个人 这样在该承袭的排错工作完成1 4或1 2之后 就可以得到该程序错误数的合理估计值 程序中隐藏错误数量的估计 续 由两个测试员同时互相独立地测试同一程序的两个副本 用t表示测试时间 月 记t 0时 程序中原有故障总数是B0 t t1时 测试员甲发现的故障总数是B1 测试员乙发现的故障总数是B2 其中两人发现的相同故障数目是bc 两人发现的不同故障数目是bi 在大程序测试时 头几个月所发现的错误在总的错误中具有代表性 两个测试员测试的结果应当比较接近 bi不是很大 这时有 程序中隐藏错误数量的估计 续 如果bi比较显著 应当每隔一段时间 由两个测试员再进行分别测试 分析测试结果 估算B0 如果bi减小 或几次估算值的结果相差不多 则可用B0作为程序中原有错误总数的估值 2个小组独立地测试同一个程序 第一组发现25个错误 第二组发现了30个错误 在2个小组发现的错误中有15个是共同的 那么可以估计程序中的错误总数是多少个 程序中隐藏错误数量的估计 续 如果bi比较显著 应当每隔一段时间 由两个测试员再进行分别测试 分析测试结果 估算B0 如果bi减小 或几次估算值的结果相差不多 则可用B0作为程序中原有错误总数的估值 2个小组独立地测试同一个程序 第一组发现25个错误 第二组发现了30个错误 在2个小组发现的错误中有15个是共同的 那么可以估计程序中的错误总数是多少个 答案 25 30 15 50 1 10一个贯穿全文的例子 电厂两票管理系统1 10 1系统简介操作票 工作票 简称两票 是 电业 电厂 安全工作规程 中的核心内容之一 对保证电业安全生产具有重要的作用 操作票是保证正确电气倒闸 热机 操作的重要环节和前提条件 使用操作票的目的是为了保障人身与设备的安全 确保电气设备倒闸操作的正确性 防止电气误操作事故发生 工作票是保证电气 电厂设备 检修工作安全的重要措施 是检修人员在运行设备上或运行区域内进行检修和试验工作 以及做可能影响设备的正常运行或备用状态的其它工作的重要书面依据 两票 的办理过程基本上都是开票 各部门负责人或三种人审批签字 工作结束 部门或厂部检查审核这样的一种线性办理过程 电力部门分为水电 火电 供电三种类型 各厂 局要处理的两票类型通常有 水电厂 电气一种工作票 电气二种工作票 水力机械工作票 一级动火工作票 二级动火工作票 电气倒闸操作票 继保安措票 脚手架工作单 水力机械操作票 溢洪闸门操作票火电厂 电气一种工作票 电气二种工作票 水力机械工作票 一级动火工作票 二级动火工作票 电气倒闸操作票 继保安措票 脚手架工作单 热力工作票供电局 电气一种工作票 电气二种工作票 水力机械工作票 一级动火工作票 二级动火工作票 电气倒闸操作票 继保安措票 脚手架工作单 一种工作票 线路二种工作票 为了使读者更好的了解两票系统以及后面各章节的内容 在这里对一些电力系统专业术语作如下解释 一次图 电气主接线是由高压电器通过连接线 按其功能要求组成接受和分配电能的电路 成为传输强电流 高电压的网络 故又称为一次接线 那么用规定的设备文字和图形符号并按工作顺序排列 详细地表示电气设备或成套装置的全部基本组成和连接关系的单线接线图 成为主接线电路图 这里简称为一次图 二次图 在电力系统中 凡监视 控制 测量以及起保护作用的设备 如机电保护 控制和信号装 置等 皆属于二次设备 二次接线就是由二次设备构成的回路 这里我们就把二次设备接线图简称为二次图 分厂 发电厂通常由多个分厂组成 其中电气分厂 汽机分厂和锅炉分厂是发电厂的几个重要的分厂 电气设备 为满足生产的需要 发电厂中安装有各种设备 通常把生产和分配电能的设备称为一次设备 具体包括如下几种 生产和转换电能的设备 接通或断开电路的开关电器 限制故障电流

温馨提示

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

评论

0/150

提交评论