软件测试技术完整教程_第1页
软件测试技术完整教程_第2页
软件测试技术完整教程_第3页
软件测试技术完整教程_第4页
软件测试技术完整教程_第5页
已阅读5页,还剩229页未读 继续免费阅读

下载本文档

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

文档简介

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.

25、7 1.7软件测试中的误区软件测试中的误区 误区1 调试和测试是一样的 误区2 软件测试在软件开发过程中并不重要 误区3 在软件开发结束之后进行测试 误区4 过分依赖Beta测试 误区5 过分依赖自动化测试 误区6 测试是可穷尽的 误区7 测试是证明软件的正确性 误区8 可以忽略测试的设计 1.81.8一个贯穿全文的例子一个贯穿全文的例子 电厂两票管理系统电厂两票管理系统 1.8.1 1.8.1系统简介系统简介 操作票、工作票(简称两票)是“电业(电厂)安全工作规程”中的核心内容之一,对保证电业安全生产具有重要的作用。操作票是保证正确电气倒闸(热机)操作的重要环节和前提条件,使用操作票的目的是

26、为了保障人身与设备的安全,确保电气设备倒闸操作的正确性,防止电气误操作事故发生。 工作票是保证电气(电厂设备)检修工作安全的重要措施,是检修人员在运行设备上或运行区域内进行检修和试验工作,以及做可能影响设备的正常运行或备用状态的其它工作的重要书面依据。“两票”的办理过程基本上都是开票、各部门负责人或三种人审批签字、工作结束、部门或厂部检查审核这样的一种线性办理过程。 电力部门分为水电、火电、供电三种类型,各厂、局要处理的两票类型通常有: 水电厂:电气一种工作票、电气二种工作票、水力机械工作票、一级动火工作票、二级动火工作票、电气倒闸操作票、继保安措票、脚手架工作单、水力机械操作票、溢洪闸门操作

27、票 火电厂:电气一种工作票、电气二种工作票、水力机械工作票、一级动火工作票、二级动火工作票、电气倒闸操作票、继保安措票、脚手架工作单、热力工作票 供电局:电气一种工作票、电气二种工作票、水力机械工作票、一级动火工作票、二级动火工作票、电气倒闸操作票、继保安措票、脚手架工作单、 一种工作票、线路二种工作票。 为了使读者更好的了解两票系统以及后面各章节的内容,在这里对一些电力系统专业术语作如下解释: 一次图:电气主接线是由高压电器通过连接线,按其功能要求组成接受和分配电能的电路,成为传输强电流、高电压的网络,故又称为一次接线。那么用规定的设备文字和图形符号并按工作顺序排列,详细地表示电气设备或成套

28、装置的全部基本组成和连接关系的单线接线图,成为主接线电路图,这里简称为一次图。 二次图:在电力系统中,凡监视、控制、测量以及起保护作用的设备,如机电保护、控制和信号装 置等,皆属于二次设备。二次接线就是由二次设备构成的回路。这里我们就把二次设备接线图简称为二次图。 分厂:发电厂通常由多个分厂组成,其中电气分厂、汽机分厂和锅炉分厂是发电厂的几个重要的分厂。 电气设备:为满足生产的需要,发电厂中安装有各种设备。通常把生产和分配电能的设备称为一次设备,具体包括如下几种:生产和转换电能的设备;接通或断开电路的开关电器;限制故障电流和防御过电压的电气;接地装置;载流导体。此外还有一些对一次设备进行测量、

29、控制、监视和保护用的二次设备,如:仪用互感器;机电保护及自动装置;直流电源设备等。 在本书中提到的刀闸、开关等设备就属于电气设备。 “五妨”规则:电力系统的倒闸操作具有前后顺序和严格的逻辑规则。“五防”规则就是根据电气运行人员多年的运行经验,总结出来的倒闸操作规则,如下: 1、防止误分合断路器;防止带地线合刀闸 2、防止带负荷拉合隔离开关; 3、防止带电挂接地线或接地刀闸; 4、防止带接地线或合接地刀闸送电; 5、防止误入带电间隔 1.8.21.8.2系统运行环境系统运行环境 客户端平台:windows98/2000、windows NT workstation、Linux等所有具有支持JAV

