语句覆盖逻辑覆盖测试方法 逻辑覆盖方法有哪些

语句覆盖  时间:2021-06-13  阅读:()

判定覆盖的概念

使设计的测试用例保证程序中每个判断的每个取值分支(t or f)至少经历一次 【优点】 判定覆盖具有比语句覆盖更强的测试能力,而且具有和语句覆盖一样的简单性,无需细分每个判定就可以得到测试用例。

【缺点】 往往大部分的判定语句是由多个逻辑条件组合而成(如,判定语句中包含AND、OR、CASE),若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。

什么叫逻辑覆盖,常用的逻辑覆盖方法有哪些,其区别是什么?(任取其三种来说明即可)

逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。

它属白盒测试。

语句覆盖 编辑本段 语句覆盖 SC(Statement Coverage),就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。

这里的“若干个”,意味着使用测试用例越少越好。

语句覆盖率的公式可以表示如下: 语句覆盖率=被评价到的语句数量/可执行的语句总数 x 100% 缺点:对程序执行逻辑的覆盖很低。











详细请参照原文: /ess/detail/52386.htm

逻辑覆盖的术语详解与举例

语句覆盖 SC(Statement Coverage),就是设计若干个测试用例,运行被测程序,使得程序中每一可执行语句至少执行一次。

这里的“若干个”,意味着使用测试用例越少越好。

语句覆盖在测试中主要发现缺陷或错误语句。

例如上边的Coverage类代码,从path a到path c再到path e的路径就是所有可执行的语句路径,所以选择path ace路径设计测试用例即可覆盖所有可执行语句。

语句覆盖率的公式:语句覆盖率=被评价到的语句数量/可执行的语句总数 x 100% 语句覆盖的缺点:对程序执行逻辑的覆盖很低。

判定覆盖DC(Decision coverage),有时也称分支覆盖,就是指设计若干测试用例,运行被测程序,使得每个判定的取真分支和取假分支至少评价一次。

例如上边的Coverage类代码,path ace,path abd,path abe,path acd 四条路径均是符合判定覆盖要求的路径。

判定覆盖的公式: 判定覆盖率=被评价到的判定分支个数/判定分支的总数X100% 判定路径覆盖率(DDP)=被评价到的判定路径数量/判定路径的总数X100% 判定覆盖的缺点:判定覆盖虽然把程序所有分支均覆盖到了,但其主要对整个表达式最终取值进行度量,忽略了表达式内部取值。

例如上边的Coverage类代码的第8行“if(A==2 or X>1)”, 当A==2或者X>1时都会执行第9行代码,判定覆盖只考虑整个“(A==2 or X>1)”表达式的取值,并没有考虑到表达式内部变量的取值(应该将A==2和X>1的情况均考虑)。

条件覆盖CC(Condition Coverage),设计足够多的测试用例,运行被测程序,使得每一判定语句中每个逻辑条件的可能取值至少满足一次。

条件覆盖率的公式:条件覆盖率=被评价到的条件取值的数量/条件取值的总数X100% 条件覆盖的缺点:只考虑到每个判定语句中的每个表达式,没有考虑到各个条件分支(或者涉及不到全部分支),即不能够满足判定覆盖 例如上边的Coverage类代码,判定语句有两个,分别是第3行和第8行代码。

根据条件覆盖的定义,则应考虑“(A>1 and B==0)”和“(A==2 or X>1)”两个表达式中的变量取值。

判定条件覆盖CDC(Condition/ Decision Coverage),设计足够多的测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果也至少出现一次。

判定条件覆盖率的公式: 条件判定覆盖率=被评价到的条件取值和判定分支的数量/(条件取值总数+判定分支总数) 例如上边的Coverage类代码,不仅考虑到path ace,path abd,path abe,path acd 四条分支路径(判定覆盖),也考虑到了“(A>1 and B==0)”和“(A==2 or X>1)”两个条件中的每个表达式的取值(条件覆盖)。

