起航学习网

- 让每个人都能学到最前沿新知识、新技能!
起航学习网
当前位置: 起航学习网 > 人在职场 > 深圳软件开发测试系列之QAERS必知的白盒测试覆盖率问题

深圳软件开发测试系列之QAERS必知的白盒测试覆盖率问题

时间:2021-05-02 15:46:32来源:深圳软件开发测试培训学校 作者:软件开发测试培训网 已有: 名学员访问该课程

前言: 一、覆盖率的概念 覆盖率是用来度量测试完整性的一个手段,现在有越来越多的测试工具能够支持覆盖率测试,但是

一、覆盖率的概念

覆盖率是用来度量测试完整性的一个手段,现在有越来越多的测试工具能够支持覆盖率测试,但是它们本身并不包含测试技术,只是测试技术有效性的一个度量。白盒测试中经常用到的覆盖率是逻辑覆盖率。

二、覆盖率的目的

覆盖率对于软件开发测试有着非常重要的作用,通过覆盖率我们可以知道我们的测试是否充分,我们测试的弱点在哪些方面,进而指导我们设计能够增加覆盖率的测试用例,有效的提高测试质量。 一方面覆盖率技术可以指导测试用例的设计;另一方面,可以通过覆盖率来衡量白盒测试的力度。

三、逻辑覆盖率主要有以下六种:

(1)语句覆盖;

(2)判定覆盖;

(3)条件覆盖;

(4)判定条件覆盖;

(5)条件组合覆盖;

(6)路径覆盖。

1、语句覆盖(Statement Coverage)

语句覆盖的含义是,在测试时,运行被测程序后,程序中被执行到的可执行语句的比率。 语句覆盖=(至少被执行一次的语句数量)/可执行的语句总数。 *语句覆盖是最弱的一种覆盖方式。

2、判定覆盖(Decision Coverage)

判定覆盖也叫分支覆盖(Branch Coverage),含义是:在测试时,运行被测程序后,程序中所有判断语句的取真分支和取假分支被执行到的比率。 判定覆盖=(判定结果被评价的次数)/判定结果的总数。

3、条件覆盖(Condition Coverage)

条件覆盖的含义是:在测试时,运行被测程序后,所有判断语句中每个条件的可能取值(真值和假值)出现过的比率。 条件覆盖=(条件操作数值至少被评价一次的数量)/(条件操作数值得总数)

4、判定条件覆盖(Decision Condition Coverage)

判定条件覆盖也叫分支条件覆盖(Branch Condition Coverage)它的含义是:在测试时,运行被测程序后,所有判断语句中每个条件的所有可能值(为真为假)和每个判断本身的判定结果(为真为假)出现的比率。 判定条件覆盖=(条件操作数值或判定结果至少被评价一次的数量)/(条件操作数值总数+判定结果总数) *判定条件覆盖率实际上就是判定覆盖率和条件覆盖率的组合。

5、条件组合覆盖(Condition combination coverage)

条件组合覆盖的含义是,在测试时,运行被测程序后,所有语句中子条件所有可能的取值结果组合出现过的比率。 条件组合覆盖=(至少被执行到一次的条件组合)/总的可能的条件组合数。 *条件组合覆盖是除路径覆盖以外,最强的一种覆盖方式。

6、路径覆盖(Path Coverage)

路径覆盖的含义是:在测试时,运行被测程序后,程序中所有可能的路径被执行过的比率。 路径覆盖=(至少被执行到一次的路径数)/总的路径数。

四、总结五种逻辑覆盖率。

1、语句覆盖是最弱的一种覆盖方式。

2、条件组合覆盖是除路径覆盖以外,最强的一种覆盖方式。

3、百分百的条件组合覆盖一定包含:百分百的语句覆盖、百分百的判定覆盖、百分百的条件覆盖以及百分百的判定条件覆盖;但不一定包含百分百的路径覆盖。

4、百分百的判定覆盖(分支覆盖)一定包含:百分百的语句覆盖。

5、百分百的条件覆盖不一定包含:百分百的语句覆盖。

五、举例说明。

软件开发测试系列--白盒测试覆盖率的问题

范例一:

1、分析图1(被测程序流程图)

(1)语句:有两条语句,分别为,X=X/A 和 X=X+1。

(2)判定:有两个判定,分别为(A>1)AND(B=0) 和 (A=2)OR(X>1);这两个判定,分别都有两种可能,true或者false,图中我们用F或者T来表示,所以说这个流程中判定结果的总数为四。

(3)条件:每个判定里面都包含了两个子条件,每个子条件都有两种可能性,true或者false,图中我们分别用T1 F1;T2 F2…来表示,每个判定里面就有四种可能,这样,这个流程图中的条件操作数值的总数为八。

(4)判定条件:判定条件覆盖率实际上就是判定覆盖率和条件覆盖率的组合。

(5)条件组合:上面我们在条件里面提到过的,每个判定里面都包含了两个子条件,每个子条件都有两种可能性,true或者false,图中我们分别用T1、F1、T2、F2…来表示,但是和条件覆盖不一样的是,每个子条件里面的两种可能性(T或者F)都要进行两两组合,即进行排列组合,那么,条件组合的总数为八种组合。分别为:T1T2,F1F2,T1F2,F1T2;T3T4,F3F4,T3F4,F3T4.

【 这个时候大家不能混淆这两个概念,只是因为2个判定比较特殊而已,因为2乘以2和2的2次方是相等的,条件里面是八种条件,而条件组合里面是八种组合。如果一个判定里面有三个子条件的话,这一个判定里面的条件总值就成为2乘以3;而条件组合就是2的3次方。】

