软件工程教案10(第六章-软件测试)课件_第1页
软件工程教案10(第六章-软件测试)课件_第2页
软件工程教案10(第六章-软件测试)课件_第3页
软件工程教案10(第六章-软件测试)课件_第4页
软件工程教案10(第六章-软件测试)课件_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

软件工程教案_10(第六章软件测试)??为什么要对软件进行测试(生命损失的事故)2005年年初,巴拿马国家癌症研究中心,自2001年3月起,有27个病人接受了超量伽马射线的照射。在之后的40个月里,有21个病人相继去世,而其中有5人的死因与接受了超量伽马射线的照射有直接的关系;另外15人因受到伽马射线的照射而引发了严重的并发症。这台放射仪器是由软件来控制的;经研究,这起医疗事故是由控制软件的缺陷引起的。放射量的计算有20%的误差。2003年,软件问题造成美国东北部及加拿大停电,导致5000万人受影响,3人丧生。2000年美国海军飞机坠落,导致4人丧生(控制软件问题);1997年韩国空难,导致225人丧生(雷达控制软件问题);1995年美国航空公司一架客机在哥伦比亚利机场降落时撞向一座山,调查认为是源于导航软件的问题。该事件导致159人丧生。为什么要对软件进行测试2004年,媒体报道过北美银行由于一个新安装的软件的缺陷,使得数以万计的客户受到影响,该缺陷的修复花费了整整两个星期的时间,造成数亿元损失;2003年10月,美国的一个主要零售企业被政府重罚,原因是其网站软件的缺陷使得客户相互间可以查看他人在该网站的订单;2003年4月,美国一个专门为学生提供贷款的公司由于软件出错,错误计算80万名学生贷款利率,导致了800万美元的利率损失;为什么要对软件进行测试(经济损失的事故)

§6.1基本概念软件质量保证、最终检查主要研究内容是什么?需要什么样的专业基础?软件质量到底是什么?测试的目标是什么?开发一个测试系统之前你是否明白:可以测试什么?应该测试什么?最终能够测试什么?测试的目标是什么?有关测试的思考题

软件产品最大的成本:检测软件错误、修正软件错误。

在整个软件开发中测试工作量(30~40%,≥50%)人命关天的软件(是其他活动的3~5倍)如:飞机控制核反应堆软件测试的认识的发展阶段1:测试=调试阶段2:测试是证明软件正确阶段3:测试是发现软件中错误阶段4:测试是减小软件不工作的风险(是度量软件质量要素的过程)阶段5:测试可产生低风险的软件的一种认识上的训练软件测试的目标:预防错误(不可能);发现错误质量控制技术质量控制活动分类开发方法学配置管理验证技术评审正确性验证性能调试组件测试集成测试系统测试原子事务模块冗余性检错质量控制避免错误容错调试测试6.1.1测试的目的与地位G.J.Myers在经典著作《软件测试之艺术》(TheArtofSoftwareTesting)中认为:程序测试是为了发现错误而执行程序的过程”。

1.测试是为了寻找错误而运行程序的过程。2.一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试。3.一个成功的测试是揭示了迄今为止尚未发现的错误的测试。E.W.Dijkstra指出:“程序测试能证明错误的存在,但不能证明错误不存在.”

测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错.

测试的“成功”与“失败”“测试的目的是说明程序正确地执行它应有的功能”这种说法正确吗?例:程序Triangle,输入三个整数,表示一个三角形的三个边长,该程序产生一个结果,指出该三角形是等边三角形、等腰三角形还是不等边三角形。为说明其能正确执行它的功能,可使用“测试用例”(3,4,5),(5,5,6),(6,6,6),程序都能给出正确结果,是否就可认为程序是正确的?难以说清的软件缺陷古谚:“一片树叶飘落在森林中没有人听见,谁能说它发出了声音?”由于不能报告没有看见的问题,因此,没有看见就不能说存在软件缺陷如果软件中的问题没有人发现,那么它算不算软件缺陷?”只有看到了,才能断言软件缺陷,尚未发现的软件缺陷只能说是未知软件缺陷。眼见为实6.1.2测试原则(1)所有的测试都应追溯到用户需求最严重的错误(从用户角度)(2)概要设计时应完成->测试计划设计模型确定后->测试用例定义

软件测试≠程序测试据美国一家公司统计,查出的软件错误中:属于需求分析和软件设计的错误(64%)属于程序编写的错误(36%)故,程序编写的许多错误是“先天的”。测试与开发前期工作的关系决定软件与系统的配合关系需求分析概要设计详细设计编码单元测试集成测试确认测试系统测试模块接口需求综合<步骤>开发前期出现错误的扩展计划需求分析设计编码测试AAB软件生存期各阶段间需保持的正确性用户要求用户:我要什么?运行结果计算机:程序运行得到的结果源程序程序员:我要让计算机什么做?设计说明书设计员:我要让软件做什么?需求说明书分析员:我可以提供什么?12345理解正确性表达正确性理解正确性设计正确性表达正确性理解正确性编码正确性运行正确性输入正确性相符吗?(3)pareto原则:测试发现的错误中80%很可能起源于20%的模块中。(孤立疑点模块重点测试)(4)穷举测试是不可能的。(5)应由独立的第三方来构造测试。(测试队伍)(6)测试用例:输入数据+预期的结果(7)合理的输入+不合理的输入(8)程序修改后要回归测试(9)长期保留测试用例,直至系统废弃。6.1.3可测试性“好”测试的属性:

