代码段的圈复杂度是对其中线性独立路径数的定量度量。它是一种软件度量,用于指示程序的复杂性。它是使用程序的控制流图计算的。图中的节点表示一个程序的最小命令组,其中的一条有向边连接两个节点,即第二条命令可能紧跟第一条命令之后。
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
控制流图 以上代码
为上述代码计算的圈复杂度将来自控制流图。该图显示了七个形状(节点)、七条线(边),因此圈复杂度为7-7+2=2。
圈复杂度的使用:
- 因此,确定独立的路径执行被证明对开发人员和测试人员非常有帮助。
- 它可以确保每条路径都至少经过一次测试。
- 因此,有助于更多地关注未发现的路径。
- 代码覆盖率可以提高。
- 可以评估与项目相关的风险。
- 项目早期使用的这些指标有助于降低风险。
圈复杂度的优点: .
- 它可以作为一个质量指标,给出各种设计的相对复杂性。
- 它的计算速度比霍尔斯特德的指标还要快。
- 它用于测量测试的最小努力和最佳集中区域。
- 它能够指导测试过程。
- 这很容易应用。
圈复杂度的缺点:
- 它是对程序控制复杂性的度量,而不是对数据复杂性的度量。
- 在这种情况下,嵌套条件结构比非嵌套结构更难理解。
- 如果是简单的比较和决策结构,它可能会给出一个误导性的数字。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END