Day944.度量指标 -系统重构实战

这篇具有很好参考价值的文章主要介绍了Day944.度量指标 -系统重构实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

度量指标

Hi,我是阿昌,今天学习记录的是关于度量指标的内容。

很多时候在研发过程中,都习惯性地用“拍脑袋”的方式来看待一个事情。例如这个代码写得不好、这个自动化测试覆盖不充分、版本的发布频率太差了等等。往往只知道哪里有问题,但是却不知如何去找出根因,真正改进。对于这种情况就需要我们引入度量。

通过 度量指标,可以让在研发过程中更加明确目标,避免一开始就走成了反方向,另外,完成了阶段性工作后,又可以通过持续的度量来反馈完成的情况,帮助我们持续地改进。软件开发中,从需求到上线运营的每个阶段都有大量的度量指标,之前自动化测试就从生命周期的视角提供了不少指标。


一、开发指标

首先来看看开发相关的度量指标。通常问题比较多的度量指标,分别为圈复杂度、代码重复率、无效代码行以及代码耦合度。

其中圈复杂度、代码重复率、无效代码在五类遗留系统典型的代码坏味道中就讲过了,这重点介绍指标的目的以及如何在实践中运用这些指标。

1、圈复杂度

圈复杂度 指的是代码的嵌套复杂度。这个指标的度量目的很明显,如果圈复杂度高,就意味着代码的嵌套复杂度过高,不利于阅读理解以及测试。

很多遗留系统的问题就是缺少重构,导致大量庞大的类及方法,后续不管是扩展功能或者修改逻辑都非常容易出问题。

在实践过程中,一般结合流水线,在质量门禁中的静态代码扫描环节进行检查。

一般来说圈复杂度不能超过 10,而且越小越好

当提交的代码不符合要求时,则限制代码合入。


2、代码重复率

重复代码 指的是代码中有两个地方以上存在相同的代码行。这个指标的作用也非常明显。如果存在大量的重复代码,特别是 2 个相同的类只有个别的代码行差异,当相同部分的逻辑有变化的时候,就会导致需要在多个地方修改代码,这就是所谓的“散弹式修改”。

在实践过程中,同样可以结合流水线,在质量门禁中检查代码重复率,一般建议不超过 5%。当提交的代码不符合要求时,同样要限制代码的合入。


3、无效代码行

无效代码 指的是没有被调用的类、方法或者资源等内容。虽然无效代码不会影响功能,但是会影响整体阅读代码的体验,尤其是理解代码的难易程度。在遗留系统中,无效代码也是非常常见的问题。

同样可以结合流水线进行静态代码检查,如果发现有无效的代码行则反馈给相关人员,要求其修改。在日常的开发过程中,也应该关注 IDE 的提示,在提交前保证代码的整洁。


4、代码耦合度

那么什么样才算耦合呢?这里的 耦合 指的是所有不符合架构规则的代码调用关系就算耦合

具体可以参考运用自动化工具诊断分析Sharing项目中对 Sharing 项目的耦合分析。

当然这里有一个前提,一定是得有架构设计以及架构规则,因为如果没有规则,就没有耦合的判断依据。如果代码存在前面说的耦合情况,就代表目前的代码不符合架构的设计规则,日积月累,架构就会不断地腐化。

在在实践中,需要将架构守护变成自动化测试用例,加入到流水线的质量门禁中,以便在代码提交存在耦合时,能够及时发现并反馈。


二、自动化测试指标

自动化测试 是需要投入设计及维护,如果编写的自动化测试用例没有被执行,那么相当于就是白费力气。所以针对自动化测试进行持续度量是一项非常重要的工作。

下面,来看看自动化测试度量相关的 4 个常用关键指标,分别为测试用例数、执行频率、执行时长以及执行成功率。

1、测试用例数

测试用例数 指的是持续执行的自动化测试用例的总数。

可以通过观察这个指标来看项目整体自动测试投入的变化。

正常情况下,有效的自动化测试用例随着业务的迭代,测试的数量应该持续地增加,如果测试的数量存在大幅波动,应该重点做分析。

可以通过测试报告来获取测试的用例数,然后结合持续集成工具来统计用例数的变化。


