McCabe 度量法(循环复杂度) 作者:马育民 • 2025-04-19 15:39 • 阅读:10000 # 介绍 McCabe 度量法,也被称为循环复杂度(Cyclomatic Complexity),是由 Thomas J. McCabe, Sr. 在 1976 年提出的一种软件 **程序复杂度** 的量度方法。 主要用于衡量一个程序单元(如函数、方法、模块等)的复杂度。 # 步骤 - 根据程序画出 `程序流程图` - 根据图进行计算,计算方式有下面两种 [](https://www.malaoshi.top/upload/0/0/1GWyQvXO148.png) # 计算方式 ### 方法一:公式计算(复杂) ``` V(G) = E - N + 2P ``` **解释:** - E:表示程序控制流图中 **边的数量**; - N:表示程序控制流图中 **节点的数量**; **关键:**上图 **线的交叉点**,也算 **一个结点**,如下图: [](https://www.malaoshi.top/upload/0/0/1GWyQyFiuBD.png) **缺点:**边 和 结点太多,复杂麻烦容易错 ### 方法二(推荐) ``` 最小独立闭环数 + 1 ``` 如下图: [](https://www.malaoshi.top/upload/0/0/1GWyQzOEAPJ.png) 有 4 个最小独立闭环数,所以复杂度是 `5` # 题 采用McCabe度量法计算下图所示程序的环路复杂性为( ) A、1 B、N C、3 D、4 [](https://www.malaoshi.top/upload/0/0/1GWyR1XefVO.png) ### 答案 C,有 2 个 `最小独立闭环`,所以 `2+1=3` # 题 若用白盒测试方法测试以下代码,并满足条件覆盖,则至少需要( )个测试用例。平采用McCabe度量法算出该程序的环路复杂度为( ) [](https://www.malaoshi.top/upload/0/0/1GWyR49OveW.png) A、3 B、4 C、5 D、6 A、1 B、2 C、3 D、4 ### 第一问答案 根据程序画出程序流程图如下, [](https://www.malaoshi.top/upload/0/0/1GWyROoKM1A.png) 测试用例1:`i>j`为 `真`,`i>k` 为 `真` 测试用例2:`i>j`为 `真`,`i>k` 为 `假` 测试用例3:`i>j`为 `假`,`j>k` 为 `真` 测试用例4:`i>j`为 `假`,`j>k` 为 `假` 答案:B ### 第二问答案 有 3 个 `最小独立闭环`,所以复杂度:`3 + 1 = 4` 答案:D 原文出处:http://malaoshi.top/show_1GWyRWLHimq.html