(6)路径:图1中路径共有四条,即:abd,ace,abe,acd。

2、给出用例,计算以上六种覆盖率的值

执行CASE:A=2;B=1;X=3。

在计算覆盖率之前,我们首先要看判定中的子条件在做什么运算,第一个判定中,这两个子条件在做与运算,(一个假即为假)。第二个判定中,这两个子条件在做或预算,(一个真即为真)。

(1)语句覆盖率:1/2 (50%)

分析:第一个判定中子条件的值为T1、F2(一真一假),所以我们走F这条分支,此时X=X/A这条语句没有被执行到;接下来,我们看第二个判定,它的子条件的值为T3、T4(都为真),所以我们走T这条分支,这时,语句X=X+1这条语句被执行到了。也就是说,我们只执行到一条语句,所以语句覆盖率位1/2。

(2)判定覆盖率:2/4 (50%)

分析:我们刚才在分析语句覆盖的时候,我们提到第一个判定语句走的是F分支,第二个判定语句也的是T分支,所以我们共走了两条分支,分支总数为4,所以判定覆盖率为:2/4。

(3)条件覆盖率:4/8 (50%)

第一个判定中子条件的值为T1、F2;第二个判定的子条件的值为T3、T4。也就是说我们执行到的条件总数为4;总共的条件操作总值为8,所以条件覆盖率为:4/8。

(4)判定条件覆盖率:6/12 (50%)

前面我们已经分析过了,判定条件覆盖率实际上就是判定覆盖率和条件覆盖率的组合,所以判定条件覆盖率就等与,2/4 (判定覆盖率)+ 4/8(条件覆盖率)=6/12(注意,这里的“+”代表的是组合,而不是算数相加,所以是分子分母分别相加即可)。

(5)条件组合覆盖率:2/8 (25%)

同样的,在条件覆盖率分析中我们已经提到过了,第一个判定中子条件的组合为T1F2;第二个判定的子条件的组合为T3T4,也就是说我们执行到了两种组合;我们在分析流程图的时候已经提到过,总的可能的条件总数为八种组合,所以说条件组合覆盖率为:2/8。

(6)路径覆盖率:1/4 (25%)

在流程图分析中我们已经提到,路径共有四条,而我们走到的路径为只有abe一条,所以路径覆盖率为:1/4。

范例二:

被测程序流程图还是上面范例一的图1。

执行case1:A=2,B=0,X=3; 执行case2:A=1,B=0,X=1。

计算这两种情况下的6种覆盖率。

(1)语句覆盖率:2/2 (100%)

case1:第一个判定中子条件的值为T1、T2(都为真),所以我们走T这条分支,执行到X=X/A这条语句;接下来,第二个判定,它的子条件的值为T3、T4(都为真),所以我们走T这条分支,这时,语句X=X+1这条语句被执行到了。也就是说,我们把两条语句都执行到了,所以语句覆盖率位2/2。 所以说case1这一条用例就可以到达100%的语句覆盖,我们就不用再去执行case2了。

(2)判定覆盖率:4/4 (100%)

case1:我们刚才在分析语句覆盖的时候,我们提到第一个判定语句走的是T分支,第二个判定语句走的也是T分支; case2:第一个判定语句中子条件的值为F1、T2,所以我们走F分支;第二个判定语句中子条件的值为F3、F4,所以我们依然走F分支; 上面两个用例把我们两个判定中的4个分支都执行到了,所以判定覆盖率为4/4(100%)。

(3)条件覆盖率:7/8(100%)

case1:第一个判定语句中子条件的值为T1、T2,第二个判定条件中子条件的值为T3、T4; case2:第一个判定语句中子条件的值为F1、T2,第二个判定条件中子条件的值为F3、F4; 这两个用例执行了七种条件,F2没有执行到,所以条件覆盖率为:7/8(100%)。

(4)判定条件覆盖率:11/12。

判定条件覆盖率=判定覆盖率和条件覆盖率的组合 = 4/4 + 7/8 = 11/12。

(5)条件组合覆盖率:4/8 (50%)

case1:第一个判定语句中子条件的组合为T1T2,第二个判定条件中子条件的组合为T3T4; case2:第一个判定语句中子条件的组合为F1T2,第二个判定条件中子条件的组合为F3F4; 我们可以看出:这两个用例只执行到八种组合中的四种组合,所以条件组合覆盖率为4/8(50%)。

(6)路径覆盖率:2/4(50%)

case1:在这条用例中我们所执行到的路径为:ace。 case2:在这条用例中我们所执行到的路径为:abd。 这两条用例执行到两条路径(ace和abd),还有两条路径(abe和acd)没有执行到,所以路径覆盖率为2/4(50%)。

软件开发测试人才四大魅力元素

——就业竞争小

——高薪没商量

——就业质量高

——无性别歧视

套用狄更斯那句话说:对于急需软件开发测试人员的企业来说,这是一个最坏的时代,但对软件开发测试人才来说,这是一个最好的时代。“随着软件市场的成熟,人们对软件作用的期望值也越来越高,软件的质量和功能可靠性也正逐渐成为人们关注的焦点。”

文章出自:http://www.epx365.cn/jyzn/202179541.html

文章标题:深圳软件开发测试系列之QAERS必知的白盒测试覆盖率问题



免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉

(责任编辑:深圳学历教育网)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
培训学校
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员 用户级别:10 机构名称:IT培训网 联 系 人:罗老师 联系电话:13783581536 联系手机:13783581536 在线客服:起航学习网客服 在 线 QQ:起航学习网客服 电子邮件: 网站域名:http://www.cnitedu.cn 注册时间:2016-07-18 11:07 最后登录:2021-05-02 14:05