环路复杂度不是为了算着玩
McCabe 环路复杂度的实际意义,是帮助我们估计程序控制结构的复杂程度。复杂度越高,说明分支、循环、路径组合越多,测试时需要关注的独立路径也越多。
所以题目问 V(G) 的值,表面是计算,背后其实是在问:基本路径测试至少要覆盖几条独立路径。能把这个关系讲出来,说明你对考点理解得比较扎实。
独立路径怎么理解
独立路径可以简单理解为:相对于已经走过的路径,它至少引入了一条新的边或新的控制走法。它不是随便挑几条从入口到出口的路径,而是要能覆盖控制流图中的基本结构。
考试一般不会让你像研究论文一样严格证明独立路径集合,更多是让你通过环路复杂度判断至少需要几条。比如 V(G)=5,就常常对应至少 5 条独立路径。
| 概念 | 考试中的理解 | 常见误区 |
|---|---|---|
| 环路复杂度 | 控制结构复杂程度的度量 | 只当成公式,不理解含义 |
| 独立路径 | 能引入新控制走法的路径 | 把所有可能路径都列出来 |
| 基本路径测试 | 围绕独立路径设计测试用例 | 以为路径数越多越随意 |
| 判定节点 | 控制流发生选择的位置 | 把普通语句也算进去 |
为什么说“至少”需要多少条路径
环路复杂度给的是基本路径测试的下限提示,不是全部测试工作的上限。真实项目里,一个独立路径可能还要配多组数据,尤其当判断条件里有边界值、组合条件或异常输入时。
软考题里如果问“至少需要多少条独立路径”,通常就把 V(G) 的计算结果作为答案。题目如果再问测试用例设计,就要结合具体条件继续分析。
老师式记法
可以这样记:边点法负责算,判定法负责快,独立路径负责解释意义。只会算 E-N+2,遇到问“基本路径测试至少几条”时容易发懵;知道 V(G) 对应独立路径数,就能把计算结果和测试含义连起来。
复习时建议把公式题和概念题放在一起看。今天会算 V(G),明天就要能说清楚它为什么和基本路径测试有关。
相关题目解析
下面这些题目和本专题的判断方法关联较强,适合读完概念后回到具体题干里校验理解。
- 已知判定节点数时环路复杂度怎么算?环路复杂度 / McCabe
- 已知边数和节点数时 McCabe 复杂度怎么算?McCabe / 环路复杂度