搜索
首页科技周边人工智能机器学习助力高质量软件工程

机器学习助力高质量软件工程

Apr 14, 2023 pm 04:31 PM
机器学习开发工程项目

译者 | 朱先忠

审校 | 孙淑娟

引言

一般来说,软件测试往往是比较简单的:每个输入=>已知输出。然而,纵观整个软件测试的历史,会发现很多测试往往都停留在猜测水平上。也就是说,测试时由开发者构想出用户的操作流程,估计可能出现的负载并分析需要耗费的时间,然后运行测试,并将当前结果与基准答案进行比较。如果我们发现不存在回归,那么就认为当前构建方案是正确的;然后,继续后面的测试。如果存在回归,就返回。大多数时候,我们已经知道了输出结果,尽管它需要更好的定义——回归的边界清晰,并不那么模糊。其实,这正是机器学习(ML)系统和预测分析的切入点——结束歧义。

测试完成后,性能工程师所做的工作不仅是查看结果的算术平均值和几何平均值,他们还会查看有关百分比数据。例如,系统运行过程中,往往10%的最慢请求都是由系统错误导致的——该错误会产生一个总是影响程序运行速度的条件。

虽然我们可以手动关联数据中可用的属性,但是ML可能会比您以更快的速度链接数据属性。在确定导致10%的错误请求的条件后,性能工程师便可以构建测试场景来重现该行为。在修复之前和之后运行测试能够帮助确定修复已经得到更正。

机器学习助力高质量软件工程

图1:对绩效指标的总体信心

机器学习和数据科学的性能

机器学习有助于促进软件开发,使有关开发技术更坚固、更好地满足用户在不同领域和行业的需求。我们可以通过将管道和环境中的数据输入到深度学习算法来暴露因果模式。预测分析算法与性能工程方法相结合,可实现更高效、更快的吞吐量,深入了解终端用户如何在自然场景下使用软件,并帮助开发者降低带有缺陷的产品应用于生产环境的可能性。通过及早发现问题及其原因,您可以在开发生命周期的早期进行问题纠正,并防止对生产产生影响。总体来看,您可以通过以下方式利用预测分析来提高应用程序性能。

  • 确定根本原因。您可以使用机器学习技术来确定可用性或性能问题的根本原因,从而关注其他需要注意的领域。然后,预测分析可以分析每个集群的各种特征,提供我们需要进行更改的见解,以达到理想的性能并避免瓶颈。
  • 监视应用程序运行状况。使用机器学习技术执行实时应用程序监控,有助于企业能够及时发现系统性能降级并迅速作出响应。大多数应用程序依赖于多个服务来获得完整应用程序的状态;预测分析模型能够在应用程序运行正常时关联并分析数据,以识别传入数据是否为异常值。
  • 预测用户负载。我们依靠峰值用户流量来调整基础设施的规模,以适应未来访问应用程序的用户数量。这种方法有局限性,因为它不考虑变化或其他未知因素。预测分析有助于显示用户负载,并更好地做好应对准备,帮助团队规划其基础设施需求和容量利用率。
  • 在为时已晚之前预测停机。在应用程序停机或停电发生之前预测它们将有助于采取预防措施。预测分析模型将遵循先前的停电情形,并继续监测类似情况,以预测未来的故障。
  • 停止查看阈值,开始分析数据。可观测性和监测产生的大量数据每周最多需要几百兆字节。即使使用现代分析工具,您也必须事先知道自己在寻找什么。这导致团队不直接查看数据,而是设置阈值作为行动的触发因素。即使是成熟的团队也会寻找例外情况,而不是钻研他们的数据。为了缓解这种情况,我们将模型与可用数据源集成。然后,模型将筛选数据并计算随时间推移的阈值。使用这种技术,模型被馈送并汇总历史数据,提供基于季节性而不是由人类设定的阈值。基于算法来设置阈值有助于触发更少的警报;另一方面,这也带来更好的可操作性和更高价值。
  • 跨数据集分析和关联。您的数据大多是时间序列,因此可以更容易地查看随时间变化的单个变量。许多趋势来自多种措施的相互作用。例如,只有在同一目标同时进行各种事务时,响应时间才会下降。对于人类来说,这几乎是不可能的,但经过适当训练的算法却有助于发现这些相关性。

预测分析中数据的重要性

“大数据”通常指的是数据集。不错,是大数据集,速度提升很快,内容变化也很大。对于这样数据的分析需要专门的方法,以便我们能够从中提取模式和信息。近些年来,存储、处理器、进程并行化以及算法设计的改进都使得系统能够在合理的时间内处理大量数据,从而允许更广泛地使用这些方法。为了获得有意义的结果,您必须确保数据的一致性。

