第5章软件测试

《第5章软件测试》由会员分享,可在线阅读,更多相关《第5章软件测试(212页珍藏版)》请在文档大全上搜索。
1、第5章 软件测试5.1 软件测试概述 虽然在软件开发过程中,我们采用了各种的手段来避免发生错误,但是错误是无法避免的,因此软件测试是不可缺少的 软件测试横跨软件生命周期的两个阶段 在编写出每一个模块后,就要对模块进行测试(单元测试) 结束编码后,要对软件系统进行各种综合测试 现在,软件开发机构将研制力量的40%以上投入到软件测试中的事例越来越多 一些性命攸关的软件,如飞行控制,核反应堆监控软件,其测试费用高达其他软件工厂阶段费用总合的3-5倍5.1.2 软件测试的原则 用户的角度:希望通过测试发现越多的问题和缺陷越好 开发者的角度:希望测试能表明软件产品不存在错误,已经正确实现用户的需求,确立
2、人们对软件质量的信心注意点 应当把“尽早和不断的测试”作为开发者的座右铭 程序员避免检查自己的程序,测试工作应该由很专业的软件测试机构完成 测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成 设计测试用例时应该考虑到合法的输入和不合法的输入及各种边界条件 对测试错误结果又一个确认的过程,一般由A测出的错误,要由B来确认,严重的错误要开会讨论分析 充分注意测试中的集群现象,已发现很多错误不代表不存在其他错误,经验表明,测试后程序残存的错误数目与已发现的错误数目成正比 制定严格的测试计划,排除测试的随意性,并把测试时间尽可能的宽松 应当对每一个测试结果做全面检查 回归测试的关联性一定要引
3、起充分的注意 妥善保存一切测试过程文档,5.1.3 软件测试的对象 软件测试不等于程序测试 软件测试应该贯穿整个软件定义与开发期间 需求分析,概要设计,详细设计,程序编码等各阶段得到的文档,都是软件测试的对象确认 是一系列的活动和过程,目的是证实在一个给定的外部环境中软件的逻辑正确性 静态确认:通过人工分析或程序正确性来确认程序的正确性 动态确认:通过动态分析和程序测试来检查程序的执行状态验证 证明在软件生命周期各个阶段,以及阶段间的逻辑协调性、完备性、正确性用户要求:用户我要什么运行结果:计算机程序运行得到的结果需求说明书分析员:可以提供什么源程序:程序员让计算机怎么做设计说明书设计员让软件
4、做什么相符吗?5理解正确性表达正确性1理解正确性设计正确性表达正确性2理解正确性编码正确性运行正确性输入正确性345.1.4 软件测试过程模型 由于测试与开发的结合非常紧密,测试模型和开发进行融合V模型 在瀑布模型阶段,很多人认为测试只是一个收尾工作,而不是主要工作 V模型的推出就是对此种认识的改进,反映了测试活动与分析和设计的关系用户需求需求分析与系统设计概要设计详细设计编码单元测试集成测试确认测试与系统测试验收测试V模型的缺陷 仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段 忽视了测试对需求分析,系统设计的验证,一直到后期的验收测试才被发现。 W模型 V模型不能体现“尽早和不断
5、的进行测试”的原则,所以,在V模型中增加软件各开发阶段同步进行的测试,就演化为“W模型” W模型强调测试伴随整个软件开发周期,而且不能是程序需要测试,需求、功能和设计同样要测试用户需求需求分析与系统设计概要设计详细设计编码单元测试集成测试确认测试与系统测试验收测试用户需求&验收测试设计需求分析和系统设计&确认与系统测试设计概要设计&集成测试设计详细设计&单元测试设计集成实施交付W模型的局限性 W模型和V模型都是把软件的开发视为需求、设计、编码等一系列串行的活动,软件开发和测试保持一种线性的前后关系,需要有严格的指令表示上一阶段完全结束,才可以正式开始下一个阶段前
6、置测试模型 前置测试模型前置测试模型是由Robin FGoldsmith等人提出的,是一个将测试和开发开发紧密结合的模型,该模型提供了轻松的方式,可以使你的项目加快速度 特点(一)开发和测试相结合 前置测试模型前置测试模型将开发和测试的生命周期整合在一起,标识了项目生命周期从开始到结束之间的关键行为。并且表示了这些行为在项目周期中的价值所在。如果其中有些行为没有得到很好的执行,那么项目成功的可能性就会因此而有所降低。如果有业务需求需求,则系统开发过程将更有效率。在没有业务需求的情况下进行开发和测试是不可能的。而且,业务需求最好在设计和开发之前就被正确定义。 特点(二)对每一个交付内容进行测试
7、每一个交付的开发结果都必须通过一定的方式进行测试。源程序代码并不是唯一需要测试的内容。在图中的绿色框表示了其它一些要测试的对象,包括可行性报告、业务需求说明,以及系统设计文档等。这同V模型中开发和测试的对应关系是相一致的,并且在其基础上有所扩展,变得更为明确。 特点(三)在设计阶段进行计划和测试设计 设计阶段是做测试计划和测试设计的最好时机。很多组织要么根本不做测试计划和测试设计,要么在即将开始执行测试之间才飞快地完成测试计划和设计。在这种情况下,测试只是验证了程序的正确性,而不是验证整个系统本该实现的东西。 特点(四)测试和开发结合在一起 前置测试将测试执行和开发结合在一起,并在开发阶段以编
8、码-测试-编码-测试的方式来体现。也就是说,程序片段一旦编写完成,就会立即进行测试。普通情况下,先进行的测试是单元测试,因为开发人员认为通过测试来发现错误是最经济的方式。但也可参考X模型,即一个程序片段也需要相关的集成测试,甚至有时还需要一些特殊测试。对于一个特定的程序片段,其测试的顺序可以按照V模型的规定,但其中还会交织一些程序片段的开发,而不是按阶段完全地隔离。 特点(五)让验收测试和技术测试保持相互独立 验收测试应该独立于技术测试,这样可以提供双重的保险,以保证设计及程序编码能够符合最终用户的需求。验收测试既可以在实施阶段的第一步来执行,也可以在开发阶段的最后一步执行。 特点(六)反复交
9、替的开发和测试 在项目中从很多方面可以看到变更的发生,例如需要重新访问前一阶段的内容,或者地跟踪并纠正以前提交的内容,修复错误,排除多余的成分,以及增加新发现的功能,等等。开发和测试需要一起反复交替地执行。模型并没有明确指出参与的系统部分的大小。这一点和V模型中所提供的内容相似。不同的是,前置测试模型前置测试模型对反复和交替进行了非常明确的描述。 特点 (七)发现内在的价值 前置测试能给需要使用测试技术的开发人员、测试人员测试人员、项目经理和用户等带来很多不同于传统方法的内在的价值。与以前的方法中很少划分优先级所不同的是,前置测试用较低的成本来及早发现错误,并且充分强调了测试对确保系统的高质量
10、质量的重要意义。前置测试代表了整个对测试的新的不同的观念。在整个开发过程中,反复使用了各种测试技术以使开发人员、经理和用户节省其时间,简化其工作。 5.2 软件测试的作用 软件测试是软件开发过程中的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求 软件测试是软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤目的 确认软件的指令,一方面确认软件做了你所期望的事情(Do the right thing),另一方面,确认是以正确的方式来做了这个事情(Do it right) 提供信息 不能测试软件产品本身,还包括软件开发的过程质量衡量标
11、准 正确的时间用正确的方法把一个工作做正确 符合一些应用标准的要求 质量本身就是软件达到了最开始所设定的要求,而代码的优美和精巧不代表软件的高质量 质量也代表着它符合客户的需要(Quality also means “meet customers needs”)测试人员的任务 寻找bug 避免软件开发过程中的缺陷 衡量软件的品质 关注用户的需求软件测试与质量保证的关系 软件测试和SQA是两个不同层面上的工作 误区一:质量保证人员对软件产品质量负责 误区二:软件质量保证人员对软件工作的审计包括发现其中的技术问题 误区三:质量保证人员要负责解决所发现的质量问题 误区四:软件质量保证人员是专门监督项