vrrp 的mac是怎么算出来的_JB的测试之旅百行代码缺陷率怎么算出来的

本文探讨了VRRP中MAC地址的计算方法,并围绕代码缺陷率进行了详细阐述,包括千行代码缺陷率的计算公式、实践应用以及其优缺点。同时提出百行代码缺陷率作为研发考核指标的思考,分析了可能遇到的挑战和更好的替代指标。
摘要由CSDN通过智能技术生成

前言

以前的团队,每次上线都需要一份测试报告,其中里面有一项bug相关的描述:bb7398020eb82dbdad765f05accc025b.png

从项目以及测试维度,这块统计没啥问题,也比较清晰.

但是相对于研发而言,不太认可这一项,因为需求大的版本, bug量多也是正常的,需求小的版本,很大可能也没有 bug,如果根据 bug数来衡量研发的质量,这个好像也不太靠谱。

因此,在研发考核这块,找了下资料,发现千行代码缺陷率,公式如下:3373855c977b231261150c441b9422dd.png

按照上述的公式来看,缺陷的数量越少表示质量越高

而生产的代码越多,可以容忍的bug数量也就越多。那么这个公式应该是可以很好地检测代码质量的。

ok,到这里为止,先不管这个值是否真的有效或者好坏?这边只想知道,这个值是怎么算出来的?

因为业务比较小,因此改用百行代码缺陷率来尝试算这个值。

怎么算出来的

这里先直接贴最终的命令行,这里是统计 develop分支2020年3月31号,用户是 jbjb2的提交数:

git log  develop  --no-merges --since="2020-03-31 00:00:00" --until="2020-03-31 23:59:59"  --author="jb\|jb2" --pretty=tformat: --numstat -- . ":(exclude)XXX(项目名)/src/test" ":(exclude)XXX(项目名)/src/main/resources"   | awk '{ add += $1 ; subs += $2 ; loc += $1 + $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }'

返回的结果是这样的:

added lines: 31049 removed lines : 14821 total lines: 45870

ok,接下来就来逐步拆分了解下。

  • git log,获取所有提交的历史记录。

  • develop,获取 develop分支所有提交的历史记录。

  • --no-merges ,是去除该提交中 merges的代码,因为有可能会 merge其他分支的代码,此时应该去除。

  • --since="" --until="",是要统计修改记录的开始和结束时间

  • --author ,是指修改代码的人 过滤多人时使用“|”分开,比如 git log--author="jb\|jb2"

  • --pretty=,控制显示的记录格式。

  • --numstat,对增加和删除的行数进行统计,第一列显示的是增加的行数,第二列显示的是删除的行数。

  • -- . ":(exclude)folderName",排除文件夹,因为项目里面有些test目录是不应该包含进去的,因此需要排除这类文件夹。排除多个则这样写 --.":(exclude)folderName1"":(exclude)folderName2" 。

项目实践

版本对比

版本总代码行数百行代码bug数
XX服务4.8.025970.04
XX服务4.9.067390.06
XX搜索4.3.063840.016
XX服务4.9.110770
XX服务4.10.029310
XX服务4.11.05130
XX服务4.12.029290
XX服务4.13.015890
XX体检1.0.000

代码质量

a11ed65d3061aa21e776a35203a50de5.png

计算方法:总代码行数 = added lines - removed lines 百行代码bug数 = bug数 × 100 / 总代码行数

研发对比

研发bug数总代码行数当前版本的百行代码bug数上个版本的百行代码bug数
jb///0.04
jb20150000

激励

  • 研发超过 0.5要请下午茶。

  • 0bug就老大请下午茶。

这个统计是好还是坏

由一开始的图片可知,如果想逃避这个指标,最好的做法就是增大分母,即增加代码行数,这样就会延伸出另外的问题:

增大基数,增加无意义代码;

把定长循环分开写,写成顺序方法;

把可配置信息写死到代码中;

大量的复制、粘贴代码;

重新发明各种轮子;

但现实中,优秀的程序员是通过减少代码行数来增加功能的。这样就违背了初衷。

缺陷率

作用

回到问题的本身,缺陷率到底有什么作用?

个人觉得,主要作用一般是来评价工作产品的质量。如果bug率较高,说明系统质量较差,需要大量的返工。项目经理就需要做好缺陷分析(缺陷的类型、分布、严重程度等),找出原因,以便做好下一阶段的缺陷预防工作。

指标

目前流行的公式主要以下两个:

  • bug率=bug数/代码行数

  • bug率=bug数/功能点数

使用代码行进行计算,优点是可以通过自动统计工具计算(特别是对于大型项目,肯定会计算代码行数),比较方便,所以该方法比较普遍,是大多数公司或项目运用的计算方法。但它的缺点是受开发人能力影响大(毕竟不同开发人员的编码能力不一样),且不用编程语言差别较大。

使用功能点进行计算,优点是计算方法适用性强,不同语言之间也有可比性,但缺点是参数较多,比较复杂,而且目前还没有比较方便的工具。

所以到底哪个指标更好,这里是没有定论的。

更好的研发考核指标

目前想到的是代码覆盖率(jacoco)、圈复杂度、代码规范(sonar跟eslint)、代码重复率。

小结

百行代码缺陷率的统计,一开始不了解觉得挺复杂,但实际了解后,才觉得Git真牛逼,但是这个指标不一定适用任何场景,在小组内部使用约束没问题,但是想整个大团队进行实行,难度还是很大的:

  • 这个指标的作用是什么?

  • 如何让所有人都信服这个指标?

  • 如何避免写垃圾代码增大分母?

  • 具体规则细节是什么?

这些问题,都是会被挑战的,后面可能会针对上面提及到的其他研发考核指标来更深入了解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值