收藏 分享(赏)

第3章-软件测试用例的设计2——白盒测试.ppt

上传人:无敌 文档编号:622314 上传时间:2018-04-15 格式:PPT 页数:58 大小:1.56MB
下载 相关 举报
第3章-软件测试用例的设计2——白盒测试.ppt_第1页
第1页 / 共58页
第3章-软件测试用例的设计2——白盒测试.ppt_第2页
第2页 / 共58页
第3章-软件测试用例的设计2——白盒测试.ppt_第3页
第3页 / 共58页
第3章-软件测试用例的设计2——白盒测试.ppt_第4页
第4页 / 共58页
第3章-软件测试用例的设计2——白盒测试.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

1、,第3章 软件测试用例的设计,2006-9-19,第3章 软件测试用例的设计, 黑盒测试 白盒测试 面向对象的测试用例设计,3.3白盒测试,什么是白盒测试呢? 白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。这一方法是把测试对象看作一个透明的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。,1: 路径测试,基本路径测试法是在程序控制流图的基础上,通过分析控制

2、构造的环路(圈)复杂性,导出基本可执行路径集合,从而设计测试用例的方法。,控制流图,控制流图主要由节点和边构成。,如何建立控制流图?1)确定程序的程序流程图2)程序流程图转化为控制流图转换的原则如下:控制流图中的每一个节点可以表示程序流程图中矩形框所表示的处理;菱形表示的两个甚至多个出口判断;多条流线相交的汇合点。,例:1 if a or b2 x3 else4 y,环形(圈)复杂度,定义:环形复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。独立路径:路径中包含一条在定义之前未曾用到的边。,环形复杂度的计

3、算方法方法一:流图中区域的数量对应于环形的复杂性;方法二:给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;方法三:给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。,路径测试方法应用举例,例:,Void Sort(intiRecordNum, int iType)12int x=0;3int y=0;4while (iRecordNum-0)56if(0= = iType)7x=y+2;8else9if(1= = iType)10x=y+10;11else12x=y+20;1314 ,第一步,画出程序的控制流图

4、。,第二步,计算环形复杂度,并确定独立路径。 V(G)=E-N+2=11-9+2=4。 路径1: 4-14; 路径2:4-6-7-14; 路径3:4-6-8-10-13-4-14; 路径4:4-6-8-11-13-4-14。,第三步,导出测试用例第四步,执行测试。,2:数据流测试,数据流测试的意义? 路径测试可以测试程序中所有的条件和语句块,但是,这也不能检测出程序中所有的错误。基于数据流的测试主要关注程序中数据的定义和使用,可以用于对基于控制流测试的补充。,1 定义/使用测试 首先要明确一个假设,数据流的假设还是和路径的假设一致,程序P的程序图(有向图)是一个单入口,单出口,并且不允许有从某

5、个结点到其自身的边。,a、DEF(v,n),定义结点。 int x;x=y+z。b、USE(v,n),使用结点 System.out.println(x)。c、P-use,当一个变量被用在分支语句的条件表达式中(如if和while语句),则称为变量的P-use。d、C-use,如果一个变量被用在赋值语句的表达式、输出语句中,被当作参数传递给调用函数,或被用在下标表达式中,则称为变量的C-use。其中,C表示“计算”。 y=x+1;function(x)e、定义使用路径(DU-path)开始节点是DEF(v,n),结束结点是USE(v,n)的路径。f、定义清除路径(DC-path),当开始结点和

6、结束结点中间没有其他的定义结点的时候为清除路径。,1 int x,y;/定义x,y2 float z;3 input(x,y);4 z=0;5 if(x!=0)6 z=z+y;7 else z=z-y;8 if(y!=0)9 z=z/x;10 else z=z*x;11 output(z);,变量的定义/使用节点,变量x的定义使用路径,变量y的定义使用路径,变量z的定义使用路径,“程序片”测试,“程序片”测试 程序片也叫程序切片,是一种程序分析和理解技术。 程序片是确定或影响某个变量在程序某个点上的取值的一组程序语句。典型的程序分片算法有Weiser的基于数据流方程的算法,无定型分片算法,Be