判定条件覆盖的缺点:没有考虑单个判定对整体结果的影响,无法发现逻辑错误。

补充:修正判定条件覆盖 修正判定条件覆盖单元的入口与出口必须至少被调用一次,程序中判断的每一个分支必须至少被执行一次。

对于程序中通过逻辑运算(AND,OR等)组成判断的基本布尔条件,每个条件必须取遍所有可能的值且每一个条件对判断的结果具有独立的作用。

条件组合覆盖,也称多条件覆盖MCC (Multiple Condition Coverage),设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次(以数轴形式划分区域,提取交集,建立最少的测试用例)。

这种方法包含了“分支覆盖”和“条件覆盖”的各种要求。

满足条件组合覆盖一定满足判定覆盖、条件覆盖、判定条件覆盖。

例如上边的Coverage类中第8行“if(A==2 or X>1)”代码,所有可能的条件组合为: “A==2,X>1”、“A==2,X<=1”和“A!=2,X>1”三种。

在条件覆盖中仅需考虑到这三种的一种即可,而在条件组合覆盖中需要都考虑到。

条件组合覆盖率的公式:条件组合覆盖率=被评价到的条件取值组合的数量/条件取值组合的总数 条件组合覆盖的缺点:判定语句较多时,条件组合值比较多。

路径覆盖,设计足够多的测试用例,执行程序所有可能的路径。

路径覆盖率的公式:路径覆盖率=被执行到的路径数/程序中总的路径数。

优点:路径覆盖是覆盖率最高的一种覆盖技术。

路径覆盖测试步骤: 1. 将程序流程图转换成控制流图; 2. 经过语法分析求的路径表达式; 3. 生成路径图; 4. 进行路径编码; 5. 经过译码得到执行的路径; 6. 通过路径枚举产生特定路径测试用例。

7. 修正的条件判断覆盖率(MC/DC) 每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次;程序的判定被分解为通过逻辑操作符(and,or)连接的bool条件,每个条件对于判定的结果值是独立的。

对于多分支的判定,什么覆盖要使每一个

程序1如下:   Function js(float A,float B,float X)   {   if(A>1&&B=0)X=X/A;   if(A=2||X>1)X=X+1;   }   程序2如下:   Void DoWork(int x,int y,int z)   {   int k=0,j=0;   if((x>3)&&(z<10))   {   k=x*y-1; ‘语句块1   j=sqrt(k);   }   if((x==4)||(y>5))   {j=x*y+10;} ‘语句块2   j=j%3; ‘语句块3   }   A、语句覆盖:语句覆盖使程序中每个语句至少都能够被执行一次。

  例如,在程序1中,为使程序中每个语句至少执行一次,只需设计一个能通过路径a-c-e的数据就可以了,例如选择输入数据为:A=2,B=0,X=3就可以达到“语句覆盖”标准。

  在程序2中,如测试用例输入为:x=4,y=5,z=5程序执行的路径是a-b-d。

  B、判定覆盖   比语句覆盖稍强的覆盖标准是判定覆盖。

按判定覆盖准则进行测试是指,设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足。

判定覆盖又称为分支覆盖。

  C、条件覆盖   再设计程序中,一个判定语句是由多个条件组合而成的复合判定。

  条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。

  D、条件判定组合覆盖   条件判定组合覆盖的含义是:设计足够的测试用例,使得判定中每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。

  E、多条件覆盖   多条件覆盖也成为条件组合覆盖,它的含义是:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。

显然满足多条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和条件判定组合覆盖的。

  级别太低,流程图插不上,汗....

逻辑覆盖测试方法 逻辑覆盖方法有哪些

1.语句覆盖。

这个是起码要做到的覆盖了,程序里的每条可执行的语句都要至少执行一次。

这个设计起来比较简单,用例数据很直观的就能看出来。

但是语句里的判定,分支等就没什么意义了。

可以说这样的测试是最低的要求了。

2.判定覆盖。

每个判断的真假分支至少执行一次,就是真要至少取一次,假要至少取一次。

