Jmeter之单接口的性能测试

前言:

  服务端的整体性能测试是一个非常复杂的概念,包含生成虚拟用户,模拟并发,分析性能结果等各种技术,期间可能还要解决设计场景、缓存影响、第三方接口mock、IP限制等问题。如何用有限的测试机器,在测试环境中模拟并评估生产环境的真实性能状态,找出性能瓶颈,也一直是性能测试工程的核心目标。

但一个大型系统的性能,也是由一个一个接口的性能来保证的,同样遵循木桶原理,即性能最差的那个接口将会拉低整个系统的性能,因此评估单个接口的性能,对于优化接口的性能,保证系统的整体性能,也一样很有必要,量变终会引发质变。而且相对来说实现简单,对于那些不熟悉性能测试工程的同学也是了解性能测试的一个很好的切入点。

性能指标

一般系统性能水平都是通过吞吐量来体现,而系统吞吐量有以下几个重要指标:

QPS(TPS):每秒钟request/事务 数量
并发数:系统同时处理的request/事务数
响应时间:一般取平均响应时间

同时CPU运算、IO、外部系统响应等因素也会直接影响这些指标,这里我们选择了QPS(TPS),响应时间,CPU占用率,内存占用率四个指标分别来评估单个接口的性能。而对于并发数,则可以通过 并发数= QPS*平均响应时间 计算得出结果。

测试工具选择

性能测试几乎已经断绝了手工测试的可能,选择一款合适的测试工具很有必要。目前业界性能测试工具相当多,综合需求目标、成本控制、扩展性、生命力等等因素考虑选择,这里我只列了主流的三种:

loadrunner 大概是生命力最强的性能测试工具了,学习资料也相对较多,只是体型有点大,环境安装麻烦。

Jmeter 基于java编写,GUI配置管理接口,入门简单,方便快速开展性能测试工作,还支持插件扩展。

Locust 是python下的一个性能测试工具,优点是通过代码编写压测脚本,扩展性强,适合全自动化,同时利用了协程的概念,支持单机高并发。

由于我们只是对单个接口进行压测,太复杂的环境与较高的学习成本都不利于快速开展工作,因此我选择了jmeter,当然也只是对jmeter的简单使用,并不意味着jmeter功能不够强大。

Jmeter 获取性能指标

安装Jmeter

这并不是一篇讲Jmeter的文章,因此关于Jmeter的下载安装就不再赘述,但有几个非常好用的Jmeter 插件还是推荐可以安装一下的:

Transactions per Second(监听TPS)
Response Times Over Time(监听响应时间)
PerfMon Metrics Collector(监听服务器CPU、内存)

编辑接口信息

1.开启一个线程组

2.线程组中添加一个http请求

3.编辑接口信息,如果需要参数较多,可能还需要进行参数化。

设置监听器

1.右键线程组,设置监听器

2.添加察看结果树

3.添加聚合报告

4.添加安装的监听插件

1.对于PerfMon Metrics Collector插件,我们需要在服务器中运行Jmeter提供的一个简单的web服务器配合使用。

2.设置监听器的同时,也可以保存数据到本地csv文件

开始监控

1.设置线程数(一开始不设置太高)

2.设置达到最大线程数的时间

3.点击运行

收集监控数据

运行结束后,就可以在对应的监听器中查看获取的数据了。把这些结果统计整理

数据指标分析

通过上面我们设置的监听器,我们应该能得到TPS、响应时间、CPU、内存这些指标了。当然这些指标也只是简单的评测某一接口的性能区间。

这里有一些计算方法

QPS计算方法:

原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间

公式:( 总PV数 80% ) / ( 每天秒数  20% ) = 峰值时间每秒请求数(QPS)

机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器

如:每天300w PV 的在单台机器上,这台机器需要多少QPS?

答:( 3000000  0.8 ) / (86400  0.2 ) = 139 (QPS)

如果一台机器的QPS是58,需要几台机器来支持?

答:139 / 58 = 3

通过这些公式计算,我们应该能整理出来一份相对专业的测试报告了。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 实现 ATR 指标计算(真实波幅):股票技术分析的利器系列(10)

Python 实现 ATR 指标计算(真实波幅):股票技术分析的利器系列(10) 介绍算法解释 代码rolling函数介绍核心代码 完整代码 介绍 ATR(真实波幅)是一种技术指标,用于衡量市场波动性的程…

视频评论挖掘软件|抖音视频下载工具

针对抖音视频下载的需求,我们开发了一款功能强大的工具,旨在解决用户在获取抖音视频时需要逐个复制链接、下载的繁琐问题。我们希望用户能够通过简单的关键词搜索,实现自动批量抓取视频,并根据需要进行选择性批量下载。因此&#…

备战蓝桥杯—— 双指针技巧巧答链表1

对于单链表相关的问题,双指针技巧是一种非常广泛且有效的解决方法。以下是一些常见问题以及使用双指针技巧解决: 合并两个有序链表: 使用两个指针分别指向两个链表的头部,逐一比较节点的值,将较小的节点链接到结果链表…

算法沉淀——FloodFill 算法(leetcode真题剖析)

算法沉淀——FloodFill 算法 01.图像渲染02.岛屿数量03.岛屿的最大面积04.被围绕的区域05.太平洋大西洋水流问题06.扫雷游戏07.衣橱整理 Flood Fill(泛洪填充)算法是一种图像处理的基本算法,用于填充连通区域。该算法通常从一个种子点开始&am…

