第一章 软件测试概述课件.pptx
《第一章 软件测试概述课件.pptx》由会员分享,可在线阅读,更多相关《第一章 软件测试概述课件.pptx(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件测试技术软件测试技术 第第1 1章章 软件测试概述软件测试概述1/88前言前言软件测试是保障软件质量的关键手段。本章介绍了软件测试的行业需求、现状和发展历程,给出了软件测试的基本概念、目的、分类和原则,说明了软件测试过程、常见测试模型和测试用例。2/881.11.1软件测试行业需求与现状软件测试行业需求与现状国际上公认的软件测试和开发工程师人员配置比例标准是1:1,国外一些开发大型、复杂软件系统的成熟企业(如微软),软件测试人员和开发人员的比例约为2:1,下表是微软公司两个大型软件产品开发过程中开发和测试人员的比例。3/88国外软件测试行业现状国外软件测试行业现状Exchange2000W
2、indows2000项目经理项目经理25250开发人员开发人员1401700测试人员测试人员3503200测试与开发人员比例测试与开发人员比例2.5:11.9:1表表1-1 1-1 微软公司微软公司Exchange2000Exchange2000和和Windows2000Windows2000测试和开发人员比例测试和开发人员比例4/88国内软件测试行业现状国内软件测试行业现状20%18%14%14%12%9%7%6%1:31:7以上1:41:51:21:61:11:7图图1-1软件测试和开发工程师人员比例软件测试和开发工程师人员比例如图1-1所示,能够达到上述合理比例的国内企业数量仅占7%,1
3、:7以上配置比例的企业数量仍然高达18%,这从一个侧面反映了我国软件测试行业的成熟度与国外相比还有很大的差距,同时也说明其增长空间是巨大的。5/88软件测试的职业优势(1)职业门槛不高(2)职业生命周期长(3)无性别偏好(4)多元化发展,职业空间广阔6/88软件测试的应用领域软件测试的应用领域41%20%14%7%6%4% 3%3%2%通信及互联网应用软件金融行业其它基础软件及PC消费类电子及IC教育军工、政府工业控制图图1-2软件测试人员所属行业分布软件测试人员所属行业分布7/88软件测试职业发展方向软件测试职业发展方向从软件测试职业发展方向来看,大体可以分为技术和管理两个方向。根据测试能力
4、和经验的不同,技术方向又可分为初级、中级和高级3个阶段。(1)初级技术)初级技术阶段阶段:处于这一阶段的测试人员的工作内容主要是接受测试主管分配的任务,根据已有测试计划、流程和方案编写和执行测试用例、提交软件缺陷报告、完成阶段性测试报告以及参与部分阶段性评审工作。(2)中级技术)中级技术阶段阶段:处于此阶段的软件测试从业人员已经能够胜任自动化测试工程师、白盒测试工程师、性能测试工程师职位。8/88软件测试职业发展方向软件测试职业发展方向(3)高级技术)高级技术阶段阶段:高级技术阶段的自动化测试工程师不仅需要能够完成自动化测试脚本的设计和开发,还需要能够设计数据驱动,开发测试框架以及自主开发测试
5、特定业务所需要的一些企业内部小型测试工具。 对于白盒测试来讲,需要结合不同软件架构和多种开发技术,寻找最为有效的代码测试方法,并且具有对代码进行优化的能力。 对于性能测试来讲,需要具备设计整体性能测试方案的能力,这就要求对主流的软件开发模式和应用系统具备丰富的知识和经验。9/88软件测试人员职位分布软件测试人员职位分布历史平均 18.0%48.0%8.9%13.0%6.3%0.9%0.4%0.4%1.1%1.8%2.8%2016年16.0%49.0%10.0%5.0%13.0%1.0%0.4%0.3%1.0%2.0%3.0%初级测试工程师测试工程师高级测试工程师测试主管或测试项目经理测试部门经
6、理测试/质量总监测试分析师测试架构师性能测试工程师自动化测试工程师其它0.0%10.0%20.0%30.0%40.0%50.0%60.0%10/88软件测试的职业发展阶段(1)测试主管一般由具备35年软件测试经验的人员担任,要熟练掌握各种测试方法,具备过硬的测试技术。(2)测试经理一般由管理和技术能力都比较成熟的资深测试人员担任,完成企业级或大型项目级软件总体测试工作的策划和实施。为测试团队成员提供业务指导。(3)测试总监测试总监负责企业级全部测试及产品质量保障工作,全面管理企业的相关测试资源。11/88 1.2 软件软件中的中的Bugl 什么是什么是BugBug?Bug是英语“虫子”的意思,
7、现在人们将计算机系统或程序中隐藏的问题、缺陷或漏洞统称为Bug。在软件测试领域,我们一般使用更为正规的名词:软件缺陷(Software Defect)。12/88软件缺陷的定义软件缺陷的定义国内软件可靠性工程领域广泛使用的定义为:软件缺陷就软件缺陷就是存在于软件(程序、数据和文档)中的那些不希望或不是存在于软件(程序、数据和文档)中的那些不希望或不可接受的偏差,会导致软件产生质量问题可接受的偏差,会导致软件产生质量问题。IEEE国际标准729-1983中给出的软件缺陷标准定义是:从从软件产品内部看,软件缺陷是软件产品内部看,软件缺陷是软件软件开发或维护过程中存在开发或维护过程中存在的错误、毛病
8、等各种问题;从软件产品外部看,软件缺陷的错误、毛病等各种问题;从软件产品外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。是系统所需要实现的某种功能的失效或违背。13/88软件缺陷的定义软件缺陷的定义通常认为,只要符合下面5个规则中的任意一条,就是软件缺陷:(1)软件未达到软件规格说明书中规定的功能;(2)软件超出软件规格说明书中指明的范围;(3)软件未达到软件规格说明书中指出的应达到的目标;(4)软件运行出现错误;(5)软件难以理解,不易使用,运行速度慢,或者最终用户认为使用效果不好。14/88BugBug的由来的由来图图1-4第一个第一个Bug记录手稿记录手稿1945年9月9日,美国
9、海军的Grace Hopper中尉作为程序员正在研制一个被称为“MARK ”的计算机。那时的计算机还不是一个完全的电子计算机,需要使用大量的继电器完成工作。因为正值炎热的夏天,机房又位于一个没有空调的老建筑内,因此为了散热,所有窗户都敞开着。突然,“MARK ”死机了。Grace Hopper经过排查,在计算机的继电器里,找到了一只被继电器打死的小飞蛾,这只小虫子卡住了计算机的运行。Grace Hopper顺手将飞蛾夹在工作笔记里,并诙谐地把程序故障称为“Bug”。这一称呼后来演变成表达缺陷漏洞的计算机专业术语,人们习惯地把排除程序故障叫做“Debug”(除虫)。这一事件记录和那只飞蛾可以被称
10、作是第一个Bug记录手稿(如图1-4所示),现在陈列在美国历史博物馆中。这就是我们今天所说的“Bug”的由来,它最初竟然真的就是“一只虫子”。15Grace Hopper简介图图1-5GraceHopperGrace Hopper后来成为美国海军少将,她是第一个程序语言编译器的开发者,第一个使用词语的计算机语言开发者,第一个商用编程语言COBOL的开发者,是与阿兰图灵、史蒂夫乔布斯、比尔盖茨等一同入选“IT界十大最有远见的人才”的唯一一位女性。2016年,Hopper被奥巴马追授总统自由勋章,这是美国平民所能获得的最高荣誉。16/88据统计,每年因软件问题会让美国经济损失近600亿美元。软件B
11、ug的普遍存在影响的不仅仅是我们的日常生活,历史上很多灾难性事件的发生都是由软件Bug引起的。1979年11月28日,新西兰航空901号班机坠毁。1982年夏天,苏联西伯利亚天然气管线发生特大爆炸。1987年10月19日,道琼斯指数一天之内暴跌,引发金融市场恐慌。1991年2月25号,海湾战争期间,美国拦截导弹失败。1996年6月4日,阿丽亚娜5号火箭发射失败。2016年10月19日,火星登陆器“斯基亚帕雷利”坠毁。17/881.2.3 软件软件缺陷产生的原因缺陷产生的原因图图1-6软件缺陷产生的原因软件缺陷产生的原因18/881.3 什么是软件测试什么是软件测试测试事实上包含了硬件测试和软件
12、测试两个方面,在本书中特指软件测试,即Software Testing。软件测试在其发展历程中有过不同的定义和不同的观点,了解它们有助于建立正确的软件测试思想。19/881.3.1 1.3.1 软件测试的发展历程软件测试的发展历程1、1957年之前,调试为主(Debugging Oriented)由于由于当时的软件当时的软件规模小、复杂度低、开发过程无序规模小、复杂度低、开发过程无序,测试被测试被等同等同于软件于软件调试调试,真正意义上的软件测试还未形成,真正意义上的软件测试还未形成。2、1957年1978年,证明为主(Demonstration Oriented)19571957年,年,Ch
13、arles BakerCharles Baker对调试和测试进行了对调试和测试进行了区分区分,是软件是软件测试史上的一个重要里程碑,它标志了测试首次具有了独立测试史上的一个重要里程碑,它标志了测试首次具有了独立性。性。20/88软件测试的发展历程软件测试的发展历程 19721972年,在美国的北卡罗莱纳大学举办了历史上首届正式年,在美国的北卡罗莱纳大学举办了历史上首届正式的软件测试会议,标志着软件测试作为一个学科正式诞生的软件测试会议,标志着软件测试作为一个学科正式诞生了了。 19681968年北大西洋公约组织在联邦德国召开国际会议,会议年北大西洋公约组织在联邦德国召开国际会议,会议上正式提出
14、了上正式提出了“软件工程软件工程”这一名词,标志了软件工程学这一名词,标志了软件工程学科的诞生科的诞生。 19731973年,年,William C. HetzelWilliam C. Hetzel整理出版了软件测试的第一本整理出版了软件测试的第一本著作著作Program Test MethodsProgram Test Methods,对测试方法和测试工具,对测试方法和测试工具进行了论述进行了论述。 19751975年,年,GoodenoughGoodenough和和GerhartGerhart首次提出了软件测试的理论,首次提出了软件测试的理论,使得软件测试成为具有理论指导的实践性学科。使得
15、软件测试成为具有理论指导的实践性学科。21/88软件测试软件测试的发展历程的发展历程3、1979年1982年,破坏为主(Destruction Oriented)19791979年,年,Glenford J. MyersGlenford J. Myers出版了对软件测试行业影响深出版了对软件测试行业影响深远的著作远的著作The Art of The Art of Software TestingSoftware Testing,在书中,在书中给出了一个开创性的软件测试给出了一个开创性的软件测试定义:定义:“测试是为了发现错误测试是为了发现错误而而执行执行一个程序或者系统的过一个程序或者系统的过
16、程程”。GlenfordJ.Myers22/88软件测试的发展历程软件测试的发展历程4、1983年1987年,评估为主(Evaluation Oriented)这一阶段的测试内涵也发生了转变,测试不再是一个单纯发现这一阶段的测试内涵也发生了转变,测试不再是一个单纯发现错误的过程,它包含了软件质量评价的内容。这一时期,出现错误的过程,它包含了软件质量评价的内容。这一时期,出现了测试领域著名的两个名词了测试领域著名的两个名词验证(验证(VerificetionVerificetion)和和确认确认(ValidationValidation)。人们提出了在软件生命周期中通过分析、评。人们提出了在软件
17、生命周期中通过分析、评审和测试来评估软件产品的理论审和测试来评估软件产品的理论。5、1988年至今,预防为主(Prevention Oriented)STEPSTEP(Systematic Test and Evaluation ProcessSystematic Test and Evaluation Process)是最早的)是最早的一个以预防为主的测试生命周期模型,该模型体现了一个以预防为主的测试生命周期模型,该模型体现了测试测试与开与开发的并行性,强调了整个测试的生命周期也是由计划、分析、发的并行性,强调了整个测试的生命周期也是由计划、分析、设计、开发、执行和维护组成,也就是说,设计、
18、开发、执行和维护组成,也就是说,测试测试不是在编码完不是在编码完成后才开始介入,而是成后才开始介入,而是贯穿于整个软件生命周期贯穿于整个软件生命周期。23/88 1983年,IEEE给出了一个比较完善的软件测试标准定义:“使用人工或自动手段来运行或测定某个系统的过程,其使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果和实目的在于检验它是否满足规定的需求或弄清预期结果和实际结果之间的差别际结果之间的差别”。 软件测试也可定义为:软件测试是由验证(软件测试是由验证(VerificationVerification)和有效性确认(和有效性确认(Valid
19、ationValidation)活动构成的整体,也就是软)活动构成的整体,也就是软件测试件测试=V&V=V&V。24/88验证&有效性确认n验证验证:是指检验软件生命周期的每个阶段和步骤的产品是否符合产品规格说明中定义的功能和特性要求,并且与前面的阶段和步骤所产生的产品保持一致性。验证通过数据和证据表明每一个软件生命周期活动是否已正确完成,判断是否在正确地开发软件产品,是否可以开始另外的生命周期活动,强调的是过程的正确性。n有效性有效性确认:确认:是保证所开发的软件是否真正满足用户实际需求,用数据和证据表明是不是制造了正确的产品,强调的是结果的正确性。25/88验证&有效性确认1981年,Bo
20、ehm给出了有关验证和有效性确认的一个简洁解释,说明了两者之间的区别:验证验证:Are we building the product right? 也就是,我们是否正在正确地构造软件?检验软件开发过程中阶段性产品与软件规格说明书的一致性。有效性有效性确认确认:Are we building the right product? 也就是,我们是否构造了正确的产品?即是否构造了用户需要的产品。26/88软件测试认识误区软件测试认识误区p 误区一:如果已发布的软件有质量问题,都是测试人员的责任。p 误区二:软件测试技术要求不高,至少比编程容易多了。p 误区三:软件测试是开发后期的一个阶段。p 误区
21、四:有时间就多测试一些,来不及就少测试一些。p 误区五:软件测试是测试人员的工作,与开发人员无关。p 误区六:有太多的问题无法测试。p 误区七:测试自动化将取代手工测试。p 误区八:软件测试工作不如软件开发工作有前途。27/88 1.4 软件测试软件测试的目的与原则的目的与原则软件测试的目的保证软件产品的最终质量。检验一个软件系统是否满足规定的需求,衡量出预期结果和实际结果之间的偏差,识别出软件阶段或最终产品的正确度和完全度。但是需要注意的是,发现错误是软件测试的手段而不是软件测试的唯一目的,未发现错误的测试依然是有价值的,软件测试的最终目的是检验软件产品是否满足用户的需求。28/881.4.
22、1 软件测试的目的 关于软件测试的目的Glenford J. Myers曾经给出过如下观点:n(1)软件测试是一个程序的执行过程,其目)软件测试是一个程序的执行过程,其目的在于发现错误;的在于发现错误;n(2)一个好的测试用例很可能会发现至今尚)一个好的测试用例很可能会发现至今尚未发现的错误;未发现的错误;n(3)一个成功的测试是发现了至今尚未发现)一个成功的测试是发现了至今尚未发现的错误的测试。的错误的测试。29/881.4.1 软件测试的目的软件测试的目的一般包含以下内容:(1)验证软件是否满足开发合同、开发计划、需求规格说明和设计说明等规定的软件质量要求。(2)由于难以消除软件中的所有错
23、误,所以通常来说软件测试的目的就是为了发现尽可能多的软件缺陷,消除它们,提高软件质量。(3)测试不仅是为了发现软件缺陷,还是对软件质量进行度量和评估的过程。测试结果数据可以为软件产品的质量测量和评价提供依据。(4)通过分析软件缺陷产生的原因,可以针对性地进行软件过程改进。30/88(1)软件测试不能证明程序无错。(2)所有测试都应当追溯软件缺陷的起源。(3)尽早和不断地进行软件测试。(4)软件测试应尽可能具有独立性。(5)Pareto原则。(6)重视无效数据和非预期的功能。(7)完全测试不可行,测试需要适时终止。(8)重视回归测试的关联性。(9)软件缺陷的免疫性。(10)测试过程文档需要妥善保
24、存。31/881.5 软件测试过程与分类软件测试过程与分类软件测试过程软件测试过程一般包括四项活动,按顺序分别是:测试策划、测试设计、测试执行、测试总结。这就构成了软件测试的生命周期。(1)测试策划。主要是进行测试需求分析并制定测试计划。(2)测试设计。根据测试需求与计划,选择已有的或设计新的测试用例,准备测试数据,获取测试资源,开发测试软件,建立测试环境,进行测试就绪评审。(3)测试执行。执行测试用例,获取和分析测试结果。(4)测试总结。整理和分析测试数据,评价测试效果和被测软件项,描述测试状态。32/88软件测试过程在实际工作中,我们一般将测试过程分为制定测试计划、测试设计、测试准备、执行
25、测试、测试评估和测试总结等几个阶段33/88软件测试过程(1)制定测试计划。在需求评审和设计评审的基础上制定测试计划。以测试计划指导整个测试工作,内容主要包括确定测试范围、识别和分解测试任务、识别风险并给出应对措施、规划测试资源、确定测试策略和确定测试进度等。(2)测试设计。设计测试用例和测试执行过程,保证测试用例完全覆盖测试需求。(3)测试准备。为执行测试进行前期准备,包括配置测试环境、准备测试数据、开发测试用例或测试脚本、选择测试工具等。34/88软件测试过程(4)执行测试。执行测试用例,发现和修正软件缺陷,主要包括单元测试、集成测试、系统测试和验收测试四个阶段。修改缺陷后往往需要进行回归
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第一章 软件测试概述课件 软件 测试 概述 课件
限制150内