8分钟阅读

源代码qa:它不仅仅适用于开发人员了

产品领导者和技术专家,Costas拥有25多年的经验,监督复杂产品开发的全部生命周期。

二十年前,当我在汽车行业工作时,一家工厂的董事经常说,“我们有一天要建造一辆车,但我们的客户有一辈子要检查它。”质量至关重要。事实上,在更成熟的行业,如汽车和建筑行业,质量保证是系统地整合到产品开发过程中的关键考虑因素。虽然这肯定受到保险公司压力的推动,但它也是决定 - 因为该工厂导演指出 - 由此产生的产品的寿命。

然而,涉及软件时,较短的寿命周期和持续升级意味着源代码完整性往往被忽视,支持新功能,复杂的功能和上市速度。产品经理通常会使源代码质量保证或将其留给开发人员来处理,尽管它是确定产品的命运中的更关键因素之一。对于关注为产品开发和消除风险构建坚实基础的产品管理人员,定义和实施对源代码质量的系统评估至关重要。

定义“质量”

在探索正确评估和制定源代码QA进程的方法之前,重要的是确定软件开发的背景下的“质量”方式。这是一个 复杂的 和多方面的问题,但为了简单起见,我们可以说质量是指支持产品的价值主张的源代码,而不会影响消费者满意度或危及开发公司的商业模式。

一个好的软件QA进程应该考虑一些因素。

换句话说,优质源代码精确实现了产品的功能规范,满足了非功能性要求,确保消费者的满意度,最大限度地减少了安全性和法律风险,并可能够经济维持和延伸。

一个好的软件QA进程可以降低与软件故障,遗留系统问题和取消项目相关的成本。
资源: CISQ.

鉴于分发了多么广泛和快速的软件,软件缺陷的影响可能很重要。错误和代码复杂性等问题可以通过阻碍产品采用和增加软件资产管理(SAM)成本,而安全漏洞和许可遵守违规可能会影响公司声誉并提高法律问题的侵害。即使软件缺陷没有灾难性 结果,他们有不可否认的成本。在2018年 报告,软件公司Tricentis发现,来自314家公司的606个软件故障占前一年的收入损失1.7万亿美元。在刚刚发布的2020年报告中, CISQ. 将美国优质软件的成本降至2.08万亿美元,另有通过技术债务产生的未来成本估计为1.31万亿美元。这些数字可以随着早期的干预而减轻;在产品设计期间解决问题的平均成本明显低于在测试期间解决同一问题,这反过以指数级,而不是在部署后解决问题。

为了降低成本,软件QA进程必须确定靠近源的问题。
资源: IBM系统科学研究所

处理热马铃薯

尽管存在风险,但软件开发中的质量保证是零碎的,并以反应性的方式为特征,而不是在其他行业中采用的主动性。当它应该被视为不同职能的集体责任时,对源代码质量的所有权是有争议的。产品经理必须将质量视为有影响力的特征而不是开销,高管应注意质量国家并投资它,工程职能应抵制将码清理作为“热马铃薯”。

复合这些代表团挑战是现有方法和工具未能解决整体代码质量问题。使用连续集成/连续递送方法可以降低低质量代码的影响,但除非CI / CD基于彻底和全面的质量分析,否则它无法有效地预测和解决大多数危险。负责QA测试,应用程序安全性和许可合规性的团队使用旨在旨在仅解决问题的一部分的工具,并仅评估一些非功能或功能要求。

考虑产品经理的角色

源代码质量扮演众多困境a 产品经理 在产品设计和整个软件开发生命周期中的面孔。诗诊债务是繁重的。在低质量的Codebase上添加和修改功能更难以更昂贵,并且支持现有的代码复杂性需要大量投资,以否则可以花在新产品开发上的时间和资源。由于产品经理持续平衡防止上市速度的风险,他们必须考虑以下问题:

  • 我应该使用OSS(开源软件)库或从头构建功能吗?哪些许可证和潜在负债与所选库相关联?
  • 哪个技术堆栈是最安全的?这确保了快速和低成本的开发周期?
  • 我应该优先考虑应用程序配置(高成本/时间延迟)或实现自定义版本(高维护成本/缺乏可扩展性)吗?
  • 将新收购的数字产品集成在保持高代码质量,最小化风险,保持工程成本低的同时,将新收购的数码产品集成在一起

这些问题的答案可以严重影响业务结果,产品经理自己的声誉,但往往是根据直觉或过去的经验而不是严格的调查和实证度量来制作的决定。彻底的软件质量评估过程不仅提供了决策所需的数据,而且还对抗利益相关者,建立信任,并有助于透明度文化,从而优先考虑并达成一致。

实施7步过程

一个完整的源代码质量评估过程导致诊断,以考虑全套质量确定而不是少数孤立症状更大的问题。下面呈现的七步方法与CISQ对齐 建议书 对于流程改进,旨在促进以下目标:

  • 查找,测量和修复接近其根本原因的问题。
  • 根据整体质量测量,在软件质量改进中巧妙地投资。
  • 通过分析完整的测量和识别最佳,最具成本效益的改进来攻击问题。
  • 考虑软件产品的完整成本,包括所有权,维护和许可证/安全监管协调的成本。
  • 在整个SDLC中监控代码质量,以防止令人不快的惊喜。

全软件QA进程所需的七个步骤。
评估代码质量的全面七步过程