7、rgeretti的基于信息流关系的算法,基于程序依赖图的图形可达性算法,基于波动图的算法,参数化程序分片算法,并行分片算法,面向对象的分层分片算法等。,定义1 给定一个程序P和P中的一个变量集合V,变量集合V在语句n上的一个片,记做S(V,n),是P中对V中的变量值做出贡献的所有语句集合。定义2 给定一个程序P和一个给出语句及语句片段编号的程序图G(P),以及P 中的一个变量集合V,变量集合V在语句片段n上的一个片,记做S(V,n),是P中在n以前对V中的变量值作出贡献的所有语句片段编号的集合。,切片算法基本过程为:1)寻找语句n的变量v所直接数据依赖或控制依赖的节点;2)寻找这些新节点所直接

8、数据依赖或控制依赖的节点;3)一直重复下去,直到没有新节点加进来为止4)最后将这些节点按源程序的语句顺序排列,即为程序P的关于语句n的切片S。,将程序进行分片之后,可以集中注意力于感兴趣的程序部分,屏除不相关的部分。,程序分片的基本原则: 对所有的赋值定义节点建立片; 对谓词使用节点建立片; 对每一个变量建立片; 不要在不出现变量的语句节点上建立片; 使片具有可编译性。,3.4 逻辑覆盖,逻辑覆盖是通过对程序逻辑结构的遍历实现对程序的覆盖,它是一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试。根据覆盖目标的不同和覆盖源程序语句的详尽程度,逻辑覆盖可分为语句覆盖、判定(分支)覆盖、

9、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。,下一页,语句覆盖,语句覆盖是选择足够多的测试数据,使得程序中的每个可执行语句至少执行一次。,A=2,B=0,x=4,路径:ade,27,语句覆盖准则的优缺点:,【优点】 :可以很直观地从源代码得到测试用例,无须细分每条判定表达式。【缺点】 :由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件是无法测试的。如在多分支的逻辑运算中无法全面的考虑。语句覆盖是最弱的逻辑覆盖。,返回,判定(分支)覆盖,判定覆盖是设计足够多的测试用例,使得程序中的每一个判断至少获得一次“真”和一次“假”,即使得程序流程图中的每一个真假分支至少被执行一次。

10、,29,分支覆盖优缺点:,【优点】:分支(判定)覆盖具有比语句覆盖更强的测试能力。同样分支(判定)覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。【缺点】:往往大部分的分支(判定)语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。,返回,条件覆盖,条件覆盖要求设计足够多的测试用例,使得程序中每个判定表达式中的每个条件至少获得一次“真”和一次“假”。,31,条件覆盖优缺点:,【优点】:增加了对条件判定情况的测试,增加了测试路径。【缺点】:条件覆盖不一定包含分支(判定)覆盖。条件覆盖只能保证每个

11、条件至少有一次为真,而不考虑所有的判定结果。,返回,判定/条件覆盖,要求不仅每个复合谓词所包含的每一个原子谓词都至少获得一次“真”和一次“假”,而且每个复合谓词本身也至少获得一次“真”和一次“假”。即使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。,对于上例,两个判断中各包含两个条件,4个条件在两个判断中可能有8种组合:,判定/条件覆盖的优缺点,【优点】 :能同时满足判定、条件两种覆盖标准。【缺点】 :判定/条件覆盖准则的缺点是未考虑条件的组合情况。一些条件往往掩盖了另一些条件。 对于条件表达式(A1)&(B=0)来说,只要(A1)的测试为真,才需测试(B=

12、0)的值来确定此表达式的值,但是若(A1)的测试值为假时,不需再测(B=0)的值就可确定此表达式的值为假,因而B=0没有被检查。 逻辑表达式中的错误不一定能够检查出来。,返回,条件组合覆盖,条件组合覆盖要求设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。,(1)A1,B=0 属第一个判断的取真分支;(2)A1,B0 属第一个判断的取假分支;(3)A=1,B=0 属第一个判断的取假分支;(4)A=1,B0 属第一个判断的取假分支;(5)A2,x1 属第二个判断的取真分支;(6)A2,x=1 属第二个判断的取真分支;(7)A2,x1 属第二个判断的取真分支;(8)A2,x=1

13、 属第二个判断的取假分支。,返回,几种覆盖准则之间的区别及关系,3.5白盒测试策略,在软件开发过程的不同阶段,都可能需要进行白盒测试,根据实际的开发情况,可有选择的使用下面的白盒测试策略。,1:桌前检查桌前检查是在程序员实现特定功能后,进行单元测试之前,对源代码进行的初步检查。该项工作的参与人员为开发人员,重点检查编码、语句的使用等是否符合编码规范,并根据编码规范调整自己的代码以符合编码规范的要求。,2:单元测试单元测试也称作模块测试,在传统结构化程序中,以一个函数、过程为一个单元;在面向对象编程过程中,一般将类作为单元进行测试。该项工作的参与人员为专门的白盒测试人员。可采用白盒测试和黑盒测试

