大牛分享,提高工程性能的7个简单技巧

news2024/12/26 22:54:33

软件性能和弹性(恢复能力)是用户体验的关键组成部分,但随着软件行业采用DevOps,它开始在性能和弹性方面出现不足。在软件完全失败之前,性能问题经常被忽略。

但是,我们都知道性能不会突然降低。随着软件通过迭代发布,每次添加更多代码时都会产生性能成本,以及事情可能失败的额外逻辑循环,从而影响整体稳定性。

由于单个代码更改,几乎不会出现致残性能或软件可用性问题。相反,它通常会被一千次削减而死亡。通过严格的实践来增强性能和弹性,并持续测试这些方面,是在问题开始之前解决问题的好方法。与测试的许多方面一样,性能实践的质量远比正在执行的测试数量重要得多。

以下是推动高效性能和恢复能力工程实践的七个简单技巧

1、使用基准测试,一次只更改一个变量
在性能和弹性工程中,基准测试是一种标准化问题或测试,可作为评估或比较的基础。我们定义这样的测试,以便我们可以将它们相互比较。为了进行比较,我们更改了一个元素并测量了该更改对另一个测试的影响。

在我们的持续集成过程中,我们对软件的新版本进行基准测试,以衡量代码更改如何影响我们软件的性能及弹性。在其他一些基准测试中,我们希望衡量我们的软件在不同大小的硬件上的性能表现。由于我们还支持多种体系结构,平台,操作系统,数据库和文件系统,因此我们希望不仅能够定义如何获得最佳性能和可靠性,还能够将它们相互比较。

这些都是有效的基准实践,因为我们改变了一个元素并衡量了这一变化的影响。但是,如果我们要更改测试中的软件版本和我们同时测试的硬件,然后尝试比较结果,我们将无法断定观察到的任何更改是由于一个更改,或者另一个,或两者的结合 - 通常,变化的组合将产生与单独发生时不同的影响。 

在性能工程中,尝试进行“苹果对苹果”比较,使用基准测试,并在要比较的多个测试版本中仅更改一个变量。 

2、监控内存,CPU,磁盘和网络使用情况
由于性能和弹性工程是一项科学努力,只有通过寻求以可重复的方式客观地解释我们观察到的事件才能实现。这意味着我们需要衡量。

对于性能工程,我们不仅要测量我们正在测试的软件,还要测量我们正在测试它的硬件。监控内存,CPU,磁盘和网络使用情况是我们分析的关键。我们还必须了解这些资源是如何分配的,因为它与我们的处理需求有关。

在信息技术方面,我们总是将数据从一个点传输到另一个点并对其进行转换。在这一过程中, 我们增加了冗余;一些冗余是浪费或开销,其中一些是必要的,因为它使我们能够确保数据完整性和安全性。性能工程就是消除开销和增加数据完整性。 

3、每次测试至少运行三次
在我们比较测试结果之前,我们需要确保我们想要比较的数字是值得信赖的。每次我们进行测试时,我们都希望如果我们在不同时间在相同条件下运行相同的测试,我们应该得到相同的结果和指标。

但是当我们第一次进行测试时,我们在新条件下没有测试历史记录来决定我们的结果是否可重复。请记住,以前的一个组件不同的测试不能考虑结果的可重复性;只有多次执行相同的测试才能让我们对结果有信心。 

我们可以信任的结果是关键因素,因此我建议你不要考虑性能比较测试的结果,除非您至少执行了三次测试。五次甚至更好的保险测试。对于向客户发布或一般可用性版本,还需要执行更多。 

4、实现低于3%的结果差异
仍然在结果的主题上,我们必须证明在不同时间重复的相同测试应该产生相同的结果。一个关键指标是主要指标的方差(也称为可变性)。方差是一个度量,表示同一测试的最佳和更差执行的百分比差异。

让我们考虑一个性能测试,其中主要指标是事务中的吞吐量测量。如果我们的测试具有每秒100个事务的最差执行吞吐量和每秒110个事务的最佳执行吞吐量,那么我们的差异将为10%:

方差 = (较大的值–较低的值)/较低的值
(110 - 100)/ 100 = 0.1

同样,对于弹性测试,其中主要指标是以秒为单位的恢复时间,如果我们的测试具有最差恢复时间为5分钟且最佳时间为4分钟,则我们的方差将为25%。

方差是衡量我们的结果是否可信的关键指标。方差小于3%意味着我们的结果是可靠的。3%到5%之间的方差意味着结果是可接受的和可重复的,但是在测试,环境或测试软件的稳定性方面仍有改进的余地。6%到10%之间的方差意味着我们不能重复我们的结果,应该积极调查我们为什么会有如此高的方差。任何方差大于10%的测试都不能用于性能考虑。                      

