《软件工程引论教学课件》第7章软件测试_第1页
《软件工程引论教学课件》第7章软件测试_第2页
《软件工程引论教学课件》第7章软件测试_第3页
《软件工程引论教学课件》第7章软件测试_第4页
《软件工程引论教学课件》第7章软件测试_第5页
已阅读5页,还剩106页未读 继续免费阅读

下载本文档

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

文档简介

1,第7章软件测试,2,千年虫,3,软件错误的实例,爱国者导弹曾在海湾战争期间对抗伊拉克飞毛腿导弹1991年2月,一次对抗失利中28名美国士兵丧生问题的症结在于导弹软件包含一个累加计时误差软件错误target=f(velocity,time)计时采用系统时钟(即1/10秒)并使用整数表达(1/10)2=0.000110011001100110011001100110024位寄存器存储导致误差(0.000000095)100.000000095100hours606010=0.34seconds,4,迪斯尼的圣诞节礼物,5,问题在哪里?,没有足够测试缺乏测试平台不正确的测试环境缺少集成测试缺少性能测试缺少强度测试缺少可靠性测试,6,Exchange2000和Windows2000的人员结构,7,开发人员的一般配置图,8,主要内容,软件测试概述软件测试方法软件测试阶段软件测试工具,9,主要内容,软件测试概述软件测试方法软件测试阶段软件测试工具,10,软件测试概述,软件的错误验证与确认软件测试的定义软件测试V模型软件测试的基本原则,11,软件测试概述,软件的错误验证与确认软件测试的定义软件测试V模型软件测试的基本原则,12,软件的错误,软件未达到产品说明书标明的功能软件出现了产品说明书指明不会出现的错误软件功能超出了产品说明书指明的范围软件未达到产品说明书虽未指出但应达到的目标软件测试人员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户不满意,13,软件测试概述,软件的错误验证与确认软件测试的定义软件测试V模型软件测试的基本原则,14,验证和确认,验证(Verification)指确保软件正确地实现某一特定功能的一系列活动确认(Validation)指确保开发的软件可追溯到用户需求的另外一系列活动,验证(Verification)Arewebuildingtheproductright?确认(Validation)Arewebuildingtherightproduct?,Boehm的观点,16,软件测试概述,软件的错误验证与确认软件测试的定义软件测试V模型软件测试的基本原则,17,软件测试的定义,传统的观点软件测试是一种旨在评估一个程序或系统的属性或能力,确定它是否符合其所需结果的活动Myers的观点软件测试是为了发现错误而执行一个程序或系统的过程IEEE的观点软件测试是使用人工和自动手段来运行或检测某个系统的过程,其目的在于检验系统是否满足规定的需求或弄清预期结果与实际结果之间的差别软件测试的目的以最少的时间和人力系统地找出软件中潜在的各种错误和缺陷,18,软件测试概述,软件的错误验证与确认软件测试的定义软件测试V模型软件测试的基本原则,19,软件测试V模型,20,软件测试的对象,软件测试并不等于程序测试软件测试应贯穿于软件定义与开发的整个期间需求分析、概要设计、详细设计以及程序编码等所得到的文档资料,包括需求规格说明、概要设计说明、详细设计规格说明以及源程序,都应成为软件测试的对象,测试信息流如下图所示。,测试信息流,22,软件测试概述,软件的错误验证与确认软件测试的定义软件测试V模型软件测试的基本原则,23,软件测试的基本原则,所有测试的标准都是建立在用户需求之上软件项目一启动,软件测试也就开始严格执行测试计划,排除测试的随意性独立测试组80-20原则重视文档,妥善保存一切测试过程文档,24,WhoTeststheSoftware?,developer,independenttester,Understandsthesystem,but,willtestgently,and,isdrivenbydelivery,Mustlearnaboutthesystem,but,willattempttobreakit,and,isdrivenbyquality,25,主要内容,软件测试概述软件测试方法软件测试阶段软件测试工具,26,软件测试方法,静态测试方法一种不通过执行被测软件而进行测试的技术关键是检查软件的表示和描述是否一致目的是纠正软件系统在描述、表示和规格上的错误动态测试方法一种通过执行被测软件而进行测试的技术,27,静态测试方法,28,静态测试方法,工具静态代码检测工具PC-Lint,29,动态测试方法,白盒测试方法黑盒测试方法,30,动态测试方法,白盒测试方法黑盒测试方法,31,白盒测试方法,需要对系统内部的结构和工作原理有一个清楚的了解,并基于这个知识来设计测试用例结构测试逻辑驱动测试,白盒穷举测试,对每条通路都应在每种可能的输入数据下执行一次。实际上这是不可能的。,白盒穷举测试,对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字。给出一个小程序的流程图,它包括了一个执行20次的循环。,包含的不同执行路径数达520条,对每一条路径进行测试需要1毫秒,假定一年工作36524小时,要想把所有路径测试完,需3170年。,34,白盒测试用例的设计,逻辑覆盖法基本路径测试法,35,逻辑覆盖测试的五种标准,36,逻辑覆盖测试,37,逻辑覆盖测试,38,语句覆盖,设计若干个测试用例,运行被测程序,使得每一个可执行语句至少要执行一次,39,语句覆盖,b,d,a,输出:A,B,X,c,e,(A1)(B=0),X=X/A,T,F,(A=2)V(X1),X=X+1,T,F,输入:A,B,X,2,0,4,2,0,3,满足语句覆盖的测试用例如下,a,c,e,-,-,ace(L1),abd(L2),abe(L3),acd(L4),L1,40,判定覆盖,分支覆盖设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,41,判定覆盖,b,d,a,c,e,(A1)(B=0),X=X/A,T,F,(A=2)V(X1),X=X+1,T,F,2,0,42,0,3,1,1,11,1,1,取“真”分支测试用例如下,ace(L1),abd(L2),abe(L3),acd(L4),第一组测试用例:,a,c,e,-,-,a,b,d,-,-,取“假”分支测试用例如下,42,判定覆盖,b,d,a,c,e,(A1)(B=0),X=X/A,T,F,(A=2)V(X1),X=X+1,T,F,2,1,12,1,2,3,0,33,0,1,取“真假”分支测试用例如下,ace(L1),abd(L2),abe(L3),acd(L4),第二组测试用例:,a,b,e,-,-,a,c,d,-,-,43,条件覆盖,设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次,44,条件覆盖,b,d,a,c,e,(A1)(B=0),X=X/A,T,F,(A=2)V(X1),X=X+1,T,F,ace(L1),abd(L2),abe(L3),acd(L4),设条件的取值标记,45,b,d,a,c,e,(A1)(B=0),X=X/A,T,F,(A=2)V(X1),X=X+1,T,F,设条件的取值标记,条件覆盖可选取的(第一组测试用例)如下表,(2,0,4),(2,0,3),ace(L1),T2,T3,T4,c,e,(1,1,1),(1,1,1),abd(L2),T1,b,d,46,b,d,a,c,e,(A1)(B=0),X=X/A,T,F,(A=2)V(X1),X=X+1,T,F,设条件的取值标记,条件覆盖可选取的(第二组测试用例)如下表,(1,0,3),(1,0,4),abe(L3),T2,T3,T4,b,e,(2,1,1),(2,1,2),ab3(L3),T1,b,e,T1,T3,T4,47,判定/条件覆盖,设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次,48,b,d,a,c,e,(A1)(B=0),X=X/A,T,F,(A=2)V(X1),X=X+1,T,F,设条件的取值标记,判定/条件覆盖可选取的测试用例如下表,(2,0,4),(2,0,3),ace(L1),T2,T3,T4,c,e,(1,1,1),(1,1,1),abd(L2),T1,b,d,49,条件组合覆盖,设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次,50,b,d,a,c,e,(A1)(B=0),X=X/A,T,F,(A=2)V(X1),X=X+1,T,F,设条件的取值标记,A1B=0,A1B0,A1B=0,A1B0,T1T2,取真分支,取假分支,取假分支,取假分支,51,b,d,a,c,e,(A1)(B=0),X=X/A,T,F,(A=2)V(X1),X=X+1,T,F,设条件的取值标记,A=2X1,A=2X1,A2X1,A2X1,T3T4,取真分支,取真分支,取真分支,取假分支,52,设条件的取值标记,(2,0,4),(2,0,3),ace(L1),T2,T3,T4,(2,1,1),(2,1,2),abe(L3),T1,T1,T3,(1,0,3),(1,0,4),abe(L3),T4,T2,(1,1,1),(1,1,1),abd(L2),53,基本路径测试法,在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法在基本路径测试中,设计出的测试用例要保证在被测程序的每一条可执行语句上至少执行一次,54,程序控制流图,程序控制流图利用基本的流图符号描述逻辑控制流每种结构化的结构有相应的流图符号,55,程序控制流图,56,程序控制流图,在选择或多分支结构中,分支的汇聚处应有一个汇聚结点边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域如果判断中的条件表达式是由一个或多个逻辑运算符(OR,AND,.)连接的复合条件表达式,则需改为一系列只有单个条件的嵌套的判断。ifaandbthenxelsey,57,程序控制流图,导出测试用例的步骤以程序流程图或代码为基础,画出相应程序控制流图确定程序控制流图的环路复杂度覆盖所有程序语句所需测试用例数量的上界确定独立路径集合从程序流图来看,一条独立路径是至少包含有一条在其它独立路径中从未有过的边设计测试用例,强制执行独立路径集合中的每条路径,58,基本路径测试法,例:有一段计算学生人数、学生分数的总分数和平均值的被测试程序,该程序运行时最多输入50个值(以-1作为输入结束标志),其程序流程图如图所示,试设计基本路径测试法的测试用例,59,画出程序控制流程图,60,基本路径测试法,确定程序控制流图的环路复杂度程序的环路复杂性给出程序基本路径集合中的独立路径条数确保程序中每个可执行语句至少执行一次所必须的测试用例数目的上界独立路径:指至少引入一个新处理语句或一条新判断的程序通路程序环路复杂性的三种方法:程序控制流图中的区域数程序控制流图的边数-程序控制流图的结点数+2程序控制流图中的判定结点数+1,61,计算程序环路复杂度区域数:6边数-结点数+2=1612+2=6判定结点数+1=5+1=6,62,导出程序基本路径(1-2-9-10-12)(1-2-9-11-12)(1-2-3-9-10-12)(1-2-3-4-5-8-2)(1-2-3-4-5-6-8-2)(1-2-3-4-5-6-7-8-2),63,设计测试用例,1(1-2-9-10-12)输入数据:scorek=有效分数值,当kiscorei=-1,2i50预期结果:根据输入的有效分数算出正确的学生人数n1、总分sum和平均分average2(1-2-9-11-12)输入数据:score1=-1预期结果:average=-1,其他量保持初值3(1-2-3-9-10-12)输入数据:输入多于50个有效分数,即试图处理51个分数,要求前51个为有效分数预期结果:n1=50,且算出正确的总分和平均分4(1-2-3-4-5-8-2)输入数据:scorei=有效分数,当i50scorek0,ki预期结果:根据输入的有效分数算出正确的学生人数n1、总分sum和平均分average,64,设计测试用例,5(1-2-3-4-5-6-8-2)输入数据:scorei=有效分数值,当i100,k0,C0,且A+BC,B+CA,A+CB;如果是等腰的,还要判断A=B,或B=C,或A=C;如果是等边的,则需判断是否A=B,且B=C,且A=C。,79,案例:根据输入判断三角形的形状(续),创建等价类表:,80,确定等价类输入数据:,81,建立等价类表,列出所有划分出的等价类,划分等价类设计测试用例的步骤,为每个等价类规定一个唯一的编号设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步,最后使得所有有效等价类均被测试用例所覆盖设计一个新的测试用例,使其只覆盖一个无效等价类,重复这一步使所有无效等价类均被覆盖,82,黑盒测试用例的设计,等价类划分法边界值分析法错误推测法因果图法,83,边界值分析(BoundaryValueAnalysis,BVA),边界值分析选择一组测试用例检查边界值设计方法确定边界情况(输入或输出等价类的边界)选取正好等于、刚刚大于或刚刚小于边界值作为测试数据,84,确定边界值的方法,如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据,85,确定边界值的方法,如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据,86,确定边界值的方法,如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例:栈,87,黑盒测试用例的设计,等价类划分法边界值分析法错误推测法因果图法,88,主要内容,软件测试概述软件测试方法软件测试阶段软件测试工具,89,软件测试V模型,90,软件测试阶段,单元测试集成测试系统测试,91,软件测试阶段,单元测试集成测试系统测试,92,单元测试,单元测试考虑,测试模块的接口是为了保证被测程序单元的信息能够正常地流入和流出;检查局部数据结构以确保临时存储的数据在算法的整个执行过程中能维护其完整性;走遍控制结构中的所有独立路径(基本路径)以确保模块中的所有语句至少执行一次;测试边界条件以确保模块在到达边界值的极限或受限处理的情形下仍能正确执行;最后,要对所有的错误处理路径进行测试,93,单元测试,单元测试规程,驱动程序桩模块,94,软件测试阶段,单元测试集成测试系统

温馨提示

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

最新文档

评论

0/150

提交评论