软件测试白盒黑盒测试详解教程文件.ppt
《软件测试白盒黑盒测试详解教程文件.ppt》由会员分享,可在线阅读,更多相关《软件测试白盒黑盒测试详解教程文件.ppt(115页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件测试白盒黑盒测试详解参考教材软件测试教程 重点大学计算机教材 作者:宫云战 主编,出版社:机械工业出版社,2008-9-1,ISBN:711124897 参考教材软件测试 作者:美Paul.Jorgensen 译者:韩柯 杜旭涛 出版社:机械工业出版社 原出版社:CRC 参考教材计算机 软件测试技术郑人杰清华大学出版社,1990。参考教材软件测试教程 作者:贺平出版社:电子工业出版社页数:319定价:29.0出版时间:2005-06-01 教学目标了解软件测试的基本原理和基本概念掌握基本的软件测试方法和技术提高软件质量控制的意识和素质培养工程实践及团队合作精神评分标准上机实践:熟练运用软件
2、测试的方法和技术,在对实际程序进行测试,同时遵照软件文档规范提交设计文档、源程序和测试报告(20%)平时出勤及课堂练习(10%)期末考试-闭卷考试(70%)软件错误无处不在只要是人编写的软件,就不能避免软件错误的发生。软件错误的案例(1)迪斯尼的狮子王游戏时间:时间:1994199419951995背景:迪斯尼公司首次进军儿童游戏市场,市场宣传力背景:迪斯尼公司首次进军儿童游戏市场,市场宣传力度很大,前期销售情况很好度很大,前期销售情况很好出现的问题:该游戏在一些出现的问题:该游戏在一些PCPC机上无法玩机上无法玩原因:迪斯尼公司没有对市场上已经投入运行的原因:迪斯尼公司没有对市场上已经投入运
3、行的PCPC机型机型进行调研,并且进行测试,导至该游戏只在程序员开发进行调研,并且进行测试,导至该游戏只在程序员开发游戏的系统上可以运行,但在大众使用的常见系统中无游戏的系统上可以运行,但在大众使用的常见系统中无法运行法运行结果:迪斯尼公司不得不承担客户的投诉、产品退货、结果:迪斯尼公司不得不承担客户的投诉、产品退货、更换光盘、以及又一轮的调试、修改和测试的所有费用更换光盘、以及又一轮的调试、修改和测试的所有费用。软件错误的案例(2)Intel奔腾浮点除法软件缺陷时间:时间:19941994背景:背景:IntelIntel发布的一款新处理器发布的一款新处理器问题:在装有这款处理器计算机的计算器
4、中执行算式问题:在装有这款处理器计算机的计算器中执行算式“(4195835/3145727)3145727-4195835(4195835/3145727)3145727-4195835”不等于不等于0 0原因:老式奔腾原因:老式奔腾CPUCPU的浮点除法软件有缺陷的浮点除法软件有缺陷结果:结果:IntelIntel事实上在芯片发布之前,已经发现了这个事实上在芯片发布之前,已经发现了这个缺陷,但认为不严重,没有修正。被外界发现后,试缺陷,但认为不严重,没有修正。被外界发现后,试图掩饰。最终,迫于舆论压力公开道歉,花费图掩饰。最终,迫于舆论压力公开道歉,花费4 4亿美元亿美元更换老芯片。更换老芯
5、片。软件错误的案例(3)美国航天局火星极地登陆时间:时间:19991999年年1212月月3 3日日背景:火星极地登陆飞船在试图登陆火星表面时背景:火星极地登陆飞船在试图登陆火星表面时失踪。失踪。问题:某一个数据位被意外复位问题:某一个数据位被意外复位.原因:测试过程分两组:一组是测试飞船脚的落原因:测试过程分两组:一组是测试飞船脚的落地打开过程;另一组是测试飞船打开后的着陆过地打开过程;另一组是测试飞船打开后的着陆过程;前一组没有注意数据位是否被置位,因为这程;前一组没有注意数据位是否被置位,因为这不是他们负责的范围。而后一个组在每次测试之不是他们负责的范围。而后一个组在每次测试之前又重置计
6、算机,清除所有的数据位。双方独立前又重置计算机,清除所有的数据位。双方独立工作都很正常,但两个组没有进行集成测试。工作都很正常,但两个组没有进行集成测试。结果:飞船坠毁结果:飞船坠毁软件错误的案例(4)千年虫时间:时间:2020世纪世纪9090年代年代背景:随着背景:随着2121世纪的到来,很多的计算机系统都面临世纪的到来,很多的计算机系统都面临着着“千年虫千年虫”的危害的危害问题:这样就导致问题:这样就导致20002000年以后的年份的记录出现问题,年以后的年份的记录出现问题,如如0000年是指年是指19001900还是还是20002000?原因:原因:2020世纪世纪7070年代时,由于计
7、算机存储空间很小,年代时,由于计算机存储空间很小,并且十分昂贵,所以在计算机中记录时间采用了并且十分昂贵,所以在计算机中记录时间采用了“偷偷懒懒”的方式,例如将的方式,例如将19731973缩减为缩减为7373结果:世界各地为了更换和升级系统,花费了上百亿结果:世界各地为了更换和升级系统,花费了上百亿的美元的美元软件错误的案例(5)爱国者导弹防御系统炸死自家人背景:海湾战争时导弹防御系统背景:海湾战争时导弹防御系统问题:软件系统缺陷问题:软件系统缺陷原因:系统时间的累计错误,延时原因:系统时间的累计错误,延时1414个小时,造成跟个小时,造成跟踪系统失去了准确度。踪系统失去了准确度。结果:爱国
8、者导弹炸死结果:爱国者导弹炸死2828名美军士兵。名美军士兵。软件测试工程师,需要具备哪些软件测试工程师,需要具备哪些能力?能力?通用技能上:1.基本计算机知识(操作系统,数据库,通讯协议原理,熟悉至少一门编程语言)2.基本软件测试知识(各种测试理论,测试方法论,测试用例编写,缺陷界定标准,软件质量评估)3.简单项目管理知识软件测试工程师,需要具备哪些软件测试工程师,需要具备哪些能力?能力?性格上:有牛皮糖属性的为佳,越“不要脸”越好测试工程师提交的BUG越多,意味着研发工程师工作质量越差,需要返工的工作量也越大,甚至会影响绩效,所以测试工程师有时候很容易得罪研发部门。一个可以相对坚持原则(比
9、如3级BUG以上一定要改),又能拉下脸和不愉快的研发工程师保持较好关系的测试工程师,会对项目质量起到很关键作用。软件测试工程师,需要具备哪些软件测试工程师,需要具备哪些能力?能力?你不是产品,但你知道产品是怎么工作的;你不是运营,但你知道用户关心什么;你不是开发,但你知道开发同事怎么工作;你不是设计,但你有你对交互逻辑的理解;你不是销售和编辑,但你熟悉产品业务。第一章 概述 本章要点本章要点 l 软件测试的发展历史;l 软件测试技术的分类方法;l 软件测试原则;l 软件测试的定义;l 软件测试同软件开发之间的关系;l 软件测试与开发模型;l 软件测试工作流程。本章目标本章目标 u 了解软件测试
10、的发展历程和行业现状;u 掌握软件测试技术的分类;u 理解软件测试的目的和软件测试原则,以及了解人们对软件测试行业的错误认识;u 掌握软件测试中的基本定义、基本知识;u 理解软件开发与软件测试的关系。1.1软件测试的发展历程及现状软件测试的发展历程及现状 1.1.1软件测试的发展历程软件测试的发展历程 20世纪50-60年代,软件仍然处于次要位置,测试理论和方法的发展比较缓慢。70年代以后,软件技术的成熟和完善使得软件测试的规模和复杂度加大,软件测试也逐渐形成了一套完整的体系,逐渐走向规范化。如今对软件质量的要求越来越高,质量的控制已经不仅仅是传统意义上的基于代码运行上的测试。软件测试已经是一
11、个基于整个软件生命周期的质量控制活动。1.1软件测试的发展历程及现状软件测试的发展历程及现状 1.1.2软件测试的现状软件测试的现状 与一些发达国家相比,国内测试工作还存在一定的差距。国内测试人员所占比例小。微软的开发工程师与测试工程师的比例是1:2,国内一般公司是6:1.与发达国家相比,我们的差距主要在测试意识,测试理论的研究,测试工具软件的开发以及从业人员的数量等方面。1.1软件测试的发展历程及现状软件测试的发展历程及现状 近年来,随着软件外包行业的兴起,国近年来,随着软件外包行业的兴起,国内软件质量保证的意识也在加强。占整体内软件质量保证的意识也在加强。占整体外包业务外包业务85%85%
12、的对日软件外包中主要的工作的对日软件外包中主要的工作就是软件测试。就是软件测试。IBMIBM,百度,华为,惠普,盛大,百度,华为,惠普,盛大,联想等大型联想等大型ITIT企业均表示出对成熟软件测企业均表示出对成熟软件测试人员的期盼。试人员的期盼。1.2 1.2 什么是软件测试什么是软件测试(software testingsoftware testing)1.2.11.2.1软件测试的定义软件测试的定义 根据侧重点的不同,主要有以下三种观点:1)“使用人工或自动手段运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别”,该定义明确地提出了软件测试以检
13、验是否满足需求为目标。2)“软件测试是为了发现错误而执行程序的过程”,明确提出了“寻找错误”是测试目的。3)从软件质量保证的角度看:是一种重要的软件质量保证活动,其动机是通过一些经济、高效的方法,捕捉软件中的错误,从而达到保证软件内在质量的目的。最终目的是验证软件是否按着预期运行。测试过程中的活动包括“分析”软件(静态测试)和“运行”软件(动态测试)。也有人认为软件测试(software testing)就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试有两个基本职责:确认:保证开发过程中软件符合产品说明书的过程验证:保证最终产品满足用户要求
14、的过程 经常会确认了但没有验证,例如1990年哈勃天文望远镜事件。注意:区分软件测试和软件调试。1,调试分析和定位BUG,不能完全代替测试。2,调试是为了使软件正确运行,测试是找错误。3,调试对象是源代码,测试的对象是开发过程各个阶段的所有产品。1.2.21.2.2软件测试生命周期软件测试生命周期 测试的生命周期(software testing life cycle)分为几个阶段(如图1-1所示)。前三个阶段就是引入程序错误阶段;后三个阶段就是清除程序错误的阶段。图1-1 测试生命周期 1.2.3 1.2.3软件开发与测试模型软件开发与测试模型 下面我们将介绍几种典型的软件开发与测试模型。一
15、、软件开发模型一、软件开发模型1 1、大爆炸模型、大爆炸模型一大堆能量(这里指开发软件所需的人力和物力)放在一起,巨大的能量进行释放,通常的结果可能是产生了优秀的软件产品或成为一堆“废品”(不成功的软件)。优点:思路简单,计划、进度和正规开发过程几乎没有,所有的精力集中在开发软件和编写代码上,通常可能是开发者的“突发奇想”缺点:开发过程是非工程化的,随意性大。由于软件已经完成,不可能回头修复已经无法挽回的问题,软件测试的工作其实只是向用户报告发现的问题。关于测试:有的较简单,有的则非常困难。测试工作妨碍软件的交付,测试越深入,就会发现越来越多的缺陷,实际中测试几乎不作。1.2.3 1.2.3软
16、件开发与测试模型软件开发与测试模型 一、软件开发模型一、软件开发模型1 1、大爆炸模型、大爆炸模型 1.2.3 1.2.3软件开发与测试模型软件开发与测试模型 一、软件开发模型一、软件开发模型瀑布模型瀑布模型瀑布模型是将软件生命周期的各项活动,规定为按照固定顺序相连的若干个阶段性工作,形如瀑布流水,最终得到软件产品。问题定义分析研究需求分析软件设计编码测试维护定义阶段开发阶段维护阶段瀑布开发模型瀑布开发模型 1.2.3 1.2.3软件开发与测试模型软件开发与测试模型一、软件开发模型一、软件开发模型瀑布法瀑布法 优点:易于理解;调研开发的阶段性;强调早期计划及需求调查;能够确定何时能够交付产品及
17、何时进行评审与测试。缺点:需求调查分析只进行一次,不能适应需求变化;顺序的开发流程,使得开发中的经验教训不能反馈到该项目的开发中去;不能反映出软件开发过程的反复与迭代性;没有包含任何类型的风险评估;开发中出现的问题直到开发后期才能够显露,因此失去及早纠正的机会。边写边改法 采用边写边改法的软件开发通常只是有了比较粗略的想法就开始进行简单的设计、然后进行较长的反复编写、测试与修复,是一个循环的过程。在认为无法更精细的描述软件产品要求时,就发布产品。优点:能够较为迅速的展现成果,适合需要快速制作而且用完就扔的小项目,如示范程序、演示程序等。缺点:其编码和测试可能将是长期的循环往复的过程。产品说明书
18、代码编制、测试、修复代码编制、测试、修复 最终产品快速原型模型快速原型模型快速原型模型的第一步是建造一个快速原型,实现客户快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。进一步细化待开发软件的需求。通过逐步调整原型使其满通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。第二步则在第一步的基础上开发客户满意的软件产品。需求分析需求分析原型开发原
19、型开发原型评价原型评价最终设计最终设计系统实现系统实现用户反馈用户反馈螺旋模式法螺旋模式法螺旋模式是瀑布模式与边写边改演化模式相结合,并加入风险评估所建立的软件开发模式。每一个螺旋周期,为开发的一次迭代在每次迭代中,没有固定定义的软件活动,而是根据需要选择。将开发活动与风险分析相结合,用于降低和控制风险。软件开发与软件测试的关系测试与开发各阶段的关系测试与开发各阶段的关系软件测试与软件开发过程的关系需求分析说明书详细设计说明书源程序代码单元测试集成测试系统测试概要设计说明书 1.2.3 1.2.3软件开发与测试模型软件开发与测试模型 一、软件开发与测试一、软件开发与测试V V模型模型 在传统开
20、发过程中测试不受重视,仅把它作为在需求分析、概要设计、详细设计及编码之后的一个阶段。尤其在瀑布模型中。V模型,描述了一些不同的测试级别,级别对应的生命周期中不同的阶段,这些测试阶段和开发过程期间存在对应关系。V模型示意图 二、软件开发与测试二、软件开发与测试WW模型模型 开发的每一个环节都可能产生错误,如果坚持各个阶段的技术评审,就能够尽早发现和预防错误。W 模型,形象地说明了软件测试与开发的这种同步性。W模型的优点在于,每个软件开发活动结束后就可以执行相应的测试,如:在需求分析结束后,就可以进行需求分析测试。图1-3 W模型示意图 三、软件开发与测试三、软件开发与测试HH模型模型 与前两种模
21、型相比,H模型充分地体现了测试过程。1、软件测试不仅仅指测试的执行,还包括很多其他的活动。2、软件测试是一个独立的流程,贯穿产品的整个开发周期,与其它流程并发进行。3、软件测试要尽早准备,尽早执行。图1-4 H模型示意图 4、软件测试根据被测物的不同是分层次的.不同层次的测试活动可以是按照某个次序先后进行的,但也可能是反复的。1.2.4 1.2.4与软件测试相关的术语与软件测试相关的术语 1.错误(Error)程序员在编写代码时会出错,我们把这种错误称之为bug。随着开发过程的进行,错误会不断的放大。2.缺陷(Default)缺陷是错误的结果,更精确的说是错误的表现。包括过错缺陷和遗漏缺陷。过
22、错缺陷:信息输入到了不正确的表现形式中 遗漏缺陷:没有输入信息 3.失效(Failure)在缺陷运行时,常常会发生失效的情况。一种是过错缺陷对应的失效;一种是遗漏缺陷对应的失效。4.测试(Test)测试是一项采用测试用例执行软件的活动,在这项活动中某个系统或组成的部分将在特定的条件下运行,然后要观察并记录结果,以便对系统或组成部分进行评价。5.测试用例(Test Case)测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。6.回归测试(Regression testing)回归测试的目的是为了测试由于修正缺陷而更新的应用程序,以确保彻底修正了上一个版本的缺陷,并且没有引入新的软
23、件缺陷。回归测试可分为:回归测试可分为:完全回归测试完全回归测试 严重性高严重性高 部分回归测试部分回归测试 时间紧张,测试内容过多时间紧张,测试内容过多 1.31.3软件测试技术分类软件测试技术分类 从不同的角度,可以把软件测试技术分成不同种类,一、从是否需要执行被测软件的角度,可分为静态测试和动态测试。比如检查二手车,看车漆属于静态测试,发动听音则属于动态测试。静态测试 那些不利用计算运行被测程序,而是通过其他手段达到测试目的的方法称作静态测试。几种静态测试 代码检查:以小组为单位阅读代码 代码走查:在检查的基础上,还要执行逻辑运行 桌面检查:由一个人进行的代码检查与走查 同行评分:不为发
24、现错误,对代码自己质量进行评价 动态测试 动态测试的对象:必须是能够运行的程序。通过输入测试用例,并对实际输出结果和预期输出结果进行比较分析,从而发现错误的测试属于动态测试。黑盒测试和白盒测试就属于动态测试。二、从软件测试用例设计方法的角度,可分为黑盒测试(Black-Box Testing)和白盒测试(White-Box Testing)。黑盒测试:又叫功能性测试,测试人员只需知道软件要做什么?无法看到软件如何运行。目的是检查程序各个功能是否实现。白盒测试:测试人员可以访问代码,并通过检查代码线索来协助测试。目的是检查内部操作是否按规定执行,功能是否得到充分使用。三、按照软件测试的策略和过程
25、分类,软件测试可分为单元测试(Unit Testing):针对每个单元的测试,是测试的最小单位。集成测试(Integration Testing):主要检查与软件设计相关的程序结构问题。确认测试(Validation Testing):测试程序能否满足所有功能和性能的需求。系统测试(System Testing):测试软件与系统的其他部分的协调性。验收测试(Verification Testing):从用户角度进行测试。1.4 1.4软件测试的目的软件测试的目的 测试真正的目的是使我们通过对软件错误的原因和分布进行归纳,来发现并排除当前软件产品的缺陷,对在需求和设计过程中存在的问题查缺补漏,从
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 黑盒 详解 教程 文件
限制150内