【McCabe度量法】方法详解和软考历年真题

🔎嘿,这里是慰慰👩🏻‍🎓,会发各种类型的文章,智能专业,从事前端🐾
🎉如果有帮助的话,就点个赞叭,让我开心一下!🙋🏻‍♀️ ✨也可以关注评论收藏私信⭐️
要是没有回呢,那我大概就在上班,学习,摸鱼…

McCabe度量法简介:

McCabe度量法,也称为环路复杂度度量,是一种评估程序逻辑复杂度的方法。它基于程序的控制流图(Control Flow Graph, CFG),通过计算图中的环路数量来评估程序的复杂性。

McCabe复杂性度量公式:

公式为 ( V(g) = m - n + 2 ),其中:

  • ( m ) 代表图中的边数(包括决策点和路径)。
  • ( n ) 代表图中的顶点数(包括决策点和开始/结束点)。

例题分析:

2016年上半年试题:

对下图所示流程图采用白盒测试方法进行测试,若要满足路径覆盖,则至少需要___个测试用例。采用McCabe度量法计算该程序对环路复杂性为___。
在这里插入图片描述

  • 流程图分析:存在6条独立路径。
  • 路径覆盖测试用例:至少需要6个测试用例来覆盖所有路径。
  • McCabe环路复杂度计算:边数 ( m = 10 ),顶点数 ( n = 8 ),环路复杂度 ( V(g) = 10 - 8 + 2 = 4 )。
2015年上半年试题:

若采用白盒测试方法测试以下代码,并满足条件覆盖,则至少需要___个测试用例。采用McCabe度量法算出该程序的环路复杂性为___。

int find_max(int i, int j, int k){
    int max;
    if(i > j) {
        if(i > k){
           max = i;
        } else {
           max = k;
        }
    } else {
        if(j > k) {
            max = j;
        } else {
            max = k;
        }
    }
    return max;
}

先作图
在这里插入图片描述

  • 代码分析find_max 函数包含三个嵌套的决策点。
  • 条件覆盖测试用例:至少需要4个测试用例来覆盖所有条件分支。
  • 流程图绘制:根据代码绘制流程图,确定边数和顶点数。
  • McCabe环路复杂度计算:边数 ( m = 9 ),顶点数 ( n = 7 ),环路复杂度 ( V(g) = 9 - 7 + 2 = 4 )。

环形复杂度的其他计算方法:

  1. 区域数:流图中的区域数等于环形复杂度。
  2. 边数与顶点数:流图 ( G ) 的环形复杂度 ( V(G) = E - N + 2 ),其中 ( E ) 是流图中边的条数,( N ) 是结点数。
  3. 判定结点数:流图 ( G ) 的环形复杂度 ( V(G) = P + 1 ),其中 ( P ) 是流图中判定结点的数目。

结论:

McCabe度量法提供了一种量化程序逻辑复杂度的方法,有助于评估程序的可维护性和潜在的错误风险。通过计算环路复杂度,开发者可以更好地理解程序结构,并采取相应的重构措施以提高代码质量。在软件测试中,了解环路复杂度有助于设计更有效的测试用例,确保程序的各个部分都经过充分测试。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值