力扣经典题目解析--下一个排列(字节面试题)

这是一道中等难度的字节秋招面试题,很多伙伴都被问到了,同时也有很多同学表示连题目都看不懂,我们来看下原题 原题 题目地址: . - 力扣(LeetCode) 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例…

(九)springmvc+mybatis+dubbo+zookeeper分布式架构 整合 - maven构建ant-framework核心代码Base封装

今天重点讲解的是ant-framework核心代码Base封装过程。 因为涉及到springmvc、mybatis的集成,为了使项目编码更简洁易用,这边将基础的BASE进行封装,其中包括:BaseBean、BaseDao、BaseService、CRUD的基础封装、分页组件的封装、m…

STM32物联网(封装AT指令进行TCP连接及数据的接收和发送)

文章目录 前言一、AT指令函数封装1.向ESP8266发送数据函数2.设置ESP8266工作模式3.连接WIFI函数4.查询IP地址5.连接TCP服务器6.发送数据到TCP服务器7.接收并解析来自TCP服务器的数据8.关闭TCP服务器 二、代码测试总结 前言 本篇文章将继续带大家学习STM32物联网,那…

基于事件触发机制的孤岛微电网二次电压与频率协同控制MATLAB仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) 本模型质量非常高,运行效果完美。本模型为4机并联孤岛系统,在下垂控制的基础上加入二次控制,二次电压与频率协同控制策略利用事件触发的方法来减少控制器的更新次数。该方法…

2024图像处理分析与信息工程国际学术会议(IACIPIE2024)

2024图像处理分析与信息工程国际学术会议(IACIPIE2024) 会议简介 2024图像处理分析与信息工程国际学术会议(IACIPIE2024)将在中国长沙举行。 IACIPIE2024是一个年度会议,探讨图像处理分析和信息工程相关领域的发展和影响,旨在介…

树莓派 开启 I2C

sudo raspi-config喜欢或对你有帮助,点个赞吧,自己先点个嘿嘿。 有错误或者疑问还请评论指出。 我的个人网站 点击访问 hongweizhu.com。 END

第十二天-ppt的操作

目录 创建ppt文档 安装 使用 段落的使用 段落添加数据 段落中定义多个段落 自定义段落 ppt插入表表格 PPT插入图片 读取ppt 读取ppt整体对象 ​编辑 获取ppt文本 获取表格内容 创建ppt文档 安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python…

新能源汽车PACK电池包的气密性测试需要用到哪些快速密封连接器

PACK电池包是新能源汽车的重要部件之一,在全部组装完成后需要对其壳体进行气密性测试,以确保壳体的密封性能,避免有雨水、灰尘等外界侵扰拒之门外,从而保证电池的使用寿命不受损害。 新能源汽车PACK电池包 在做气密性测试时需要用…

力扣经典题目解析--旋转图像(字节二面)

题目 原题地址: . - 力扣(LeetCode) 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1&#xff1…

如何使用ChatGPT创建一份优质简历

目录 第一步:明确目标和重点 第二步:与ChatGPT建立对话 第三步:整理生成的内容 第四步:注重行文风格 第五步:强调成就和量化结果 第六步:个性化和定制 第七步:反复修改和完善 总结 在现…

接口自动化如何处理用例依赖?

情况一 获取token 需要在所有接口用例前执行的用例,如登录接口获取到token。 这种情况不适合将这个获取token的方法写到任何一个测试用例文件里,应该写成fixture,并写入conftest文件,供全局使用。 如图,fixture获取到…

浅拷贝导致的bug

错误代码: //初始化formTableData的值 const formTableData ref({saleOrderTime:,saleOrderDetails:[] });const showModal async (item) > {//调接口获取后端返回的数据let data (await api.searchSaleOrderById({saleOrderId:item.id})).dataconsole.log(&…

open3d 连接两个点云

连接两个点云 一、连接两个点云二、代码三、结果1.coloud1点云2.cloud2点云3.cloud1 和 colud2 合并4.生成连接字段(拼接颜色) 四、相关链接五、问题与解决方案1.问题2.解决方案 一、连接两个点云 看代码吧。。。 二、代码 import numpy as np import…

1TB! 台湾最新倾斜摄影3DTiles数据分享

之前的文章分享了546GB香港倾斜摄影3DTiles数据,主要是验证倾斜模型3DTiles转换工具的生产效率和数据显示效率,结果对比可以看出无论是数据生产速度以及成果数据显示效率上,都优于其他两种技术路线。最近使用倾斜模型3DTiles工具生产了台湾地…

Zookeeper简介及选举机制

1.概述 Zookeeper是一个开源的,分布式的,为分布式框架(如下图中的Hadoop和Hive)提供协调服务的Apache项目。 工作机制:基于观察者设计模式的分布式服务管理框架,负责存储和管理数据,接受观察者…

查看navicat保存的数据库连接密码

背景 经常使用navicat的朋友可能会碰到忘记数据库连接密码的情况,自然会想到navicat连接配置中就保存了密码。 个人经验,按以下步骤可查看密码明文 本人在mac上使用的navicat版本 1,导出connection_local.ncx 点击OK导出保存为connection_l…