14、相结合的方法。,3:代码评审代码评审是在编码初期或编写过程中采用一种有同行参与的评审活动。该项工作需要所有开发小组共同参与,通过大家共同阅读代码或由程序编写者讲解代码,其他同行边听边分析问题的方法。共同查看程序,可以找出问题,使大家的代码风格一致或遵守编码规范。,4:同行评审在同行评审中,由软件产品创建者的同行们检查该工作产品,识别产品的缺陷,改进产品的不足。主要用于检验工作产品是否正确的满足了以往的工作产品中建立的规范,如需求或设计文档;识别工作产品相对于标准的偏差,包括可能影响软件可维护性的问题;向创建者提出改进建议;促进参与者之间的技术交流和学习等。根据CMM标准,该项工作的参与人员为程

15、序员、设计师、单元测试工程师、维护者、需求分析师、编码标准专家。至少需要开发人员,测试人员和设计师。,5:代码走查代码走查由测试小组组织或者专门的代码走查小组进行代码走查,这时需要开发人员提交有关的资料文档和源代码给走查人员,并进行必要的讲解。代码走查往往根据代码检查单来进行,代码检查单常常是根据编码规范总结出来的一些条目,目的是检查代码是否按照编码规范来编写的。当然,代码走查的最终目的还是为了发现代码中潜在的错误和缺陷。该项工作的参与者为测试人员。代码走查速度一般建议为:汇编代码与C代码 150行/小时,C+/Java 200-300行/小时。,6:静态分析静态分析通常需要辅助工具支持,通过

16、提取代码信息,进行统计,根据统计结果对源代码进行质量评估。代码规则检查也是静态分析的一个方面。该项工作的参与人员为测试小组。,桌面检查、代码走查、代码审查同时属于代码检查的方式。代码检查是发现错误缺陷最有效的手段之一,通常能发现30%-70%的逻辑设计和编码缺陷。可以发现的问题如:声明或引用错误、函数/方法参数错误、语句不可达错误、数组越界错误、控制流错误、界面错误和输入/输出流错误等。,3.6 案例分析佣金问题的数据流测试分析,佣金问题是数据流测试中广泛使用的一个经典案例,问题描述如下:前亚利桑那州境内的步枪销售商销售密苏里州制造商制造的步枪机(lock)、枪托(stock)和枪管(barr

17、el),机枪卖45美元,枪托卖30美元,枪管卖25美元。销售商每月至少要售出一支完整的步枪,而生产商的生产能力限制销售商在一个月内最多可销售70个步枪,80个枪托和90个枪管。每走访过一个城镇之后,销售商都要给密苏里军械厂发一封电报,汇报在这一城镇中销售枪机、枪托和枪管的数量。销售商月末会再发一封很短的电报,通知“*个枪机售出”。这样军械厂就知道当月的销售活动已经结束,可计算销售商应得的佣金了。,佣金计算方法如下:销售总额1000美元以下(含1000美元)部分的佣金为10%,1000至1800美元之间部分的佣金为15%,超过1800美元的部分的佣金为20%。佣金程序应该生成月份销售报表,汇总出

18、该销售人员当月枪机、枪托和枪管的销售总量、总销售额以及应得佣金。,输入数据处理部分;验证输入数据的有效性(同三角形问题和NextDate函数一样);销售额统计计算部分;佣金计算部分。,变量的定义使用节点,lockPrice、stockPrice和barrelPrice的定义使用路径,locks、stocks和barrels的定义使用路径,totalLocks的定义使用路径,sales的定义使用路径,佣金问题的程序片测试,例如:变量locks上的片划分为:S1:S(locks,13)=13;S2:S(locks,14)=13,14,19,20;S3:S(locks,16)=13,14,16,19,20;S4:S(locks,19)=19。变量stocks和barrels上的片划分为:S5:S(stocks,15)=13,14,15,19,20;S6:S(stocks,17)=13,14,15,17,19,20;S7:S(barrels,15)=13,14,15,19,20;S8:S(barrels,18)=13,14,15,18,19,20。,Thank You!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报