标签:ima 平面 image 多分支 play 组件 elseif splay cas
圈复杂度:在软件测试的概念里,它用来衡量一个模块判定结构的复杂程度,数量上表现为线性无关的路径条数,即 合理的预防错误所需测试的最少路径条数。
圈复杂度大说明程序代码可能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系。
圈复杂度的原理:(其实就是分支的个数)
圈复杂度为1,意味着代码只有一条路径。
对于有一条分支的代码,它的圈复杂度为2。
圈复杂度 | 代码状况 | 可测性 | 维护成本 |
---|---|---|---|
1-10 | 清晰、结构化 | 高 | 低 |
11-20 | 复杂 | 中 | 中 |
21-30 | 非常复杂 | 低 | 高 |
>30 | 不可读 | 不可测 | 非常高 |
计算公式1:
\[V(G)=e-n+2p\]
式中:e表示控制流图中边的数量,n表示控制流图中节点的数量,p表示图的连接组件数目(图的组件数是相连节点的最大集合)。
因为控制流图都是连通的,所以p为1.
计算公式2:
\[V(G)=区域数=判定节点数+1\]
其实,圈复杂度的计算还有更直观的方法,因为圈复杂度所反映的是“判定条件”(如 if、while等)的数量,所以圈复杂度实际上就是等于判定节点的数量再加上1,也即控制流图的区域数。
注意:对于多分支的CASE结构或IF-ELSEIF-ELSE结构,统计判定节点的个数时需要特别注意一点,要求必须统计全部实际的判定节点数,也即每个ELSEIF语句,以及每个CASE语句,都应该算为一个判定节点。
计算公式3:
\[V(G)=R\]
式中:R代表平面被控制流图划分成的区域数。
总结:
标签:ima 平面 image 多分支 play 组件 elseif splay cas
原文地址:https://www.cnblogs.com/blknemo/p/12404273.html