1.产品到代码映射: 跟踪产品功能返回其Codebase可能看起来像一个明显的第一步,但鉴于发展复杂性的速度增加,它不一定简单。在某些情况下,产品的代码在几个存储库中划分,而在其他内容中,多个产品共享相同的存储库。在进行进一步评估之前,必须识别所需产品代码的特定部分的各个位置。

2.技术堆栈分析: 此步骤考虑了所使用的各种编程语言和开发工具,每个文件的注释百分比,自动生成的代码的百分比,平均开发成本等等。

建议的工具: CLOC.

备择方案: Tokei., SCC., sloccount.

技术堆栈分析是QA进程的好软件的一部分。
技术堆栈分析使用CLOC

3.版本分析: 根据这一部分的审计结果,涉及识别代码库和计算相似之处的所有版本,可以合并和重复消除版本。这一步骤可以与a结合使用 臭虫(热点) 分析,识别最常常修改的代码的棘手部分,并倾向于产生更高的维护成本。

建议的工具: CLOC., SCC., sloccount.

4.自动化代码审查: 此检查探讨了缺陷,编程实践违规和风险元素的代码,如硬编码令牌,长方法和重复。为此过程选择的工具将取决于技术堆栈的结果和上面的版本分析。

建议的工具: 索纳里克, 编码

备择方案: 撕裂, Veracode., 微焦点, 覆盖物和许多其他人。另一种选择是 SourceGraph.,通用码搜索解决方案。

自动代码审查是QA进程的好软件的一部分。
使用Sonarqube自动化代码审查

5.静态安全分析: 此步骤,也称为静态应用安全测试(SAST),探索和识别潜在的应用程序安全漏洞。大多数可用工具扫描代码,以防止由组织所识别的经常发生的安全问题 欧平安SAN..

建议的工具: 怀特源, 斯那, 覆盖物

备择方案: 索纳里克, 重新夺取, kiuwan., Veracode.

静态安全分析是QA进程的好软件的一部分。
安全分析使用SNYK

6.软件组件分析(SCA)/许可合规性分析: 此述评涉及识别直接或间接链接到代码的开源库,保护每个库的许可证以及与每个许可证相关的权限。

建议的工具: 斯那, 怀特源, 黑鸭子

备择方案: , 奏音型, 和别的

7.业务风险分析: 此最终措施涉及将从前面的步骤中收集的信息巩固,以了解源代码质量现状对业务的全部影响。分析应导致全面的报告,提供利益攸关方,包括产品经理,项目经理,工程团队和C-Suite高管,其中详细说明了风险,并提出明智的产品决策。

虽然此评估过程中的前步骤可以通过广泛的开源和商业产品自动化和促进,但没有现有的工具支持完整的七步过程或结果的聚合。因为这种数据的编译是一种繁琐且耗时的任务,所以它是随意的或完全跳过的,可能会危及开发过程。这是彻底软件检查过程经常分崩离析的重点,使得最后一步可以说是评估过程中最关键的步骤。

选择合适的工具

虽然软件质量影响了产品,因此对业务成果产生了影响,但工具选择一般委派给发展部门,而且非开发人员可能难以解释结果。产品经理应积极参与选择透明和可访问的QA进程的工具。虽然上面提出了在评估中的各个步骤的特定工具,但有许多应该在任何工具选择过程中考虑的一般注意事项:

  • 支持的技术堆栈: 请记住,大多数可用产品只支持一小部分开发工具,并导致部分或误导性的报告。
  • 安装简单: 安装过程基于复杂脚本的工具可能需要重大的工程投资。
  • 报告: 应优先考虑出口详细,结构良好的报告的工具,以确定主要问题并为修复提供建议。
  • 一体化: 应筛选工具,以便与正在使用的其他开发和管理工具轻松集成。
  • 价钱: 工具很少有全面的价格清单,因此重要的是要仔细考虑所涉及的投资。各种定价模型通常考虑到团队头部,代码大小和所涉及的开发工具等内容。
  • 部署: 当对云部署相比,重称为云部署时,请考虑安全性等因素。例如,如果正在评估产品,请使用盲 - 审核方法处理机密或敏感的数据,可在预级工具和工具(f)可能是优选的。

保持它

一旦有条理地确定和分析并分析了风险,产品管理人员可以更准确地围绕优先级和分类缺陷进行深思熟虑的决策。团队可以进行重组和分配资源,以解决最紧急或普遍存在的问题。像高风险许可证违规的“展示者”将优先于较低严重的缺陷,更加重视有助于减少CodeBase规模和复杂性的活动。

然而,这不是一次性过程。在整个SDLC中,测量和监测软件质量应持续发生。应定期进行全面的七步评估,在每次分析后立即开始质量改进。确定了新的风险点越快,补救措施更便宜,更有限的辐射。为产品开发过程中的源代码质量评估核心重点侧重于团队,对齐利益相关者,减轻风险,并为其提供了最佳机会 - 这是每个产品经理的业务。

理解基础知识

您如何确保代码质量?

为确保质量,代码QA进程必须考虑以下所有内容:功能稳定性,可靠性,性能,安全性,合规性,可维护性和可转换性。

为什么代码审查很重要?

定期守则审查使团队能够在对产品或业务构成重大威胁之前识别技术债务,错误和缺陷,安全风险和许可证违规行为。

代码审查期间会发生什么?

一个很好的代码审查使用工具的组合来检查存储库,技术堆栈,版本,缺陷,安全风险,许可证违规以及业务风险。