【性能测试学习】2023最有效的7大性能测试技术(建议收藏)

news2024/11/23 21:37:30

进入互联网时代,性能测试显得越来越重要,移动应用、web应用和物联网应用都需要进行性能测试和性能调优,而进行性能和负载测试会产生了大量的数据,这些数据难以分析。除了数据分析,我们还会遇到其它一些困难和挑战。

今天我们就介绍七大高效的性能工程(测试)技术帮助你应对挑战,能进行有效的数据分析,高效地完成性能测试和性能调优。

目录

1. 识别基于层的工程事务

2. 监控KPI

3.减少要分析的事务的数量

4. 确保可重复的结果

5. 增加负荷 

6. 利用可视化来发现异常

7. 寻找KPI趋势和停滞期,以确定瓶颈

软件测试面试小程序

1. 识别基于层的工程事务

在典型的性能测试工具中,加载脚本会包含事务处理或有序的API调用,以完成业务工作流。例如,我们正在为一个物联网应用程序创建一个性能管理工具,这个脚本将包含代表一个设备的事务处理逻辑或行为。

 工程脚本包含针对部署的特定层(如网络层、应用层、消息层、数据库层等)的单个事务处理。通过发现工程事务处理的退化,我们可以隔离需要集中精力的部署层。为此,我们需要确定哪些事务到达哪些层。如果在这方面有困难,就不得不向开发或基础架构支持团队寻求帮助。

(图1)

每个部署都是独一无二的,但这里我们可能会遇到的一些和层次相关的问题:

  • Web层:获取静态非缓存文件的事务。

  • 应用程序层:执行一个方法并创建对象的事务,但就停留在这里,没有去访问数据库层。

  • 数据库层:需要从数据库查询的事务。

让每个工程事务都有自己的脚本,这样我们就可以分别绘制出每个工程事务的命中率(TPS)和响应时间值。在每个工程事务之前使用一个恒定的思考时间(例如15秒)来间隔执行时间,并创建一个一致的采样率。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

 

2. 监控KPI

前端KPI(关键性能指标)通过关联用户负载、TPS、响应时间和错误率来显示当前的容量。被监视的KPI可以完整地说明为什么应用程序在某个工作负载级别上开始降级。命中率和空闲资源是每个硬件或软件服务器的两个具有启发性的KPI。

图2

命中率将随着工作负载的变化而变化。在递增负载测试中,随着工作负载的增加,命中率也随之增加。以下是可以监控的命中率示例:

  • 操作系统:TCP连接速率

  • Web服务器:每秒请求数

  • 消息传递:入队(Enqueue)和出队(dequeue)统计

  • 数据库:每秒查询数

请记住,每个部署都是唯一的,因此需要确定每个服务器的良好命中率是多少,然后连接上所需的监视。

一般我们倾向于监视空闲资源KPI,因为与使用的资源不同,空闲资源的趋势与工作负载相反。正因为如此,可以很容易地在图上识别瓶颈(但如果免费资源不算在内,就得使用已使用的资源)。无论目标是哪个资源,如果它有排队策略,请确保添加一个排队计数器来显示正在等待的请求。

以下是可以监控的免费资源:

  • 操作系统:CPU平均空闲

  • Web服务器:等待请求

  • 应用服务器:空闲的工作线程

  • 消息传递:进入/退出队列等待时间

  • 数据库:线程池中的空闲连接

要确定相关的监控KPI或将它们连接起来,首先要研究部署的架构图。接收或转换数据的每一个接触点都是潜在的瓶颈,因此是监视的候选对象。所监视的KPI越相关,性能描述就越清晰。

开始启动工程脚本进行性能测试,完成业务工作流的负载测试。先设置一个缓慢增长的测试(例如,每15秒增加一个用户,最多增加200个虚拟用户)。测试完成后,将所有监控的KPI绘制成图表,并确保它们与测试报告的TPS/工作负载之间存在直接或反向关系。要有耐心,把一切都画出来。从这个测试中收集的信息,在识别性能瓶颈上非常有价值。

(图3)

另外,设置监视间隔以收集每个持续负载的三个值。在本例中,因为每15秒添加一个用户,所以希望每5秒获得负载测试工具示例,因为三个值将作为一个平台图,而一个单一的值将作为一个峰值图,三个值才能形成趋势。 