5、运行负载测试至少半小时
负载测试通常旨在测量系统在特定用途下的容量。目标是让该系统在最短的时间内处理最大的工作负载而不会失败。对于这些测试的测量来说,实际上有任何基础,在我看来,性能测试运行必须至少持续30分钟。

当你考虑它时,你用15分钟负载测试证明的唯一一件事就是系统可以处理十五分钟的负载。此外,运行越短,它将受到人为变化的影响越大。

在性能工程中,我们还需要预热期,因为第一次执行时首次运行总是较慢。即使在预热系统上,测试的前几个交易可能会更慢,并且在多次运行之间不一定相同 - 因此会出现人为的差异。在30分钟或更长时间的测试中, 这些测试不会显示出来, 诱发差异的可能性也要低得多。

如果负载测试持续时间低于30分钟,从性能工程的角度来看,其结果将没有多大意义。测试至少半小时不包括任何预热期。

6、证明您的负载结果可以持续至少两个小时
我再次建议至少半小时。正如前面所述,只有30分钟的负载测试证明,系统可以承受30分钟的负载。虽然30分钟将足以检测到大多数新的性能变化,但为了使这些测试合法,还必须能够证明它们可以在相同的负载下运行至少两个小时。

如果没有空间耗尽, 高峰负荷应该是无限期可持续的。证明负载可以运行两个小时是很好的开始。我建议将目标目标为6、12和24小时作为里程碑,并在可能的情况下证明在这些负载下可以连续运行5天。

请注意,这些负载耐久性测试旨在证明负载结果的可持续性。它们不需要针对每一个代码更改运行,而只是为了证明负载数量的可持续性。

从证明两个小时是可持续的开始。任何较少的内容和性能数字都不应该用于性能发布, 也绝对不是出于容量考虑。

7、确保良好的自动化程度
没有良好的自动化,你就无法获得成功的性能工程。你是否花费更多时间分析测试结果(良好的自动化),或执行测试并对现有自动化进行改进(自动化程度较低)?

如果您认为可以改进自动化实践,请从以下七个原则开始:

  • 了解你自动化的原因
  • 了解自动化的步骤
  • 不要只考虑快乐的路径或不快乐的路径
  • 构建块可以叠加在一起
  • 尽早规划自动化
  • 设置自动化场景
  • 从自动化中收集指标

设计你的测试以获得有意义的结果
解决软件性能和弹性的最有效方法是通过有效的测试。但重新考虑和重组你的测试不必过于复杂。遵循这七个简单的技巧将及早发现很多性能问题--在它们成为真正的问题之前。

 

实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/671469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【二叉树part02】| 102.二叉树的层序遍历、226.翻转二叉树、101.对称二叉树

目录 ✿LeetCode102.二叉树的层序遍历❀ ✿LeetCode226.翻转二叉树❀ ✿LeetCode101.对称二叉树❀ ✿LeetCode102.二叉树的层序遍历❀ 链接:102.二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地&#xff…

Python入门(二十七)测试(二)

测试(二) 1.测试类2.各种断言方法3.一个要测试的类4.测试AnonymousSurvey类5.方法setUp() 1.测试类 前面我们编写了针对单个函数的测试,下面来编写针对类的测试。很多程序中都会用到类,因此证明我们的类能够正确工作大有裨益。如…

AI绘画——了解AI绘画爆火原因与工具,并生成几个端午绘画小作品

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录 前言 一.AI绘画 1.AI绘画爆火原因 2.AI绘画背后原理 二.AI绘画工具介绍 1.midjour…

IDC武连峰:应用数字安全免疫力理念,促进企业在数字时代韧性发展

作者:IDC中国副总裁、首席分析师 武连峰 数字安全免疫力是一个企业针对各种数字安全威胁时的防御机制,与人体免疫力相似,企业数字安全免疫力包含两类:企业安全文化意识与合规是先天性数字安全免疫力,今天任何一个企业…

vue使用swiper三行轮播问题

