51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 10144|回复: 2
打印 上一主题 下一主题

[讨论] 关于圈复杂度(或称环路复杂度)的疑问

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2004-10-13 09:17:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
近期在学习《软件测试》,Paul C. Jorgensen的那本书,
书中提到圈复杂度的概念。
我同时参考了其他人的几本书,也都提到了类似概念,即环路复杂度,
但他们的计算公式各不相同,我被弄糊涂了。
还望各位高手指点一哈子。多谢多谢!

一种典型公式为:V(G)=e-n+p
作者又说,V(G)=e-n+2p,通过增加从汇节点到源节点的一条边即可,
但如果该图中存在多个组件,则无法按照这种方式来计算。
第三种方法是:计算中图中判定节点的个数,设为n,则V(G)=n+1,
第四种方法:通过构造相邻矩阵计算,其实质是计算所有节点的出度的和,并减去节点总数,就是圈复杂度的大小。
第四种方法:直接根据图中的边将整个图的平面分割成的区域数来决定V(G)。
不同方法的计算结果往往是不同的。

另外,对于图中边和节点的处理,也不同。
比如:结构化程序设计构造的有向图中,关于前测试环路,即while...dol模式,书中给出的图包含2个节点,4条边,而另外的书中给出的图则包含3各节点,3条边,由于图不同,得到的圈复杂度也不同。

我的理解是:V(G)=e-n+p是个通用的公式,
当碰到连通图时,(反正我们在进行程序分析时,通常图中是只有一个组件的),就通过构造强连通,并利用V(G)=e-n+2p来计算。
而其它公式,保险的情况下,适用于单个源节点和单个汇节点的连通图情况。

是这样的吗?还是有别的什么考虑?请多指教呀!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏

该用户从未签到

2#
 楼主| 发表于 2004-10-13 09:18:49 | 只看该作者
我们在从程序构造图的时候,是不是一定要从节点开始,节点结束,而不能从边开始或结束?否则计算得到的圈复杂度是错误的?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-10-22 16:49:03 | 只看该作者
今天刚刚遇到一个测试得笔试题,怎么理解圈复杂度?我都没做~~呜呜~~
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-21 22:55 , Processed in 0.070593 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表