也许不是所有的资源都将在架构图的审查期间被捕获,所以启动一个快速增长的负载测试,来发现一些新的资源或新的KPI。这只是一个探测,看看哪些进程和操作系统活动会启动。如果注意到一个外部过程,就可以作为一个KPI候选对象添加到脚本中。

3.减少要分析的事务的数量

进入了分析阶段,我们需要显著减少绘制并用于分析的事务数量。试图分析数百个带标记的业务事务是没有效率的。所有这些业务事务都使用部署的共享资源,因此只需选择其中一些事务,就可以避免分析瘫痪。至于选择哪些事务,完全取决于应用程序的特性。 

例如面向单用户负载测试的结果,选择访问页面、登录、响应时间最长的业务事务和响应时间最短的事务。

还要包括并绘制所有工程事务。工程事务的数量取决于部署中有多少层:5层等于5个工程事务。

(图4)

现在,不是分析在模拟实际负载的负载测试中执行的所有事务,而是只绘制一个子集,响应时间的图表将不会那么混乱,也更容易分析。但创建性能报告时,需要包括所有业务事务的响应时间。

使用分析技能来查看哪个工程事务首先开始降级。命中率和响应时间都将揭示需要集中精力的地方。

4. 确保可重复的结果

对于每个测试场景,运行相同的负载测试三次直到完成。对于这三种测试执行,不要调整或更改性能测试工具中的任何内容:不要修改运行时设置、不要修改测试脚本、不要修改测试的持续时间、不要修改负载模式,更不要修改性能测试环境。只允许数据重置或服务器回收,并且只允许在测试运行之间将环境恢复到基线。

每个测试场景运行三次,并进行初步分析,以在同一时间验证结果或TPS平台。

5. 增加负荷 

增加负载,就是创建并发用户负载场景。先创建一个缓慢增长的阶梯场景,它允许为每个负载集捕获三个被监视的KPI值。换句话说,在添加下一组用户之前,配置缓慢的用户斜坡以维持一个持续时间。例如,如果您每次增加10或100个用户,并每隔5秒收集KPI,那么在增加到下一个负载之前,每个负载集至少运行15秒。是的,这延长了测试(通过减缓斜坡),但结果更容易解释。不能持续的KPI指标并不是一种趋势。 

当性能测试时,遵循“一半-两倍”定律会极大地简化性能工程方法。从实现一半的目标负载开始,如果应用程序能加载到一半负载,然后可以把它翻倍到目标负载。如果不能加载到一半负载,则再次将负载减少一半。如果有必要,可以反复这样做。继续减少一半,直到得到一个可扩展的测试,即使只有10个用户,而虽然目标是10,000!

6. 利用可视化来发现异常

如果知道一个完全可伸缩的应用程序是什么样子的,我们就可以迅速发现异常。因此,研究一下架构图,看看在一个完全可伸缩的应用程序中应该发生什么,并将其与测试结果进行比较。

  •  会发生什么?

  • 什么会发生,什么不会发生?

这些问题的答案会告诉我们应该把注意力集中在哪里。例如,随着用户负载的增加,应该看到web每秒请求数、应用服务器的活动会话、数据库连接数、CPU使用率等都相应增加。通过使用可视化的强大功能,可以大幅减少调查时间,因为您以快速发现不代表可伸缩应用程序的条件。

 粒度对于KPI监视和可视化分析都至关重要。通常,如果一个测试运行很长时间,加载工具在绘制结果图表时将使用更细粒度的间隔。拥有更多的KPI数据点,使分析更容易,但清晰的图表也可能会扭曲了测试结果

7. 寻找KPI趋势和停滞期,以确定瓶颈

当资源被重用或释放时(就像JVM垃圾收集或线程池一样),KPI值会有起伏。把注意力集中在数值变化的趋势上,而不是绝对的偏差上。用我们的分析眼光来判断趋势,

