第1章 引论-测试基础_第1页
第1章 引论-测试基础_第2页
第1章 引论-测试基础_第3页
第1章 引论-测试基础_第4页
第1章 引论-测试基础_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

第1章软件测试技术基础西安财经学院测试发展现状1、国外:独立的产业,例如微软为1个开发比对2个测试。大公司有MI,RationalCompuware等。2、国内:起步较晚,但发展后劲很大。第三方测试蓬勃发展。3、测试作为一个独立的职业受到了越来越多的重视。目前门槛较低。国内软件测试行业发展过程:A80年代-95年少量非专职B96年-00年小规模扩张,低要求,低薪资C00年-03年裁撤团队,提高要求,提高薪资D03年底以后快速扩张,高要求,高薪资微软的秘密软件测试职业特点

可以很快入门的职业,门槛不高.软件测试人员最好具有软件开发经验,理解软件工程的知识。对于刚刚毕业的学生,如果希望今后从事软件开发,那么,先从事一段时间的测试可能更有利于今后的编程。而对于具有多年编程经验的程序员,如果改行做测试,更容易提高技术。软件测试工程师级别高级测试工程师:他们不但要掌握测试与开发技术,而且还要对其所测试软件对口的行业非常了解,能够对测试方案可能出现的问题进行分析和评估。中级测试工程师:他们要能够编写测试方案、测试文档,与项目组一起制定测试阶段的工作计划,能够在项目中合理利用测试工具来完成测试任务。初级测试工程师:他们的工作通常是按照测试方案和流程对产品进行功能测试,检查产品是否有缺陷。职业发展考核方法:平时30%,考试70%平时成绩=40%考勤(n次)+60%作业(n次)作业:word文档形式(文件命名规则:班级+学号后两位+姓名+作业的次数)参考资源中国软件评测中心:UML软件工程组织:测试时代:软件测试网:希赛网等。第1章引论1.1软件测试的必要性1.2为什么要进行软件测试?1.3什么是软件测试?1.4软件测试和软件开发的关系1.5测试驱动开发的思想1.1软件测试的必要性1.1.1迪斯尼并不总是带来笑声1.1.2一个缺陷造成了数亿美元损失1.1.3火星探测飞船坠毁1.1.4更多的悲剧迪斯尼并不总是带来笑声1994年圣诞节前夕,迪斯尼公司发布了第一个面向儿童的多媒体光盘游戏“狮子王童话”圣诞节后的第一天,迪斯尼客户支持部电话开始响个不停,不断有人咨询、抱怨为什么游戏总是安装不成功,或没法正常使用这个游戏软件只能在少数系统中正常运行一个缺陷造成了数亿美元损失(4195835/3145727)×3145727-4195835=?最后Intel公司付出很大代价,回收CPU,造成4亿美元损失火星探测飞船坠毁机械震动在大多数情况下也会触发着地开关,设置错误的数据位。设想飞船开始着陆时,计算机极有可能关闭推进器,而火星登陆飞船下坠1800米之后没有反推进器的帮助,冲向地面,必然会撞成碎片两个小组本身的工作都没什么问题,就是没有合在一起测试,其接口没有被测,而问题就在这里1.2为什么要进行软件测试?软件总存在缺陷。只有通过测试,才可以发现软件缺陷。也只有发现了缺陷,才可以将软件缺陷从软件产品或软件系统中清理出去。软件中存在的缺陷给我们带来的损失是巨大的,这也说明了软件测试的必要性和重要性测试是所有工程学科的基本组成单元,自然也是软件开发的重要组成部分。测试人员水平越高,找到软件问题的时间就越早,软件就越容易更正,产品发布之后越稳定,公司赚的钱也越多,微软就是一个典型的例子。尽早和不断地测试.a要尽早地测试,让测试人员在软件的需求和设计阶段就介入,而不是等这些工作全部完成了才进行测试。1.尽早和不断地测试.b1.尽早和不断地测试.c1.尽早和不断地测试.d1.3什么是软件测试?1.3.1软件测试学科的形成1.3.2正反两方面的争辩1.3.3软件测试的定义1.3.4软件测试的其它观点软件测试学科的发展从测试的思想导向来划分为4个阶段:

