作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
科斯塔斯·沃里奥蒂斯的头像

科斯塔斯Voliotis

科斯塔斯是产品和项目管理专家,专门从事全球竞争激烈的市场的尖端技术项目. 他拥有雅典国立技术大学的博士学位, 在他25年的职业生涯中,他担任过多个高管职位.

以前的角色

首席技术官

工作经验

25

以前在

ESW资本 Exus
分享

从代码开始到交付的过程充满了挑战——bug, 安全漏洞,以及紧迫的交货时间. 处理这些挑战的传统方法,例如手工代码审查或 缺陷跟踪 在当今快节奏的技术环境不断增长的需求中,系统现在显得迟缓. 产品经理和他们的团队必须在审查代码之间找到一个微妙的平衡, 修复bug, 并添加新功能以及时部署高质量的软件. 这就是大型语言模型(llm)和人工智能(AI)的功能可以用来在更短的时间内分析更多信息的地方,甚至比最专业的人类开发团队都要多.

加速代码审查是提高软件交付性能的最有效的行动之一, 根据谷歌的 《欧博体育app下载》. 成功实现更快代码审查策略的团队平均能提高50%的软件交付性能. 然而, 法学硕士和人工智能工具能够帮助完成这些任务是非常新的, 而且大多数公司缺乏足够的指导或框架来将它们集成到流程中.

来自谷歌的同一份报告, 当公司被问及软件开发任务中不同实践的重要性时, 他们给AI的平均得分是3分.3/10. 技术领导者理解更快的代码审查的重要性, 调查发现, 但不知道如何利用人工智能来获得它.

考虑到这一点,我的团队 我们信任的代码 我还创建了一个人工智能驱动的框架,用于监控和提高质量保证(QA)和软件开发的速度. 通过利用源代码分析的力量, 这种方法评估正在开发的代码的质量, 对开发过程的成熟度级别进行分类, 并为产品经理和领导者提供有价值的见解,以了解质量改进后潜在的成本降低. 有了这些信息, 涉众可以就资源分配做出明智的决定, 并优先考虑推动质量改进的计划.

低质量的软件很贵

许多因素影响解决错误和缺陷的成本和容易程度,包括:

  • Bug的严重性和复杂性.
  • 软件开发生命周期(SDLC)中识别它们的阶段.
  • 资源的可用性.
  • 代码的质量.
  • 团队内部的沟通和协作.
  • 法规遵循需求.
  • 对用户和业务的影响.
  • 测试环境.

这一系列因素使得通过算法直接计算软件开发成本具有挑战性. 然而, 随着软件在SDLC中的发展,识别和纠正软件缺陷的成本呈指数增长.

国家标准与技术研究所 报道 修复在测试期间发现的软件缺陷的成本是修复在设计期间发现的软件缺陷的成本的五倍,修复在部署期间发现的错误的成本可能是五倍 高六倍 比这.

Bar graph showing cost to fix defects at various software development stages; repairing at the last stage is 30x costlier than the first.

很明显, 在早期阶段修复bug比在后期处理它们更划算、更有效. 业界普遍接受这一原则,进一步推动采取积极措施, 比如彻底的设计评审和健壮的测试框架, 在开发的早期阶段捕捉并纠正软件缺陷.

通过快速采用人工智能,培养持续改进和学习的文化, 组织不仅仅是修复bug——他们正在培养一种不断寻求突破软件质量界限的心态.

在质量保证中应用人工智能

这个三步实现框架为QA规则引入了一套简单的人工智能,由广泛的代码分析数据驱动,以评估代码质量并使用模式匹配机器学习(ML)方法对其进行优化. 我们通过考虑跨SDLC阶段的开发人员和测试人员的生产力来估计bug修复成本, 将生产率与分配给特性开发的资源进行比较:在特性开发中投入的资源百分比越高, 低质量代码的成本越低,反之亦然.

处理缺陷的迭代开发框架图:步骤是数据挖掘, 模型匹配, 以及基于规则的AI引擎.
我们信任的代码设计的框架引入了一个迭代开发过程来检测, 评估, 并根据缺陷对产品的潜在影响来修复缺陷.

通过数据挖掘定义质量