30、A的浏览器系统; 服务器端平台:windows2000 server、windows NT Server、Linux、UNIX等所有支持JAVA Bean的系统平台; 数据库服务器:Oracle数据库或SQL Server 2000数据库或ACCESS数据库。 Web服务器:Tomcat 5.0 1.8.31.8.3系统总体结构系统总体结构 两票系统主要由两部分构成,即:操作票子系统和工作票子系统。整个系统的总体结构如图1-16所示:1.8.41.8.4系统功能系统功能( (略略) )两票系统工作票系统功能模块操作票系统功能模块操作票档案管理模块电气操作票模块热机操作票模块操作票打印操作票存档

31、热力工作票模块电气第一种工作票模块电气第二种工作票模块工作票打印工作票回填及存档图1-16 两票系统总体结构图 本章小结本章小结 本章介绍了软件测试发展的历程,以及其在国内的发展状况。随着软件开发过程和开发技术的不断改进,软件测试理论和方法也在不断完善,测试工具也在蓬勃发展。 通过本章的论述,可以了解到软件测试已经不再只是进行简单的程序逻辑检查,而是一个伴随着整个软件开发过程的活动。 测试对象也不仅仅是程序代码,而开发过程中产生的所有软件产品,甚至是产品使用说明也包括在内。 测试过程中为了更好的保证软件测试的质量,首先要遵循一定的测试原则,最为重要的就是应该尽早的进行测试。 其次,正确处理开发

32、与测试之间的关系,更好的把开发与测试过程集成到一起。从而提高测试效率,节约测试成本。 本章所介绍的几种软件开发与测试模型,如:V模型、W模型和H模型,三种模型在不同程度上反映了软件开发与软件测试的关系。 其中,V模型非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了测试和开发过程中各阶段的对应关系。而W模型作为V模型的改进,更好地体现了软件开发与软件测试工作的同步性,更为明确地指出测试的对象不仅仅是程序本身,而且包括需求分析、概要设计和详细设计说明书,强调了软件测试是软件开发过程中的一项重要的工作,贯穿于整个软件开发过程。 H模型则从微观的角度来看待软件测试过程。 最后一个做好测试工作

33、的关键因素就是精心的组织和安排软件测试的工作流程,本章把测试工作分为几个阶段,分别阐述了通用的测试工作流程,但要求读者在工作中,根据每个项目的具体情况制定可行的测试流程。 各种测试技术是软件测试工作的敲门砖,本章从不同的角度介绍了软件测试技术的分类。 从是否需要执行被测软件的角度,可分为静态测试(Static Testing)和动态测试(Dynamic Testing); 从测试用例设计的角度,可分为黑盒测试和白盒测试;按照软件测试过程和测试策略,可分为单元测试、集成测试和系统测试。 另外,本章还专门介绍了目前在实际工作中对软件测试的错误认识,希望读者能够明确软件测试的目的,正确的认识软件测试

34、工作的必要性和重要性。习题习题1. 名词解释: 软件测试 错误 缺陷 失效 测试用例 回归测试 静态测试 动态测试 黑盒测试 白盒测试 单元测试 集成测试 系统测试 2. 简述软件测试发展的过程。从不同角度描述软件测试的现状。3. 测试的生命周期可以分为几个阶段?简单描述各阶段需要完成的任务。4. 什么是V模型?简述V模型在软件测试过程中的作用,以及在V模型中各个测试阶段和开发过程的对应关系。5. 请概括一下静态测试和动态测试,以及黑盒测试与白盒测试的不同点。6. 分别描述一下,需求阶段、设计&编码阶段、集成系统验收测试的软件测试流程。7. 列举软件测试的目的。8. 列举软件测试的十项

