控制流图和圈复杂度
计算圈复杂度(独立路径数)的方法:1、流程图中区域的数量对应于环形的复杂性
2、流程图形G的圈复杂度V(G)为
V(G)=E-N+2
其中,E-是流程图形中的边数N-是流程图形中的节点数
3、流程图形G的圈复杂度V(G)为:
V(G)=P+1
其中,P是包含在流程图形中判断节点的数量。
void doWork(int x,int y,int z)
{
int k=0,j=0;
if((x>3) && (z<10))
{
k=x*y-1;
}
if((x==4) || (y>5))
{
j=x*y+10;
}
j=j/3;
}
请帮忙计算以上代码的圈复杂度(独立路径数)
小弟根据以上代码画出流程图并计算出圈复杂度为3
但这段代码的独立路径数有4条呀
请高手指点。。。
[ 本帖最后由 hnxt_hwj 于 2007-7-11 12:25 编辑 ] 总计4条如下:
1 (x>3) && (z<10) 1条
2 x==4 1条
3 y>5 1条
4 (x==4) || (y>5) 1条 谢谢楼主 错了
问题是不是错了啊
小弟自己画的控制流图算出的圈复杂度为3但是此题的独立路数有4条呀???
好象不对啊 用图形矩阵可快速算出圈复杂度:
圈复杂度=判定节点数+1;
if、for都算一个节点,if或for中如果有”||“时,则算为两个节点。 LZ归纳的独立路径错了吧。本来独立路径只有三条。
1 (x>3) && (z<10),(x==4) || (y>5) 1条
2 ~ (x>3) && (z<10) 1条
3 (x>3) && (z<10),~((x==4) || (y>5)) 1条
我觉得是这样。 貌似 真的不怎么对` 原帖由 hnxt_hwj 于 2007-6-28 13:56 发表 http://bbs.51testing.com/images/common/back.gif
计算圈复杂度(独立路径数)的方法:
1、流程图中区域的数量对应于环形的复杂性
2、流程图形G的圈复杂度V(G)为
V(G)=E-N+2
其中,E-是流程图形中的边数N-是流程图形中的节点数
3、流程图形G的圈复杂度V(G)为 ...
你好,请问什么是圈复杂度?用来干吗的?等等.可以给我说说吗
swallow_i@hotmail.com.谢谢 邮箱和MSN都是这个.这里回答也行.我很想知道 有5 原帖由 chenwei8295 于 2008-4-27 13:36 发表 http://bbs.51testing.com/images/common/back.gif
有5
如果判断中的条件表达式是由一个或多个逻辑运算符 (OR,AND, NAND,NOR)连接的复合条件表达式,则需要改为一系列只有单个条件的嵌套的判断。 :L 我已经晕了 圈复杂度=判定节点数+1
同意6,7楼 有5条啊 确实是5,4个谓词结点+1 你要先把控制流图画出来。
有很多人在画控制流图时,只是把条件简单地看成一个判定节点,而没有考虑条件的复合性。
关于画控制流图的问题,我以前也在论坛里请教过,好象都支支唔唔,很令我悲哀。
本题正确的控制流图应为:
1、环形复杂度
(1)区域数=5
(2)边数-节点数+2=10-7+2=5
(3)判定节点个数+1=4+1=5
2、基本路径集中独立路径条数=5,这个数目是测试用例的上界,即每一条边都走过,最多需设计5个测试用例,你能写出少于5个并能保证每一条边都走过也行。
3、独立路径集:
1)1-4-5-7
2)1-4-6-7
3)1-4-5-6-7
4)1-2-4-5-7
5)1-2-3-4-5-7
独立路径有些同志在数的时候,可能算出来有9条,还是请好好研究一下基本路径测试的含义吧:每一条边都走过就OK了。
4) ding起来 为什么没人发表意见?看晕了吗? ding si ta 顶
页:
[1]
2