2、执行频率

自动化测试执行频率 指的是自动化测试每天执行的次数。

无论是自动化测试的设计还是维护,都需要成本,所以只有频繁的执行才能发挥其价值。

通常自动化测试都会接入到持续集成流水线中。所以,可以通过观察自动化测试的执行频率,来查看自动化测试是否充分地执行了。


3、执行时长

自动化测试执行时长 指的是一套自动化测试用例执行所需的时间。

自动化测试的一个重要目标是验证反馈,所以反馈的周期越短,那么作用就更大。所以应该持续观察自动化测试用例执行的时长,这个数据也可以通过测试用例报告获得。

在实践过程中,如果发现有个别用例的执行时间非常长,应该重新检查。通常来说,小型测试的执行时间是毫秒级别,中大型测试的执行时间是秒级别。


4、执行成功率

自动化测试执行成功率 指的是自动化测试执行后通过的测试用例数除以测试用例总数。

如果存在用例执行失败的情况,应该及时分析,排除引入或破坏业务逻辑问题。实践当中,要避免为了让代码可以合入而注释掉失败用例的情况。另外,自动化测试执行成功率也能从某种程度反应开发代码提交的质量,建议持续观察这个指标。


三、流水线指标

当团队使用了流水线来集成发布软件时,流水线的执行情况直接反映了团队的效率以及版本的质量。所以在实践过程中,一定要持续关注流水线运行的相关指标。

流水线中常用的 4 个关键指标,分别为构建频率、构建时长、构建成功率以及平均恢复时长。

关于这 4 个指标,通常的持续集成工具都有插件支持统计查询。

1、构建频率

构建频率 指的是一段时间内持续集成流水线执行的平均频率。

如果主干日均执行频率低于 1 次,那么证明团队的代码合入频率非常低。出现这种情况,就需要去排查是任务的拆分粒度过大,还是开发人员没有及时集成代码。至少需要保证主干每天都能成功构建出一个最新可用的版本。


2、构建时长

构建时长 指的是一段时间内持续集成流水线执行的平均时长。这个指标关乎着开发人员代码合入的效率。在实际的团队辅导过程中,我曾遇到持续集成流水线平均执行时长接近 2 个小时,这反过来会影响开发人员代码合入的意愿,变成另外一个瓶颈。

针对流水线执行时间过长的的问题,需要先排查具体耗时的步骤,再针对性解决。另外,也可以采用并发以及分级的形式来提高效率。


3、构建成功率

构建成功率 指的是一段时间内持续集成流水线成功执行的次数除以执行的总数所得的比率。

如果在一段时间内执行成功率非常低,例如低于 60%,在排查掉一些环境的影响因素后,则证明这段时间内代码提交的质量不高,则需要具体分析执行失败的任务,并及时调整。


4、平均恢复时长

平均恢复时长 指的是一段时间内持续集成流水线从失败转变为成功的平均间隔时间。

通过这个指标可以促进团队更加关注流水线的运行情况。因为可以根据这个指标,判断开发人员对持续集成纪律的遵守情况,比如,是否能在流水线执行失败后立马修复。


四、总结

通过 度量指标 可以帮助明确方向,及时反馈结果,推动持续改进。

通常在项目中,都会搭建度量相关的看板来持续观察数据的变化,同时也会在团队定期的回顾会上,复盘这些数据制定改进目标。

不建议团队将度量指标纳入 KPI 中,这样非常容易导致走向另外一个极端,失去了度量关键的意义。

下面度量指标的定义、目的、建议阈值及趋势等总结成表格。给出了一些通用的建议参考阈值,具体的产品不同,情况可能会有差异。

Day944.度量指标 -系统重构实战文章来源地址https://www.toymoban.com/news/detail-459025.html