35、原则。9. 列举软件测试的误区。第二章第二章 软件测试基础软件测试基础 本章要点本章要点 软件测试基础知识; 白盒测试和黑盒测试的定义; 常见的白盒和黑盒测试设计技术; 白盒测试与黑盒测试的区别; 测试计划和测试报告的编制; 测试用例的定义和编制方法。 本章目标本章目标 u掌握有关测试的一些数学知识,包括集合、函数和图论基础等;u理解并掌握白盒测试和黑盒测试,以及二者的优缺点和各自的应用范围;u能够熟练使用几种常见测试用例设计技术;u了解测试计划和测试文档的作用,以及应该包含的内容和制定方法;u了解测试报告的基本内容,以及测试用例的基本内容和编制方法。 2.12.1用于测试的离散数学和图论基础

36、用于测试的离散数学和图论基础 一般而言,在功能性测试中,通常要用到离散数学知识,而在结构性测试领域中,则要用到一些关于图论的知识。 2.1.12.1.1集合论集合论 集合论可分为:自然和不言自明两种。自然的集合论把集合看作是基本术语,我们把集合看作一个单位,或一个整体引用多个事物。 集合的表示法有以下两种: 1、将集合所有元素一一列出的表示法叫做“枚举法”,但有时也可以只列出一部分元素。 2、用一个集合所具有的共同性质来刻画这个集合。 2.1.22.1.2函数函数 简而言之,函数是将唯一的输出值赋予每一输入的“法则”。 2.1.32.1.3关系关系 通俗的讲,关系就是客观世界一定范围的对象之间

37、的某种特定联系。 集合之间的关系集合之间的关系 定义: : 给定两个集合A和B,关系R是笛卡儿积A B的一个子集。 如果希望描述整个关系,则通常只写RAB。对于特定元素aiA、biB,我们记做aiRbi 。 关系的表示关系的表示 关系关系表示事物之间的某种联系,二元关系表示两个事物之间的关系,如果把这两个事物分别放在一边,如果某两个元素有关系,那么就在它们之间画一条有向线,用这种方式表示关系,称作关系图。 这里我们必须对“势”进行解释。势在用于集合时,是指集合中的元素的个数。 定义定义: : 给定两个集合A和B,一个关系RAB,关系R的势是: 1)一对一势 2)多对一势 3)一对多势 4)多对

38、多势 单个集合上的关系单个集合上的关系 首先,我们对关系进行定义。设A是一个集合,RAA是定义在A上的一个关系,、R。关系具有四个特殊属性: 定义定义: : 关系RAA是: 1)自反的 2)对称的 3)反对称的 4)传递的 2.1.42.1.4命题逻辑命题逻辑 凡是能分辨其真假的语句都叫做命题。我们通常采用小写字母p,q和r表示命题。 命题逻辑有着和集合论相似的操作,表达式和标识。命题的真值只有两种,T代表真,而F代表假。 命题公式的分类:命题公式的分类: 如果命题公式A在任意的真值赋值函数t : U0, 1下的真值t(A)都为1,则称命题公式A为永真式(tautology)(或称重言式);

39、如果命题A在任意的真值赋值函数下的真值都为0,则称A为矛盾式(contradiction); 如果A不是矛盾式,则称为可满足式。 2.1.52.1.5概率论概率论 概率是随机事件发生的可能性的数量指标。 在独立随机事件中,如果某一事件在全部事件中出现的频率,在更大的范围内比较明显的稳定在某一固定常数附近。就可以认为这个事件发生的概率为这个常数。对于任何事件的概率值一定介于 0和 1之间。 2.1.6 2.1.6用于测试的图用于测试的图 测试中使用两种基本图:无向图和有向图。这里我们给出一些概念。 图(又叫做线性图)是一种由两种集合定义的抽象数据结构,即一个节点集合和一个构成节点之间连接的集合。

