软件工程软件测试PPT课件_第1页
软件工程软件测试PPT课件_第2页
软件工程软件测试PPT课件_第3页
软件工程软件测试PPT课件_第4页
软件工程软件测试PPT课件_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

软件测试,第五章,5.1软件测试的基本概念,一、软件测试的目的和重要性因为开发工作的前期不可避免地会引入错误,测试的目的是为了发现和改正错误,这对于某些涉及人的生命安全或重要的军事、经济目标的项目显得尤其重要。,1963年美国飞往火星的火箭爆炸,原因是FORTRAN程序:DO5I=1,3误写为:DO5I=1.3损失1000万美元。1967年苏联“联盟一号”宇宙飞船返回时因忽略一个小数点,在进入大气层时打不开降落伞而烧毁。,二、软件测试的特点,1、软件测试的开销大按照Boehm的统计,软件测试的开销大约占总成本的30%-50%。例如:APPOLLO登月计划,80%的经费用于软件测试。,二、软件测试的特点结论,3、软件测试难度大根据上述分析,既然不能进行“穷举”测试,又要查出尽可能多的错误,软件测试工作的难度大。只有选择,“高效的测试用例”,什么是“高效的测试用例”?如何选择“高效的测试用例”?这就是本章讨论的主要问题!,三、软件测试的基本原则,3、充分注意测试中的群集现象。,1、尽量不由程序设计者进行测试。2、关键是注重测试用例的选择。输入数据的组成(输入数据、预期的输出结果)既有合理输入数据,也有不合理的输入数据。用例既能检查应完成的任务,也能够检查不应该完成的任务。长期保存测试用例。,5.2软件测试方法,软件测试方法分为两类:静态分析、动态测试,一、静态分析方法指以人工的、非形式化的方法对程序进行分析和测试。桌前检查代码会审步行检查,步行检查时,还常使用以下分析方法:调用图从语义的角度考察程序的控制路线。数据流分析图检查分析变量的定义和引用情况。,调用图,无论Y为何值,都不能够调用子程序。,READY,Y0,N,X:=Y,X1)AND(B=0)THENX:=X/A;IF(A=2)OR(X1)THENX:=X+1END;,1)选择逻辑覆盖标准。2)按照覆盖标准列出所有情况。3)选择确定测试用例。4)验证分析运行结果与预期结果。,逻辑结构,白盒法举例,Procedure(VARA,B,X:REAL);BEGINIF(A1)AND(B=0)THENX:=X/A;IF(A=2)OR(X1)THENX:=X+1END;,1、语句覆盖,使得程序中每个语句至少都能被执行一次。,A1ANDB=0,X:=X/A,A=2ORX1,X:=X+1,a,b,c,d,e,满足语句覆盖的情况:执行路径:ace,选择用例:(2,0,4),(2,0,3),用例格式:输入(A,B,X),输出(A,B,X),Y,N,Y,N,2、判定覆盖,使得程序中每个判定至少为TRUE或FALSE各一次。,A1ANDB=0,X:=X/A,A=2ORX1,X:=X+1,a,b,c,d,e,覆盖情况:应执行路径aceabd或:acdabe,选择用例(其一):(2,0,4),(2,0,3)ace(1,1,1),(1,1,1)abd(2,1,1),(2,1,2)abe(3,0,3),(3,1,1)acd,Y,Y,N,N,3、条件覆盖,A1ANDB=0,X:=X/A,A=2ORX1,X:=X+1,a,b,c,d,e,使得判定中的每个条件获得各种可能的结果。,应满足以下覆盖情况:判定一:A1,A1,B=0,B0判定二:A=2,A2,X1,X1,选择用例:(2,0,4),(2,0,3)(1,1,1),(1,1,1),N,N,Y,Y,2,A1,A2,0,B=0,4,X1,1,A1,A=2,1,B0,1,X1,注意:(1,0,3),(1,0,4)(2,1,1),(2,1,2)满足条件覆盖,但不满足判断覆盖。,4、判定/条件覆盖,同时满足判断覆盖和条件覆盖。,A1ANDB=0,X:=X/A,A=2ORX1,X:=X+1,a,b,c,d,e,应满足以下覆盖情况:条件:A1,A1,B=0,B0A=2,A2,X1,X1应执行路径aceabd或:acdabe,选择用例:(2,0,4),(2,0,3)(ace)(1,1,1),(1,1,1)(abd),Y,Y,N,N,5、条件组合覆盖,使得每个判定中条件的各种可能组合都至少出现一次。,A1,X:=X/A,A=2,X:=X+1,a,b,c,d,e,B=0,X1,Y,N,Y,N,Y,N,Y,N,编译系统下的执行情况:部分路径未被执行。,满足以下覆盖情况:A1,B=0A1,B0A1,B=0A1,B0A=2,X1A=2,X1A2,X1A2,X1,选择用例:(2,0,4),(2,0,3)(2,1,1),(2,1,2)(1,0,3),(1,0,4)(1,1,1),(1,1,1),路径覆盖:选择足够多的测试数据,使程序的每条可能路径都至少执行一次。,STARTINPUT(A,B,C)IFA5THENX=10ELSEX=1ENDIFIFB10THENY=20ELSEY=2ENDIFIFC15THENZ=30ELSEZ=3ENDIFPRINT(X,Y,Z)STOP,共有8条可能的执行路径三个判定表达式之值依次为假、假、假:输入:A=1,B=1,C=1;预期输出:X=1,Y=2,Z=3三个判定表达式之值依次为假、假、真:输入:A=2,B=3,C=23;预期输出:X=1,Y=2,Z=30三个判定表达式之值依次为假、真、假:输入:A=3,B=12,C=6;预期输出:X=1,Y=20,Z=3三个判定表达式之值依次为假、真、真:输入:A=4,B=13,C=16;预期输出:X=1,Y=20,Z=30三个判定表达式之值依次为真、假、假:输入:A=6,B=7,C=9;预期输出:X=10,Y=2,Z=3三个判定表达式之值依次为真、假、真:输入:A=8,B=8,C=18;预期输出:X=10,Y=2,Z=30三个判定表达式之值依次为真、真、假:输入:A=10,B=12,C=6;预期输出:X=10,Y=20,Z=3三个判定表达式之值依次为真、真、真:输入:A=11,B=14,C=57;预期输出:X=10,Y=20,Z=30,二、动态测试方法(2),等价分类法,边值分析法,错误推测法,因果图法,(2)黑盒法不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性设计测试用例。,1、等价分类法,基本思想:根据程序的I/O特性,将程序的定义域划分为有限个等价区段“等价类”,从等价类中选择出的用例,具有“代表性”。,等价类分为:有效等价类对于程序的规格说明是合理的、有意义的输入数据构成的集合。无效等价类对于程序的规格说明,是不合理的,是没有意义的输入数据构成的集合。,等价分类法步骤,应按照输入条件(如输入值的范围,值的个数,值的集合,输入条件必须如何)划分为有效等价类和无效等价类。例如:每个学生可选修1-3门课程可以划分一个有效等价类:选修1-3门课程。可以划分两个无效等价类:未选修课,选修课超过3门。又如:标识符的第一个字符必须是字母。可以划分为一个有效等价类:第一个字符是字母。可以划分一个无效等价类:第一个字符不是字母。,划分“等价类”,显然,关键是如何划分等价类,A、为每个等价类编号;B、使一个测试用例尽可能覆盖多个有效等价类C、特别要注意的是:一个测试用例只能覆盖一个无效等价类。,选择测试用例,等价分类法步骤,如何划分等价类?有效等价类(合理等价类)无效等价类(不合理等价类),(1)如果输入条件规定了取值范围,可定义一个有效等价类和两个无效等价类。,例输入值是学生成绩,范围是0100,0100,有效等价类0成绩100,无效等价类成绩100,无效等价类成绩0,(2)如果输入条件代表集合的某个元素,则可定义一个有效等价类和一个无效等价类。,(3)如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类(所有不允许的输入值的集合)。例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类(4)如果规定了输入数据必须遵循的规则,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。(5)如已划分的等价类各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。,用等价类划分法设计测试用例步骤:,(1)形成等价类表,每一等价类规定一个唯一的编号;(2)设计一测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤,直到所有有效等价类均被测试用例所覆盖;(3)设计一新测试用例,使其只覆盖一个无效等价类,重复这一步骤直到所有无效等价类均被覆盖;,例:某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。如何用等价类划分法设计测试用例,来测试程序的日期检查功能?,输入条件有效等价类无效等价类,报表日期的类型及长度,6位数字字符(1),有非数字字符(4)少于6个数字字符(5)多于6个数字字符(6),年份范围,在20032008之间(2),小于2003(7)大于2008(8),月份范围,在112之间(3),“报表日期”输入条件的等价类表,小于1(9)大于12(10),第二步:为有效等价类设计测试用例,测试数据期望结果覆盖范围,200306,等价类(1)(2)(3),输入有效,对表中编号为1,2,3的3个有效等价类用一个测试用例覆盖:,(1)6位数字字符(2)年在20032008之间(3)月在112之间,第三步:为每一个无效等价类设至少设计一个测试用例,测试数据期望结果覆盖范围,003MAY,等价类(4),输入无效,20035,等价类(5),输入无效,2003005,等价类(6),输入无效,200105,等价类(7),输入无效,200905,等价类(8),输入无效,200300,等价类(9),输入无效,200313,等价类(10),输入无效,不能出现相同的测试用例,本例的10个等价类至少需要8个测试用例,2、边值分析法,基本思想:选择等价类的边缘值作为测试用例,让每个等价类的边界都得到测试,选择测试用例既考虑输入亦考虑输出。,分析步骤:A、先划分等价类。B、选择测试用例,测试等价类边界。,边界选择原则:A、按照输入值范围的边界。B、按照输入/输出值个数的边界。C、输出值域的边界。D、输入/输出有序集的边界。,A、按照输入值范围的边界。例如:输入值的范围是-1.0至1.0,则可选择用例1.0、1.0、-1.001、1.001。B、按照输入/输出值个数的边界。例如:输入文件可有1-255个记录,则设计用例:文件的记录数为0个、1个、255个、256个。C、输出值域的边界。例如:检索文献摘要,最多4篇。设计用例:可检索0篇、1篇、4篇,和5篇(错误)。D、输入/输出有序集(如顺序文件、线性表)的边界。应选择第一个元素和最后一个元素。,边值分析法举例,3、错误推测法,凭经验或直觉推测可能的错误,列出程序中可能有的错误和容易发生错误的特殊情况,选择测试用例。,把输入条件视为“因”,把输出条件视为“果”,将黑盒看成是从因到果的网络图,采用逻辑图的形式来表达功能说明书中输入条件的各种组合与输出的关系。根据这种关系可选择高效的测试用例。因果图是一种形式化语言,是一种组合逻辑网络图。,4、因果图法,5.3软件测试的步骤,测试步骤及策略所有测试过程都应采用综合测试策略;即先作静态分析,再作动态测试。并事先制订测试计划。测试过程通常可分4步进行:,一、模块测试(ModuleTesting),1、测试内容,模块,模块接口测试,局部数据结构测试,重要路径测试,错误处理测试,边界条件测试,I/O参数值的个数、类型、次序、格式是否正确,I/O文件属性、操作是否正确等。,数据说明是否正确、一致,变量及其初值定义是否正确等。,检查“错误处理程序”本身的错误。,边界条件常包括循环边界,最大最小值、控制流中等于、大于、小于的比较值等。,重要路径通常是指完成模块功能的主要路径,一般是控制结构。,也称单元测试(unittesting),2、模块测试步骤,考虑到被测模块与其它模块的联系,因此测试时需要使用两类辅助模块来模拟其他模块。,驱动模块(driver)模拟主程序功能,用于向被测模块传递数据,接收、打印从被测模块返回的数据。,桩模块(stub)又称为假模块,用于模拟那些由被测模块所调用的下属模块功能。,一般,驱动模块比桩模块容易设计。但都是额外开销。测试方法以白盒法为主。,被测模块,驱动模块,桩模块,桩模块,桩模块,二、组装测试(IntegrationTesting),1、组装测试的任务确定模块组装方案,将经过测试的模块组装为一个完整的系统。组装方案分为渐增式及非渐增式。测试方法以黑盒法为主,按照组装方案进行测试。,也称为联合测试或集成测试,重点测试模块的接口部分,需设计测试过程使用的驱动模块或桩模块。,问题:渐增式与非渐增式各有何优、缺点?为什么通常采用渐增式?,2、渐增式组装测试,渐增式是先进行模块测试,然后将这些模块逐步组装成较大的系统,每连接一个模块进行一次测试。两种方案:,设计驱动模块或桩模块,对每一个新组装的子系统进行测试,对发现问题较多的子系统或模块应该用白盒法作回归测试。,自顶而下增值自底而上增值,自顶而下增值,M1,M4,M3,M2,M6,M5,程序模块示意图,S5,M1,S1,S1,S1,S2,S2,S2,S3,S3,S3,第一步,测试主控模块M1设计桩模块S1、S2、S3,模拟被M1调用的M2、M3、M4。,M2,M3,M4,第二步,依次用M2、M3、M4替代桩模块S1、S2、S3,每替代一次进行一次测试。,S4,S4,S4,S5,S5,第三步,对由主控模块M1和模块M2、M3、M4构成的子系统进行测试,设计桩模块S4、S5。,M5,M6,第四步,依次用模块M5和M6替代桩模块S4、S5,并同时进行新的测试。组装测试完毕。,自底而上增值,M3,M6,M5,D1,D2,D3,D1,D1,D2,D2,D3,D3,M2,M4,M1,第四步,把已测试的子系统按程序结构连接起来完成程序整体的组装测试。,D4,D4,D4,D5,D5,D5,M1,M4,M3,M2,M6,M5,程序模块示意图,第一步,对最底层的模块M3、M5、M6进行测试,设计驱动模块D1、D2、D3来模拟调用。,第三步,设计驱动模块D4、D5和D6模拟调用,分别对新子系统进行测试。,第二步,用实际模块M2、M1和M4替换驱动模块D1、D2、D3。,D6,深度优先与宽度优先,无论是自顶而下增值还是自底而上增值,还可选择深度优先或者宽度优先增值。,举例:按自顶而下增值法,写出下图中分别按照深度优先或者宽度优先增值的模块组装次序。,A,B,C,D,H,G,J,E,F,I,K,L,M,N,问题,(1)自顶而下增值与自底而上增值各有何优、缺点?(2)为什么在实际的组装测试中,都应该采用混合增值的方法?(3)请自己设计2-3个混合增值的测试方法。,确定集成过程的原则,自顶而下增值优点:能够尽早发现系统主控方面的问题。缺点:无法验证桩模块是否完全模拟了下属模块的功能。自底而上增值优点:驱动模块较容易编写桩模块,能够尽早查出底层涉及较复杂的算法和实际的I/O模块中的错误。缺点:最后才能发现系统主控方面的问题。,集成过程的原则尽早测试关键模块。尽早测试包含I/O的模块。,3、混合增值,常见的混合增值方案:衍变的自顶而下先自底而上集成子系统,再自顶而下集成总系统。,自底而上自顶而下增值对含有读操作的子系统采用自底而上。对含有写操作的子系统采用自顶而下。,回归测试在回归测试中自底而上,对其余部分(尤其是对修改过的子系统)采用自顶而下。,三、确认测试(validationtesting),1、任务又称为有效性测试或功能测试。其任务是验证系统的功能、性能等特性是否符合需求规格说明。,选择测试人员,选择测试用例,实际运行测试,软件计划,用户文档,开发文档,源程序文本,支持环境,有效性测试,软件配置审查,管理机构裁决,专家鉴定会,交用户,运行维护,测试报告,软件配置,2、确认测试步骤,(1)有效性测试制定测试计划,运用黑盒法,验证软件特性是否与需求符合。,(2)软件配置复查软件配置指软件工程过程中所产生的所有信息项:文档、报告、程序、表格、数据。随着软件工程过程的进展软件配置项(SCIsoftwareConfigurationItem)快速增加和变化。应复查SCI是否齐全。,(3)测试和测试,测试测试是指软件开发公司组织内部人员模拟各类用户行对即将面市软件产品(称为版本)进行测试,试图发现错误并修正。测试的关键在于尽可能逼真地模拟实际运行环境和用对软件产品的操作并尽最大努力涵盖所有可能的用户操作方式。测试经过测试调整的软件产品称为版本。紧随其后的测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用版本,并要求用户报告异常情况、提出批评意见。然后软件开发公司再对版本进行改错和完善。,四、系统测试(systemtesting),系统测试(SystemTesting)阶段产出1.计划系统测试计划2.设计系统方案(系统测试项和系统测试子项)3.实现系统测试用例4.执行测试报告概念:将已经集成好的软件系统,与其他系统元素结合在一起,在实际运行环境下,进行一系列的测试活动。目的:验证系统对需求的符合程度;对象:软硬件集成一起的系统,并尽可能地在实际运行环境与条件;常用类型:1、功能测试(针对软件质量中)“功能性”目的:根据产品的需求规格说明书和测试列表,验证产品的功能实现是否符合需求规格;关注点:功能是否遗漏功能实现是否满足用户需求和系统设计的隐性需求输入能否正确接受,输出结果是否正确测试方法:等价类、边界值、判定表、因果图、正交、状态迁移、流程分析2、性能测试“效率”目的:测试软件集成系统中运行的性能,度量系统相对于目标的差距;,3、压力测试(streeTesting)“效率、可靠性”目的:验证系统在其资源超负荷的情况下的表现(自我保护能力、可靠性),发现性能瓶颈、优化系统;4、容量测试(VolumeTesting)“效率”目的:验证系统在不同配置、

温馨提示

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

评论

0/150

提交评论