到了这里,关于Day944.度量指标 -系统重构实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入探讨软件测试的质量度量指标

    本文的目的是介绍项目中使用到主要质量指标,这些质量指标可以分为以下三类: 质量保证过程指标 生产事故管理指标 度量质量文化指标 质量保证过程指标 质量保证指标可以通过测试覆盖率来度量功能和非功能测试的覆盖率,同时也可以根据测试发现的缺陷的状态、优先

    2024年02月09日
    浏览(31)
  • 大厂数仓模型规范与度量指标有哪些?

            在数仓建设中,模型质量评价体系是一种重要的方法,用于评估数据模型的规范程度、数据质量和可信度。随着数据驱动的决策在企业中的重要性日益增加,数据仓库作为数据沟通和业务系统之间的中介,扮演着关键的角色。因此, 确保数仓模型的规范性和质量

    2024年02月10日
    浏览(25)
  • 【精品】kubernetes(K8S)集群top命令监控 Pod 度量指标

    提示:做到举一反三就要学会使用help信息 找出标签是name=cpu-user的Pod,并过滤出使用CPU最高的Pod,然后把它的名字写在已经存在的/opt/cordon.txt文件里 了解pod指标,主要需要关注,CPU与内存占用率;生产环境,可能有几十个pod,我们为了使其便于快速检索到需要的pod,可以学会

    2024年02月16日
    浏览(34)
  • 数仓中的维度、度量、指标、事实、属性几个概念如何区分?有何异同?

    维度是说明数据,是业务中对象的描述性属性或特征,用于对业务过程进行分析归类。 属性是刻画某个实体对象维度的数据形态。 通过事物发展的数量、质量两大方面,从横比、纵比角度进行全方位的比较,我们才能够全面的了解事物发展的好坏。 维度横比纵比 如用户数环

    2024年02月10日
    浏览(29)
  • R语言——采用主成分分析PCA方法下的“S 模式 “矩阵从同步分类中提取度量指标

    本教程将向您展示如何根据我们的综合分类计算一些指标。 PCA(Principal Component Analysis,主成分分析)是一种常用的数据降维技术,用于从高维数据中提取最重要的特征。它通过将原始数据转换为一组新的正交变量,称为主成分,以捕捉数据中最大的方差。 1. 数据标准化:如

    2024年03月15日
    浏览(39)
  • 从ES到Nebula:图数据库在反欺诈团案系统中重构实战

    最近带领团队重构了公司内部风控团案系统,特此记录一下!      在金融风控领域,数据的准确性和实时性对于保障业务安全至关重要。随着业务的快速发展,我们面临的挑战是如何优化现有的风控数据存储和处理系统,以适应不断增长的数据量和复杂性。为此,我们团队成

    2024年02月03日
    浏览(33)
  • C端用户体验度量实战篇-京东快递小程序体验度量全面升级

    本文通过介绍体验度量模型升级研究过程、研究方法及研究结果等内容,结合实际C端产品应用,观测新模型运行周期的表现,验证了其在高速发展的业务形态和日益变化的用户需求上的适用性和有效性。我们从体验价值为导向的底层模型设计,到主客观体验影响因子在实际业

    2024年02月07日
    浏览(29)
  • Day963.如何拆分数据 -遗留系统现代化实战

    Hi,我是 阿昌 ,今天学习记录的是关于 如何拆分数据 的内容。 如何拆分数据 ,这个场景在建设新老城区,甚至与其他城市(外部系统)交互时都非常重要。 作为开发人员,理想中的业务数据存储方式是什么样呢? 当然是负责一个业务的数据都在一张或几张名称相关的表中

    2024年02月03日
    浏览(32)
  • Day956.代码现代化 -遗留系统现代化实战

    Hi,我是 阿昌 ,今天学习记录的是关于 代码现代化 的内容。 代码现代化的主要模式。 大体的脉络是这样的: 先对代码做可测试化重构,并添加测试; 在测试的保护下,安全地重构; 在测试的保护下,将代码分层。 先来看看 如何让代码变得可测 ,这是遗留系统现代化的

    2024年02月01日
    浏览(121)
  • Day952.如何降低认知负载 -遗留系统现代化实战

    Hi,我是 阿昌 ,今天学习记录的是 关于 如何降低认知负载 的内容。 认知负载 。这个看似与软件开发毫无瓜葛的知识,实际上却决定了软件系统的成败。 因此在遗留系统现代化中,把“以降低认知负载为前提”作为首要原则。 总说认知负载如何如何,降低认知负载又是多

    2023年04月22日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包