这个设计起来也不难,覆盖率要比语句覆盖高近乎一倍,但是也在判定语句中也会遗漏许多路径,因为每个条件的取值是不在考虑范围内的。

3.条件覆盖。

和判定覆盖思路一样,只是把重点从判定移动到条件上来了,每个判定中的每个条件可能至少满足一次,也就是每个条件至少要取一次真的,再取一次假的。

同样它也会遗漏许多路径,条件取真假并不能满足判定也取到真假两次。

4.判定条件覆盖。

既然上面的判定和条件多是片面的,那么这个两个覆盖相结合是呼之欲出判定条件覆盖。

它要求判断中的每个条件所有可能至少出现一次,并且每个判定本身的判定结果也要出现一次。

不要以为这样就行了,要看看条件,条件和判定不一样,判定取真假就覆盖了判定,可是条件取真假两次完全不能满足条件的各种组合。

所以才有了5~。

5.条件组合覆盖。

每个判定中条件的各种可能组合至少满足一次。

条件各种可能都出现了,必然把判定给覆盖了,它覆盖了上面的4个哦,可是用例数量大大增加了!看项目情况定吧。

6.路径覆盖。

概念比较好理解,把所有可能路径至少都走一遍,但是用例数量可想而知le 白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。

其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。

Central美国65折优惠,美国达拉斯机房VPS季付赠送双倍内存

Central美国独立日活动正在进行中,旗下美国达拉斯机房VPS 65折优惠,季付赠送双倍内存(需要发工单),Central租用的Hivelocity的机房,只支持信用卡和加密货币付款,不支持paypal,需要美国独服的可以谨慎入手试试。Central怎么样?Central便宜服务器,Central自称成立于2019年,主营美国达拉斯机房Linux vps、Windows vps、专用服务器和托管...

bluehost32元/月,2核2G/20GB空间,独立ip,新一代VPS美国云主机!

bluehost怎么样?bluehost推出新一代VPS美国云主机!前几天,BlueHost也推出了对应的周年庆活动,全场海外虚拟主机月付2.95美元起,年付送免费的域名和SSL证书,通过活动进入BlueHost中文官网,购买虚拟主机、云虚拟主机和独立服务器参与限时促销。今天,云服务器网(yuntue.com)小编给大家介绍的是新一代VPS美国云主机,美国SSD云主机,2核2G/20GB空间,独立...

HostRound:美国达拉斯/洛杉矶/纽约/荷兰大硬盘服务器,1TB NVMe+4TB HDD,$179/月

hostround怎么样?大硬盘服务器,高防服务器。hostround,美国商家,2017年成立,正规注册公司(Company File #6180543),提供虚拟主机、VPS云主机、美国服务器、荷兰服务器租用等。现在有1款特价大硬盘独服,位于达拉斯,配置还不错,本月订购时包括免费 500Gbps DDoS 保护,有兴趣的可以关注一下。点击直达:hostround官方网站地址美国\荷兰独立服务器...

语句覆盖为你推荐
donghang东航的舱位分类?performclickC#中 键盘entre执行确定命令的代码是什么eagleeye《鹰眼》的男主角是谁?js后退多级页面间的后退如何实现(js方法)印度尼西亚国家代码印尼身份证号的编码规则是什么?(比如中国的1-6位是地址代码,7-14位是出生日期码等)币众筹众筹平台开发哪家好什么是生态系统什么是生态环境?微软操作系统下载微软原版xp系统下载网址是哪个啊?有没有免费就可以下载的?微信智能机器人有没有可以拉进微信群的聊天机器人微信智能机器人有没有微信自动聊天机器人
yaokan永久域名经常更换 免费域名注册网站 动态域名解析软件 naning9韩国官网 免费申请网页 高防dns diahosting 128m内存 网站监控 512au info域名 私有云存储 网通服务器ip 牛人与腾讯客服对话 英文站群 上海域名 165邮箱 vip购优惠 天翼云盘 linux使用教程 更多