确定第一个出现的瓶颈的可靠技术是用图表表示前端KPI的最小响应时间。使用粒度来分析和识别从其底部出现的第一次突变。最小响应时间内的提升不会有明显变化,而一旦资源饱和,就会突破最小响应时间,所以第一次突变这点会比较精确。随着部署接近第一次出现的瓶颈,TPS或每秒命中数将趋于稳定,响应时间将立即降低或增加,错误率是级联症状。命中率中第一个出现的平稳期表明吞吐量有限制,所以我们等工作只是在监视的命中率KPI中识别它出现的第一个图形平台,这也是为什么主张为每个持续负载收集三个监视指标。一个数据点值只能给出一个峰值,但三个数据点可以呈现一个平稳区间,而这很关键,帮我们发现系统受到限制,要么是软件限制,要么是硬件限制,但绝大多数瓶颈都是软件限制,任何硬件都无法解决这一问题。

通过调优可以提高可伸缩性,通过优化来提高吞吐量,进一步减轻了软件限制,允许应用程序在云部署中有效地向上和向外扩展,可以为公司节省大量的运营费用。所以建议对峰值负载条件进行负载测试,然后注意哪些资源已被分配来适应工作负载。然后将这些资源投入到部署中去。只在超出预期峰值负载的情况下使用弹性云。

记住,隔离第一个出现的KPI是很重要的。不要停留在偶然发现的第一个平台期,然后宣布胜利,因为这可能是一种症状,而不是根本原因。过早的下结论将使我们在配置更改和重新测试方面浪费数小时的时间,结果却发现性能退化同时发生,这意味着负载遇到了相同的瓶颈。

注意:如果有两个或更多的KPI看起来像竞争条件,通常可以通过覆盖KPI图表来获得更清晰的可视化,从而看到哪个平台期首先出现。如果这不起作用,那么设计一个新的负载测试,在加载接近相同的峰值容量负载时减缓加载速度。慢慢地向下移动以收集更多的数据点,这将使结果更清楚。

 END绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

获取方式 :

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

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

相关文章

数据结构和算法学习记录——认识二叉搜索树及二叉搜索树的查找操作(递归以及迭代实现-查找操作、查找最大和最小元素)

目录 二叉搜索树 二叉搜索树的一些操作函数 二叉搜索树的查找操作Find 递归实现 迭代实现 查找最大和最小元素 查找最小元素的递归函数 查找最大元素的迭代函数 二叉搜索树 二叉搜索树(BST,Binary Search Tree),也称二…

深入了解 Hugging Face 中的生成工具:Generate方法

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

SSH升级

升级openssh版本一、安装telnet远程管理主机1、检查是否安装telnet2、安装telnet服务二、下载所需的安装包1、下载openssl、openssh、zlib安装包2、安装所需的相关软件3、备份原来的数据4、复制文件到/usr/local/bin/下增加执行权限一、安装telnet远程管理主机 1、检查是否安装…

通达信口袋支点选股公式编写和设置方法答疑

1、口袋支点选股公式成交量条件 在我编写的口袋支点选股公式中,成交量条件为成交量创10日新高。有网友提出,根据书中的定义,口袋支点成交量条件是成交量大于近10日下跌时的最大成交量。 这个问题确实是我没考虑周全,成交量创10日…

【5G NAS】NR 终端侧PDU建立过程以及数据包的过滤和映射

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

对数据去趋势

对数据去趋势 测量的信号可能显示数据中非固有的整体模式。这些趋势有时会妨碍数据分析,因此必须进行去趋势。 以具有不同趋势的两种心电图 (ECG) 信号为例。ECG 信号对电源干扰等扰动很敏感。加载信号并绘制它们。 load(ecgSignals.mat) t (1:length(ecgl));su…

LaTeX+Overleaf 论文速通教程

一、文本/排版二、章节和段落三、数学公式四、插入图片五、插入表格六、参考文献与交叉引用不使用BibTeX使用BibTeX(推荐)七、交叉引用label和refOverleaf开发界面 latex命令:\命令[可选参数]{必选参数} Latex项目组成: .tex:正文 .bib&…

如何对数据库进行优化

数据库是什么? 简单来说数据库就是将数据按照一定顺序存储到磁盘上的一个软件,我们平时写的sql语句,就是用数据库软件能识别的语言,对数据进行增删改查。其实数据本质上是不存在表里,而是存在磁盘上,所谓的…

