软考考点之Mccabe度量计算及路径覆盖

McCabell:主要是度量程序的复杂度。

环形复杂度:度量程序的逻辑复杂度。描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。 
(1)流图中的区域数等于环形复杂度。 
(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。 
(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。 

这种环路度量法,计算的思路是这样的:它是考虑控制的复杂程度,即条件选择的分支繁杂程度。 

分别用三种方法来计算2道题 
第一题图到了c开始条件判断形成分支D,E;E这里又按条件来判断是否继续到F还是按一个自环做循环然后再到F,然后再回到B 
(1)流图中的区域数等于环形复杂度。 
注意区域块可以看作是按不同条件形成的数据操作分支块,比如橙色块就可以看做满足Z < t那条分支(下面那个图还要满足cond==true)处理的数据操作块,注意了,下面那个图G节点不是有个自环的循环吗?为什么那个循环不自成一块,而节点E的自环就要自成一块呢?你要这样理解:下图的G点不错是有自环,但是这个自环按MCCABE的理解对整个系统的复杂度没影响,其实就是没有形成分支,即数据到了G节点都要做循环,也就是说下图的G节点搞个自环是来干扰大家的,完全可以把它简化成上面图的G点。而E节点的自环注意有个条件P<=5,也就是说这个自环是条件判断的结果,也就是说对复杂度有影响所以不能忽略,假如这里把条件P<=5去掉,也就是说到了E节点先不管三七二十一先来做个循环再去判断然后再去到F的话那E点的自环也应该忽略。 
所以按区域划分:上图3块,下图4块。复杂度分别是:3,4 
(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。 
有了前面的分析,现在就好做了: 
上图:8-7+2=3 
下图:9-7+2=4(注意E不是10,因为G节点的自环弧线要忽略掉) 
(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。 
判断节点: 
上图:C,E,2个点,复杂度2+1=3 
下图:CED,3个点,复杂度3+1=4

如2016年上半年

第36题:采用McCabe度量法计算下图所示程序的环路复杂性为(36)。

答:从答题来看,就是数数的问题,先数有多少边12条,11个顶点,12-11+2=3. 

对路径覆盖概念不太了解:概念:

 如2016年下半年第32题:

以下所示流程图采用白盒测试进行测试,若满足路径覆盖,则至少需要()个测试用例。

 答:这种题,必须根据路径覆盖找出所有的不同的路径:

依次为:a b g j

             a b g h i j

             a c f g j

             a c f g h i j

            a c d e f  g j

            a c d e  f g h i j

一共有6条路径,所以得需要6个测试用例。

扩展:其他覆盖是什么概念呢?

语句覆盖

每个可执行语句都走一遍即可,即测试用例要覆盖所有的语句

判定覆盖(分支覆盖)

每个判断真假各取一次。

条件覆盖

针对判断语句里面案例的取值都要去一次,不考虑条件的取值

 

判定/条件覆盖

判定覆盖各条件覆盖交叉,针对于判定中的条件取值 

 

组合覆盖

判定-条件覆盖的加强版 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值