代码质量的标准是不容易确定的——质量是相对的,取决于各种因素. 任何QA过程都会将产品的实际状态与所谓的“完美”状态进行比较.“汽车制造商, 例如, 将组装好的汽车与汽车的原始设计相匹配, 考虑在所有样本集上检测到的缺陷的平均数量. 在fintech, 质量通常是通过识别与法律框架不一致的交易来定义的.

在软件开发中,我们可以使用一系列工具来分析代码: 剥绒机 对于扫码, 静态应用程序安全性测试 为了发现安全漏洞, 软件组成分析 用于检查开源组件, 许可证遵从性检查是否符合法律规定, 以及用于衡量开发效率的生产力分析工具.

从我们的分析可以得出的许多变量中,让我们关注6个关键的软件QA特征:

  • 缺陷密度: 每个大小的软件中确认的错误或缺陷的数量, 通常以每千行代码为单位
  • 代码重复: 在代码库中重复出现相同的代码, 哪些会导致维护挑战和不一致
  • 硬编码的标记: 修正了直接嵌入到源代码中的数据值, 如果它们包含诸如密码之类的敏感信息,哪些会构成安全风险
  • 安全漏洞: 系统中的弱点或缺陷可能被利用来造成伤害或未经授权的访问
  • 过时的包: 旧版本的软件库或依赖项可能缺乏最近的错误修复或安全更新
  • 非许可的开源库: 开源类库 使用限制性许可证可以对软件的使用或分发方式施加限制

公司应该为他们的客户优先考虑最相关的特征,以最小化变更请求和维护成本. 虽然可能有更多的变量,但框架保持不变.

在完成这个内部评估之后, 是时候为高质量的软件寻找一个参考点了. 产品经理应该收集来自同一市场部门的产品的源代码. 开源项目的代码是公开的,可以从诸如 GitHub, GitLab,或者项目自己的版本控制系统. 选择先前确定的相同质量变量并登记平均值, 最大, 最小值. 它们将成为你的质量基准.

你不应该拿苹果和橘子作比较,尤其是在软件开发中. 如果我们将一个代码库的质量与另一个使用完全不同的技术堆栈的代码库进行比较, 服务另一个市场界别, 或者在成熟度方面有很大的不同, 质量保证结论可能具有误导性.

训练和运行模型

在ai辅助的QA框架中, 我们需要使用在质量评估中获得的信息来训练ML模型. 这个模型应该分析代码, 过滤结果, 并根据一组已定义的规则对错误和问题的严重程度进行分类.

培训数据应包括各种信息来源, 比如质量基准, 安全知识库, 第三方库数据库, 以及一个许可证分类数据库. 模型的质量和准确性将取决于提供给它的数据, 因此,一丝不苟的挑选过程至关重要. 我不会在这里冒险讨论训练ML模型的细节, 因为重点是概述这个新框架的步骤. 但是你可以参考一些指南 ML模型的详细训练.

一旦您熟悉了您的ML模型, 是时候让它分析软件并将其与基准和质量变量进行比较了. 机器学习可以在人类完成任务的一小部分时间内探索数百万行代码. 每次分析都能产生有价值的见解, 将重点放在需要改进的地方, 比如代码清理, 安全问题, 或者许可证遵从性更新.

但在解决任何问题之前, 定义哪些漏洞在修复后将为业务产生最佳结果是至关重要的, 根据模型检测到的严重程度. 软件总是带有潜在的漏洞, 但是产品经理和产品团队的目标应该是在功能之间取得平衡, 成本, time, 和安全.

因为这个框架是迭代的, 每个AI QA周期都将使代码更接近已建立的质量基准, 促进持续改进. 这种系统化的方法不仅可以提高代码质量,还可以让开发人员在开发过程中更早地修复关键错误, 但它也灌输了一种有纪律的, 以质量为中心的心态.

报告、预测和迭代

在前一步中, ML模型根据质量基准分析代码,并提供对技术债务和其他需要改进的领域的见解. 尽管如此,对于许多利益相关者来说,这些数据(如下面的例子所示)并没有多大意义.

类别
问题
债务估计
评论
质量
445个bug, 3545个代码异味
~500天
假设只有阻滞剂和高度严重的问题会得到解决
安全
55个漏洞,383个安全热点
~100天
假设所有的漏洞都将被解决,并且更高严重性的热点将被检查
秘密
801硬编码风险
~50天

