您好,欢迎访问三七文档
当前位置:首页 > 法律文献 > 理论/案例 > ISTQB基础知识:逻辑覆盖
ISTQB基础知识软件测试设计技术逻辑覆盖结构性(白盒)测试技术概述白盒测试设计技术(也称为结构化或基于结构的测试技术)是基于分析被测组件或系统的结构的测试技术。结构性测试方法的突出特征,是它们都是基于被测程序的源代码,而不是基于规约。结构性测试方法支持严格定义、数学分析和精确度量。常见形式的白盒测试包括各种覆盖和路径测试。对于判定覆盖,可以使用控制流图来形象表示每个判定之间的转换。这些测试方法的技术自20世纪70年代提出以来,应用相当广泛并已经实现了基于这些技术的非常成功的工具。结构测试的级别组件级别:软件组件的结构,比如:语句、判定、分支或每个不同的路径集成级别:结构可能是调用树(模块之间相互调用的图表)系统级别:结构可能是菜单结构、业务过程或WEB页面结构程序代码floatGetValue(floatA,floatB,floatX){if((A1)&&(B==0)){X=X/A;}if((A==2)||(X1)){X=X+1;}X=B+X;returnX;}intmain(intargc,char*argv[]){floatfNum1,fNum2,fNum3;printf(Pleaseinputthreefloatnumbers:\n);scanf(%f,%f,%f,&fNum1,&fNum2,&fNum3);fNum3=GetValue(fNum1,fNum2,fNum3);printf(ThefNum3=%f,fNum3);return0;}程序模块逻辑结构图A1&&B==0A==2||X1X=X/AX=X+1TrueTrueFalseFalseabedcX=B+XReturnX结构性(白盒)测试基本概念判定(分支)程序中的判断语句一条判定语句可能包括多个条件条件逻辑语句路径程序数据经过的程序语句组合可执行语句程序中可以实际操作的语句示例代码的路径和可执行语句4条路径:L1(a→c→e),简化为:aceL2(a→b→d),简化为:abdL3(a→b→e),简化为:abeL4(a→c→d),简化为:acd可执行语句X=X/AX=X+1X=B+XReturnX示例代码的判定和条件判定语句(A0)&&(B0)(A1)||(X1)条件A0B0A1X1结构性(白盒)测试特点白盒测试主要是检查程序的内部结构、逻辑、循环和路径。白盒测试的常用测试用例设计方法:逻辑覆盖基本路径测试根据覆盖测试的目标不同,逻辑覆盖可分为语句覆盖判定覆盖条件覆盖判定-条件覆盖条件组合覆盖路径覆盖逻辑覆盖法概述以程序的内部逻辑结构为基础的白盒测试用例设计技术要求测试人员对程序的内部结构非常熟悉经常由编写代码的程序员执行测试根据覆盖测试的目标不同,分为如下几种类型语句覆盖判定覆盖条件覆盖判定-条件覆盖条件组合覆盖路径覆盖语句覆盖概念语句覆盖就是设计若干个测试用例,运行所测程序,使得每一条可执行语句至少执行一次。评价一个测试用例套件中已经执行的可执行语句的百分比。测试用例输入数据A=2,B=0,X=4特点语句覆盖不能发现判断中逻辑运算中出现的问题例如,第一个判断中的&&写成||或者,第二个判断中的X1误写成X0利用上面的输入数据仍可覆盖可执行语句语句覆盖是最弱的逻辑覆盖语句覆盖率取决于被(设计或执行)用例覆盖的可执行语句数量除以被测代码中所有可执行语句数量。判定覆盖概念设计若干个测试用例,运行所测试程序,使得程序中每个判定的取真分支和取假分支至少经历一次。判定覆盖又称为分支覆盖判定覆盖率取决于被(设计或执行)的测试用例覆盖的所有判定出口数目除以被测代码中所有可能的判定出口数目。测试用例输入数据选择路径ace和abd,得到判定覆盖的测试用例A,B,XA1&&B==0A==2||X1执行路径2,0,3真真ace1,0,1假假abd判定覆盖测试用例输入数据选择路径acd和abe,得到判定覆盖的测试用例A,B,XA1&&B==0A==2||X1执行路径3,0,1真假acd2,1,1假真abe判定覆盖特点判定测试是控制流测试技术的一种方式,它在判定点产生一个专门的控制流。判定覆盖比语句覆盖更全面,100%的判定覆盖可以保证100%的语句覆盖,反之则不行。仅仅满足判定覆盖无法判定内部条件的错误例如,如果程序的第二个判定条件X1误写成X1,执行上述测试用例仍然能够通过。对于多出口判断(Case语句),判定覆盖要求每个判定获得每一种可能的结果至少一次条件覆盖概念设计若干个测试用例,运行所测试程序,使得程序中每个判定的每个条件的可能取值至少执行一次。条件分析第一个判定A1&&B==0包含了两个条件:A1及B==0,测试中应该考虑各种条件取值的情况A1为真,记作T1A1为假,记作-T1B==0为真,记作T2B==0为假,记作-T2第二个判定A==2||X1包含了两个条件:A==2及X1,测试中应该考虑各种条件取值的情况A==2为真,记作T3A==2为假,记作-T3X1为真,记作T4X1为假,记作-T4条件覆盖测试用例输入数据4个条件,8种可能覆盖了4个条件的全部8种情况,覆盖了两个判定的4个分支b,c,d,e,同时达到了条件覆盖和判定覆盖A,B,X覆盖条件覆盖分支执行路径2,0,3T1,T2,T3,T4ceace1,1,1-T1,-T2,-T3,-T4bdabd条件覆盖测试用例输入数据虽然满足了条件覆盖,但是只覆盖了第一个判定的取假分支和第二个判定的取真分支,不满足判定覆盖的要求A,B,X覆盖条件覆盖分支执行路径1,0,3-T1,T2,-T3,T4beabe2,1,1T1,-T2,T3,-T4beabe条件覆盖特点条件覆盖不一定满足判定覆盖判定覆盖也不一定满足条件覆盖为了解决这个问题,可以考虑采用判定-条件覆盖判定-条件覆盖概念设计足够的测试用例,运行所测试程序,使得程序中每个判定每个条件的可能取值至少执行一次,同时每个判定本身的所有可能判定结果至少执行一次。即要求各个判定的所有可能的条件取值组合至少执行一次特点某些条件掩盖了另外一些条件,所以采用判定-条件覆盖,逻辑表达式中的错误不一定能够查出来。对于条件A1&&B==0而言,如果A1为真,还要判断B==0,才能决定判定表达式的值;如果A1为假,则判定表达式的值为假,不再测试B==0的取值了,因此B==0就没有检查对于判定表达式A==2||X1,如果A==2为真,则判定表达式为真,条件X〉1就没有检查条件组合覆盖概念设计足够的测试用例,运行所测试程序,使得程序中每个判定的所有可能的条件取值组合至少执行一次。即要求各个判定的所有可能的条件取值组合至少执行一次。可满足语句和判定的覆盖。举例1)A1,B==0,T1,T22)A1,B0,T1,-T23)A=1,B==0,-T1,T24)A=1,B0,-T1,-T25)A==2,X1,T3,T46)A==2,X=1,T3,-T47)A2,X1,-T3,T48)A2,X=1,-T3,-T4条件组合覆盖测试用例A,B,X覆盖条件覆盖组合号执行路径2,0,3T1,T2,T3,T41)5)ace2,1,1T1,-T2,T3,-T42)6)abe1,1,1-T1,-T2,-T3,-T44)8)abd1,0,3-T1,T2,-T3,T43)7)abe说明:漏掉了路径acd,测试不完全路径覆盖概念设计足够的测试用例,运行所测试程序,覆盖程序中所有可能的路径。分支顺序、循环和条件等的影响都被考虑在内。序号A,B,X覆盖条件执行路径12,0,3T1,T2,T3,T4ace21,0,1-T1,-T2,-T3,-T4abd32,1,1-T1,-T2,-T3,T4abe43,0,3T1,T2,-T3,-T4acdMcCabe覆盖概念McCabe覆盖独立路径数计算公式V(G)=e-n+2pe-边数Edgen-节点数Nodep-连接区域数或最大的连接数(一般取p=1)说明从程序的环路复杂性导出程序基本路径集合中的独立路径条数,确定测试用例数量从源节点到汇节点的线性独立路径数V(G)=e-n+2p=10-7+2=5McCabe覆盖实例路径图ABCDEFGHIKJ开始结束独立路径数V(G)=e-n+2p=13-11+2=4谢谢观看
本文标题:ISTQB基础知识:逻辑覆盖
链接地址:https://www.777doc.com/doc-3843437 .html