1957~1978年,以功能验证为导向,测试是证明软件是正确的(正向思维)。1978~1983年,以破坏性为为导向,测试是为了找到软件中的错误(逆向思维)。1983~1987年,以质量评估为导向,测试是提供产品的评估和质量度量。1988年起,以缺陷预防为导向,测试是为了展示软件符合设计要求,发现缺陷、预防缺陷。更好的阶段划分分为3个阶段——初期阶段、发展阶段和成熟阶段初级阶段(1957~1971)测试通常被认为是对产品进行事后检验,缺乏有效的测试方法发展阶段(1972~1982),1972年第一次关于软件测试的正式会议,促进了软件测试的发展成熟阶段(1983到现在),国际标准Std829-1983,形成一门独立的学科和专业,成为软件工程学科中的一个重要组成部分软件测试的正面性BillHetzel博士(正向思维的代表):软件测试就是为程序能够按预期设想那样运行而建立足够的信心。软件测试是一系列活动,这些活动是为了评价一个程序或系统的特性或能力,并确定是否达到预期的结果。测试是为了验证软件是否符合用户需求,即验证软件产品是否能正常工作软件测试的反面性

GlenfordJ.Myers

(反向思维的代表):

测试是为了证明程序有错,而不是证明程序无错误一个好的测试用例是在于它能发现至今未发现的错误一个成功的测试是发现了至今未发现的错误的测试测试是为了发现错误而执行一个程序或者系统的过程。软件测试定义的两面性

评价一个程序或系统的特性或能力并确定是否达到预期的结果测试是为发现错误而针对某个程序或系统的执行过程软件测试正向思维-验证软件正常工作逆向思维-假定软件有错误在设计规定的环境下运行软件的所有功能,直至全部通过。寻找容易犯错误的地方和系统的薄弱环节,试图破坏系统,直至找不出问题。软件测试的定义定义一:(IEEE1983ofIEEEStandard729)使用人工或自动化手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是发现预期结果与实际结果之间的差别。定义二:软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。定义三:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(包括输入数据与预期输出结果),并利用这些测试用例运行软件,以发现软件错误的过程。正确的定义验证”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性。“有效性确认”是确认所开发的软件是否满足用户真正需求的活动。软件测试是由“验证(Verification)”和“有效性确认(Validation)”活动构成的整体软件测试的其它观点软件测试被认为是对软件系统中潜在的各种风险进行评估的活动。基于风险的软件测试可以被看作是一个动态的监控过程,对软件开发全过程进行检测,随时发现问题、报告问题测试的经济观点就是以最小的代价获得最高的软件产品质量。经济观点也要求软件测试尽早开展工作,发现缺陷越早,返工的工作量就越小,所造成的损失就越小。软件测试和软件质量的区别◎测试的一项任务是提高软件质量◎测试和质量保证是不同层面的

QA的重要工作通过预防,检查和改进来保证软件质量。QA采用全面质量管理和过程改进的原理开展工作。测试针对的是开发的成果,包括最终成果和阶段性成果。软件满足规定或潜在用户需求特性的总和。测试的对象