40、 图中节点的度节点的度是以该节点作为端点的边的条数。 在本节中将介绍的三种图:程序图、有限状态机、状态图。 1、程序图 经过改进的程序图定义:节点要么是整个语句,要么是语句的一部分,边表示控制流(从节点i到节点j有一条边,当且仅当对应节点j的语句或语句的一部分,可以立即在节点i对应的语句或语句的一部分之后执行)。 程序的有向图公式化能够非常准确地描述程序的测试方面的问题。基本结构化程序设计的构造,例如:串行、选择和循环等可以用如图 2-1所示的有向图表示。串行If-Then-ElseIf-Then条件前测试环路后测试环路图2-1 结构化程序设计构造的有向图 2、有限状态机 有限状态机已经成为需

41、求规格说明的一种相当标准的表示方法。有限状态机是一种有向图,其中状态是节点,转移是边。 图2-2是一个简单的自动柜员机(SATM)系统。该图描述了用于个人标识编号PIN尝试部分的有限状态机。这种机器包含5 个状态(空闲、等待第一次PIN尝试等等)和8个用边表示的转移。转移上的标签所遵循的规则是,“分子”是引起转移的事件,“分母”是与该转移关联的行为。空闲等待第一次PIN输入尝试等待事务选择等待第三次PIN输入尝试等待第二次PIN输入尝试合法卡显示屏幕S2正确PIN显示屏幕S5不正确的PIN显示屏幕S4非法卡显示屏幕S1;退卡不正确的PIN显示屏幕S3不正确的PIN显示屏幕S3正确PIN显示屏幕

42、S5图2-2 用于PIN尝试的有限状态机 3、状态图 状态图现在被Rational公司选为统一建模语言,即UML的控制模型。图2-3 状态图的团点 Harel使用与方法无关的术语“团点”表示状态图的基本构建块。在图2-3中,团点A包含两个团点B和C,通过边连接。团点A通过边与团点D连接。 根据Harel的意图,我们可以把团点解释为状态,把边解释为转移。 在图2-4中,状态A是初始状态,当进入到这个状态时,也进入低层状态B。当进入某个状态时,我们可以认为该状态是活动的,这可与Petri网中的被标记地点类比。状态图工具采用色彩表示哪个状态活动的,并等效于Petri网中的标记地点。 图2-4中有一些

43、微妙的地方,从状态A转移到状态D初看起来是有歧义的,因为它没有区分状态B和C。约定是,边必须开始和结束于状态的周围。如果状态包含子状态,就像图中的A一样,边会“引用”所有的子状态。 因此,从A到D的边意味着转移可以从状态B或从状态C发生。如果有从状态D到状态A的边,如图2-5所示,则用B来表示初始状态这个事实,意味着转移实际上是从状态D到状态B。这种约定可以大大减缓有限状态机向“空心代码”发展的趋势。 图2-4 状态图中的初始状态 图2-5 进入自状态的默认入口 我们最后要讨论的一个状态图的特性就是并发状态图概念。图2-6中状态D的虚线用于表示状态D实际上引用两个并发状态E和F。图2-6 并发

44、状态 2.2 2.2白盒测试白盒测试 白盒测试是一种可视的测试软件的方法,即它把测试对象看作一个透明的盒子,测试人员要了解程序结构和处理过程,按照程序内部逻辑测试程序,检查程序中的每条通路是否按照预定要求正确工作。白盒测试的过程如图2-7所示: 源程序测试用例被测程序执行路径分析覆盖情况分析图2-7 白盒测试过程示意图 那么,在对被测软件进行白盒测试时,主要对程序进行哪些方面的检查呢?有如下几点: ()保证一个模块中的所有独立执行路径至少测试一次; ()对所有逻辑判定取值“true”和“false”的两种情况都至少测试一次; ()在循环边界和运行界限内执行循环体; ()测试内部数据结构的有效性

45、。 在软件测试领域,有六种基本的测试类型:单元测试,集成测试,功能测试/系统测试,可接受性测试,回归测试和Beta测试。白盒测试可以用在其中的三种测试类型中: 1、单元测试 2、集成测试 3、回归测试 2.2.12.2.1白盒测试与调试的异同白盒测试与调试的异同 白盒测试和调试有哪些不同点呢? 1、从承担的任务来看,白盒测试同其他类型测试一样,它的任务是发现所开发的项目中的缺陷;但是,调试不属于测试,其任务是纠正软件中的缺陷。 2、从最终的结果来看,白盒测试有预知的结果,不可预知的只是程序是否通过测试,并且成功测试的结果是发现错误的症状,从而引起调试的进行;而调试的结果是消除项目中的错误。 3

