圈复杂度的概念和Tessy中查看圈复杂度

前言:

本文分为两个部分

1:圈复杂度的概念,和计算方法

2:tessy中如何查看圈复杂度(单元测试为例)

1:圈复杂度的概念,和计算方法

圈复杂度(Cyclomatic Complexity)是一种代码复杂度的衡量标准,由 Thomas McCabe 于 1976年定义。它可以用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,也可理解为覆盖所有的可能情况最少使用的测试用例数。圈复杂度大说明程序代码的判断逻辑复杂,可能质量低且难于测试和维护。程序的可能错误和高的圈复杂度有着很大关系。

void fun_1(int a)
{
  if(a)
   {printf("a=1");}
  else
   {printf("a!=1");}
}

 

通常使用的计算公式是V(G) = e – n + 2 。

e 代表在控制流图中的边的数量(对应代码中顺序结构的部分)

n 代表在控制流图中的节点数量,包括起点和终点(1、所有终点只计算一次,即便有多个return或者throw;2、节点对应代码中的分支语句)。

以上图中的边界数量=4,节点数量=4 故这个简单函数的圈复杂度V(G)=4-4+2=2。

2:tessy中如何查看圈复杂度(单元测试为例)

我们在单元测试的基础上,在添加一个Testobject,就是上图中的代码,结果如下图

红圈交叉部分,CC栏下标注了,圈复杂度,fun_1=2,本身存在的测试对象“is_value_in_range”的圈复杂度为3。

需要注意的是,测试module的圈复杂度=它包含的测试对象复杂度之和,而我们之前说的圈复杂度应当<10,或在特殊情况下<=15,在tessy中是指测试对象的要求。

2.2 Tessy中的另外一个参数TC/C

这个参数指示的是圈复杂度和测试用例数量之间的关系,“is_value_in_range”中存在三条测试用例

TC=测试对象中存在的测试用例数量/CC(圈复杂度)。

为了深刻印象,CC值的改变需要改变代码,不好办。我们可以给测试对象+一条测试用例,

4/3=1.33 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值