google搜索 51Testing站内搜索                    软件测试门户 | 软件测试培 训 | 文章资料精选 | 软件测试论坛 | 软件测试博客 | 测试招聘求职 
打印

[求助] 控制流图和圈复杂度

控制流图和圈复杂度


计算圈复杂度(独立路径数)的方法:
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 编辑 ]

TOP





总计4条如下:
1 (x>3) && (z<10)    1条
2 x==4                    1条
3 y>5                      1条
4 (x==4) || (y>5)    1条
软件测试兼职,组建在线测试团队http://chinatest.5d6d.com/

TOP

谢谢楼主

TOP

错了

TOP

问题是不是错了啊


小弟自己画的控制流图算出的圈复杂度为3
但是此题的独立路数有4条呀???


好象不对啊
我的世界因为有你而精彩!!!!

http://blog.51testing.com/index.php?uid/84226

TOP

用图形矩阵可快速算出圈复杂度:
圈复杂度=判定节点数+1;
if、for都算一个节点,if或for中如果有”||“时,则算为两个节点。

TOP

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条
我觉得是这样。

TOP

貌似 真的不怎么对`
走牛X的路,让傻X说去吧.....
走自己的路,让别人打的去吧.....
走别人的路,让别人无路可走....

TOP

引用:
原帖由 hnxt_hwj 于 2007-6-28 13:56 发表
计算圈复杂度(独立路径数)的方法:
1、流程图中区域的数量对应于环形的复杂性
2、流程图形G的圈复杂度V(G)为
     V(G)=E-N+2
其中,E-是流程图形中的边数  N-是流程图形中的节点数
3、流程图形G的圈复杂度V(G)为 ...
你好,请问什么是圈复杂度?用来干吗的?等等.可以给我说说吗
swallow_i@hotmail.com.谢谢 邮箱和MSN都是这个.这里回答也行.我很想知道
每天成长一点,在不远的将来会变成参天大树

TOP

有5

TOP

引用:
原帖由 chenwei8295 于 2008-4-27 13:36 发表
有5
如果判断中的条件表达式是由一个或多个逻辑运算符 (OR,  AND, NAND,  NOR)  连接的复合条件表达式,则需要改为一系列只有单个条件的嵌套的判断。

TOP

我已经晕了

TOP

圈复杂度=判定节点数+1  
同意6,7楼

TOP

有5条啊

TOP

 
当前时区 GMT+8, 现在时间是 2008-10-13 03:28Copyright(C)上海博为峰软件技术有限公司 2001-2007 电话:021-64471599-8017
当您在访问网站、论坛及博客过程中遇到问题时可发送email:webmaster@51testing.com或发送论坛短信至管理员风在吹