46、、从执行的过程来看,测试是一个发现错误、改正错误、重新测试的过程;而调试是一个推理过程。 4、从准备工作来看,测试从已知的条件开始,使用预先定义的程序;调试一般是以不可知的内部条件开始,做统一性调试 。 5、从执行的计划性来看,测试是有计划的并要进行测试设计;而调试则不受时间约束。 6、从执行的人员来看,测试经常是由独立的测试组在不了解软件设计的条件下完成的,而调试必须由程序员来完成。 7、从所使用的工具来看,大多数白盒测试的执行和设计可有工具支持,而调试程序员能利用的工具主要是调试器。 2.2.22.2.2白盒测试的用例设计白盒测试的用例设计 白盒测试用例设计技术就是研究如何用最少的测试用例

47、最大限度地发现软件中的错误,目前主要有基本路径测试、等价类划分/边界值分析测试、覆盖测试、循环测试、数据流测试、程序插桩测试、变异测试等等方法。下面主要对几种常见的方法加以介绍: 一、基本路径测试 二、等价类划分/边界值分析(Equivalence partitioning/boundary value analysis) 三、控制流/覆盖测试(Control-flow/Coverage Testing) 方法覆盖 方法覆盖可用于衡量测试用例所覆盖的方法的百分比。 语句覆盖(Statement Coverage) 语句覆盖是一种衡量测试所覆盖的程序语句百分比的措施。通过测试应该达到100%程序

48、语句覆盖的目标,可以标识圈数,然后执行最少的一组测试用例就可以达到语句覆盖的目标。 判断/分支覆盖 判断/分支覆盖是为了衡量在测试过程中覆盖了多少个程序中的布尔表达式。简单循环嵌套循环串接循环无结构循环图2-11 各种循环图 四、循环测试是一种白盒测试技术,注重于循环构造的有效性。n 循环结构测试用例的设计循环可以划分为以下几种模式,如图2-11: 可以使用如下方法设计循环测试用例: 一、简单循环: 二、嵌套循环: 三、串接循环: 四、无结构循环: 五、数据流测试: 六、程序插装: 程序插装(Program Instrumentation)是指在程序中设置断点或打印语句,在执行过程中了解程序的

49、一些动态特性。 七、变异测试 变异测试(Mutation Testing)的提出始于70年代末期,是一种错误驱动测试,即针对某类特定程序错误而进行的测试,也是一种比较成熟的排错性测试方法(排错性测试方法的基本思想是通过检验测试数据集的排错能力来判断软件测试的充分性)。 2.2.32.2.3白盒测试举例(略)白盒测试举例(略) 2.32.3黑盒测试黑盒测试 黑盒测试也称作功能测试和行为测试,主要是根据功能需求来测试程序是否按照预期工作。 黑盒测试的目的是尽量发现代码所表现的外部行为的错误,主要有以下几类: 功能不正确或不完整; 接口错误; 接口所使用的数据结构错误; 行为或性能错误; 初始化和终

50、止错误。 黑盒测试的示意图如图2-14 所示。从图2-14中,我们可以看出黑盒测试只考虑程序的输入和输出,无须考虑程序的内部代码。 图2-14 黑盒测试示意图2.3.12.3.1黑盒测试和白盒测试的异同黑盒测试和白盒测试的异同 本书归纳出以下几点:1. 执行测试人员不同 黑盒测试通常由用户以及非开发人员来进行;而白盒测试通常要有了解软件内部结构的开发人员来做。2. 测试覆盖目标不同 如果我们用一个盒子来代替整个软件系统,那么黑盒测试可以看成是一种系统测试。而对盒子内部的多个单元的测试就可以称作为白盒测试。 另外一种区别就是,二者的覆盖目标不同。黑盒测试的目标是覆盖所有的用户需求;而白盒测试的目

