您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 第07课白盒测试—逻辑覆盖测试
把程序看成装在一个透明的白盒子里,程序的结构和处理过程完全可见,按照程序的内部逻辑测试程序,以检查程序中的每条通路是否都能按照预先要求正确工作。第3章白盒测试方法2路径分析测试3分支条件测试、循环测试4其它测试类型5主要内容综合测试实例6黑盒测试与白盒测试1逻辑覆盖测试黑盒测试与白盒测试任何工程产品都可以使用白盒测试和黑盒测试两种方法之一进行测试。•1.黑盒测试黑盒测试:已知产品的功能设计规格和用户手册,可以进行测试证明每个功能是否实现、每个实现了的功能是否符合客户要求。软件的黑盒测试意味着测试要在软件的接口处进行,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书和用户手册,检查程序的功能是否符合它的功能说明,以及性能是否满足用户的要求。因此黑盒测试又叫功能测试或数据驱动测试。•2.白盒测试白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。软件的白盒测试是对软件的过程性细节做细致的检查,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试的基本概念什么是白盒测试把程序看成装在一个透明的白盒子里,程序的结构和处理过程完全可见,按照程序的内部逻辑测试程序,以检查程序中的每条通路是否都能按照预先要求正确工作。不可能进行彻底的白盒测试结论是:41+42+43+……+410,需要14秒左右的时间如果循环次数为20次,100次时,结果又如何?结论是:循环20次,需要约4072小时,循环100次则大约需要6.79*1047年左图是具有某程序的流程图,假设循环10次,请计算一下有多少条程序执行通路?假设由图中得到的所有路径都是可执行路径,执行一次循环大约需要10微秒(奔腾41.7G),且一年365天每天24小时不停机,请回答:如果循环次数为10的话,遍历图中所有路径需要多长时间?白盒测试的常用方法逻辑覆盖路径分析测试循环、条件分支…逻辑覆盖是以程序的内部逻辑结构为基础的测试用例设计技术,属于白盒测试。它要求测试人员十分清楚程序的逻辑结构,考虑的是测试用例对程序内部逻辑覆盖的程度。逻辑覆盖语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖路径覆盖弱强覆盖程度从低到高排列覆盖准则的作用说明用于描述在测试过程中,被测对象被测试的程度,有时候也称为软件测试覆盖准则或者测试数据完备准则,可以:1.作为测试停止的标准,用于衡量测试是否充分;2.作为选取测试数据的依据,满足相同覆盖准则的测试数据是等价的.逻辑覆盖例题入口A1ANDB=0TA=2ORX1TX=X/AX=X+1返回FF路径:P1(TT)P2(FF)P3(FT)P4(TF)程序如下:functionjs(floatA,floatB,floatX){if((A1)&&(B=0))X=X/A;if((A==2)||(X1))X=X+1;}1语句覆盖设计足够的测试用例,使得程序中的每个语句至少执行一次。1语句覆盖入口A1ANDB=0TA=2ORX1TX=X/AX=X+1返回FFABX用例1204输出路径:P1(TT)P2(FF)P3(FT)P4(TF)?第一个判断中的逻辑运算符“AND”若错写成了“OR”,能否测试出来?只包含了P1一条路径,所以语句覆盖的覆盖程度是最弱的3022判定覆盖设计足够的测试用例,使得在语句覆盖的基础上,程序中每个判定的取“真”分支和取“假”分支至少都执行一次,判定覆盖又称分支覆盖。2判定覆盖(分支覆盖)入口A1ANDB=0TA=2ORX1TX=X/AX=X+1返回FFABX用例1204用例2111?判定覆盖比语句覆盖强,但是仍不能保证判断条件的正确性。例如:第二个判断条件中的x>1若错写成了x<1,能否测试出来?还有其它可能吗?有!例如:301,211这两组用例路径:P1(TT)P2(FF)P3(FT)P4(TF)从定义上可知:判定覆盖包含了语句覆盖3条件覆盖设计足够的测试用例,在语句覆盖的基础上使得程序判定中的每个条件能获得各种可能的结果。3条件覆盖1T4T3T入口A1ANDB=0TA=2ORX1TX=X/AX=X+1返回FF将每一个条件都列出来:A1A=1B=0B!=0A=2A!=2X1X=12T4T3T2T1T3条件覆盖测试用例覆盖分支条件取值覆盖路径(204)(213)A1,B=0,A=2,X1P1(TT)(101)(101)A=1,B=0,A!=2,X=1P2(FF)(211)(212)A1,B!=0,A=2,X=1P3(FT)4,3,2,1TTTT4,3,2,1TTTT4,3,2,1TTTT3条件覆盖入口A1ANDB=0TA=2ORX1TX=X/AX=X+1返回FFABX用例1204用例2111ABX用例1103用例2211?是否满足判定覆盖?思考:判定覆盖和条件覆盖的关系4判定/条件覆盖同时满足判定覆盖的和条件覆盖的逻辑覆盖称为判定/条件覆盖。它的含义是:设计足够的测试用例,使得判定中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。4判定/条件覆盖判定/条件覆盖仍有缺陷。从表面上看,它测试了所有条件的所有可能结果,但事实上并不是这样。因为某些条件掩盖了另一些条件。例如,在逻辑表达式中,如果“与”表达式中某一条件为“假”,则整个表达式的值为“假”,这个表达式中另外的几个条件就不起作用了。同样地,如果在“或”表达式中,某一条件为“真”,则整个表达式的值为“真”,其它条件也就不起作用了。因此,采用判定/条件覆盖时,逻辑表达式中的错误不一定能测试出来。入口A1ANDB=0TA=2ORX1TX=X/AX=X+1返回FFABX用例1204用例21115条件组合覆盖设计足够的测试用例,使得每个判定中的条件的各种可能组合都至少出现一次。5条件组合覆盖可能的条件组合:(1)A>1,B=0(2)A>1,B≠0(3)A≤1,B=0(4)A≤1,B≠0(5)A=2,x>1(6)A=2,x≤1(7)A≠2,x>1(8)A≠2,x≤1相应的输入数据:A=2,B=0,x=4满足(1)和(5)A=2,B=1,x=1满足(2)和(6)A=1,B=0,x=2满足(3)和(7)A=1,B=1,x=1满足(4)和(8)显然,满足条件组合覆盖的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。5条件组合覆盖TESTCASES:A=2,B=0,x=4A=2,B=1,x=1A=1,B=0,x=2A=1,B=1,x=1入口A1ANDB=0TA=2ORX1TX=X/AX=X+1返回FF?请写出各测试用例的执行路径。然后考察是否覆盖了(TF)路径。6路径覆盖设计足够的测试用例,使程序中的每一条可能路径都至少执行一次。每条可能的路径都至少执行一次。入口A1ANDB=0TA=2ORX1TX=X/AX=X+1返回FF6路径覆盖Testcases:①A=1,B=1,X=1②A=1,B=1,X=2③A=3,B=0,X=1④A=2,B=0,X=4路径:P1(TT)P2(FF)P3(FT)P4(TF)习题1.在用白盒法设计测试用例时,常用的6种覆盖标准是语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖.假设A和B是两种覆盖准则,我们用包含,被包含,相同和互不包含来形容他们之间的关系:语句覆盖——判定覆盖语句覆盖——条件覆盖判定覆盖——条件覆盖判定覆盖——判定/条件覆盖判定/条件覆盖——条件组合覆盖练习一1.如图显示某程序的逻辑结构。试为它设计足够的测试用例,分别实现对程序的判定覆盖、条件覆盖和条件组合覆盖。覆盖种类需满足的条件测试数据期望结果判定覆盖A0,B=0A=2,B=0执行S1A0,B0或A0,B=0或A0,B0A=2,B=1或A=0,B=0或A=-1,B=1执行S2条件覆盖以下四种情况各出现一次A0B=0A=2,B=0执行S1A0B0A=-1,B=1执行S2条件组合覆盖A0,B=0A=2,B=0执行S1A0B0A=2,B=1执行S2A0,B=0A=-1,B=0执行S2A0,B0A=0B=1执行S2练习二在白盒测试用例设计中,有语句覆盖、分支覆盖、条件覆盖、路径覆盖等,其中(A)是最强的覆盖准则。为了对如下图所示的程序段进行覆盖测试,必须适当地选取测试用例组。若x,y是两个变量,可供选择的测试用例组共有Ⅰ、Ⅱ、Ⅲ、Ⅳ四组,如表中给出,则实现判定覆盖至少应采取的测试用例组是(B)或(C);实现条件覆盖至少应采取的测试用例组是(D);实现路径覆盖至少应采取的测试用例组是(E)或(F)。供选择的答案A:①语句覆盖②条件覆盖③判定覆盖④路径覆盖B~F:①Ⅰ和Ⅱ组②Ⅱ和Ⅲ组③Ⅲ和Ⅳ组④Ⅰ和Ⅳ组⑤Ⅰ、Ⅱ、Ⅲ组⑥Ⅱ、Ⅲ、Ⅳ组⑦Ⅰ、Ⅲ、Ⅳ⑧Ⅰ、Ⅱ、Ⅳ组解答:A.④B.⑤C.⑧D.④E.⑤F.⑧总结逻辑覆盖技术语句覆盖:每条语句至少执行一次判定覆盖:每个判定的每个分支至少执行一次条件覆盖:每个判定的每个条件应取到各种可能的值判定-条件覆盖:同时满足判定覆盖和条件覆盖条件组合覆盖:每个判定中各条件的每一种组合至少出现一次路径覆盖:使程序中每一条可能的路径至少执行一次发现错误能力由弱到强
本文标题:第07课白盒测试—逻辑覆盖测试
链接地址:https://www.777doc.com/doc-2152808 .html