软件测试技术完整教程ppt课件.ppt
《软件测试技术完整教程ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件测试技术完整教程ppt课件.ppt(236页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章第一章 概概 述述 本章要点本章要点 l 软件测试的发展历史;l 软件测试技术的分类方法;l 软件测试原则;l 软件测试的定义;l 软件测试同软件开发之间的关系;l 软件测试与开发模型;l 软件测试工作流程。 本章目标本章目标 u 了解软件测试的发展历程和行业现状;u 掌握软件测试技术的分类;u 理解软件测试的目的和软件测试原则,以及了解 人们对软件测试行业的错误认识;u 掌握软件测试中的基本定义、基本知识;u 理解软件开发与软件测试的关系。 1.1软件测试的发展历程及现状软件测试的发展历程及现状 1.1.1软件测试的发展历程软件测试的发展历程 20世纪50-60年代,软件仍然处于次要位
2、置,测试理论和方法的发展比较缓慢。 70年代以后,软件技术的成熟和完善使得软件测试的规模和复杂度加大,软件测试也逐渐形成了一套完整的体系,逐渐走向规范化。 1.1.2软件测试的现状软件测试的现状 与一些发达国家相比,国内测试工作还存在一定的差距。国内测试人员所占比例小,但是,在软件测试实现方面都是相当的,而且向产业化方向发展。 1.2 1.2 什么是软件测试什么是软件测试 1.2.11.2.1软件测试的定义软件测试的定义 根据侧重点的不同,主要有以下三种观点: 1)1983年IEEE将软件测试定义为:“使用人工或自动手段运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结
3、果与实际结果之间的差别”,该定义明确地提出了软件测试以检验是否满足需求为目标。 2)Myers认为:“是为了发现错误而执行程序的过程”,明确提出了“寻找错误”是测试目的。 3)从软件质量保证的角度看:是一种重要的软件质量保证活动,其动机是通过一些经济、高效的方法,捕捉软件中的错误,从而达到保证软件内在质量的目的。 测试过程中的活动包括“分析”软件(静态测试)和“运行”软件(动态测试)。 也有人认为软件测试(software testing)就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。 软件测试有两个基本职责:即验证和确认。 注意:区分软件测试和
4、软件调试。 1.2.21.2.2软件测试生命周期软件测试生命周期 测试的生命周期(software testing life cycle)分为几个阶段(如图1-1所示 )。 前三个阶段就是引入程序错误阶段; 后三个阶段就是清除程序错误的阶段。 需求规格说明设计编码测试缺陷分类缺陷分离缺陷排除修复错误错误错误错误错误错误错误错误3(失效)图1-1 测试生命周期 1.2.3 1.2.3软件开发与测试模型软件开发与测试模型 下面我们将介绍几种典型的软件开发与测试模型。 一、软件开发与测试一、软件开发与测试V V模型模型 在传统开发过程中测试不受重视,仅把它作为在需求分析、概要设计、详细设计及编码之后
5、的一个阶段。尤其在瀑布模型中。 如图1-2所示,在V模型中,描述了一些不同的测试级别,并说明了这些级别所对应的生命周期中不同的阶段,清楚地描述了这些测试阶段和开发过程期间的对应关系。 用户需求获取需求定义需求分析需求分析书概要设计概要设计书详细设计详细设计书编码程序软件产品可交付软件系统测试已确认软件确认测试已集成软件集成测试已测试模块单元测试需求分析评审评审评审评审评审评审评审评审图1-2 V模型示意图 V模型适用于所有类型的开发过程,但并不一定适用于开发和测试过程的所有方面。 二、软件开发与测试二、软件开发与测试WW模型模型 由于各种原因,开发的每一个环节都可能产生错误,如果坚持各个阶段的
6、技术评审,就能够尽早发现和预防错误。 图1-3为软件开发与测试的W 模型,形象地说明了软件测试与开发的这种同步性。 需求测试需求分析功能测试概要设计设计测试详细设计单元测试编码系统测试验收确认测试确认集成测试集成图1-3 W模型示意图 应用该模型的优点在于,每个软件开发活动结束后就可以执行相应的测试,如:在需求分析结束后,就可以进行需求分析测试。 三、软件开发与测试三、软件开发与测试HH模型模型 与前两种模型相比,H模型充分地体现了测试过程。如图1-4所示的H 模型揭示了: 1、 软件测试不仅仅指测试的执行, 还包括很多其他的活动。 2、软件测试是一个独立的流程, 贯穿产品的整个开发周期, 与
7、其它流程并发进行。 3、软件测试要尽早准备, 尽早执行。 测试准备测试执行测试流程其他流程测试就绪点图1-4 H模型示意图 4、软件测试根据被测物的不同是分层次的. 不同层次的测试活动可以是按照某个次序先后进行的, 但也可能是反复的。 1.2.4 1.2.4与软件测试相关的术语与软件测试相关的术语 1.错误(Error) 程序员在编写代码时会出错,我们把这种错误称之为bug。随着开发过程的进行,错误会不断的放大。 2.缺陷(Default) 缺陷是错误的结果,更精确的说是错误的表现。 3.失效(Failure) 在缺陷运行时,常常会发生失效的情况。一种是过错缺陷对应的失效;一种是遗漏缺陷对应的
8、失效。 4.测试(Test) 测试是一项采用测试用例执行软件的活动,在这项活动中某个系统或组成的部分将在特定的条件下运行,然后要观察并记录结果,以便对系统或组成部分进行评价。 5.测试用例(Test Case) 测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。 6.回归测试(Regression testing) 回归测试的目的是为了测试由于修正缺陷而更新的应用程序,以确保彻底修正了上一个版本的缺陷,并且没有引入新的软件缺陷。 1.31.3软件测试技术分类软件测试技术分类 从不同的角度,可以把软件测试技术分成不同种类,如: 一 、从是否需要执行被测软件的角度,可分为静态测试和
9、动态测试。 那些不利用计算运行被测程序,而是通过其他手段达到测试目的的方法称作静态测试。下面我们对这几种静态测试分别加以介绍: 代码检查 代码走查 桌面检查 同行评分 下面我们将要介绍的黑盒测试和白盒测试就属于动态测试。 二、从软件测试用例设计方法的角度,可分为黑盒测试(Black-Box Testing)和白盒测试(White-Box Testing)。 三、按照软件测试的策略和过程分类,软件测试可分为单元测试(Unit Testing)、集成测试(Integration Testing)、确认测试(Validation Testing)、系统测试(System Testing)和验收测试(
10、Verification Testing)。 1.41.4软件测试的目的软件测试的目的 测试真正的目的是使我们通过对软件错误的原 因和分布进行归纳,来发现并排除当前软件产品的 缺陷,对在需求和设计过程中存在的问题查缺补漏,从而确保软件产品的质量。 GMyers给出了关于测试的一些规则,我们也可以把这些规则看作是测试的目标: 1)软件测试是为了发现错误而执行程序的过程。 2)测试是为了证明程序有错,而不是证明程序无错。 3)一个好的测试用例在于他能发现至今未发现的错误。 4)一个成功的测试是发现了至今未发现的错误的测试。 这里要强调的一点是,软件测试不只是软件测试人员的工作,也是软件开发人员和软
11、件使用者的工作。 1.51.5软件测试的原则软件测试的原则 1.5.11.5.1尽早地和不断地进行软件测试尽早地和不断地进行软件测试 IBM的研究结果表明,缺陷存在放大趋势。图1-5表示了缺陷放大模型大致状况。需求阶段缺陷概要设计阶段缺陷详细设计阶段缺陷代码阶段缺陷放大n1倍放大n2倍放大n3倍图1-5 缺陷放大模型 由此可见,问题发现越早,解决问题的代价就越小,这是软件开发过程中的黄金法则。 1.5.21.5.2不可能完全的测试不可能完全的测试 对一个程序进行完全测试就是意味着在测试结束之后,再也不会发现其它的软件错误了。其实,这是不可能的,主要原因有以下几点: 一、不可能测试程序对所有可能
12、输入的响应。 二、不可能测试到程序每一条可能的执行路径 三、无法找出所有的设计错误 四、不能采用逻辑来证明程序的正确性 1.5.3 1.5.3增量测试,由小到大增量测试,由小到大 测 试 时 间测 试 范 围可 用 资 源系 统 测 试集 成 测 试单 元 测 试单 元 测 试图1-7 测试资源关系图 由小到大,指的是软件测试的粒度。无论是传统的软件测试还是面向对象的软件测试都要遵循这样的原则。如图1-7所示,多个单元组合过渡到集成测试阶段,集成测试阶段过渡到更高级别的系统测试阶段,虚线是各个测试阶段的发布基线。随着测试的逐步深入,范围的逐步扩大,测试时间、可用资源也随之增大。 1.5.41.
13、5.4避免测试自己的程序避免测试自己的程序 避免程序员测试自己的代码的主要原因归纳如下: 1.程序员轻易不会承认自己写的程序有错误。 2.程序员的测试思路有局限性,在做测试时很容易受到编程思路的影响。 3.多数程序员没有严格正规的职业训练,缺乏专业测试人员的意识。 4.程序员没有养成错误跟踪和回归测试的习惯. 1.5.5 1.5.5设计周密的测试用例设计周密的测试用例 软件测试的本质就是针对要测试的内容确定一组测试用例。测试用例至少应该包括如下几个基本信息: 1、在执行测试用例之前,应满足的前提条件。 2、输入(合理的、不合理的)。 3、预期输出(包括后果和实际输出)。 图1-8显示了一个典型
14、的测试用例所应该具有的基本信息。测试用例ID:目的:前提:输入:预期输出:后果:执行历史:日期: 结果: 版本: 执行人:图1-8 典型的测试用例信息 测试用例是测试工作的核心,应该尽量设计的周密细致,这样才能更好的保证测试工作的质量。 下面举例来说明这一点。 以一个实现登录功能的小程序为例,它允许用户选择城市和地区,输入自己的账号和密码。 如图1-9所示,通过Alt-F4组合键和“Exit”按钮来终止程序,Tab键在区域中间移动。 操操 作作 员员 登登 录录 选 择 城 市 选 择 地 区 城 市地 区操 作 员密 码提 交退 出图1-9 登录窗口下面根据组成页面的具体元素,分别从几个方面
15、做了一些比较全面的测试用例:1. 下拉框和输入框测试用例 表1-1 下拉框和输入框测试用例测试内容测试内容输入操作输入操作预期输出预期输出实际结果实际结果下拉框下拉框未和后台数据库绑定未和后台数据库绑定(显示列表元素固(显示列表元素固定)定)不允许列表中出不允许列表中出现现NULL现现象,固定象,固定“请选择请选择-”已和后台数据库绑定已和后台数据库绑定(显示列表元素活(显示列表元素活动)动)不允许列表中出不允许列表中出现现NULL现现象,固定象,固定“请选择请选择-”输输入入框框限定字符型限定字符型输入输入12、6无无#,*等等错误提示错误提示限定型数字限定型数字输入输入测试数据测试数据无无
16、12月、月、7*、0错误提示错误提示2、功能测试 (表1-2 功能测试用例)用 例应产生行为结果失败原因1.基本功能测试1.1在输入框内输入资料并且执行存储程序必须能够接受使用者的输入并且将输入值存在登录文件内1.2在输入框内不输入资料但执行储存程序必须能够检查使用者输入是否为空白,同时必须能够告知使用者原因1.3检查city字段储存结果City字段输入 后存入cookies1.4检查area字段储存结果Area字段输入 后存入cookies储存结果1.5检查ID 字段储存结果ID字段输入 后存入cookies2.使用接口功能测试2.1检查输入字段的输入值必须组织使用者输入空白,同时部分字段只
17、能输入数字2.2检查使用者接口的Tab Order所有的Tab Order必须按照正常顺序2.2检查所有的Button所有的Button必须能够起作用2.3检查所有的Hot Key所有的Hot Key必须能够起作用3、各种错误数据的测试表1-3 错误数据的测试用例测试内容测试内容输入操作输入操作预选测试数预选测试数据据预期输出预期输出实际结果实际结果点击登录点击登录按钮按钮不完整的数不完整的数据据CityCity,areaarea,IDID,pswdpswd略略提示错误对话提示错误对话框框不正确的数不正确的数据据CityCity,areaarea,IDID,pswdpswd略略提示错误对话提示
18、错误对话框框回车操作回车操作不完整的数不完整的数据据CityCity,areaarea,IDID,pswdpswd略略提示错误对话提示错误对话框框点击点击“退退出出”按钮按钮无无无无无无关闭当前应用关闭当前应用系统系统4、特殊测试 表1-4 特殊测试用例测试内容测试内容输入操作输入操作预选测试数预选测试数据据预期输出预期输出操作焦点逃操作焦点逃逸逸连续连续TabTab切换,察看异常切换,察看异常无无焦点可准确回归焦点可准确回归当前操作窗口当前操作窗口分配内存不分配内存不足足启动多个应用程序或模拟启动多个应用程序或模拟多个程序运行多个程序运行无无是否可以正常运是否可以正常运行行网络断线网络断线切
19、断网络连接切断网络连接无无是否可正常抛出是否可正常抛出异常异常 1.5.6 1.5.6注意错误集中的现象注意错误集中的现象 软件缺陷的“扎堆”现象的常见形式: 1、对话框的某个控件功能不起作用,可能其他控件的功能也不起作用。 2、某个文本框不能正确显示双字节字符,则其他文本框也可能不支持双字节字符。 3、联机帮助某段文字的翻译包含了很多错误,与其相邻的上下段的文字可能也包含很多的语言质量问题。 4、安装文件某个对话框的“上一步”或“下一步”按钮被截断,则这两个按钮在其他对话框中也可能被截断。 1.5.7 1.5.7确认确认BUGBUG的有效性的有效性 有时候测试人员提交的BUG并不是真正的BU
20、G。图1-10具体地描述了无效BUG的来源。一般由A测试人员发现的BUG,一定要由另外一个B测试人员来进行确认,如果发现严重的BUG可以召开评审会进行讨论和分析。图1-10 无效BUG来源构成图 1.5.8 1.5.8合理安排测试计划合理安排测试计划 合理的测试计划有助于测试工作顺利有序地进行,因此要求在对软件进行测试之前所作的测试计划中,应该结合了多种针对性强的测试方法、列出所有可使用资源,建立一个正确的测试目标; 要本着严谨、准确的原则,周到细致地做好测试前期的准备工作,避免测试的随意性。尤其是要尽量科学合理地安排测试时间。 ABABCABCDEF基本结构(a)(b)(c)单纯依赖多重依赖
21、复合依赖图1-11 错误依赖关系1.5.91.5.9回归测试回归测试 这些错误之间存在单纯的依赖或者复杂的多重依赖关系,如图1-11所示。 其中,(a)图中的A、B 关系表达为:A错误依赖于B错误的关闭而关闭。如果多了一条路径(如(b)图中A、B、C关系),A错误依赖于B错误和C错误的同时关闭而关闭。(c)图是(a)和(b)的复合方式,因程序中的错误存在着一对多,多对多的复杂关系而变得难以处理,并且有些错误关联和依赖关系处于隐性状态。 1.5.101.5.10测试结果的统计和分析测试结果的统计和分析 只有对这些输出信息进行深入地统计、分析和比较,才能够正确的鉴别测试后输出的数据,给出清晰的错误
22、原因分析报告。当输出的信息很庞大时,我们可以借助专业的测试工具。 1.5.11 1.5.11及时更新测试及时更新测试 事实上,有可能导致测试失败的原因还有很多,可大致归纳为如下几点: 1、测试团队管理者失职; 2、测试团队中沟通不好; 3、测试团队和项目团队沟通不良; 4、测试过程中,执行角色无准确定义; 5、测试团队缺乏良好的培训。 1.6 1.6软件测试工作流程软件测试工作流程 一般的软件测试总体工作流程如图1-12所示: 立项阶段需求阶段设计阶段编码单元测试阶段集成测试阶段系统测试阶段验收测试阶段结项总结阶段图1-12 软件测试工作总体流程图 1、需求阶段 需求阶段是软件测试活动的前提。
23、需求阶段测试工作流程如图1-13所示: 需 求 工 作 培 训编 写 需 求业 务 、 用 户 、 功 能需 求 评 审需 求 规 格 说 明 书需 求 变 更需 求 变 更 记 录需 求 报 警总 体 测 试 计 划系 统 测 试 方 案需 求 报 警 信 号需 求 跟 踪 矩 阵进 入 下 一 阶 段需需求求阶阶段段测测试试工工作作流流程程图1-13 需求阶段测试活动流程图2、设计&编码阶段测试工作流程 图1-14 设计&编码阶段测试流程图上一阶段需求相关文挡概要设计评审详细设计单元测试方案编码单元测试测试抽检单元测试总结报告进入下一阶段集成测试方案自动测试方案抽象出验证标准设设计计& &
24、编编码码阶阶段段测测试试工工作作流流程程以模块为单位,不断循环 这一环节以模块为单位循环:单元测试方案制定编码单元测试是否通过测试抽检是否通过,重新编写没有通过单元测试和测试抽检的代码。最终形成一份单元测试总结报告。具体流程如图1-14所示。 3、集成测试、系统测试和验收测试阶段 该测试阶段流程如图1-15所示: 上一阶段集成测试方案集成测试系统测试申请测试部评估自动测试方案系统测试方案系统测试系统测试综合报告验收测试质量合格证书产品化工作产品工作报告测试工作总结集集成成、系系统统、验验收收测测试试阶阶段段图1-15 集成测试、系统测试和验收测试阶段流程图 1.7 1.7软件测试中的误区软件测
25、试中的误区 误区1 调试和测试是一样的 误区2 软件测试在软件开发过程中并不重要 误区3 在软件开发结束之后进行测试 误区4 过分依赖Beta测试 误区5 过分依赖自动化测试 误区6 测试是可穷尽的 误区7 测试是证明软件的正确性 误区8 可以忽略测试的设计 1.81.8一个贯穿全文的例子一个贯穿全文的例子 电厂两票管理系统电厂两票管理系统 1.8.1 1.8.1系统简介系统简介 操作票、工作票(简称两票)是“电业(电厂)安全工作规程”中的核心内容之一,对保证电业安全生产具有重要的作用。操作票是保证正确电气倒闸(热机)操作的重要环节和前提条件,使用操作票的目的是为了保障人身与设备的安全,确保电
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 技术 完整 教程 ppt 课件
限制150内