欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《测试技术基础》PPT课件.ppt

    • 资源ID:5547047       资源大小:5.34MB        全文页数:259页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《测试技术基础》PPT课件.ppt

    软件测试基础,第三章 测试技术基础,本章学习内容,黑盒测试 等价类划分法 边界值分析法 因果图法 决策表法白盒测试逻辑覆盖测试基本路径测试 测试用例设计,无法对程序进行完全测试(1)输入量太大,不可能测试程序对所有可能输入的响应。(2)输出结果太多(3)软件实现途径太多,不可能测试到程序每一条可能的执行路径(4)软件规格说明没有客观标准(5)不能采用逻辑来证明程序的正确性,假设一个程序P有输入量X和Y及输出量Z。在字长为32位的计算机上运行。若X、Y取整数,若进行穷举测试:可能采用的测试数据组:232232264 如果测试一组数据需要1毫秒,一年工作36524小时,完成所有测试需要5亿年。,给出一个小程序的流程图,它包括了一个执行20次的循环。包含的不同执行路径数达520条,对每一条路径进行测试需要1毫秒,假定一年工作36524小时,要想把所有路径测试完,需3170年。所以,无法对程序进行完全的测试。,分类按照是否需要执行被测软件的角度静态测试和动态测试按照测试是否针对软件内部结构和具体算法白盒测试和黑盒测试,软件测试方法,按照开发阶段单元测试集成测试确认测试系统测试验收测试按照测试实施组织计划开发方测试用户测试(测试)第三方测试,静态测试与动态测试静态测试定义不运行被测程序通过其他手段达到检测目的对被测程序进行特性分析方法的总称静态的检查程序代码、界面或文档中可能存在的错误的过程测试活动需求评审设计评审代码检查,1、代码检查 代码检查包括代码会审和走查。主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码逻辑表达的正确性,代码结构的合理性等方面。在实际使用中,代码检查比动态测试更为有效,可以发现30%70的逻辑设计和编码缺陷。,代码会审是由一组人通过阅读、讨论和争议对程序进行静态分析的过程。代码审查小组成员:组长能力较强的程序员待审程序的设计者或程序员测试专家,代码审查时应注意问题:提出的建议应针对程序本身,而不应针对程序员。程序员对整个审查过程采取积极和建设性的态度。,走查 走查是以小组为单元进行代码阅读的,同样也是一系列规程和错误检查技术的集合。人员组成一位经验丰富的程序员一位程序设计语言专家一位程序员新手一位其他不同项目的人员一位该软件编程小组的成员,必须修改的问题(3)程序没有注释程序=代码+注释注释语句/总代码行数=1/51/4子函数max没有返回值类型精度丢失问题建议修改的问题(3)main函数没有返回值类型和参数表(默认为void main(void)1行代码只定义1个变量。程序适当加一些空行程序中存在未使用的变量,#includemax(float x,float y)float z;z=xy?x:y;return(z);main()float a,b;int c,d;scanf(%f,%f,发现什么问题了吗?,/*程序名称:求两个实数中的大数作者:*版本:1.0创建时间:1.02007-09-10*/#includefloat max(float x,float y)/返回两个单精度数中的大数 float z;z=xy?x:y;return(z);void main(void)float a,b;float c;scanf(%f,%f,使用人工静态测试可以发现大约1/32/3的逻辑设计和编码错误。但是代码中仍会有隐藏的故障无法通过静态测试发现,因此除了静态测试方法外,还必须通过动态测试进行详细地分析。,动态测试定义运行被测程序输入测试用例对运行情况(输入与输出对应关系)分析测试活动单元测试集成测试系统测试用户验收测试,上例中,动态测试过程为:,静态测试和动态测试主要执行阶段,黑盒测试与白盒测试,检查程序各功能是否能实现检查功能错误又称为功能测试、数据驱动测试或基于规格说明的测试,黑盒测试,黑盒测试活动功能测试性能测试攻击测试特点黑盒测试与软件的具体实现过程无关黑盒测试用例的设计可以和软件实现同时进行能够找到大多数测试方法无法发现的错误,对于无法得到源代码的软件可以完成一定的测试,检查内部操作是否按规定执行各功能是否得到充分使用又称为结构测试、逻辑驱动测试或基于程序本身的测试,白盒测试,白盒测试活动语句覆盖分支覆盖判断覆盖条件覆盖判断/条件覆盖路径覆盖,两种测试方法从不同的角度出发反映了软件的不同侧面适用于不同的开发环境,黑盒测试,白盒测试,黑盒测试与白盒测试比较,黑盒、白盒、动态、静态测试之间关系只是从测试的不同角度分类同一个测试,都有可能属于这几种测试,他们之间还有包含交叉的关系 黑盒测试有可能是动态测试(运行程序,只看输入和输出),也可能是静态测试(不运行程序,只看界面)白盒测试有可能是动态测试(运行程序,分析代码结构),也可能是静态测试(不运行程序,只是静态查看代码),动态测试有可能是黑盒测试(运行程序,只看输入和输出),也可能是白盒测试(运行程序,分析代码结构)静态测试有可能是黑盒测试(不运行程序,只是查看界面),也可能是白盒测试(不运行程序,只是静态查看代码),总体关系图,测试总体关系图,问题:1、如果程序员为了确保是否能够满足功能需求而测试一个类,这属于黑盒测试还是白盒测试?2、如果非开发人员使用能够跟踪代码的测试工具来产生测试,以确保大部分代码都被执行到。只要软件没有被挂起或崩溃就认为测试通过了,这属于黑盒测试还是白盒测试?3、灰盒测试属于黑盒测试还是白盒测试?,黑盒测试,黑盒测试方法等价类划分边界值分析因果图错误推测功能图法等主要用于软件确认测试,经典问题:三角形问题与NextDate函数,三角形问题输入整数a、b、c,分别作为三角形的三条边,通过程序判断由三条边构成的三角形的类型为:等边三角形、等腰三角形、一般三角形,以及构不成三角形,必须满足的条件?输出情况是什么?,结论:三角形问题的复杂之处在于输入与输出之间的关系比较复杂。,NextDate函数是有三个变量month、day和year的函数输出为输入日期后一天的日期例如:输入为1986年6月9日,则该函数的输出应为1986年6月10日。,必须满足的条件?输出情况是什么?,结论:在NextDate函数中有两种复杂性的输入来源,一是输入域的复杂性,二是确定闰年的规则并要增加“额外天”。,等价类划分法,等价类划分法作为一种最为典型的黑盒测试方法,完全不考虑程序的内部结构,只根据程序要求和说明来进行测试用例的设计。是黑盒程序测试员必须掌握的一种测试方法,等价类划分法是把程序的输入域划分为若干部分,然后从每个部分中选取少数代表性数据当作测试用例,这些数据将能代表这一部分的全部数据。采用等价类划分方法进行测试用例的设计时,必须首先在分析需求规格说明的基础上划分等价类,列出等价表,从而确定出测试用例。,1、等价类的划分定义:在进行等价类划分之前,需要先从程序的功能说明书中找出各个输入条件,然后为每个输入条件划分两个或多个等价类,形成若干个互不相交的子集,称之为等价类。,等价类对于测试有两个重要的意义完备性整个输入域提供完备性无冗余性若互不相交则可保证无冗余性传统的等价类划分测试的实现分为两步进行一是确定等价类二是确定测试用例,划分等价类可分为两种情况:(1)有效等价类 是指对软件规格说明而言,是有意义的、合理的输入数据所组成的集合。利用有效等价类,能够检验程序是否实现了规格说明中预先规定的功能和性能。,(2)无效等价类 是指对软件规格说明而言,是无意义的、不合理的输入数据所构成的集合。利用无效等价类,可以鉴别程序异常处理的情况,检查被测对象的功能和性能的实现是否有不符合规格说明要求的地方。,划分等价类等价类的原则:(1)如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。,例如,在程序的规格说明中,对输入条件有一句话:“项数可以从1到999”则有效等价类是“1项数999”两个无效等价类是“项数1”或“项数999”。在数轴上表示成:,(2)如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类。例如,在C语言中对变量标识符规定为“以字母或下划线打头的串”。那么所有以字母或下划线打头的构成有效等价类,而不在此集合内(不以字母打头)的归于无效等价类。(3)如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。,(4)如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。这时可为每一个输入值确立一个有效等价类,并针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。例如,在教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理。因此可以确定4个有效等价类为教授、副教授、讲师和助教,一个无效等价类,它是所有不符合以上身分的人员的输入值的集合。,(5)如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。,例如,C语言规定“一个语句必须以分号;结束”。这时,可以确定一个有效等价类“以;结束”,若干个无效等价类“以:结束”、“以,结束”、“以 结束”等。,(6)如果规定了输入数据为整型,则可以划分出正整数、零和负整数等三个有效类。(7)如果程序的处理对象是表格,则应该使用空表,以及含一项或多项的表。,在确立了等价类之后,建立等价类表,列出所有划分出的等价类,如下表所示:,2、设计测试用例 在设计测试用例时,应同时考虑有效等价类和无效等价类测试用例的设计。根据已列出的等价类表可确定测试用例,具体过程如下:(1)首先为等价类表中的每一个等价类分别规定一个唯一的编号。,(2)设计一个新的测试用例,使它能够尽量覆盖尚未覆盖的有效等价类。重复这个步骤,直到所有的有效等价类均被测试用例所覆盖。(3)设计一个新的测试用例,使它仅覆盖一个尚未覆盖的无效等价类。重复这一步骤,直到所有的无效等价类均被测试用例所覆盖。,3、常见等价类划分测试形式针对是否对无效数据进行测试,可以将等价类测试分为标准等价类测试健壮等价类测试,标准等价类测试:不考虑无效数据值测试用例使用每个等价类中的一个值健壮等价类测试:主要的出发点是考虑了无效等价类对有效输入,测试用例从每个有效等价类中取一个值对无效输入,一个测试用例有一个无效值,其他值均取有效值,健壮等价类测试存在两个问题:需要花费精力定义无效测试用例的期望输出对强类型的语言没有必要考虑无效的输入,例如:现定义,输入变量x1和x2在下列范围内取值:ax1 d,区间a,b,(b,c),c,dex2 g,区间e,f,f,g 变量x1,x2的无效等价类分别为:x1d和x2g。,图31 标准等价类测试用例,图32 健壮等价类测试用例,4、等价类划分测试的实例实例1 三角形问题 分析:在多数情况下,是从输入域划分等价类的,但并非不能从被测程序的输出域反过来定义等价类,事实上,这对于三角形问题却是最简单的划分方法。在三角形问题中,有四种可能的输出:等边三角形、等腰三角形、一般三角形和非三角形。利用这些信息能够确定下列输出(值域)等价类。,R1=:边为a,b,c的等边三角形R2=:边为a,b,c的等腰三角形R3=:边为a,b,c的一般三角形R4=:边为a,b,c不能组成三角形,NextDate问题等价类表:,实例2:在某一Pascal语言版本中规定:“标识符是由字母开头,后跟字母或数字的任意组合构成。有效字符数为8个,最大字符数为80个。”,并且规定:“标识符必须先说明,再使用。在同一说明语句中,标识符至少必须有一个。”,用等价类划分的方法,建立输入等价类表,下面选取了9个测试用例,它们覆盖了所有的等价类:VAR x,T1234567:REAL;BEGIN x:=3.414;T1234567:=2.732;(1),(2),(4),(8),(9),(12),(14),VAR:REAL;(3)VAR x,:REAL;(5)VAR T12345678:REAL;(6)VAR T12345:REAL;(7)多于80个字符,VAR T$:CHAR;(10)VAR GOTO:INTEGER;(11)VAR 2T:REAL;(13)VAR PAR:REAL;(15)BEGIN PAR:=SIN(3.14*0.8)/6;,练习:用等价类划分方法找出有效等价类和无效等价类,并作出测试用例。某城市电话号码由三部分组成,内容如下:第一部分是地区码,地区码可以是空白或三位数字;第二部分是前缀为非零和非一开头的三位数;第三部分是后缀为四位数。,边界值分析法(BVA Boundary Value Analysis),边界值分析法“错误隐含在角落”(errors hide in the corner)白盒测试中也应用到了边界值的测试思想,它不是黑盒测试的专利,边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界,为什么使用边界值分析法?无数的测试实践表明,大量的故障往往发生在输入定义域或输出值域的边界上,而不是在其内部。因此,针对各种边界情况设计测试用例,通常会取得很好的测试效果。,比如,在做三角形计算时,要输入三角形的三个边长:A、B和C。我们应注意到这三个数值应当满足A0、B0、C0、A+BC、A+CB、B+CA,才能构成三角形。但如果把六个不等式中的任何一个大于号“”错写成大于等于号“”,那就不能构成三角形。,怎样用边界值分析法设计测试用例?(1)首先确定边界情况。通常输入或输出等价类的边界就是应该着重测试的边界情况。(2)选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值。,举例 常见的边界值对16-bit 的整数而言 32767 和-32768 是边界屏幕上光标在最左上、最右下位置报表的第一行和最后一行数组元素的第一个和最后一个循环的第 0 次、第 1 次和倒数第 2 次、最后一次,边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。,例:测试计算平方根的函数 输入:实数 输出:实数 规格说明:当输入一个0或比0大的数的时候,返回其正平方根;当输入一个小于0的数时,显示错误信息“平方根非法-输入值小于0”并返回0;库函数Print-Line可以用来输出错误信息。,等价类划分:可以考虑作出如下划分:输入(i)=0输出(a)=0 和(b)Error,测试用例有两个:输入4,输出2。对应于(ii)和(a)。输入-10,输出错误提示。对应于(i)和(b)。,边界值分析:划分(ii)的边界为0和最大正实数;划分(i)的边界为最小负实数和0。由此得到以下测试用例:输入 最小负实数 输入 绝对值很小的负数 输入 0 输入 绝对值很小的正数 输入 最大正实数,通常情况下,软件测试所包含的边界检验有几种类型:数字、字符、位置、质量、大小、速度、方位、尺寸、空间等 相应地,以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最长、空/满等情况下。,在多数情况下,边界值条件是基于应用程序的功能设计而需要考虑的因素,可以从软件的规格说明或常识中得到,也是最终用户可以很容易发现问题的。然而,在测试用例设计过程中,某些边界值条件是不需要呈现给用户的,或者说用户是很难注意到的,但同时确实属于检验范畴内的边界条件,称为内部边界值条件或子边界值条件。,内部边界值条件主要有下面几种:数值的边界值检验字符的边界值检验其它边界值检验,计算机是基于二进制进行工作的,因此,软件的任何数值运算都有一定的范围限制。,用边界值分析设计测试用例应遵循的原则:1、如果输入条件规定了取值范围,则应对该范围的边界内附近,恰好在边界和在边界外附近(无效等价类中)设计测试用例。如:规定15千克邮件收费2元,应对0.9,1,1.1,4.9,5,5.1千克设计测试用例。,2、如果输入条件规定了数据的个数,则应对最少个数,最多个数,比最少个数少1,比最大个数多1等情况设计测试用例。如:输入文件有1255个记录,则应分别设计0,1,255,256个记录的输入文件的测试用例。,3、针对规格说明中的每个输出条件使用前面的1和2原则。如:计算折扣量,最低折扣为0元,最高为1000元,则要设计使它们恰好产生0元或1000元的结果。以及负值或稍大于1000元的结果(如果可能的话)。,4、如果程序规格说明中提到的输入或输出域是个有序的集合(如顺序文件,线性表等)。应选有序集的第一个和最后一个元素作为测试用例,等价类和边界值方法的区别:(1)边界值不是从等价类中随便取一个数据作为代表,而是选一个或几个特定值,使这个等价类的每个边界都作为测试的目标。(2)边界值分析不仅要考虑输入条件,而且要考虑输出条件(输出等价类)。一般联合使用等价类划分和边界值分析两种方法。,2、边界值分析测试,采用边界值分析测试的基本思想是:故障往往出现在输入变量的边界值附近。因此,边界值分析法利用输入变量的最小值(min)、略大于最小值(min+)、输入值域内的任意值(nom)、略小于最大值(max-)和最大值(max)来设计测试用例。,边界值分析法是基于可靠性理论中称为“单故障”的假设,即有两个或两个以上故障同时出现而导致软件失效的情况很少,也就是说,软件失效基本上是由单故障引起的。,因此,在边界值分析法中获取测试用例的方法是:(1)每次保留程序中一个变量,让其余的变量取正常值,被保留的变量依次取min、min+、nom、max-和max。(2)对程序中的每个变量重复(1)。,例1:有两个输入变量x1(ax1b)和x2(cx2d)的程序F的边界值分析。测试用例如下:,例2:有二元函数f(x,y),其中x1,12,y1,31。则采用边界值分析法设计的测试用例是:,推论:对于一个含有n个变量的程序,采用边界值分析法测试程序会产生4n+1个测试用例。,练习:有函数f(x,y,z),其中x1900,2100,y1,12,z1,31的。请写出该函数采用边界值分析法设计的测试用例。,答案:,;,3、健壮性测试 健壮性测试是作为边界值分析的一个简单的扩充,它除了对变量的5个边界值分析取值外,还需要增加一个略大于最大值(max+)以及略小于最小值(min-)的取值,检查超过极限值时系统的情况。因此,对于有n个变量的函数采用健壮性测试需要6n+1个测试用例。,4、边界值分析举例(1)三角形问题的边界值分析测试用例设计边长时整数,下界1,上界100(2)NextDate函数的边界值分析测试用例1month12,1 day31,1912 year 2050健壮性测试用例,ATM提款功能:钱的面额只有100元,一天最多取3次,一次最多取2000元,一天最多取5000元。,因果图法,1、因果法(Cause/Effect Graphing)简介因果图法产生的背景:等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。,如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。,因果图法是基于这样的一种思想:一些程序的功能可以用判定表(或称决策表)的形式来表示,并根据输入条件的组合情况规定相应的操作。因果图法的定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。,因果图法也是一种黑盒测试技术,但是不如等价类、边界值那样常用“因”输入“果”输出因果图法比较适合输入条件较多的情况,测试所有的输入条件的排列组合,使用因果图法的优点:(1)考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系。(2)能够帮助测试人员按照一定的步骤,高效率的开发测试用例。(3)因果图法是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明存在的不完整性和二义性。,因果图的基本符号:通常情况下,左部的圆中写原因,右部的圆中写结果。两个圆中间以直线连接,连接线上再加符号表示因与果的不同关系。c1,c2,c3表示原因;e1表示结果。各结点表示状态,可取值“0”或“1”。“0”表示某状态不出现,“1”表示某状态出现,有以下四种逻辑关系。,因果图的逻辑关系,为了表示原因与原因之间,结果与结果之间可能存在的约束条件,在因果图中可以附加一些表示约束条件的符号。,因果图法最终生成的是决策表。利用因果图生成测试用例的基本步骤如下:(1)分析软件规格说明中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。(2)分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图。,(3)由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。(4)把因果图转换为决策表。(5)根据决策表中的每一列设计测试用例。,2、因果图法应用例子:某软件规格说明要求:第一个字符必须是#或*,第二个字符必须是一个数字,在此情况下进行文件的修改。如果第一个字符不是#或*,则给出信息N,如果第二个字符不是数字,则给出信息M。,例题分析:原因:C1第一个字符是#C2第一个字符是*C3第二个字符是一个数字结果:e1给出信息Ne2修改文件e3给出信息M,因果图表示,具有E约束的因果图表示,根据因果图建立的决策表,练习:用因果图法设计测试用例:,某规格说明规定:输入的第一列字符必须是A或B,第二列字符必须是一个数字。第一、二列都满足条件时执行操作H;如果第一列字符不正确,则给出信息L;如果第二列字符不正确,则给出信息R。根据上述要求画出因果图,并设计测试用例。,分析:原因:1第一列字符是A2第一列字符是B3第二列字符是一数字结果:21执行操作H22给出信息L23给出信息R,案例,奖金计算软件该软件可以计算某公司的年终奖,该公司员工分为普通员工和管理人员;员工表现分为普通、优秀和特殊贡献(普通、优秀员工都可以有特殊贡献,不同组合所得工资是不同的)根据员工的分类和表现,将奖金分为1类奖金,2类奖金,.,使用该软件时,输入员工的种类和表现,就会输出相应的奖金类别。请为该软件设计测试用例提示:这道题概括比较笼统,不涉及具体细节,只是一个总体的框架。,解题思路:(1)找到所有的输入条件(原因)和输出条件(结果),并为其编号输入条件员工类别:普通员工A1、管理人员A2员工表现:普通B1、优秀B2、特殊贡献B3输出条件奖金类别:1类奖金C1、2类奖金C2.,(2)分析输入条件之间的关系,根据需求我们知道,A1和A2是互斥的(一个人不可能既是普通员工又是管理人员),B1和B2是互斥的(一个人不可能既表现普通又表现优秀),B1和B3,B2和B3可以同时满足。由此分析,我们可以列出所有的输入条件排列组合:,普通员工A1+B1C1A1+B2 C2A1+B1+B3 C3A1+B2+B3 C4管理人员A2+B1C5A2+B2 C6A2+B1+B3 C7A2+B2+B3 C8,(3)根据对输入输出条件的分析,画出因果图,(4)根据对输入输出条件的分析,编写测试用例,决策表测试法1、决策表 在所有的黑盒测试方法中,基于决策表(也称判定表)的测试是最为严格、最具有逻辑性的测试方法。决策表的概念:决策表是分析和表达多逻辑条件下执行不同操作的情况的工具。,决策表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。决策表很适合于处理这类问题。,决策表通常由以下4部分组成:条件桩列出问题的所有条件 条件项针对条件桩给出的条件列出所有可能的取值动作桩列出问题规定的可能采取的操作动作项指出在条件项的各组取值情况下应采取的动作,构造决策表的5个步骤:(1)确定规则的个数。有n个条件的决策表有2n个规则(每个条件取真、假值)。(2)列出所有的条件桩和动作桩。(3)填入条件项。(4)填入动作项,得到初始决策表。(5)简化决策表,合并相似规则。,若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件。,下表是一张“阅读指南”的表单,读者对表中的问题,若回答肯定,标注“Y”,若回答否定,标注“N”,实际使用决策表时,需要简化,简化是以合并相似规则为目标,所以,若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。,2、决策表应用实例NextDate函数的决策表测试用例设计:问题分析:NextDate函数的三个变量之间在输入定义域中存在一定的逻辑依赖关系,由于等价类划分和边界值分析测试都假设了变量是独立的,如果采用上述两种方法设计测试用例,那么这些依赖关系在机械的选取输入值时可能会丢失。而采用决策表法则可以通过使用“不可能动作”的概念表示条件的不可能组合,来强调这种依赖关系。,说明:当决策表规模(指规则的数目,n个条件的决策表有2n个规则)较大时,可以通过扩展条目决策表(条件使用等价类)、代数简化表、将大表“分解”为小表等方法。,为了获得下一个日期,NextDate函数执行如下操作:如果输入日期不是当月最后一天,则把day变量的值加1;如果输入日期是111月份中某月的最后一天,则把day变量的值复位为1,month变量的值加1;如果输入日期是12月的最后一天,则day变量和month变量的值都复位为1,year变量的值加1。,关于最后一天的判断:如果是有31天的月份(1,3,5,7,8,10,12),day变量值为31;如果是有30天的月份(4,6,9,11),day变量值为30;如果是有29天的月份(闰年的2月),day变量值为29;如果是有28天的月份(非闰年2月),day变量值为28。,NextDate函数的动作桩和条件桩:根据所执行的操作,可列出NextDate函数的动作桩:a1:不可能;a2:day加1;a3:day复位;a4:month加1;a5:month复位;a6:year加1,考虑到决策表的规模,条件使用month、day、year变量的等价类,在以下等价类集合上建立决策表:对于month变量的取值:M1:month:month有30天;M2:month:month有31天,12月除外;M3:month:month是12月;M4:month:month是2月;,对于day变量的取值:D1:day:1day27;D2:day:day=28;D3:day:day=29;D4:day:day=30;D5:day:day=31;对于year变量的取值:Y1:year:year是闰年;Y2:year:year不是闰年,3、决策表的适用范围 决策表测试法适用于具有以下特征的应用程序:if-then-else逻辑突出;输入变量之间存在逻辑关系;涉及输入变量子集的计算;输入与输出之间存在因果关系。,适用于使用决策表设计测试用例的条件:规格说明以决策表形式给出,或较容易转换为决策表。条件的排列顺序不会也不应影响执行的操作。规则的排列顺序不会也不应影响执行的操作。当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。如果某一规则的条件要执行多个操作,这些操作的执行顺序无关紧要。,用决策表测试法测试以下程序:该程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1month12和1day31),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。例如,输入为2004年11月29日,则该程序的输出为2004年12月1日。,(1)分析各种输入情况,列出为输入变量month、day、year划分的有效等价类。(2)分析程序规格说明,结合以上等价类划分的情况给出问题规定的可能采取的操作(即列出所有的动作桩)。(3)根据(1)和(2),画出简化后的决策表。,案例分析:month变量的有效等价类:M1:month=4,6,9,11 M2:month=1,3,5,7,8,10M3:month=12M4:month=2,day变量的有效等价类:D1:1day26D2:day=27D3:day=28D4:day=29D5:day=30D6:day=31,year变量的有效等价类:Y1:year是闰年Y2:year不是闰年,考虑各种有效的输入情况,程序中可能采取的操作有以下六种:a1:day+2 a2:day=2a3:day=1 a4:month+1a5:month=1a6:year+1,例子:在一款招生管理系统中,有一个计算加分的小功能。加分的政策是:“如果考生属于少数民族,加5分;如果考生是体育特长生,加5分;如果考生具备了前两项加分条件,为了保持公正,加8分(而不是加10分)。”,白盒测试,白盒测试方法程序结构分析测试逻辑覆盖测试基本路径测试 白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。,白盒测试法检查程序内部逻辑结构,对所有逻辑路径进行测试,是一种穷举路径的测试方法。但即使每条独立路径都测试过了,仍然可能存在错误,因为:(1)穷举路径测试无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序。(2)穷举路径测试不可能查出程序因为遗漏路径而出的错误。(3)穷举路径测试发现不了一些与数据相关的错误,采用白盒测试方法必须遵循以下几条原则,才能达到测试的目的:(1)保证一个模块中的所有独立路径至少被测试一次。(2)所有逻辑值均需测试真(true)和假(false)两种情况。(3)检查程序的内部数据结构,保证其结构的有效性。(4)在取值上下边界,即可操作范围内运行所有循环,白盒测试的基本概念,1、控制流图 控制流图(可简称流图)是对程序流程图进行简化后得到的,它可以更加突出的表示过程控制流的结构。控制流图中包括两种图形符号:节点和控制流线。,节点由带标号的圆圈表示,可代表一个或多个语句、一个处理框序列和一个条件判定框(假设不包含复合条件)。控制流线由带箭头的弧或线表示,可称为边。它代表程序中的控制流。包含条件的节点被称为判断节点,由判断节点发出的边必须终止于某一个节点,由边和节点所限定的范围被称为区域。,常见结构的控制流图:,对于复合条件,则可将其分解为多个单个条件,并映射成控制流图,如下图所示:,流程图转化为控制流图例子(a)是一个含有两个出口判断和循环的程序流程图,我们把它化简成(b)的形式,流程图转化为控制流图例子:,2、环形复杂度环形复杂度(也称为圈复杂度)是一种为程序逻辑复杂度提供定量尺度的软件度量。环形复杂度的应用可以将环形复杂度用于基本路径方法,它可以提供:程序基本集的独立路径数量;确保所有语句至少执行一次的测试数量的上界,独立路径是指程序中至少引入了一个新的处理与集合或一个新条件的程序通路独立路径必须至少包含一条在本次定义路径之前不曾用过的边注意:测试可以被设计为基本路径集的执行过程,但基本路径集通常并不唯一,环形复杂度以图论为基础,为我们提供了非常有用的软件度量。可用如下三种方法之一来计算环形复杂度:(1)控制流图中区域的数量对应于环形复杂度。,(2)给定控制流图G的环形复杂度V(G),定义为 V(G)=E-N+2 其中,E是控制流图中边的数量,N是控制流图中的节点数量。,(3)给定控制流图G的环形复杂度V(G),也可定义为 V(G)=P+1 其中,P是控制流图G中判定节点的数量。,3、矩阵图矩阵图为便于在机器上表示和处理控制流图,我们可以把它表示成矩阵的形式,称为控制流矩阵图控制流图的矩阵表示形式其维数等于控制流图的节点数矩阵中的每列和每行都对应于标识的节点,矩阵元素对应于节点间的边,如果在控制流图中从第 i 个结点到第 j 个结点有一个标识为 x 的边相连接,则在对应矩阵图的第 i 行第 j 列有一个非空的元素 x。,例:,控制流图,流图对应的矩阵图,1,2,3,4,5,1,2,3,4,5,白盒测试作为结构测试方法,是按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作,因此需要采用适当的逻辑覆盖测试方法来完成。,逻辑覆盖测试方法,测试覆盖率:用于确定测试所执行到的覆盖项的百分比。其中的覆盖项是指作为测试基础的一个入口或属性,比如语句、分支、条件等。测试覆盖率可以表示出测试的充分性,在测试分析报告中可以作为量化指标的依据,测试覆盖率越高效果越好。但覆盖率不是目标,只是一种手段。,测试覆盖率包括功能点覆盖率和结构覆盖率:功能点覆盖率大致用于表示软件已经实现的功能与软件需要实现的功能之间的比例关系。结构覆盖率包括语句覆盖率、分支覆盖率、循环覆盖率、路径覆盖率等等。,1、逻辑覆盖测试方法介绍,根据覆盖目标的不同,逻辑覆盖又可分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。例如:程序If(A1,L1(a c e)=(A1)and(B=0)and(A=2)or(X/A1)=(A1)and(B=0)and(A=2)or(A1)and(B=0)and(X/A1)=(A=2)and(B=0)or(A1)and(B=0)and(X/A1),L2(a b d)=not(A1)and(B=0)and not(A=2)or(X1)=not(A1)or not(B=0)and not(A=2)and not(X1)=not(A1)and not(A=2)and not(X1)or not(B=0)and not(A=2)and not(X1)=not(A1)and not(X1)or not(B=0)and not(A=2)and not(X1),L3(a b e)=not(A1)and(B=0)and(A=2)or(X1)=not(A1)or not(B=0)and(A=2)or(X1)=not(A1)and(A=2)or not(A1)and(X1)or not(B=0)and(A=2)or not(B=0)and(X1),L4(a c d)=(A1)and(B=0)and not(A=2)or(X/A1)=(A1)and(B=0)and not(A=2)and not(X/A1),(1)语句覆盖,语句覆盖就是设计足够多个测试用例,运行被测程序,使得每一可执行语句至少执行一次。在图例中,正好所有的可执行语句都在路径L1上,所以选择路径L1设计测试用例,就可以覆盖所有的可执行语句。,测试用例如下:,图 被测试模块的流程图,A=2B=0X=4,(2)判定覆盖,判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。判定覆盖又称为分支覆盖。每个语句+每个判定的每个分支,对于图例,如果选择路径L1和L2,就可得满足要求的测试用例:【(2,0,4),(2,0,3)】覆盖 ace【L1】【(1,1,1),(1,1,1)】覆盖 abd【L2】如果选择路径L3和L4,还可得另一组可用的测试用例:,【(2,1,1),(2,1,2)】覆盖 abe【L3】【(3,0,3),(3,0,1)】覆盖 acd【L4】,图 被测试模块的流程图,A=3,B=0,X=3A=2,B=1,X=1,(3)条件覆盖,条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。,在图例中,我们事先可对所有条件的取值加以标记。例如,对于第一个判断:条件 A1 取真为,取假为 条件 B0 取真为,取假为对于第二个判断:条件 A2 取真为,取假为 条件 X1 取真为,取假为,T4,测试用例 覆

    注意事项

    本文(《测试技术基础》PPT课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开