1、轮播图设置属性slidesPerColumn:3实现不了,解决方案如下: this.scheduleData是后台请求的数据,通过3个一组分组转换为this.scheduleListThreede 的数据! 2、逻辑处理如下: computed: { scheduleListThree: functi…

做测试不会 SQL?超详细的 SQL 查询语法教程来啦!

前言 作为一名测试工程师,工作中在对测试结果进行数据比对的时候,或多或少要和数据库打交道的,要和数据库打交道,那么一些常用的sql查询语法必须要掌握。最近有部分做测试小伙伴表示sql查询不太会,问我有没有sql查询语…

list赋值方法add()...和set()简介

目录 一、方法展示 二、add() 方法介绍 2.1.add(E element) 2.1.1源码 2.1.2.实例截图 2.1.3.Null引起的题外话 2.2.add(int index, E element) 2.2.1.源码 2.2.2.示例截图 2.2.3. add()引起IndexOutOfBoundsException简介 三、addAll()方法…

CSS查缺补漏之《媒体查询@media与BFC》

示例代码如下&#xff1a; <div class"box">世界你好</div> .box {width: 200px;height: 200px;background-color: yellow;color: white;font-size: 24px;text-align: center;line-height: 200px; } 媒体类型 媒体类型允许指定文件将如何在不同媒体上…

OpenCV——《图像平滑》结果输出对比《形态学操作》

1.图像平滑 图像平滑是一项简单且使用频率很高的图像处理方法&#xff0c;可以用来压制、弱化或消除图像中的细节、突变、边缘和噪声&#xff0c;最常见的是用来减少图像上的噪声。 常用的滤波器主要为&#xff1a; 均值滤波器&#xff1a;并不能完全消除噪声&#xff0c;只能…

【服务器】搭建hMailServer 服务实现远程发送邮件

typora-copy-images-to: upload hMailServer 是一个邮件服务器,通过它我们可以搭建自己的邮件服务,通过cpolar内网映射工具即可实现远程发送邮件,不需要使用公网服务器,不需要域名,而且邮件账号名称可以自定义. 下面以windows 10系统为环境,介绍使用方法: 1. 安装hMailServe…

小鹏G9高压平台800V电驱动实拍

近日&#xff0c;小鹏汽车董事长何小鹏在其个人社交账号上透露&#xff0c;小鹏G9正按原定计划按部就班推进节奏&#xff0c;将于8月启动预订&#xff0c;9月正式迎来上市&#xff0c;上市后很快就会启动用户交付。 图片来源&#xff1a;何小鹏官方微博 需要样件请联&#xff1…

Oracle DMP文件导入

dmp文件可以在Navicat中的 把dmp放入其中。然后用数据泵导入。遗憾的是报错 [ERR] ORA-39001: invalid argument value [ERR] ORA-39000: bad dump file specification [ERR] ORA-39143: dump file "/xxx.DMP" may be an original export dump file 改为imp工具&…

干货分享 | TSMaster标定模块自动化控制应用指南

本文目录&#xff1a; 一、TSMaster标定模块自动化控制的基础原理 1.1 TSMaster的标定系统变量 1.2 内部TSMaster调用C脚本实现标定模块的自动化控制 1.3 外部调用COM组件实现自动化标定 二、标定自动化控制场景与TSMaster实例 2.1 C脚本实现控制标定模块的启动与关闭的设…

Goby 漏洞发布|网神SecGate 3600防火墙 sys_export_conf_local_save 文件读取漏洞

漏洞名称&#xff1a;网神SecGate 3600防火墙 sys_export_conf_local_save 文件读取漏洞 English Name&#xff1a;Weaver OA PluginViewServlet Authentication Bypass Vulnerability CVSS core: 8.0 影响资产数&#xff1a;738 漏洞描述&#xff1a; 网神SecGate 3600防…

同一 tomcat 不同项目 session 共享实现

说明 这里仅讨论 同一个tomcat&#xff0c;部署了两个工程&#xff08;两个war包&#xff09;。不涉及不同tomcat,不涉及集群 背景 tomcat中的工程A包含用户登录、退出、权限控制等功能&#xff1b;工程B包含业务功能接口。工程A将用户登录信息加密响应给前端&#xff0c;前…

基于Java校园快递代取系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

NLP(五十五)LangChain入门

LangChain简介 背景 由于ChatGPT的发行&#xff0c;大模型&#xff08;Large Language Model, LLM&#xff09;已经变得非常流行了。也许你可能没有足够的资金和计算资源从头开始训练大模型&#xff0c;但你仍然可以使用大模型来做一些比较酷的事情&#xff0c;比如&#xff1…

大数据开发薪资怎么样

想必想入行的小伙伴在正式开始学习之前&#xff0c;都会考虑薪资这个可观因素。有不少小伙伴是看中了大数据的薪资选择加入这个行业的&#xff0c;想知道以后能找什么工作以及工作薪水&#xff0c;那不妨让我们以数据的方式来展示一下~ 猎聘大数据研究院发布了《2022未来人才就…

制造执行系统(MES)的核心功能是什么?

制造执行系统&#xff08;MES&#xff09;的核心功能是什么? 01 什么是MES 制造执行系统&#xff08;MES&#xff09;是一种用于监控、控制和优化制造过程的软件系统。它通过与企业资源计划&#xff08;ERP&#xff09;系统和自动化系统的集成&#xff0c;实现对生产过程的管…

小红书品牌营销策略分析!品牌方必看

小红书在品牌营销方面的策略非常成功&#xff0c;特别是在口碑营销、内容营销和小红书素人达人种草营销方面的运用。以下是伯乐网络传媒对这些策略的详细分析&#xff0c;想要做小红书营销推广的商家必看&#xff01; 一、口碑营销 对于小红书APP来说,口碑营销的传播主体就是小…