接口压力测试 jmeter--入门篇(一)

news2024/11/28 12:43:24

一 压力测试的目的

  • 评估系统的能力
  • 识别系统的弱点:瓶颈/弱点
  • 检查系统的隐藏的问题
  • 检验系统的稳定性和可靠性

二 性能测试指标以及测算

  • 【虚拟用户数】:线程=用户
  • 【并发数】:指在某一时间,一定数量的虚拟用户同时对系统的某个功能进行交互。一般通过集合点实现。
  • 【事务】:一个接口可以是事务,多个接口也可以是事务,一个流程可以是事务,事务代表一个完整的功能。由测试人员决定。
  • 【场景】:性能测试的用例
  • 【响应时间】:Response Time

平均响应时间:

  中位数:从小到大排序,选择第50个。

  90%:100 个,从小到大排序,选择第90个。

  95%:从小到大排序,选择第95个。

  99%:从小到大排序,选择第99个。

  基准测试:1个用户请求接口。200-500MS

  压力测试:N个用户并发请求接口,2秒

  • 【TPS】TPS是系统的重要性能指标,用于衡量系统在一定时间内能够处理的事务数(交易数)。(一般在银行中经常看到 TPS)

每秒完成的事务数:Transactions per sencond

如果是一个接口的话,TPS=吞吐量。(多个接口的话不同)

计算公式:总的事务数/总的运行时间

比如1:某一系统1分钟处理1000个事务,那么 TPS=1000/60=16.7

比如2:按去年的经营数据,2022年最高的一天有10万笔交易。预测2023年TPS需要多少合格?

总事务数=10万,时间=24*60*60=86,400秒

理论上TPS = 100000/86400=1.2

(1)没有更详细的数据:根据二八定律(80%的事务在20%的时间完成)计算:

TPS = 100000*0.8 / 86400*0.2=80000/17280=4.6

(2)如果有更详细的数据:

  • 5万比交易是晚上的8-9点完成的。

         TPS=50000/3600=13.9

  • 业务的增长:30%

       TPS=(50000+50000*0.3)/3600=18

  • 【QPS】每一秒的查询率。

    TPS(每秒的事务数),QPS(一般是用于数据处理),RPS(每一秒的请求), HPS(每一秒的点击率)

         如果一个事务只有一个接口,那么TPS=QPS=RPS

  • 【吞吐量】衡量网络成功传输的数量量,单位Byte/S
  • 【资源利用率】服务器:CPU,内存,磁盘,网络。

三 性能测试流程

1. 需求分析以及需求确定(指标值,场景,环境,人员)

一般提性能需求的(以下是否合理?测试人员要有自己的分辨能力):

  • 客户:OA项目,1万员工,并发一万。
  • 产品经理:单台阿里云服务器。支撑1万并发。
  • 项目组领导:3年之后需要达到什么样的性能。

2. 性能测试计划和方案制定。

  • 基准测试
  • 负载测试
  • 压力测试
  • 稳定性测试
  • 其他:配置测试,极限测试,浪涌测试?

3. 性能测试准备阶段

人力,硬件,软件,环境折算(不是很准确)。

一个很重要的:干净(环境/版本等一致,和生产环境一模一样最好)

4. 测试执行阶段

  • 脚本生成和增强
  • 场景设计
  • 指标监控
  • 性能瓶颈定位和性能调优
  • php+nginx+mysql+centos

5. 测试报告和总结

四 脚本的生成(通过jmeter代理服务器录制脚本)

jmeter安装 mac版

jmeter安装windows版

1. 设置代理

  • windows设置客户端的代理

控制面板-->Internet选项-->连接-->局域网设置-->勾上代理输入,jmeter所在电脑的ip(通过cmd-ipconfig查询)和8888端口。(或其他端口也行,只要和 jmeter保持一致。8080/8889 等都可以)

端口占用情况:

netstat -a| findstr “端口号”
  • mac设置客户端代理(通过jmeter设置)

mac所在电脑的ip查询 ipconfig getifaddr en0

端口占用情况:

sudo lsof -i tcp:port  //查看占用情况
sudo kill -9 PID  //杀进程

系统设置--网络--高级--代理--网页代理

2. 设置 jmeter代理服务器

4.2.1 设置Requests Filtering

   接口url:

http://47.107.116.139/phpwind/

4.2.2 设置Test Plan Creation

3. 启动代理(导入证书)

a. 生成ApacheJMeterTemporaryRootCA.crt

点击“启动”出现下面的情况,ok会在jmeter/bin下生成ApacheJMeterTemporaryRootCA.crt

b. 导入jmeter安全证书

菜单选项--ssl管理器--导入上一步生成的证书

c.   浏览器导入证书

上述证书在 jmeter安装目录的bin中

4. 录制脚本

步骤一 访问首页

步骤二 登录-版块--新板块--发帖--回贴--退出

录制的脚本如下:

****然后就可以关闭代理了****

