风险和质量债务:您不知道的内容可能会带来严重后果

原创|使用教程|编辑:郑恭琳|2021-01-14 14:31:18.980|阅读 11 次

概述:在评估代码库的风险时,这不是单个的魔术数字,也不是简单的像是“通过/不通过”交通信号灯。风险是多维和多变的,对于不同的组织,风险的衡量方法也有所不同。

# 周年庆正版采购有优惠,点击咨询 # # 31款JAVA开发必备控件和工具 #

相关链接:


在评估代码库的风险时,这不是单个的魔术数字,也不是简单的“通过/不通过”交通信号灯。风险是多维和多变的,对于不同的组织,风险的衡量方法也有所不同。

您可能已经知道代码中高风险或“不良”部分的位置–它们是您经常更改的代码部分,在此处和此处进行了一些小调整,以修复一些看起来无害的小问题,但通常代表分层设计不良的特点。这就是为什么更改现有代码是在应用程序中引入缺陷的主要原因。

但是我们也知道变化是不变的。您永远不会完全实现所有功能或第一次都无法正确执行,但是与此同时,当您在现有代码上分层时,对每个用例和场景的了解就会丢失,复杂性会增加,并且代码的风险也会越来越大。这些变化为将环境应用于风险提供了关键。

与了解风险本身同样重要的是,了解如何应对风险–如何确定补救措施的优先级,以实现“可接受的风险水平”,同时最大程度地降低对团队速度的影响。这篇文章仅着眼于:如何评估代码更改的风险以及如何有效地确定优先级和减轻风险。


确定多元风险

风险不是一个单一的数字,也不是项目级别的“交通灯”(尽管我们确实在UI中使用了易于关联的交通灯颜色),而是代码库的分类以及关于实际和潜在存在问题的指导。见下文:

来自ParasoftProcess Intelligence Engine的饼图示例,显示了高,中和低风险代码的比例。

风险的分类既是多维的又是多元的–您必须将静态分析,度量,代码覆盖率和测试等技术中的质量度量汇总在一起,才能真正理解它。这些技术中没有一个能为您提供特定维的值,而是为公式提供了值。例如,代码覆盖率不是一个好用的数字,因为您可以拥有100%的覆盖率,但是只有少量的测试可以做有意义的事情–您需要考虑使用代码覆盖率告诉您的内容(即,“我的代码的测试水平如何?”),并通过添加更多数据来进行更有意义的分析。

风险代码更改气泡图的示例说明了最高风险所在。 (可以扩展气泡以查看驱动分类的指标。)

上面的气泡图说明了基于两个维度的风险分类(也如下图所示):

  • 维护负担,结合使用Halstead体积,严格的循环复杂性,代码行数和代码与注释的比率来量化代码的可维护性和可理解性,以及
  • 测试缺陷,使用测试次数,方法数量和代码覆盖率来量化测试代码的质量。

测试不良的代码(即测试缺陷较高)被归类为高风险(红色),而经过良好测试和结构良好的代码(即较低的维护负担)被归类为低风险(绿色)。


易变的代码库,其中的每项更改都有风险

在开发过程中,您的代码库处于不断变化的状态,每行更改的代码都会带来未知的风险。它会破坏基本功能吗?它会引入安全漏洞吗?信息越少,风险越大。在之前的文章中,我们讨论了变更对测试的影响,以及如何智能地使用代码覆盖率来预测测试资源需要集中在哪里。但是,即使覆盖范围和测试范围不断扩大,随着时间的流逝,仍然存在更多的风险。

代码库中的更改为我们提供了第三个也是最重要的风险维度:时间。时间不是传统意义上的时间,而是与构建及其之间的变化相关的时间。专注于代码库在内部版本之间已更改的部分,这使我们能够集中精力处理风险最高且最相关的代码,因为该团队目前正在代码库的这一部分中工作。


质量债务的负担会拖慢您的速度吗?

重用和遗留代码已经有其自己的负担,特别是对于安全性。如果没有足够的检查来维持或改善质量基准,则每条提交或修改的代码行都会加重债务。要摆脱这种债务,就像任何债务一样,需要关注并致力于减少债务。另外,就像任何债务一样,除非您知道花在哪里,否则怎么会知道如何储蓄?

一旦确定了具有最高风险和最高优先级的代码,就还需要考虑减轻风险所需的工作量。这是第四个也是最后一个方面:质量债务。在上面的气泡图中,质量债务用气泡的大小表示–气泡越大,需要解决的已知问题越多。在我们的示例中,质量债务是高严重性静态分析违例(包括违反代码度量标准的设置阈值)和测试失败的组合,并通过逻辑代码行数进行了标准化(请参见图3)。


这些出色的质量任务的汇总为降低代码风险所需的相对工作量提供了指导。


但这不是我衡量风险的方法!

并非每个组织都将遵循相同的质量实践或在计算尺寸时要考虑哪些因素。您需要能够配置和创建自己的风险定义。

该博客中的示例可供Parasoft市场上的用户使用,使您可以立即使用它,并进行扩展和修改以满足您的特定需求。从示例开始,您可以自定义静态分析,指标阈值和风险分类以适合您的组织。


结论

通过适当的安全措施平衡预算,进度和质量目标,同时满足客户需求,这是一个艰巨的任务,每一个环节都有风险。但是,质量实践和流程智能的自动化可帮助您将资源最佳地用于哪里。了解风险的根源以及每个代码的更改方式如何影响基线质量和安全性,可以减少开发方程式中的许多未知数。正确地关注质量和安全债务是可以克服的。



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,尊重他人劳动成果

登录 慧都网发表评论


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
Parasoft C/C++test

针对C/C++开发的专业白盒自动化测试方案,能有效提高软件开发效率和代码质量。

Parasoft Jtest

专业针对Java语言的开发测试方案,可无缝集成Parasoft SOAtest

Parasoft dotTEST

使用深度静态分析和高级覆盖率分析补充现有的Visual Studio工具

Parasoft Insure++

Parasoft Insure++是专用于 C 和 C++ 语言的运行时内存分析和错误检测工具。

Parasoft SOAtest

业内最全面的API、云服务和SOA测试平台,提供优秀的负载与性能测试、API安全测试等功能

Parasoft Virtualize

用于创建、部署和管理模拟的开发与测试环境的虚拟解决方案

Development Testing Platform(DTP)

开发测试平台,通过在SDLC中持续应用软件质量最佳实践降低了商务风险

Parasoft SOAtest with Load Test

通过使用现有的功能测试来解锁早期的负载和性能测试

在线
客服
咨询
电话
400-700-1020
在线
QQ
购物车 反馈 返回
顶部
在线客服系统
live chat