软件=程序+数据+文档。软件测试不等于程序测试。软件测试应贯穿于整个软件生命周期中。需求规格说明,概要设计,详细设计以及源程序等等,都是测试的对象。1.4软件测试和软件开发的关系让人误解的瀑布模型需求分析和定义系统设计详细功能设计编码单元测试功能测试系统测试验收测试测试用户需求验证系统非功能特性验证功能验证代码验证构建过程验证过程软件生存周期软件生命周期计划/调研需求分析概要设计详细设计编码测试验收运行维护定义阶段开发阶段维护阶段瀑布模型特点优点:提供了软件开发的基本框架,优于“手工作坊”式的开发方法有利于大型软件开发过程中人员的组织、管理有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率缺点:在软件开发的初始阶段指明软件系统的全部需求是困难的,有时甚至是不现实的需求确定后,用户和软件项目负责人要等相当长的时间(经过设计、编码、测试、运行)才能得到一份软件的最初版本。如果用户对这个软件提出比较大的修改意见,那么整个软件项目将会蒙受巨大的人力、财力、时间方面的损失。渐进模型\螺旋模型渐进模型(演化模型、原型模型)原型模型在克服瀑布模型缺点、减少由于软件需求不明确而给开发工作带来风险方面,确实有着显著的效果原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于需求不确定性高的系统螺旋模型它是生命周期模型与原型模型的结合,不仅体现了两个模型的优点,还增加了新的成分——风险分析螺旋模型是支持大型软件开发并具有广泛应用前景的模型渐进模型\螺旋模型图1:渐进模型图2:螺旋模型◎V模型◎W模型◎H模型◎X模型◎前置测试模型测试模型V模型需求分析概要设计详细设计编码单元测试验收测试系统测试集成测试V模型的一端放置了开发阶段,例如需求、分析、设计以及编码。V的另一端放置了各种类型的测试,例如单元测试、集成测试、系统测试和验收测试。W模型需求分析概要设计详细设计编码软件实施系统集成模块集成测试需求测试概要设计测试详细设计单元测试验收测试系统测试集成测试W模型是V模型的扩展,并且它解决V模型的限制。它注重于测试方法学,该方法学将在开发的各个阶段应用静态测试技术。这导致在执行开发过程的同时并行执行测试。W模型将测试流程放在与开发过程相同重要的位置。W模型和V模型都把软件的开发视为需求,设计,编码等一系列串行的活动。同样的,软件开发和测试保持一种线性的前后关系,需要有严格的指令表示上一阶段完全结束,才可以正式开始下一阶段。这样就无法支持迭代、自发性以及变更的调整。H模型测试准备测试就绪点测试执行测试流程其它流程(如设计流程)测试准备活动:测试计划、测试设计、测试开发测试执行活动:测试运行、测试评估H模型的特点:◎软件测试不仅仅指测试的执行,还包括很多活动◎软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行◎软件测试要尽早准备,尽早执行◎软件测试是根据被测物的不同分层次进行的,不同层次的测试活动可以使按照某个次序先后进行的,但也可能是反复的。X模型X模型特点X模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终合成为可执行的程序。(右上半部分),这些可执行程序还需要进行测试。已通过集成测试的成品可以进行封版并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。由图中可见,X模型还定位了探索性测试(右下方)。这是不进行事先计划的特殊类型的测试,诸如“我这么测一下结果会怎么样?”,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。前置测试模型测试前置模型特点1、开发和测试相结合2、对每一个交付内容进行测试3、在设计阶段进行测试计划和测试设计4、验收测试和技术测试相互独立1.5测试驱动开发的思想TDD的实践需求阶段测试计划阶段测试设计阶段测试执行阶段总结评估阶段补充:测试项目周期(1)需求阶段培训开发团队和客户,加强开发团队和客户对测试过程和测试标准的了解,影响其对测试的观点和态度。确定测试项目的高阶范围确定测试项目的大致计划和安排

(2)测试计划阶段制定测试标准制定测试需求制定测试计划系统培训(3)测试设计阶段根据制定的测试需求、相关文档以及被测系统等设计测试用例开发测试脚本/测试程序设计测试数据(4)测试执行阶段按执行计划执行测试用例记录测试过程缺陷跟踪

(5)总结评估阶段总结和评估测试过程、测试结果编写测试总结分析报告补充:测试职位与测试项目角色职位测试经理高级测试工程师测试开发工程师测试工程师测试员项目角色项目负责人测试分析人员测试设计人员测试开发人员测试执行人员角色与职责-计划阶段1角色职责项目负责人作为双方沟通的桥梁与客户方项目负责人进行沟通参加并组织测试分析人员、测试设计人员参加测试项目的系统和业务培训组织测试分析人员制定测试需求编制测试计划组织测试分析人员参与阶段评审跟踪和汇报项目进展编写阶段总结报告角色与职责-计划阶段2角色职责测试分析人员参与测试项目的系统和业务培训,以了解和掌握系统只是和业务知识根据测试计划和客户提供的资料分析并制定测试需求向客户方需求人员了解所需内容以制定和完善测试需求参与阶段评审汇报工作进展测试设计人员参与测试项目的系统和业务培训,以了解和掌握系统只是和业务知识角色与职责-设计阶段1角色职责项目负责人作为双方沟通的桥梁与客户方项目负责人进行沟通组织测试设计人员设计测试用例合理分配工作任务,控制设计进度定期组织测试设计讨论和小结跟踪和分析测试设计进展,汇报给相应人员定期编写测试报告编写阶段总结报告角色与职责-设计阶段2角色职责测试分析人员根据系统的需求和设计更改变更测试需求为测试设计人员提供支持测试设计人员根据项目负责人的分配进行测试用例设计工作根据测试需求,配合得到的文档和系统(原型)设计测试用例测试开发人员根据项目负责人的分配进行测试脚本和模块的开发工作角色与职责-执行阶段1角色职责项目负责人作为双方沟通的桥梁与客户方项目负责人进行沟

温馨提示

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

评论

0/150

提交评论