




已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
完美测试之软件测试概论分析,第2章软件工程基础,缺陷,指导,软件,测试,阶段,管理,思想,质量,用例,方法,目标,源泉,确定,寻求,设计,发现,实施,清除,内容进度,2.1软件工程2.1.1软件工程的目标2.2软件开发生命周期模型2.2.1大爆炸模型2.2.2边写边改模型2.2.3瀑布模型2.2.4螺旋模型2.2.5敏捷软件开发2.3软件测试过程模型,4/51,4/63,2.1软件工程,编程大师的话编程大师说:“任何一个程序,无论它多么小,总存在着错误。”初学者不相信大师的话,他问:“如果一个程序小得只执行一个简单的功能,那会怎样?”“这样的一个程序没有意义,”大师说,“但如果这样的程序存在的话,操作系统最后将失效,产生一个错误。”但初学者不满足,他问:“如果操作系统不失效,那么会怎样?”“没有不失效的操作系统,”大师说,“但如果这样的操作系统存在的话,硬件最后将失效,产生一个错误。”初学者仍不满足,再问:“如果硬件不失效,那么会怎样?”大师长叹一声道:“没有不失效的硬件。但如果这样的硬件存在的话,用户就会想让那个程序做一件不同的事,这件事也是一个错误。”,5/63,2.1软件工程,本章重点讨论内容:软件工程的定义软件工程的目标常见的软件开发生命周期模型常见软件测试过程模型,6/63,软件工程软件工程(SoftwareEngineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的科学。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。,2.1软件工程,2.1软件工程,1983年IEEE给出的定义是:软件工程是开发、运行、维护和修复软件的系统方法。软件工程具有如下的性质:软件工程是一门综合性的交叉学科,它涉及计算机科学、工程科学、管理科学、数学等领域。计算机科学中的研究成果均可用于软件工程,但计算机科学着重于原理和理论,而软件工程着重于如何建立建造一个软件系统。软件工程要用工程科学中的观点来进行费用估算、制定进度、制定计划和方案。软件工程要用管理科学中的方法和原理进行软件生产的管理。软件工程要用数学的方法建立软件开发中的各种模型和各种算法,如可靠性模型、说明用户需求的形式化模型等。,软件工程的主要环节有:人员管理、项目管理、可行性与需求分析、系统设计、程序设计、测试、维护等。,2.1软件工程,9/63,软件工程的主要内容,2.1软件工程,10/63,软件工程的目标是提高软件的质量与生产率,最终实现软件的工业化生产。,2.1软件工程,11/63,(1)可修改性(modifiability)容许对系统进行修改而不增加原系统的复杂性。(2)有效性(efficiency)软件系统能最有效地利用计算机的时间资源和空间资源。(3)可靠性(reliability)能防止因概念、设计和结构等方面的不完善造成的软件系统失效,具有挽回因操作不当造成软件系统失效的能力。对于实时嵌入式计算机系统,可靠性是一个非常重要的目标。,2.1软件工程,12/63,(4)可理解性(understandability)系统具有清晰的结构,能直接反映问题的需求。(5)可维护性(maintainability)软件产品交付用户使用后,能够对它进行修改,以便改正潜伏的错误,改进性能和其他属性,使软件产品适应环境的变化等等。(6)可重用性(reusebility)概念或功能相对独立的一个或一组相关模块定义为一个软部件。软部件可以在多种场合应用的程度称为部件的可重用性。,2.1软件工程,13/63,(7)可适应性(adaptability)软件在不同的系统约束条件下,使用户需求得到满足的难易程度。(8)可移植性(portability)软件从一个计算机系统或环境搬到另一个计算机系统或环境的难易程度。(9)可追踪性(traceability)根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力。(10)可互操作性(interoperability)多个软件元素相互通信并协同完成任务的能力。,2.1软件工程,14/63,内容进度,2.1软件工程2.1.1软件工程的目标2.2软件开发生命周期模型2.2.1大爆炸模型2.2.2边写边改模型2.2.3瀑布模型2.2.4螺旋模型2.2.5敏捷软件开发2.3软件测试过程模型,15/51,15/63,基本概念软件开发全部过程、活动和任务的结构框架。它能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务。,瀑布模型,原型模型,螺旋模型,敏捷开发模型,2.2软件开发生命周期模型,16/63,内容进度,2.1软件工程2.1.1软件工程的目标2.2软件开发生命周期模型2.2.1大爆炸模型2.2.2边写边改模型2.2.3瀑布模型2.2.4螺旋模型2.2.5敏捷软件开发2.3软件测试过程模型,17/51,17/63,2.2.1直接冲过河去的大爆炸模型简单,大爆炸模式是最简单的软件开发模式,2.2软件开发生命周期模型,内容进度,2.1软件工程2.1.1软件工程的目标2.2软件开发生命周期模型2.2.1大爆炸模型2.2.2边写边改模型2.2.3瀑布模型2.2.4螺旋模型2.2.5敏捷软件开发2.3软件测试过程模型,19/51,19/63,2.2.2摸着石头过河的边写边改模型项目小组在未刻意采用其他开发模式时默认的开发模式。这是在大爆炸模式基础上更进了一步,至少考虑到了产品需求。,2.2软件开发生命周期模型,这是在大爆炸模式基础上更进了一步,至少考虑到了产品需求。由于开头几乎没有计划和文档编制,项目小组得以迅速展现成果。因此边写边改模式极其适合意在快速制作而且用完就扔的小项目,例如原型范例和演示程序。即便如此,许多著名的软件仍然才用了边写边改模式。如果文字处理或者电子表格软件存在大量软件缺陷,或者功能不完备,就可能是在边写边改模式下制造出来的。与大爆炸模式类似,测试在边写边改模式中未特别强调,但是在编写代码和修复缺陷过程中举足轻重。,2.2软件开发生命周期模型,21/63,作为边写边改的项目的软件测试员,需要和程序员一样清醒地认识到自己将陷入无休止地循环往复。几乎每一天都会拿到新的软件版本并着手进行测试。当新版本出来时,旧版本的测试可能尚未完成,而新版本还可能包含新的或者经过修改的功能。最后,终于有机会对几乎所有功能进行测试了,并且发现软件缺陷越来越少,这时某人(或者进度)决定该发布软件了。在进行软件测试工作期间,边写边改模式是最有可能碰到的。这种模式是软件开发的入门,有助于理解更加正规的方法。,2.2软件开发生命周期模型,22/63,内容进度,2.1软件工程2.1.1软件工程的目标2.2软件开发生命周期模型2.2.1大爆炸模型2.2.2边写边改模型2.2.3瀑布模型2.2.4螺旋模型2.2.5敏捷软件开发2.3软件测试过程模型,23/51,23/63,2.2.3制定周密过河计划的瀑布模型三点特别强调内容1、强调产品的定义2、各步骤是分立的、没有交叉3、无法回溯,2.2软件开发生命周期模型,瀑布模式常常是编程学校所教的第一课,现在已经无处不在。它简捷、精致、很有意义,在合适的项目中效果显著。从测试的角度看来,瀑布模式比截至到目前为止的其他模式更有优势。瀑布模式所有一切都有完整细致的说明。当软件提交到测试小组时,所有细节都已确定并有文档记录,而且实现在软件之中。由此,测试小组得以制定精确的计划和进度。测试对象非常明确,在分辨是功能还是缺陷上也没有一点问题。然而,这个优点也带来一个巨大的缺点。因为测试仅在最后进行,所以一些根本性问题可能出现在早期,但是直到准备发布产品时才可能发现。,2.2软件开发生命周期模型,25/63,采用瀑布模式的项目从最初的构思到最终产品要经过一系列步骤。每一个步骤结束时,项目小组组织审查,并决定是否进入下一步。如果项目未准备好进入下一步,就停滞下来直到准备好。关于瀑布模式有三点需要强调:瀑布模式非常强调产品的定义。注意,开发或者代码编制阶段只是其中单独的一块。瀑布模式各步骤是分立的、没有交叉。瀑布模式无法回溯。一旦进入某一步骤,就要完成该步骤的任务,然后才能向下继续无法回溯。,2.2软件开发生命周期模型,26/63,内容进度,2.1软件工程2.1.1软件工程的目标2.2软件开发生命周期模型2.2.1大爆炸模型2.2.2边写边改模型2.2.3瀑布模型2.2.4螺旋模型2.2.5敏捷软件开发2.3软件测试过程模型,27/51,27/63,2.2.4计划赶得上变化的螺旋模型开始不必详细定义所有细节6个步骤:确定目标/方案和限制条件;明确并化解风险;评估可选方案;当前阶段开发和测试;计划下一阶段;确定进入下一阶段的方法。,2.2软件开发生命周期模型,螺旋模式的总体思想是一开始不必详细定义多有细节。从小开始,定义重要功能,努力实现这些功能,接受客户反馈,然后进入下一阶段。重复上述过程,直至得到最终产品。螺旋模式中包含了一点瀑布模式(分析、设计、开发和测试的步骤)、一点边写边改模式(螺旋模式的每一次)和一点大爆炸模式(从外界观察)。加上该模式发现问题早、成本低的特点,可以算做相当好的开发模式。软件测试员喜欢该模式。因为通过参与最初设计的设计阶段,可以尽早地影响到产品,可以把产品的来龙去脉弄得很清楚;并且在项目末期,不至于最后一分钟还在匆匆忙忙地进行全面测试。软件测试员地测试一直都在进行,所以最后一步只是一个验证表面所有部分都没有问题。,2.2软件开发生命周期模型,29/63,软件开发流程的优缺点,2.2软件开发生命周期模型,30/63,内容进度,2.1软件工程2.1.1软件工程的目标2.2软件开发生命周期模型2.2.1大爆炸模型2.2.2边写边改模型2.2.3瀑布模型2.2.4螺旋模型2.2.5敏捷软件开发2.3软件测试过程模型,31/51,31/63,2.2.5敏捷软件开发有一种开发过程,受到许多软件公司的喜爱,叫做敏捷软件开发(AgileSoftwareDevelopment)。我们也许听说过它的另外一些名称,如快速原型、极限编程或进化开发等。2001年初,在犹他州的Snowbird,由于看到很多软件开发团队陷入了不断增长的过程的泥潭,一批业界专家聚集在一起概括出了一些可以让软件开发团队具有快速工作、响应变化能力的价值观和原则,他们称自己为“敏捷联盟”敏捷联盟是一个非盈利组织,其宗旨是推广敏捷方法的促进这方面的讨论。在随后几个月,他们创建了一份价值观声明,也就是敏捷联盟宣言。,2.2软件开发生命周期模型,32/63,33,敏捷开发的核心思想是:以人为本,适应变化。,2.2软件开发生命周期模型,敏捷宣言:,33/63,敏捷软件开发的目的是:通过过程和工具理解个人和交流的作用人是获得成功的最为重要的因素一个优秀的团队成员未必就是一流的程序员优秀团队的成员可能是平均水平的程序员,但他(她)们能很好的和别人合作、沟通。合适的开发工具(如IDE、Complier、版本控制系统)对于成功很重要,但工具的作用不宜被过分夸大。,2.2软件开发生命周期模型,34/63,敏捷软件开发的目的是:通过全面的文档理解运行的软件没有文档的软件是一种灾难;然而,过多的文档比过少的文档更糟糕编制文档需要花费时间,使文档和代码同步,需要花费更多时间。对于团队,维护一份系统原理和结构方面的文档是一个好主意该文档应该是短小并且主题突出的,应该仅描述系统的高层结构和概要设计原理。为了培训新成员,应该通过团队交互和代码代码和团队是最好的两份文档。,2.2软件开发生命周期模型,35/63,敏捷软件开发的目的是:通过合同和谈判得到客户的协作不能向订购日用品一样来订购软件如果客户仅仅写下一份他需要的软件的描述,然后就让人在固定的时间内以固定的价格去开发它,用这种方式来对待软件项目的尝试都是以失败而告终的。成功的项目需要有序、频繁的客户反馈。不是依赖于合同或者关于工作的陈述,而是让软件的客户和开发团队密切地在一起工作,并尽量地提供反馈。,2.2软件开发生命周期模型,36/63,敏捷软件开发的目的是:在计划的执行中做出对变更的响应响应变化的能力常常决定着一个项目的成败当构建计划时,应该确保计划是灵活的、并且易于适应商务和技术方面的变化计划不能考虑的过远计划没有变化快!较好的作计划的策略是:为下两周做详细计划;为下三个月做粗略计划;再以后就做极为粗糙的计划。这种逐渐降低的细致度,意味着仅仅对迫切的任务才进行详细计划,计划的其余部分仍然保持着灵活性。,2.2软件开发生命周期模型,37/63,在任何生命周期模型中,一个好的测试都应该具有下面几个特点:每个开发活动都有相对应的测试活动;每个测试级别都有其特有的测试目标;对于每个测试级别,需要在相应的开发活动过程中进行相应的测试分析和设计;在开发生命周期中,测试员在文档初稿阶段就应该参与文档的评审。,2.2软件开发生命周期模型,38/63,2.2软件开发生命周期模型,39/63,内容进度,2.1软件工程2.1.1软件工程的目标2.2软件开发生命周期模型2.3软件测试过程模型2.3.1V模型2.3.2W模型2.3.3H模型2.3.4其他模型2.3.5测试模型的使用,40/51,40/63,2.3.1V模型“V”的左端表示传统的瀑布开发模型,而“V”的右端表明相应的测试阶段。V模型是最具有代表意义的测试模型。,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求。,2.3软件测试过程模型,测试是开发之后的一个阶段。测试的对象就是程序本身。实际应用中容易导致需求阶段的错误一直到最后系统测试阶段才被发现。整个软件产品的过程质量保证完全依赖于开发人员的能力和对工作的责任心,而且上一步的结果必须是充分和正确的,如果任何一个环节出了问题,则必将严重的影响整个工程的质量和预期进度,2.3软件测试过程模型,42/63,存在局限性,仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,只针对程序进行的寻找错误的活动,忽视了测试活动对需求分析,系统设计等活动的验证和确认的功能,直到后期的验收测试才被发现。,2.3软件测试过程模型,43/63,内容进度,2.1软件工程2.1.1软件工程的目标2.2软件开发生命周期模型2.3软件测试过程模型2.3.1V模型2.3.2W模型2.3.3H模型2.3.4其他模型2.3.5测试模型的使用,44/51,44/63,2.3.2W模型在W模型中,既强调了测试方案设计,也强调了测试执行。,2.3软件测试过程模型,测试伴随整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。,W模型由Evolutif公司提出。W模型从V模型演化过来,实际上开发是V,测试也是与此并行的V。相对于V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动。,2.3软件测试过程模型,46/63,相对于V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。W模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。但W模型也存在局限性。在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。,2.3软件测试过程模型,47/63,W模型也存在局限性。在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。,2.3软件测试过程模型,48/63,内容进度,2.1软件工程2.1.1软件工程的目标2.2软件开发生命周期模型2.3软件测试过程模型2.3.1V模型2.3.2W模型2.3.3H模型2.3.4其他模型2.3.5测试模型的使用,49/51,49/63,2.3.3H模型H模型建立为了解决V模型和W模型存在的问题,有专家提出了H模型。它将测试活动完全独立出来,形成一个完全独立的流程,将测试准备活动和测试执行活动侵袭地体现出来H模型应用,2.3软件测试过程模型,H模型揭示了一个原理:软件测试不仅仅指测试的执行,还包括很多其他的活动。软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。软件测试要尽早准备,尽早执行。软件测试是根据被测物的不同而分层次进行的。不同层次的测试活动可以是按照某个次序先后进行的,但也可能是反复的。,2.3软件测试过程模型,软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。当某个测试时间点就绪时,软件测试即从测试准备阶段进入测试执行阶段。,内容进度,2.1软件工程2.1.1软件工程的目标2.2软件开发生命周期模型2.3软件测试过程模型2.3.1V模型2.3.2W模型2.3.3H模型2.3.4其他模型2.3.5测试模型的使用,52/51,52/63,2.3.4其他模型1.X模型,很好地处理测试与开发的交接过程(交接的过程是一个时间段,而不是一个点)左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终合成为可执行的程序,然后再对这些可执行程序进行测试。己通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,给有经验的测试人员在测试计划之外发现更多的软件缺陷。,2.3软件测试过程模型,2.3软件测试过程模型,54/39,前置测试模型,前置测试模型开发和测试相结合前置测试模型将开发和测试的生命周期整合在一起,标识了项目生命周期从开始到结束之间的关键行为,表示这些行为在项目周期中的价值所在。对每一个交付内容进行测试每一个交付的开发结果都必须通过一定的方式进行测试。源程序代码并不是唯一需要测试的内容。还包括可行性报告、业务需求说明、系统设计文档等。,2.3软件测试过程模型,55/63,在设计阶段进行测试计划和测试设计设计阶段是做测试计划和测试设计的最好时机。很多组织要么根本不作测试计划和测试设计,要么在即将开始执行测试之前才飞快地完成测试计划和测试设计。在这种情况下,测试只是验证了程序的正确性,而不是验证整个系统本该实现的东西。测试和开发结合在一起前置测试将测试执行和开发结合在一起,并在开发阶段以编码-测试-编码-测试的方式来体现。也就是说,程序片段一旦编写完成,就会立即进行测试。一般情况下,先进行的测试是单元测试,因为开发人员认为通过测试来发现错误是最经济的方式。但也可参考X模型,即一个程序片段也需要相关的集成测试,甚至有时还需要一些特殊测试。对于一个特定的程序片段,其测试的顺序可以按照V模型的规定,但其中还会交织一些程序片段的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宿府试题及答案
- 过程体裁教学法对高中生英语写作的影响研究
- 进修学员自我鉴定
- 质量检测工程合同
- 2025跨国采购合同范本
- 语文教学工作计划
- 2025合同范本中外合作公司合同范本
- 2025小升初英语期末考试试卷含答案
- 邮政客服笔试题目及答案
- 2025建筑工程合同订立形式详解
- 语文基础模块上知到课后答案智慧树章节测试答案2025年春长春市城建工程学校
- PP-R给水管施工方案
- 2025年版高等职业教育专科专业教学标准 590302 智慧健康养老服务与管理
- 建筑业资质审查试题
- 2024年统计学考试知识梳理试题及答案
- 教育学学生的权利和义务
- 2025年军队文职人员(新闻类)笔试参考题库(含答案)
- 2025年劳务合同完整模板
- 四通一平施工方案
- 2020年9月国家开放大学汉语言文学本科《中国当代文学专题》期末纸质考试试题及答案
- 2025年天津市专业技术人员公需课答案
评论
0/150
提交评论