51、标是覆盖所有的代码。3、测试动机不同 有效的安全测试有时也需要详细了解代码以及系统结构,此时把这些技术称作白盒测试。 另外一种风险测试的目标可能就只是测试软件是否能够为用户提供预期输出。可用性测试就是如此,所以被称作黑盒测试。 4、测试方法不同 一个最普通的区别就是行为测试设计是基于功能需求来定义测试,而结构测试则是基于代码本身来定义测试的。这就是两种设计测试的方法。因为行为测试是基于外部功能定义的,所以称作黑盒测试;结构测试则是基于代码内部结构来定义的,所以称作白盒测试。 5、评估测试方法不同 一些技术是使用代码工具来跟踪软件内部的工作过程,因此称为白盒测试技术。与之相比,黑盒测试技术只是简

52、单的观察程序的正常输出。 2.3.22.3.2黑盒测试的用例设计黑盒测试的用例设计 常用的黑盒测试用例设计方法主要有以下几种:功能图分析方法,等价类划分方法,边界值分析方法,错误推测方法,因果图方法,判定表驱动分析方法,正交实验设计方法和功能图分析方法等。 下面对上述方法分别作以简要介绍。 一、基于用户需求的测试 黑盒测试用例就是基于用户需求的,也是从研究客户需求工作开始的。 二、对等区间划分 对等区间划分是一种黑盒测试方法,该方法也称为等价类划分,是一种设计测试用例的非常形式化的方法。 三、边界值分析法 边界值分析方法是对等价类划分方法的补充。长期的测试工作经验告诉我们,大量的错误是发生在输

53、入或输出范围的边界上,而不是发生在输入输出范围的内部。 四、状态转换测试 状态转换测试适用于软件被设计成一个状态机或实现了一种被建模成一种状态机的情况。可以设计测试用例测试状态间转换,测试用例创建引起转换的事件。可以设计负面测试的测试用例用于测试状态与事件的非法组合。 五、分支测试 在分支测试中,测试用例用于测试单元的控制流分支或决策点。通常用于实现决策覆盖(Decision Coverage)的测试目标。 六、错误推测法 错误推测法就是根据经验和直觉推测程序中所有可能存在的各种错误,借助边界值分析等方法有针对性的设计测试用例的方法。 七、因果图方法 因果图方法适合于检查程序输入条件的各种组合

54、情况。使用该方法首先要理解软件所表示的对象及其关系,然后,定义一组保证“所有对象与其他对象都具有所期望的关系”的测试序列。 2.3.32.3.3黑盒测试举例(略)黑盒测试举例(略) 2.42.4白盒测试和黑盒测试的比较白盒测试和黑盒测试的比较 1、白盒测试只关注软件产品的测试,不能够确保产品已经实现了规格说明中的所有功能。黑盒测试则只关注规格说明中的功能测试,不能够保证已经实现的各个部分都被测试到。 2、与黑盒测试相比,白盒测试的成本要高一些。 3、黑盒测试故意不考虑控制结构,而只注意信息域。白盒测试只考虑测试软件产品,它不保证完整的需求规格是否被满足。黑盒测试是一种确认技术,回答“我们在构造

55、一个正确的系统吗?白盒测试是一种验证技术,回答“我们在正确地构造一个系统吗?” 总之,建议测试人员在进行测试的过程中,可以考虑先使用黑盒测试,然后统计相应的覆盖率,再设计适当的白盒测试用例作为补充以保证测试的完整性。 2.4.12.4.1白盒测试的优缺点白盒测试的优缺点 1)优点可构成测试数据对特定程序部分测试,可以检测代码中的每条分支和路径;揭示隐藏在代码中的错误;对代码的测试比较彻底;有较多工具支持;有一定的充分性度量手段。 2)缺点工作量大, 成本高。通常只用于单元测试,有应用局限;无法检测代码中遗漏的路径和数据敏感性错误;不能验证规格说明的正确性;无法对规格说明中未实现的部分进行测试;