过时的包
496 outdated packages (>3 years)
~300天

重复的块
40156块
~150天
假设只有较大的区块会被修改
高风险的许可证
React代码中的20个问题
~20天
假设所有的问题都会得到解决

总计。
1120天

An 自动报告 因此,做出明智的决定至关重要. 我们通过向AI规则引擎提供从ML模型获得的信息来实现这一点, 来自开发团队组成和对齐的数据, 以及公司可用的风险缓解策略. 这种方式, 所有三个级别的涉众(开发人员), 经理, (高管们)每人都会收到一份精心准备的报告,其中列出了各自最突出的痛点, 从下面的例子可以看出:

一个表格列出了各种软件缺陷以及它们各自的类别和严重程度. 每个条目都提供了缺陷的描述.
以技术为重点, 开发人员的报告应该包括开发人员检查和解决问题所需的所有细节, 以及每个人的原因.

分析软件缺陷的风险和成本估算的管理报告. 该数据包括一个漏洞评分, 严重程度分布, 并识别过时的版本, 在其他数据中.
管理报告侧重于风险和成本估算. 它还应该为代码重构资源规划提供足够的信息.

执行报告概述了风险, 建议, 以及对特定缺陷严重性的总结.
执行报告应该简短而全面. 其重点应放在风险管理上, 每个风险都应该与可操作的风险缓解建议相关联.

另外, 当此流程迭代多次时,将激活预测组件, 启用检测质量变化峰值. 例如, 在以前面临的条件下,可能会出现明显的质量恶化模式, 比如在发布阶段增加提交. 这种预测性有助于预先预测和解决潜在的质量问题, 进一步加强软件开发过程以应对未来的挑战.

这一步之后, 流程循环回到初始数据挖掘阶段, 开始新一轮的分析和洞察. 循环的每次迭代都会产生更多的数据并改进ML模型, 逐步提高流程的准确性和有效性.

在软件开发的现代时代, 对产品经理来说,在快速发货和确保产品质量之间取得适当的平衡是一项主要挑战. 技术发展的无情步伐要求一个强大的, 敏捷, 以及管理软件质量的智能方法. 这里讨论的人工智能在质量保证中的集成代表了产品经理如何驾驭这种微妙平衡的范式转变. 通过采用迭代, data-informed, 和人工智能增强框架, 产品经理现在有了一个强大的工具. 这个框架有助于更深入地理解代码库, 阐明了技术债务的前景, 并优先考虑产生重大价值的行动, 同时加快质量保证审查过程.

了解基本知识

  • 人工智能能取代质量保证吗?

    人工智能可以通过自动化日常测试任务来显著增强质量保证(QA), 识别模式, 预测问题. 然而, 它不太可能完全取代人类QA测试人员,因为人类具有微妙的理解和创造性的解决问题的技能. 人工智能和人类洞察力的结合可以提供更强大、更有效的QA流程.

  • 如何在QA中使用AI?

    QA中的AI通过自动化重复测试来提高效率, 快速分析大型数据集, 及早发现bug. 它使用机器学习来预测问题, 随着时间的推移提高测试精度, 确保软件质量. 这种精通技术的方法加速了QA过程, 使其在快速交付优质产品方面更具成本效益和效率.

  • QA测试员会被AI取代吗?

    而人工智能可以自动执行重复性任务并有效地分析数据, 它不会取代QA测试员. 对于理解复杂的场景和提供细致入微的评估,人类的洞察力是不可替代的. 未来可能需要人工智能和人类专业知识的协作组合, 提高质量保证过程的效率和效果, 同时保留人类测试人员的批判性理解和判断.

聘请Toptal这方面的专家.
现在雇佣
科斯塔斯·沃里奥蒂斯的头像
科斯塔斯Voliotis

位于 希腊雅典

成员自 2019年3月22日

作者简介

科斯塔斯是产品和项目管理专家,专门从事全球竞争激烈的市场的尖端技术项目. 他拥有雅典国立技术大学的博士学位, 在他25年的职业生涯中,他担任过多个高管职位.

Toptal作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.

以前的角色

首席技术官

工作经验

25

以前在

ESW资本 Exus

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

欧博体育app下载

加入总冠军® 社区.