五 脚本的增强

1.查看结果数

添加--监听器--查看结果树

      运行所有的脚本


查看结果数中每个接口的响应是否正确,通过校验后,操作下面的步骤

2.正则表达式

访问接口增加正则表达式

增加csrf_token

(用正则表达式),因为响应数据中的csrf_token在后续的登录中会用到

"csrf_token" value="031fda279957e9b2"

"csrf_token" value="(.*?)"

调用${csrf_token}

3. 函数助手对话框--urldecode

“3.登录接口”的响应数据中,有个网站不大理解,可以通过网址解析函数助手对话框--urldecode

http%3A%2F%2F47.107.116.139%2Fphpwind%2Findex.php%3Fm%3Du%26c%3Dlogin%26a%3Dwelcome%26_statu%3DTXRGbmJET0g0QnVIRkVidUphRURSQkxuMFVIZWk5MVV0SDFnWU4lMkJ3RjZ6SUdzalFsRyUyRlJvWTZlVWVQRjEwbXV3aTUzb25nJTJCb3hBJTNEfGh0dHA6Ly80Ny4xMDcuMTE2LjEzOS9waHB3aW5kL3w

由上图可以看出:

符号解析
%3A
%2F/
%2F%2F//
%3D=

_statu%3D(.*?)"

4. 函数助手对话框--增加随机内容

发帖时,为了不重复,增加随机内容

函数助手对话框--RandomString

5. unicode编码解析

登录 unicode解析网站

  

6. 增加固定定时器

原因:

回贴接口右键--添加--定时器--固定定时器

7. 给指定的帖子回贴

为了给自己发的贴回贴,则将发帖后的 tid用正则表达式提取出来

发帖后响应的内容:

提取tid

tid%(.*?)%

8. 删除不需要的端口

全部运行一遍:

检查都正常,删除有些不需要被禁用的端口,以及------------部分,重新编号,然后再次运行

9. HTTP请求默认值

线程组右键--添加--配置元件--HTTP请求默认值

然后,各接口的web服务器部分可以清除

10. 重定向

下面这种情况是重定向的情况,在接口中设置的是“跟随重定向”

如果不显示重定向,那么就设置“自动重定向”

运行结果:

跟随重定向和自定义重定向,不影响性能

11. HTTP请求头管理

每个接口都有请求头,太多了,可以先禁用掉,再运行,如果没有报错,那么就可以删掉,如果报错了,那么就需要保留。

12. 用户定义的变量

添加--配置原件--用户定义的变量

调用$(fid)

13. 响应时间设置

http请求默认值-高级--响应

设置后,响应时间超过 50ms的就会报错

token:一般用于鉴权

JMeter的聚合报告中的吞吐量==TPS

六 简单的性能测试

设置线程属性

运行结果

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

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

相关文章

如何使用 ArcGIS Pro 制作边界晕渲效果

在某些出版的地图中,边界有类似于“发光”的晕渲效果,这里为大家介绍一下如何使用ArcGIS Pro 制作这种晕渲效果,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的行政区划数据,除了行政区划数据&#xff0c…

【C++进阶】C++中的继承

一、概述 作为C的三大特性之一封装,继承,多态 中的继承,我们在进阶部分一定要详细说明。请跟着如下的小标题进入深度学习。 二、正文 1.继承的概念及定义 首先,我们先要知道什么是继承, 继承 (inheritance)机制是面…

Unity之OpenXR+XR Interaction Toolkit快速监听手柄任意按键事件

前言 当我们开发一个VR时,有时希望监听一个手柄按键的点击事件,或者一个按钮的Value值等。但是每次有可能监听的按钮有不一样,有可能监听的值不一样,那么每次这么折腾,有点累了,难道就没有一个万能的方法,让我可以直接监听我想要的某个按钮的事件么? 答案是肯定的,今…

vscode 搭建stm32开发环境记录(eide+cortex-debug+jlink)

前言 clion使用的快过期了,所以就准备使用vscode 来代替clion作为代码开发环境 vscode 插件安装 创建个空白工程 添加项目相关的源文件,和配置宏定义和头文件目录 编译和烧录(ok) 结合cortex-debug 结果(测试ok)

Prometheus + Grafana 搭建监控仪表盘

目标要求 1、需要展现的仪表盘: SpringBoot或JVM仪表盘 Centos物理机服务器(实际为物理分割的虚拟服务器)仪表盘 2、展现要求: 探索Prometheus Grafana搭建起来的展示效果,尽可能展示能展示的部分。 一、下载软件包 监控系统核心…

政安晨:【深度学习神经网络基础】(十一)—— 激活函数的导数以及在反向传播中的应用

目录 线性激活函数的导数 Softmax激活函数的导数 S型激活函数的导数 双曲正切激活函数的导数 ReLU激活函数的导数 如何在反向传播中应用 批量训练和在线训练 随机梯度下降 反向传播权重更新 选择学习率和动量 Nesterov动量 政安晨的个人主页:政安晨 欢迎…