例如,每个项目必须使用相同的排名系统,因此,如果一个项目使用1作为关键值,而另一个项目使用5——就像人们使用“DEFCON 5”表示“DEFCON 1”时一样;那么,必须在处理之前对这些值进行规范化处理。预测算法由算法及其输入的数据组成,而软件开发产生了大量数据,直到最近,这些数据仍处于闲置状态,等待删除。然而,预测分析算法可以处理这些文件,针对我们无法检测到的模式,根据这些数据提出和回答问题,例如:

  • 我们是否在浪费时间测试未使用的场景吗?
  • 性能改进如何与用户幸福感相关联?
  • 修复特定缺陷需要多长时间?

这些问题及其答案就是预测分析的用途——更好地理解可能发生的事情。

算法

预测分析的另一个主要组成部分是算法;您需要仔细选择或实现它。从简单开始是至关重要的,因为模型往往会变得越来越复杂,对输入数据的变化越来越敏感,并有可能扭曲预测。它们可以解决两类问题:分类和回归(见图2)。

  • 分类:分类用于预测集合的结果,方法是从输入数据中推断标签(如“向下”或“向上”)开始,将集合划分为不同的类别。
  • 回归:当输出变量是一组实值时,回归用于预测集合的结果。它将处理输入数据来进行预测——例如,使用的内存量、开发人员编写的代码行等。最常用的预测模型是神经网络、决策树以及线性和逻辑回归。

机器学习助力高质量软件工程

图2:分类与回归

神经网络

神经网络通过实例学习,并使用历史数据和当前数据来预测未来价值。它们的架构允许它们识别隐藏在数据中的复杂关系,以复制我们大脑检测模式的方式。它们包含许多层,这些层接受数据、计算预测并作为单个预测提供输出。

决策树

决策树是一种分析方法,它将结果呈现在一系列“if/then”选项中,以预测特定选项的潜在风险和收益。它可以解决所有分类问题并回答复杂问题。

如图3所示,决策树类似于由算法生成的自顶向下的树,该算法能够识别将数据分割成分支状划分的各种方式,以说明未来的决策并帮助识别决策路径。

如果加载时间超过三秒,树中的一个分支可能是放弃购物车的用户。在这一条之下,另一条分支可能会指明她们是否属于女性。“yes”的回答会增加风险,因为分析表明,女性更容易冲动购买,而这种延迟会让人陷入沉思。

机器学习助力高质量软件工程

图3:决策树示例

线性和逻辑回归

回归是最流行的统计方法之一。在估算数字时,这一点至关重要,例如在“黑色星期五”大促活动期间,我们需要为每项服务增加多少资源。许多回归算法被设计来估计变量之间的关系,在庞大的和混合的数据集中找到关键模式,以及它们之间的关系。它的范围从简单的线性回归模型(计算拟合数据的直线函数)到逻辑回归(计算曲线)(图4)。

线性和逻辑回归总体对比

线性回归

逻辑回归

用于定义连续范围内的值,例如接下来几个月用户流量峰值的风险。

这是一种统计方法,其中参数是根据旧的集合预测的。它最适合二进制分类:y=0或1的数据集,其中1表示默认类。它的名字来源于它的转换函数是一个逻辑函数

它表示为y=a+bx,其中x是用于确定输出y的输入集。系数a和b用于量化x和y之间的关系,其中a是截距,b是直线的斜率。

它由逻辑函数表示:


其中β0是截距,β1是速率。它使用训练数据来计算系数,将预测结果与实际结果之间的误差最小化。

目标是拟合最接近大多数点的直线,减少y和直线之间的距离或误差。

它形成S形曲线,其中应用阈值将概率转换为二进制分类。

机器学习助力高质量软件工程

图4:线性回归与逻辑回归

这些是监督学习方法,因为算法解决了特定的属性。当你心中没有特定的结果,但想确定可能的模式或趋势时,可以使用无监督学习。在这种情况下,该模型将分析尽可能多的特征组合,以找到人类可以采取行动的相关性。

机器学习助力高质量软件工程

图5:有监督与无监督学习

性能工程中的“左移”

使用以前的算法来衡量消费者对产品和应用程序的看法,使得性能工程更加以消费者为中心。收集所有信息后,必须通过适当的工具和算法对其进行存储和分析。这些数据可以包括错误日志、测试用例、测试结果、生产事件、应用程序日志文件、项目文档、事件日志、跟踪,等等。然后,我们可以将其应用于数据中,以获得各种见解:

  • 分析环境中的缺陷
  • 评估对客户体验的影响
  • 确定问题模式
  • 创建更准确的测试场景,等等

该技术支持质量方面的左移(shift-left)方法,允许您预测执行性能测试所需的时间、可能识别的缺陷数量以及可能导致生产的缺陷数量,从而实现性能测试的更好覆盖,并创建真实的用户体验。可防止和纠正可用性、兼容性、性能和安全性等问题,而不会影响用户。

