软件测试.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《软件测试.ppt》由会员分享,可在线阅读,更多相关《软件测试.ppt(88页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、软件测试北京中科江南软件有限公司目录CH1概述CH2软件测试基础CH3软件测试技术CH4软件测试工具CH1概述信息技术的飞速发展,使软件产品应用到社会的各个领域,软件产品的质量自然成为人们共同关注的焦点。不论软件的生产者还是软件的使用者,均生存在竞争的环境中,软件开发商为了占有市场,必须把产品质量作为企业的重要目标之一,以免在激烈的竞争中被淘汰出局。用户为了保证自己业务的顺利完成,当然希望选用优质的软件。质量不佳的软件产品不仅会使开发商的维护费用和用户的使用成本大幅增加,还可能产生其他的责任风险,造成公司信誉下降,继而冲击股票市场。在一些关键应用(如民航订票系统、银行结算系统、证券交易系统、自
2、动飞行控制软件、军事防御和核电站安全控制系统等)中使用质量有问题的软件,还可能造成灾难性的后果。CH1概述软件危机曾经是软件界甚至整个计算机界最热门的话题。为了解决这场危机,软件从业人员、专家和学者做出了大量的努力。现在人们已经逐步认识到所谓的软件危机实际上仅是一种状况,那就是软件中有错误,正是这些错误导致了软件开发在成本、进度和质量上的失控。有错是软件的属性,而且是无法改变的,因为软件是由人来完成的,所有由人做的工作都不会是完美无缺的。问题在于我们如何去避免错误的产生和消除已经产生的错误,使程序中的错误密度达到尽可能低的程度。给软件带来错误的原因很多,具体地说,主要有如下几点:、交流不够、交
3、流上有误解或者根本不进行交流在应用应该做什么或不应该做什么的细节(应用的需求)不清晰的情况下进行开发。、软件复杂性图形用户界面(GUI),客户/服务器结构,分布式应用,数据通信,超大型关系型数据库以及庞大的系统规模,使得软件及系统的复杂性呈指数增长,没有现代软件开发经验的人很难理解它。、程序设计错误象所有的人一样,程序员也会出错。、需求变化需求变化的影响是多方面的,客户可能不了解需求变化带来的影响,也可能知道但又不得不那么做。需求变化的后果可能是造成系统的重新设计,设计人员的日程的重新安排,已经完成的工作可能要重做或者完全抛弃,对其他项目产生影响,硬件需求可能要因此改变,等等。如果有许多小的改
4、变或者一次大的变化,项目各部分之间已知或未知的依赖性可能会相互影响而导致更多问题的出现,需求改变带来的复杂性可能导致错误,还可能影响工程参与者的积极性。、时间压力软件项目的日程表很难做到准确,很多时候需要预计和猜测。当最终期限迫近和关键时刻到来之际,错误也就跟着来了。、自负大意的态度:没问题这事情很容易几个小时我就能拿出来太多不切实际的没问题,结果只能是引入错误。、代码文档贫乏贫乏或者差劲的文档使得代码维护和修改变的异常艰辛,其结果是带来许多错误。事实上,在许多机构并不鼓励其程序员为代码编写文档,也不鼓励程序员将代码写得清晰和容易理解,相反他们认为少写文档可以更快的进行编码,无法理解的代码更易
5、于工作的保密(“写得艰难必定读的痛苦”)。、软件开发工具可视化工具,类库,编译器,脚本工具,等等,它们常常会将自身的错误带到应用软件中。就象我们所知道的,没有良好的工程化作为基础,使用面向对象的技术只会使项目变得更复杂。为了更好地解决这些问题,软件界做出了各种各样的努力。人们曾经认为更好的程序语言可以使我们摆脱这些困扰,这推动了程序设计语言的发展,更多的语言开始流行,为了使程序更易于理解开发了结构化程序设计语言,如PL/1,PASCAL等;为了解决实时多任务需求开发了结构化多任务程序设计语言,如Modula,Ada等;为了提高重用性开发了面向对象的程序设计语言,如Simlasa等;为了避免产生
6、不正确的需求理解,开发形式化描述语言,如HAL/S等,这使得建立基于自然语言的描述成为可能,人们以形式化语言来描述需求;为了支持大型数据库应用,开发了可视化工具,如VisualStudio、PowerBuilder等。程序语言对提高软件生产效率起到了一定的积极作用,但它对整个软件质量尤其是可靠性的影响,与其他因素相比作用较小。事实上,对于软件来讲,还没有象银弹那样的东西。不论采用什么技术和什么方法,软件中仍然会有错。采用新的语言、先进的开发方式、完善的开发过程,可以减少错误的引入,但是不可能完全杜绝软件中的错误,这些引入的错误需要测试来找出,软件中的错误密度也需要测试来进行估计。测试是所有工程
7、学科的基本组成单元,是软件开发的重要部分。自有程序设计的那天起测试就一直伴随着。统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40以上。而在软件开发的总成本中,用在测试上的开销要占30到50。如果把维护阶段也考虑在内,讨论整个软件生存期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含有许多测试工作。因此,测试对于软件生产来说是必需的,问题是我们应该思考“采用什么方法、如何安排测试?”返回主目录CH2软件测试基础软件测试与软件质量软件测试目的软件测试原则软件测试分类软件测试方法软件测试模型软件测试生命周期测试策略软件失效分类
8、与管理2.1软件测试与软件质量软件测试的经典定义是:在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估的过程。软件测试对象:软件是由文档、数据以及程序组成的,那么软件测试应该是对软件形成过程中的文档、数据以及程序进行的测试,而不仅仅是对程序进行的测试2.1软件测试与软件质量1991年软件产品质量评价国际标准ISO9126中定义软件质量如下:软件满足规定或潜在用户需求特性的总和1999年软件产品评价国际标准ISO14598中软件质量定义为:软件特性的总和、软件满足规定或潜在用户需求特性的能力2001年软件产品质量国际标准ISO9126定义的软件质量包括“内部质量”、“外部质量”和“使用
9、质量”三部分。即:软件满足规定或潜在用户的能力要从软件在内部、外部和使用中的表现来衡量2.1软件测试与软件质量质量保证(QA):质量保证的主要工作是采用“全面质量管理”和“过程改进”的原理开展工作,进行软件周期管理以及验证软件是否满足规定的质量和用户的需求;所关注的是软件质量的检查和测量。主要着眼于开发活动中的过程、步骤和产物。软件测试:主要工作是执行软件,对过程中的产物-文档和源代码进行走查,运行软件,找出问题,报告质量。关心的不是过程的活动,而是对过程中的产物及开发出的软件进行剖析,找出问题并进行评估。软件测试人员的一项重要任务是提高软件质量,但不等于说软件测试人员就是软件质量保证人员,软
10、件质量保证和软件测试是软件质量工程的两个不同层面的工作,测试是质量保证中的一个重要环节2.2软件测试目的早期定义:软件测试的目的就是为了寻找错误。以最少的人力、物力和时间,找出软件中潜在的各种错误和缺陷,通过修正错误和缺陷来提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险软件测试是以评价一个程序或系统属性为目标的活动,测试是对软件质量的度量与评估,以验证软件的质量满足用户的需求的程度为用户选择与接受软件提供有力的证据通过分析错误产生的原因可以帮助发现当前开发工作所采用的软件国产的缺陷,帮助进行软件过程改进;通过对测试结果的分析整理,可以修正软件开发规则,为软件可靠
11、性分析提供依据通过最终的验收测试,可以证明软件满足了用户的需求,树立人们使用软件的信心2.3软件测试原则所有的软件测试都应追溯到用户需求应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭完全测试是不可能的,测试需要终止测试无法显示软件潜在的缺陷充分注意测试中的群集现象程序员应避免检查自己的程序尽量避免测试的随意性2.4软件测试分类按开发阶段划分:单元测试、集成测试、系统测试、确认测试和验收测试单元测试:又称模块测试,是针对软件设计的最小单位程序模块进行正确性检验的测试工作。其目的在于检查每个程序单元能否正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现各模块内部可能存在
12、的各种错误。集成测试:又叫组装测试。通常在单元测试的基础上,将所有的程序模块进行有序的、递增的测试。集成测试是检验程序单元或部件的接口关系,逐步集成为符合概要设计要求的程序部件或整个系统确认测试:是通过检验和提供客观证据,证实软件是否满足特定预期用途的需求。确认测试是检测与证实软件是否满足软件需求规格说明书中规定的要求。系统测试:是为验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试。系统测试是在真实或模拟系统运行的环境下,检查完整的程序系统能否和系统正确配置、连接,并满足用户需求。验收测试:按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是
13、否接收或拒收系统。2.4软件测试分类按照测试实施组织划分:可分为开发方测试、用户测试、第三方测试。开发方测试:通常也叫验证测试或测试。开发方在软件开发完成以后,通过自我检测和验证来提供客观证据,证实软件的实现是否满足规定的需求。用户测试(测试):在用户的应用环境下,用户通过运行和使用软件,检测与核实软件实现是否符合自己预期的要求。通常情况用户测试不是指用户的验收测试,而是指用户的使用性测试,由用户找出软件的应用过程中发现的软件的缺陷与问题,并对使用质量进行评价第三方测试:介于软件开发方和用户方之间的测试组织的测试。第三方测试也称独立测试。软件质量工程强调开展独立验证和确认(IV&V)活动。IV
14、&V是由在技术、管理和财务上与开发组织具有规定程度独立的组织执行验证和确认过程。故第三方测试是由在技术、管理和财务上与开发方和用户方相对独立的组织进行的软件测试。一般情况下是在模拟用户真实应用环境下,进行软件确认测试。2.4软件测试分类按照测试技术划分:白盒测试、黑盒测试、灰盒测试。白盒测试:也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试,检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按照预定要求正确工作。黑盒测试:也称功能测试,它是通过测试来检测每个功能是否都能正常使用。黑盒测试不考虑程序内部结构与内部特性,着眼于外部结构,针对软件界面和软件功能进
15、行测试,考察程序是否能适当地接收输入数据而产生正确的输出信息,确认程序功能满足需求。灰盒测试:介于白盒和黑盒之间的测试,结合了白盒测试和黑盒测试的要素,灰盒测试关注输出对于输入的正确性;同时也关注内部表现,但不会像白盒测试这样详细和完整,只是通过一些表征性的现象、事件和标志来判断内部的运行状态。灰盒测试考虑了用户端、特定的系统知识和操作环境。在系统组件的协同性环境中评价应用软件的设计。2.5软件测试方法静态测试:是指不运行程序,通过人工对程序和文档进行分析和检查;包括:代码走查、符号执行、需求确认等。动态测试:是指通过人工或使用工具运行程序进行检查、分析程序的执行状态和程序的外部表现。2.6软
16、件测试过程模型V模型W模型H模型X模型前置模型测试模型的使用用户需求需求分析与系统设计详细设计验收测试概要设计编码确认测试与系统测试集成测试单元测试软件测试V模型V模型是最广为人知的模型,尽管很多富有实际经验的测试人员还是不太熟悉V模型,或者其它其它的模型。V模型已存在了很长时间,和瀑布开发模型有着一些共同的特性,由此也和瀑布模型一样地受到了批评和质疑。V模型中的过程从左到右,描述了基本的开发 过程和测试行为。V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。局限性:把测试作为编码之后的最后一个活动,需求分析等前期产生的错误
17、直到后期的验收测试才能发现.V模型的局限性在于没有明确地说明早期的测试,无法体现“尽早地和不断地进行软件测试”的原则。在V模型中增加软件各开发阶段应同步进行的测试,演化为W 模型(如下图)。在模型中不难看出,开发是“V”,测试是与此并行的“V”。基于“尽早地和不断地进行软件测试”的原则,在软件的需求和设计阶段的测试活 动应遵循IEEE1012-1998软件验证与确认(V&V)的原则。W模型由Evolutif公司提出,相对于V模型,W模型更科学。W模型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早
18、地发现问题。W模型也有局限性。W模型和V模型都把软件的开发视为需求、设计、编码等一系列串行的活动,无法支持迭代、自发性以及变更调整。程序片段1测试设计工具配置执行测试编码完成执行测试执行测试执行测试工具配置测试设计程序片段n测试设计工具配置集成1n探索性测试封版软件测试X模型X模型也是对V模型的改进,X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行的程序。X模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终成为可执行的程序,然后再对这些可执 行程序进行测试。己通过集成测试的成品可以进行封装并提交给
19、用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。由图中可见,X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。但 这样可能对测试造成人力、物力和财力的浪费,对测试员的熟练程度要求比较高。测试准备测试执行测试就绪点测试流程其他流程(如设计流程)软件测试H模型H模型中,软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段。软件测试可以尽早的进行,并且可以根据被测物的不同而分层次进行。这个示意图演示了在整
20、个生产周期中某个层次上的一次测试“微循环”。图中标注的其它流程可以是任意的开发流程,例如设计流程或者编码流程。也就是说,只要测试条件成熟了,测试准备活动完成了,测试执行活动就可以进行了。H模型揭示了一个原理:软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。H模型指出软件测试要尽早准备,尽早执行。不同的测试活动可以是按照某个次序先后进行的,但也可能是反复的,只要某个测试达到准备就绪点,测试执行活动就可以开展可行性分析可行性报告业务需求说明系统分析基于测试的需求验收标准验收测试计划执行验收测试运行与维护系统设计设计文档技术测试计划正式走查黑/白盒单元测试集成测试系统测试专项测
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内