圈复杂度

代码段的圈复杂度是对其中线性独立路径数的定量度量。它是一种软件度量,用于指示程序的复杂性。它是使用程序的控制流图计算的。图中的节点表示一个程序的最小命令组,其中的一条有向边连接两个节点,即第二条命令可能紧跟第一条命令之后。

null

例如,如果源代码不包含控制流语句,则其圈复杂度将为1,并且源代码中包含一条路径。同样,如果源代码包含一个 如果条件 圈复杂度为2,因为有两条路径,一条为真,另一条为假。

从数学上讲,对于结构化程序,控制流中的有向图是连接程序两个基本块的边,因为控制可以从第一个块传递到第二个块。 圈复杂度M的定义是,

M=E–N+2P

哪里 E=控制流图中的边数 N=控制流图中的节点数 P=连接组件的数量

计算圈复杂度和测试用例设计时应遵循的步骤包括:

  • 从代码中构造具有节点和边的图。
  • 独立路径的识别。
  • 圈复杂度计算
  • 测试用例的设计

让一段代码本身:

A = 10   IF B > C THEN      A = B   ELSE      A = C   ENDIFPrint APrint BPrint C

控制流图 以上代码

cyclomatic-complexity

为上述代码计算的圈复杂度将来自控制流图。该图显示了七个形状(节点)、七条线(边),因此圈复杂度为7-7+2=2。

圈复杂度的使用:

  • 因此,确定独立的路径执行被证明对开发人员和测试人员非常有帮助。
  • 它可以确保每条路径都至少经过一次测试。
  • 因此,有助于更多地关注未发现的路径。
  • 代码覆盖率可以提高。
  • 可以评估与项目相关的风险。
  • 项目早期使用的这些指标有助于降低风险。

圈复杂度的优点: .

  • 它可以作为一个质量指标,给出各种设计的相对复杂性。
  • 它的计算速度比霍尔斯特德的指标还要快。
  • 它用于测量测试的最小努力和最佳集中区域。
  • 它能够指导测试过程。
  • 这很容易应用。

圈复杂度的缺点:

  • 它是对程序控制复杂性的度量,而不是对数据复杂性的度量。
  • 在这种情况下,嵌套条件结构比非嵌套结构更难理解。
  • 如果是简单的比较和决策结构,它可能会给出一个误导性的数字。

参考: https://en.wikipedia.org/wiki/Cyclomatic_complexity

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享