您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 第3章软件缺陷与测试定义
2007年8月28日3时37分第1页第3章软件缺陷与测试定义3.1软件测试的背景3.2软件测试的定义3.3软件测试生命周期3.4软件开发与测试模型3.5软件测试的术语和定义由安博测试空间技术中心提供2007年8月28日3时37分第2页3.1软件测试的背景3.1.1软件错误案例研究软件无处不在,软件是人写的,所以不完美,请看下面的例子迪斯尼的狮子王问题,1994-1995迪斯尼公司发布的第一个面向儿童的多媒体光盘游戏--狮子王动画故事,在公众使用的系统中不能运行英特尔奔腾器的除法问题,19941994年12月30日;ThomasR.Nicely博士在他的一个实验中,发现了奔腾CPU的除法问题(4195835∕3145727)×31435727―4195835=?2007年8月28日3时37分第3页英特尔公司为此道歉并花费4亿多美元更换芯片美国航天局火星极地登陆者号探测器问题,19991999年12月3日,美国航天局的火星极地登陆者号探测器试图在火星表面着陆时失踪。爱国者导弹防御系统问题,19911991美国爱国者导弹防御系统首次应用在海湾战争中对抗伊拉克飞毛腿导弹的防御战中,一次在沙特阿拉伯的多哈击毙了28名美国士兵还有:2003年4月,一个软件故障导致美国航空集团公司损失数千美元,因为有些机票的价格被误定为1.86美元2007年8月28日3时37分第4页2003年8月,位于美国俄亥俄州的第一能源(FirstEnergy)公司下属的电力监测与控制管理系统“XA/21”出现软件错误,导致北美东北部大规模停电2005年07月13日,北京互联网首次突然大面积断网,主要原因是北京网通几个核心路由器的BGPDown掉了美国商务部的国立标准技术研究所(NIST:NationalInstituteofStandardsandTechnology)有关软件缺陷的损失调查报告表示,“据推测,由于软件缺陷而引起的损失额每年高达595亿美元。这一数字相当于美国国内生产总值的0.6%”2007年8月28日3时37分第5页3.1.2软件缺陷3.1.2.1软件失败的术语缺点(defect)偏差(variance)故障(fault)失败(failure)问题(problem)矛盾(incosistency)错误(error)特性殊(feature)事件(incident)缺陷(bug)异常(anomaly)2007年8月28日3时37分第6页这些词的含义几近相同。故障、失败和缺点都指确实严重的情况,甚至是危险的情况;异常、事件和偏差不是那么尖锐,主要指未按预料的运行,而不是全部的失败。问题、错误和缺陷也许是最常用的术语。2007年8月28日3时37分第7页3.1.2.2软件缺陷官方的定义软件未实现产品说明书要求的功能。软件出现了产品说明书指明不会出现的错误。软件实现了产品说明书未提到的功能。软件未实现产品说明书虽未明确提及但应该实现的目标。软件难以理解、不易使用、运行缓慢或者——从测试员的角度看——最终用户会认为不好。2007年8月28日3时37分第8页每一个使用过一些软件的人都会对软件的工作方式有自己意见和想法,要编写令所有用户都满意的软件是不可能的。要全面,最重要的是要客观评价,并非所有测试发现的缺陷都要修改。2007年8月28日3时37分第9页3.1.2.3为什么会出现软件缺陷(1)导致软件缺陷最大的原因是产品说明书(需求分析)需求分析代码编写设计其他图3-1软件缺陷所占的比例2007年8月28日3时37分第10页(2)软件缺陷的第二大来源是设计(3)代码错误可以归咎于软件的复杂性、文档资料的不足、进度压力或者普通的低级错误,与(1)、(2)有关(4)其他原因,如误解,重复错误,测试错误等只占极小的比例。2007年8月28日3时37分第11页3.1.2.4软件缺陷的修复费用随着时间推移,修复软件缺陷的费用惊人地增长(指数级)IBM:确定软件错误的相对成本是:在设计阶段,1.5;编码前,1;编码中,1.5;测试前,10;测试中,60;交付后,100。[WattsHumphrey]TRW:确定错误的相对时间:需求分析阶段,1;设计阶段,3-6;编码阶段,10;开发测试阶段,15-40;接受性测试阶段,30-70;应用运行中,40-1000。[Boehm]2007年8月28日3时37分第12页图3-2软件缺陷的费用2007年8月28日3时37分第13页3.2软件测试的定义3.2.1什么是软件测试根据侧重点的不同,主要有以下几种观点:1)1983年IEEE将软件测试定义为:“使用人工或自动手段运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别”,该定义明确地提出了软件测试以检验是否满足需求为目标。2)Myers认为:“是为了发现错误而执行程序的过程”,明确提出了“寻找错误”是测试目的。2007年8月28日3时37分第14页3)从软件质量保证的角度看:是一种重要的软件质量保证活动,其动机是通过一些经济、高效的方法,捕捉软件中的错误,从而达到保证软件内在质量的目的。也有人认为软件测试(softwaretesting)就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试有两个基本职责:即验证和确认。注意:区分软件测试和软件调试。2007年8月28日3时37分第15页3.2.2软件测试的目标G.Myers给出了关于测试的一些规则,我们也可以把这些规则看作是测试的目标:1)软件测试是为了发现错误而执行程序的过程。2)测试是为了证明程序有错,而不是证明程序无错。3)一个好的测试用例在于他能发现至今未发现的错误。4)一个成功的测试是发现了至今未发现的错误的测试。这里要强调的一点是,软件测试不只是软件测试人员的工作,也是软件开发人员和软件使用者的工作2007年8月28日3时37分第16页3.3软件测试生命周期测试的生命周期(softwaretestinglifecycle)分为几个阶段(如图3-3所示)。前三个阶段就是引入程序错误阶段;后三个阶段就是清除程序错误的阶段2007年8月28日3时37分第17页需求规格说明设计编码测试缺陷分类缺陷分离缺陷排除修复错误错误错误错误错误错误错误错误3(失效)图3-3测试生命周期2007年8月28日3时37分第18页3.4软件开发与测试模型3.4.1软件开发与测试V模型在传统开发过程中测试不受重视,仅把它作为在需求分析、概要设计、详细设计及编码之后的一个阶段。尤其在瀑布模型中。如图3-4/3-5所示,在V模型中,描述了一些不同的测试级别,并说明了这些级别所对应的生命周期中不同的阶段,清楚地描述了这些测试阶段和开发过程期间的对应关系。下面我们将介绍几种典型的软件开发与测试模型。2007年8月28日3时37分第19页用户需求获取需求定义需求分析需求分析书概要设计概要设计书详细设计详细设计书编码程序软件产品可交付软件系统测试已确认软件确认测试已集成软件集成测试已测试模块单元测试需求分析评审评审评审评审评审评审评审评审图3-4V模型示意图2007年8月28日3时37分第20页图3-5V模型示意图2007年8月28日3时37分第21页由于各种原因,开发的每一个环节都可能产生错误,如果坚持各个阶段的技术评审,就能够尽早发现和预防错误。图3-6为软件开发与测试的W模型,形象地说明了软件测试与开发的这种同步性。3.4.2软件开发与测试W模型V模型适用于所有类型的开发过程,但并不一定适用于开发和测试过程的所有方面。2007年8月28日3时37分第22页需求测试需求分析功能测试概要设计设计测试详细设计单元测试编码系统测试验收确认测试确认集成测试集成图3-6W模型示意图2007年8月28日3时37分第23页与前两种模型相比,H模型充分地体现了测试过程。如图3-7所示的H模型揭示了:(1)软件测试不仅仅指测试的执行,还包括很多其他的活动。(2)软件测试是一个独立的流程,贯穿产品的整个开发周期,与其它流程并发进行。(3)软件测试要尽早准备,尽早执行。应用该模型的优点在于,每个软件开发活动结束后就可以执行相应的测试,如:在需求分析结束后,就可以进行需求分析测试。3.4.3软件开发与测试H模型2007年8月28日3时37分第24页(4)软件测试根据被测物的不同是分层次的.不同层次的测试活动可以是按照某个次序先后进行的,但也可能是反复的。测试准备测试执行测试流程其他流程测试就绪点图3-7H模型示意图2007年8月28日3时37分第25页3.5软件测试的术语和定义重要的是在术语定义上取得一致而不是在“正确性”上争论(1)精确(precision)和准确(accuracy)准确度是指你得到的测定结果与真实值之间的接近程度。精确度是指使用同种备用样品进行重复测定所得到的结果之间的重现性。软件测试要精度还是准确度很大程度上取决于产品是什么,最终取决于开发小组的目标2007年8月28日3时37分第26页验证是保证软件符合产品说明书的过程;确认是保证软件满足用户要求的过程。(2)验证(verification)和确认(validation)验证(verification)和确认(validation)的区别对软件测试很重要2007年8月28日3时37分第27页(3)错误(Error)程序员在编写代码时会出错,我们把这种错误称之为bug。随着开发过程的进行,错误会不断的放大。(4)缺陷(Default)缺陷是错误的结果,更精确的说是错误的表现。(5)失效(Failure)在缺陷运行时,常常会发生失效的情况。一种是过错缺陷对应的失效;一种是遗漏缺陷对应的失效。(6)测试(Test)测试是一项采用测试用例执行软件的活动,在这项活动中某个系统或组成的部分将在特定的条件下运行,然后要观察并记录结果,以便对系统或组成部分进行评价。2007年8月28日3时37分第28页(7)测试用例(TestCase)测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。(8)回归测试(Regressiontesting)回归测试的目的是为了测试由于修正缺陷而更新的应用程序,以确保彻底修正了上一个版本的缺陷,并且没有引入新的软件缺陷。
本文标题:第3章软件缺陷与测试定义
链接地址:https://www.777doc.com/doc-3232273 .html