以下是一些有助于提高质量的信息类型的示例:

  • 缺陷类型
  • 在哪个阶段发现了缺陷
  • 缺陷的根本原因是什么
  • 缺陷是否可再现

一旦您了解了这一点,就可以进行更改并创建测试,以更快地防止类似问题。

结论

自编程诞生以来,软件工程师已经做出了成百上千的假设。但是,今天的数字用户们更加意识到这一点,而且对错误和失败的容忍度也进一步降低。另一方面,企业也在竞相通过量身定制的服务和越来越难测试的复杂软件,力图提供更具吸引力和完美的用户体验。

今天,一切都需要无缝工作,并支持所有流行的浏览器、移动设备和应用程序。即使是几分钟的撞车事故也可能造成数千或数百万美元的损失。为了防止出现问题,团队必须在整个软件生命周期中整合可观测性解决方案和用户体验。管理复杂系统的质量和性能需要的不仅仅是执行测试用例和运行负载测试。趋势可以帮助您判断情况是否得到控制、好转或恶化,以及改善或恶化的速度。机器学习技术可以帮助预测性能问题,使团队能够正确进行方案调整。最后,让我们来引用本杰明·富兰克林(Benjamin Franklin)的一句话作为结束语:“一盎司预防抵得上一磅治疗。”

译者介绍

朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。

原文标题:Performance Engineering Powered by Machine Learning,作者:

以上是机器学习助力高质量软件工程的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:51CTO.COM。如有侵权,请联系admin@php.cn删除
Gemma范围:Google'用于凝视AI的显微镜Gemma范围:Google'用于凝视AI的显微镜Apr 17, 2025 am 11:55 AM

使用Gemma范围探索语言模型的内部工作 了解AI语言模型的复杂性是一个重大挑战。 Google发布的Gemma Scope是一种综合工具包,为研究人员提供了一种强大的探索方式

谁是商业智能分析师以及如何成为一位?谁是商业智能分析师以及如何成为一位?Apr 17, 2025 am 11:44 AM

解锁业务成功:成为商业智能分析师的指南 想象一下,将原始数据转换为驱动组织增长的可行见解。 这是商业智能(BI)分析师的力量 - 在GU中的关键作用

如何在SQL中添加列? - 分析Vidhya如何在SQL中添加列? - 分析VidhyaApr 17, 2025 am 11:43 AM

SQL的Alter表语句:动态地将列添加到数据库 在数据管理中,SQL的适应性至关重要。 需要即时调整数据库结构吗? Alter表语句是您的解决方案。本指南的详细信息添加了Colu

业务分析师与数据分析师业务分析师与数据分析师Apr 17, 2025 am 11:38 AM

介绍 想象一个繁华的办公室,两名专业人员在一个关键项目中合作。 业务分析师专注于公司的目标,确定改进领域,并确保与市场趋势保持战略一致。 simu

什么是Excel中的Count和Counta? - 分析Vidhya什么是Excel中的Count和Counta? - 分析VidhyaApr 17, 2025 am 11:34 AM

Excel 数据计数与分析:COUNT 和 COUNTA 函数详解 精确的数据计数和分析在 Excel 中至关重要,尤其是在处理大型数据集时。Excel 提供了多种函数来实现此目的,其中 COUNT 和 COUNTA 函数是用于在不同条件下统计单元格数量的关键工具。虽然这两个函数都用于计数单元格,但它们的设计目标却针对不同的数据类型。让我们深入了解 COUNT 和 COUNTA 函数的具体细节,突出它们独特的特性和区别,并学习如何在数据分析中应用它们。 要点概述 理解 COUNT 和 COU

Chrome在这里与AI:每天都有新事物!Chrome在这里与AI:每天都有新事物!Apr 17, 2025 am 11:29 AM

Google Chrome的AI Revolution:个性化和高效的浏览体验 人工智能(AI)正在迅速改变我们的日常生活,而Google Chrome正在领导网络浏览领域的负责人。 本文探讨了兴奋

AI的人类方面:福祉和四人底线AI的人类方面:福祉和四人底线Apr 17, 2025 am 11:28 AM

重新构想影响:四倍的底线 长期以来,对话一直以狭义的AI影响来控制,主要集中在利润的最低点上。但是,更全面的方法认识到BU的相互联系

您应该知道的5个改变游戏规则的量子计算用例您应该知道的5个改变游戏规则的量子计算用例Apr 17, 2025 am 11:24 AM

事情正稳步发展。投资投入量子服务提供商和初创企业表明,行业了解其意义。而且,越来越多的现实用例正在出现以证明其价值超出

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。