掌握亚马逊,沃尔玛,东南亚平台的测评要点,测评事半功倍

测评其实最重要的两个点就是自己的资源和成号率 资源包括;商家资源,中介资源,礼品卡资源,还有买卖账号的渠道,ip资源 成号率这个直接影响的就是你个人投入成本的多,成号率越高,你的成本越低,但…

【Java版oj】day36Rational Arithmetic、Pre-Post

目录 一、Rational Arithmetic (1)原题再现 (2)问题分析 (3)完整代码 二、Pre-Post (1)原题再现 (2)问题分析 (3)完整代码 一、…

十七、小程序报错 真机调试预览失效 Error: Illegal Buffer

报错 电脑端微信开发者工具运行成功而真机调试预览失效 报错 MiniProgramError Illegal Buffer 报错 {errno: 600001, errMsg: “request:fail -200:net::ERR_CERT_COMMON_NAME_INVALID”} 前言:手头有个去年的微信小程序项目 年底甲方不在使用 所以停掉了服务器、…

互联网医院系统构建:探索开源云平台与互联网医院平台源码的融合

互联网医院系统作为一种新型医疗服务模式,将传统的医院门诊转化为在线咨询、远程会诊等形式,帮助患者更加方便地获得专业医疗服务。 在实现互联网医院系统的建设过程中,选择合适的云平台和医院平台源码是至关重要的。 首先,开源…

LVM逻辑卷管理

目录一、LVM简介1、逻辑卷管理磁盘的优点2、缺陷3、LVM概述图二、LVM的使用1、创建逻辑卷2、使用逻辑卷3、删除逻辑卷4、LVM扩容5、LVM缩容三、Snapshot(快照功能)1、LVM-snapshot简介2、利用snapshot做备份(LV快照)四、LVM数据迁…

整型在内存中的存储

在计算机底层,所有数据最终都会被表示为二进制形式。整型也不例外。本文将介绍在C语言中如何定义和操作整型变量,并解释整型在内存中的存储方式。 整型变量的定义和使用 在C语言中,可以用int关键字来定义一个整数型变量。例如: …

ChatGPT们接踵而至,AI会彻底改变我们的工作方式吗?

2023年开年,AI成为了舞台上聚光灯下的主角,AI 浪潮不仅让我们对人工智能的能力有了一次全新的理解,而且所有人的工作和生活都将受到不同程度的影响。 ChatGPT、Notion AI、New Bing、GPT-4、MidJourney v5、office copilot、Adobe Firefly、…

解决方案:炼丹师养成计划 Pytorch如何进行断点续训——DFGAN断点续训实操

我们在训练模型的时候经常会出现各种问题导致训练中断,比方说断电、系统中断、内存溢出、断连、硬件故障、地震火灾等之类的导致电脑系统关闭,从而将模型训练中断。 所以在实际运行当中,我们经常需要每100轮epoch或者每50轮epoch要保存训练好…

Python实现哈里斯鹰优化算法(HHO)优化卷积神经网络分类模型(CNN分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 2019年Heidari等人提出哈里斯鹰优化算法(Harris Hawk Optimization, HHO),该算法有较强的全…

DAY 43 Apache的配置与应用

虚拟Web主机 概述 虚拟web主机指的是在同一台服务器中运行多个web站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为"虚拟"web主机。通过虚拟web主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本…

TensorFlow 决策森林详细介绍和使用说明

使用TensorFlow训练、调优、评估、解释和部署基于树的模型的完整教程 两年前TensorFlow (TF)团队开源了一个库来训练基于树的模型,称为TensorFlow决策森林(TFDF)。经过了2年的测试,他们在上个月终于宣布这个包已经准备好发布了,也就是说我们…

在android项目上集成libyuv库以及使用linyuv库完成camera的缩放,旋转,翻转,裁剪操作

目录 一、下拉google官方的libyuv库代码 二、在android项目中集成libyuv库 1.环境配置 2.拷贝libyuv源码文件 ​编辑3.配置cmake libyuv相关的链接编译等 三、使用libyuv库 1.libyuv库完成camera的旋转 2.libyuv库实现翻转 3.libyuv库实现缩放 4.libyuv库实现裁剪 一…