发现错误的可能性高不冗余在目的相似的测试中,应使用最可能找到错误的测试每一个测试应独立执行错误(fault)、误差(error)和故障(failure)出轨(出故障)?图中不表示故障,因为既没有指定期望行为也没有任何观察的行为,它也不表示误差,因为这不意味着系统正处在进一步处理将导致故障的状态.错误(fault)、误差(error)和故障(failure)用例名称DriveTrain参与执行者火车司机入口条件司机按下控制面板上的StrartTrain事件流1.列车开始在轨道1上运行2.列车平移到轨道2退出条件列车运行在轨道2上特殊条件没有用例DriveTrain指定了列车的期望行为:测试(test)调试(debug)以已知条件开始,使用预先定义的程序,有预知的结果以不可知内部条件开始,结果一般不可预见有计划被动的由独立的测试组,在不了解软件设计的条件下完成由程序作者进行发现错误找出错误位置,排除测试与调试(排错)6.1.4测试用例设计软件测试员最重要的一项工作例:三角形问题输入三个整数a、b、c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形、等腰三角形、一般三角形(特殊的还有直角三角形),以及构不成三角形。现在要求输入三个整数a、b、c,必须满足以下条件:条件11≤a≤100条件4a<b+c条件21≤b≤100条件5b<a+c条件31≤c≤100条件6c<a+b不满足条件1、条件2和条件3:给出“边的取值超出允许范围”的信息。满足条件1、条件2和条件3:输出下列四种情况之一:(1)不满足条件4、条件5和条件6中的一个,则程序输出为“非三角形”(2)三条边相等,则程序输出为“等边三角形”(3)恰好有两条边相等,则程序输出为“等腰三角形”。(4)三条边都不相等,则程序输出为“一般三角形”。结论:三角形问题的复杂之处在于输入与输出之间的关系比较复杂。讨论:对输入与输入关系复杂的程序,怎样才能达到完全测试?例:三角形问题(续)条件11≤a≤100条件4a<b+c条件21≤b≤100条件5b<a+c条件31≤c≤100条件6c<a+b题目:输入三个整数作为三边的边长构成三角形。当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算……分析:输入条件的关键之处有:整数三个数非零数正数输出条件的关键之处有:应满足两边之长大于第三边等腰等边分两步:列出等价类列出覆盖等价类的测试用例例:三角形问题(续)覆盖有效等价类测试用例4覆盖无效等价类测试用例abc覆盖等价类编号abc覆盖等价类编号2.54534.55345.5121314005300040000293031323.54.5534.55.53.545.53.54.55.515161718-3453-4534-5333435345192021-3-45-34-53-4-5-3-4-5363738393445353456222324253153253113214041424304530534026272814234144456.1.5软件测试信息流软件配置测试测试配置测试工具结果分析排错可靠性分析测试结果错误预期结果出错率

改正的软件预测的可靠性需求规格说明书软件设计说明书被测源程序测试计划测试用例(测试数据)测试驱动程序测试设计中需要考虑的22种测试类型黑盒测试白盒测试单元测试累计综合测试集成测试功能测试系统测试端到端测试健全测试衰竭测试接受测试负载测试强迫测试性能测试可用性测试安装/卸载测试恢复测试兼容测试安全测试比较测试Alpha测试Beta测试6.1.6测试的方法与技术软件测试的策略和方法静态测试方法动态测试方法人工测试方法计算机辅助静态分析方法白盒测试方法黑盒测试方法

被测试程序测试用例静态测试:基本特征是在对软件进行分析、检查和审阅,不实际运行被测试的软件。静态测试约可找出30~70%的逻辑设计错误.

对需求规格说明书、软件设计说明书、源程序做检查和审阅,包括:是否符合标准和规范;通过结构分析、流图分析、符号执行指出软件缺陷;

动态黑盒测试—闭着眼睛测试软件软件输入不深入代码细节的测试方法称为动态黑盒测试。软件测试员充当客户来使用它。输出动态白盒测试—带上X光眼镜测试软件??????????????3581322.293419985680302829734315250*(1+0.015)*((1+0.015)^360-1)/0.015250*(1+0.015)*((1+0.015)^360-1)/0.015§6.2两种类型的测试6.2.1黑盒测试

(用户规格说明书、外部特征)功能测试、数据驱动测试、基于规格说明书的测试

6.2.2白盒测试(内部逻辑结构)开盒测试、结构测试、玻璃盒测试、基于覆盖的测试

根据逻辑结构设计测试用例;力求提高覆盖率;CBAD比较