56、不易生成测试数据(通常)。2.4.22.4.2黑盒测试的优缺点黑盒测试的优缺点1. 优点对于较大的代码单元来说,效率高;测试人员不需要了解实现的细节,包括具体的编程语言;测试员和程序员可以由不同的人员来担任;从用户的角度进行测试,容易被理解和接受;有助于暴露任何规格不一致或有歧义的问题;测试用例的设计可以在规格说明完成之后马上进行;容易入手生成测试数据;适用于各阶段测试。2. 缺点实际上,只有一小部分可能的输入被测试到,某些代码得不到测试;如果没有清晰、简洁的规格说明,难以设计测试用例;如果测试人员不知道开发人员已经执行过该测试用例,会存在不必要的重复测试;会有很多程序路径没有被测试到;不能直

57、接针对可能隐蔽了许多问题的特定程序段进行测试,;如果规格说明有误,则无法发现;不易进行充分性测试。2.4.32.4.3灰盒测试灰盒测试 灰盒测试介于白盒测试和黑盒测试之间,是现代测试的一种理念。就是指,在白盒测试中交叉使用黑盒测试的方法;在黑盒测试中交叉使用白盒测试的方法。2.52.5测试方法的选择测试方法的选择 一、单元测试 测试方法:白盒测试 参考规范:详细设计说明和代码结构 二、集成测试 测试方法:黑盒和白盒测试 参考规范:详细设计说明和概要设计说明 2.6 2.6测试计划与测试文档测试计划与测试文档 最常见的测试文档包括测试计划,测试规范,测试用例和测试时发现缺陷后要写的缺陷报告等。

58、那么,测试计划和测试文档在测试过程中能够发挥什么样的作用呢? 1、测试文档有助于测试任务的完成。 2、使用测试文档可以更好的协调测试任务与测试过程。 3、测试文档为测试项目的组织、规划与管理提供了一个架构。 2.6.1 2.6.1测试计划的制定测试计划的制定为了给读者一个宏观的认识,首先请看测试计划活动图,如图2-20所示。 在制定测试计划过程中,核心活动就是: 一、确定测试策略 通常,可以采用以下几个方法来制定测试策略: 1、确定测试的范围 2、确定测试的方法 3、确定测试标准和质量检查点 4、确定自动化测试策略 二、确定测试系统(硬件和软件) 1、测试架构 测试架构指的就是测试用例的组织结

59、构。 取得需求文档:需求定义文档需求规格说明文档需求追踪矩阵确定测试策略:测试的范围测试方法测试入口自动化测试策略确定测试系统:测试架构测试环境测试配置预估测试工作量:确定任务 按人天和工作周来预估工作量 得到时间进度计划和里程碑 评估进度风险并制定风险化解计划准备并复查测试计划:编写策略、系统、工作量和时间进度文档与项目团队一起复查测试计划图2-20 测试计划活动 2、测试工具 3、测试环境 测试环境的组成包括物理测试设施,产品运行的操作系统、产品运行的计算平台等。 4、测试配置情况 需要排列配置的优先级,然后决定哪些配置需要全面测试,哪些可以进行部分测试。 三、预估测试工作量(资源和时间进

60、度计划) 对项目进行预估有5个准备步骤: 1、确定要完成的任务。 2、确定每项任务所需的工作量和整个测试生命周期的工作量。 3、确定完成每项任务以及整个测试生命周期所需的时间。 4、为测试工作建立详细的时间进度计划和里程碑表。 5、评估时间进度风险并准备缓解风险计划。 四、准备并复查测试计划文档。 1、测试计划格式 2、测试计划复查 2.6.22.6.2测试报告测试报告 测试报告是测试阶段最后的文档产出物,优秀的测试经理应该具备良好的文档编写能力,一 份详细的测试报告包含足够的信息,包括产品质量和测试过程的评价,测试报告基于测试中的数据采集以及对最终测试结果的分析。 2.6.32.6.3测试用例的编制测试用例的编制 本节我们首先

温馨提示

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

评论

0/150

提交评论