2024年MathorCup数学建模C题物流网络分拣中心货量预测及人员排班解题文档与程序

2024年第十四届MathorCup高校数学建模挑战赛 C题 物流网络分拣中心货量预测及人员排班 原题再现: 电商物流网络在订单履约中由多个环节组成,图1是一个简化的物流网络示意图。其中,分拣中心作为网络的中间环节,需要将包按照不同流…

循环神经网络(RNN):概念、挑战与应用

循环神经网络(RNN):概念、挑战与应用 1 引言 1.1 简要回顾 RNN 在深度学习中的位置与重要性 在深度学习的壮丽图景中,循环神经网络(Recurrent Neural Networks,RNN)占据着不可或缺的地位。自从…

C++如何使用string类

文章目录 为什么要学习string?库中的string关于编码ASCII编码Unicode编码 迭代器Iteratorsstring常用构造接口接口声明与功能说明接口演示 string类对象的容量操作接口声明与功能说明接口演示reverse与resize在不同平台下的扩容与缩容机制 string类对象的访问及遍历操作接口声…

stm32中的中断优先级

在工作中使用到多个定时器中断,由于中断的中断优先级不熟悉导致出错,下面来写一下中断的一些注意事项。 一、中断的分类 1、EXTI外部中断:由外部设备或外部信号引发,例如按键按下、外部传感器信号变化等。外部中断用于响应外部事件,并及时处理相关任务。 2、内部中断:…

3DGS渐进式渲染 - 离线生成渲染视频

总览 输入:环绕Object拍摄的RGB视频 输出:自定义相机路径的渲染视频(包含渐变效果) 实现过程 首先,编译3DGS的C代码,并跑通convert.py、train.py和render.py。教程如下: github网址&#xf…

如何安装 IntelliJ IDEA 最新版本——详细教程

IntelliJ IDEA 简称 IDEA,被业界公认为最好的 Java 集成开发工具,尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克,开发人员以严谨著称的东欧程序员为主…

利用大语言模型,矢量数据库实现数据库的智能搜索

目的 数据库使用SQL 语言查询数据,数据库的记录中要有一个关键字段(通常称为主键字段,它的值在数据库列表中是唯一的),数据记录是结构化的. 如果你需要根据数据记录的内容来查询数据记录,就需要通过Select 语句在数据库…

SQL255 给出employees表中排名为奇数行的first_name

题目来源: 给出employees表中排名为奇数行的first_name_牛客题霸_牛客网 描述 对于employees表中,输出first_name排名(按first_name升序排序)为奇数的first_name CREATE TABLE employees ( emp_no int(11) NOT NULL, birth_date date NOT NULL, firs…

春藤实业启动SAP S/4HANA Cloud Public Edition项目,与工博科技携手数字化转型之路

3月11日,广东省春藤实业有限公司(以下简称“春藤实业”)SAP S/4HANA Cloud Public Edition(以下简称“SAP ERP公有云”)项目正式启动。春藤实业董事长陈董、联络协调项目经理慕总、内部推行项目经理陈总以及工博董事长…

【.Net动态Web API】背景与实现原理

🚀前言 本文是《.Net Core进阶编程课程》教程专栏的导航站(点击链接,跳转到专栏主页,欢迎订阅,持续更新…) 专栏介绍:通过源码实例来讲解Asp.Net Core进阶知识点,让大家完全掌握每一…

pt-archiver归档表数据

一 介绍 pt-archiver的原理主要是根据定义的时间间隔(sleep参数),扫描要清理的数据表。它按照指定的规则分批(limit参数)将查询到的记录转移到其他表或文件中,发现它是按主键去删除的表数据,对数据库影响很小。 二 语法 /bin/pt-archiver …

关于外网java后端服务访问内网minio中间件,因连接minio超时,启动失败问题

注:服务器情况:2台服务器,内网服务器包含(activemq、minio、nginx、redis、mysql、后端java服务)。外网服务器只有后端java服务,访问内网的中间件(内网服务器开放了部分指定端口) 问…

GPT状态和原理 - 解密OpenAI模型训练

目录 1 如何训练 GPT 助手 1.1 第一阶段 Pretraining 预训练 1.2 第二阶段:Supervised Finetuning有监督微调 1.3 第三阶段 Reward Modeling 奖励建模 1.4 第四阶段 Reinforcement Learning 强化学习 1.5 总结 2 第二部分:如何有效的应用在您的应…

中文编程入门(Lua5.4.6中文版)第十二章 Lua 协程 参考《愿神》游戏

在《愿神》的提瓦特大陆上,每一位冒险者都拥有自己的独特力量——“神之眼”,他们借助元素之力探索广袤的世界,解决谜题,战胜敌人。而在提瓦特的科技树中,存在着一项名为“协同程序”的高级秘术,它使冒险者…