黑盒测试

白盒测试

优点缺点性质①适用于各阶段测试②从产品功能角度测试③容易入手生成测试数据①可构成测试数据使特定程序部分得到测试①某些代码得不到测试②如果规格说明有误,则无法发现③不易进行充分性测试①不易生成测试数据(通常)②无法对未实现规格说明的部分进行测试③工作量大,通常只用于单元测试,有应用局限是一种确认技术,回答“我们在构造一个正确的系统吗?”是一种验证技术,回答“我们在正确地构造一个系统吗?”6.2.3穷举测试例:输入三条边长黑盒测试可采用的测试用例数(设字长16位)执行时间:设测试一次需1ms共需一万年.=2X2X2≈3X1016161614

白盒测试例:含4个分支,循环次数≤20,从A到B的可能路径执行时间:设测试一次需2ms穷举测试需5亿年.=5+5+...+5+5≈1020121914AB§6.3白盒测试的测试用例设计

6.3.1逻辑覆盖法(1)语句覆盖(2)判定覆盖(3)条件覆盖(4)判定/条件覆盖(5)条件组合覆盖(6)路径覆盖(7)点覆盖(8)边覆盖例:PROCEDURESAMPAL(A,B:REAL;VARX:REAL);BEGINIF(A>1)AND(B=0)THENX:=X/AIF(A=2)OR(X>1)THENX:=X+1END;开始(A>1)AND(B=0)(A=2)OR(X>1)返回X=X/AX=X+1FFTTabdce(1)语句覆盖使程序中每个语句至少执行一次开始(A>1)AND(B=0)(A=2)OR(X>1)返回X=X/AX=X+1FFTTabdceA=2,B=0,X=40最弱的逻辑覆盖(2)判定覆盖(分支覆盖)

使每个判定的真假分支都至少执行一次开始(A>1)AND(B=0)(A=2)OR(X>1)返回X=X/AX=X+1FFTTabdceA=3,B=0,X=-3可覆盖c、d分支

A=2,B=1,X=1可覆盖b、e分支弱的逻辑覆盖(3)条件覆盖每个判定的每个条件的可能取值至少执行一次满足条件:T1,T1,T2,T2T3,T3T4,T4开始(A>1)AND(B=0)(A=2)OR(X>1)返回X=X/AX=X+1FFTTabdce测试用例

通过满足的覆盖ABX

路径条件分支103abeT1,T2,T3,T4b,e211abeT1,T2,T3,T4b,e

两个测试用例覆盖了四个条件八种可能取值。未覆盖c、d分支,不满足判定覆盖的要求.条件覆盖不一定包含判定覆盖判定覆盖也不一定包含条件覆盖(4)判定/条件覆盖(5)条件组合覆盖(6)路径覆盖§6.4黑盒测试的测试用例设计6.4.1等价类划分法输入数据有效的无效的等价的子集等价类等价类中的一个典型值在测试中的作用与类中所有其它值的作用相同如何划分等价类?划分标准?覆盖不相交代表性例:某报表处理系统要求用户输入处理报表的日期,日期限制在2001年1月至2005年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。如何用等价类划分法设计测试用例,来测试程序的日期检查功能?第一步:等价类划分输入等价类有效等价类无效等价类

报表日期的类型及长度6位数字字符(1)有非数字字符(4)少于6个数字字符(5)多于6个数字字符(6)年份范围在2001~2005之间(2)小于2001(7)大于2005(8)月份范围在1~12之间(3)“报表日期”输入条件的等价类表小于1(9)大于12(10)第二步:为有效等价类设计测试用例

对表中编号为1,2,3的3个有效等价类用一个测试用例覆盖:

测试数据期望结果覆盖范围200105等价类(1)(2)(3)输入有效第三步:为每一个无效等价类至少设计一个测试用例

测试数据期望结果覆盖范围001MAY等价类(4)输入无效20015等价类(5)输入无效2001005等价类(6)输入无效200005等价类(7)输入无效200805等价类(8)输入无效200100等价类(9)输入无效200113等价类(10)输入无效不能出现相同的测试用例本例的10个等价类至少需要8个测试用例6.4.2边界值分析法(1)边界值分析使该等价类的每个边界都要作为测试条件。(2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况被测试子域测试内点测试外点软件边界与悬崖很类似6.4.3错误推测法(errorguessing)根据经验来设计测试用例的方法例如,数据测试中的:缺省值空白空值零值

软件测试的过程被测模块单元测试设计信息集成测试被测模块单元测试被测模块单元测试测试过的模块确认测试系统测试软件需求其它系统元素装配好的软件确认的软件可运行的软件§6.5软件测试的步骤软件测试策略单元测试UCDRSIVST集成测试确认测试系统测试系统工程软件需求分析软件设计代码编写6.5.1单元测试一.单元测试的内容主要对模块的五个基本特性进行评价模块错误处理模块接口局部数据结构重要的执行路径边界

温馨提示

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

评论

0/150

提交评论