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

一 压力测试的目的

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

二 性能测试指标以及测算

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

六 简单的性能测试

设置线程属性

运行结果

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

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

相关文章

5.11 mybatis之returnInstanceForEmptyRow作用

文章目录 1. 当returnInstanceForEmptyRowtrue时2 当returnInstanceForEmptyRowfalse时 mybatis的settings配置中有个属性returnInstanceForEmptyRow,该属性新增于mybatis的3.4.2版本,低于此版本不可用。该属性的作用官方解释为:当返回行的所…

如何快速上手:springboot+mongodb

当使用 Java Spring Boot 与 MongoDB 时,可以使用 Spring Data MongoDB 来轻松地进行数据库操作。以下是一个简单的示例,演示如何在 Spring Boot 中使用 MongoDB 进行基本的 CRUD(创建、读取、更新、删除)操作。 Spring Data for …

代码随想录训练营day39

第九章 动态规划part02 1.LeetCode. 不同路径 1.1题目链接:62.不同路径 文章讲解:代码随想录 视频讲解:B站卡哥视频 1.2思路:采用动态规划算法 想要求dp[i][j],只能有两个方向来推导出来,即dp[i - 1][…

论文解读:(CoOp)Learning to Prompt for Vision-Language Models

文章汇总 存在的问题 虽然训练类别通常具有文本形式,例如“金鱼”或“卫生纸”,但它们将被转换为离散标签,只是为了简化交叉熵损失的计算,从而使文本中的语义封装在很大程度上未被利用。这样的学习范式将视觉识别系统限制在闭集…

【QOpenGL实践】QOpenGLWidget

目录 一、说明 二、QOpenGLWidget 类对象 2.1 概要 2.1.1 函数功能 2.1. 2 三个虚函数 2.1.3 信号 2.2 详细说明 2.2.1 三个虚函数 2.2.2 绘画技巧 2.2.3 OpenGL 函数调用、标头和 QOpenGLFunctions 三、实现代码示例 3.1 最简模式 3.2 与 QGLWidget 的关系 3.3…

LeetCode———144—— 二叉树的前序遍历

目录 ​编辑 1.题目 2.解答 1.首先计算二叉树的节点个数: 2.以先序遍历(Preorder Traversal)的方式遍历一个二叉树,并将遍历到的节点的值存储在一个整数数组中 3.最终代码 1.题目 . - 力扣(LeetCode) 给…

123页|华为项目管理精华-成功的项目管理(免费下载)

【1】关注本公众号,转发当前文章到微信朋友圈 【2】私信发送 华为项目管理精华 【3】获取本方案PDF下载链接,直接下载即可。 如需下载本方案PPT原格式,请加入微信扫描以下方案驿站知识星球,获取上万份PPT解决方案!&a…

IDEA Tomcat localhost 日志和 catalina日志乱码(解决)

只需要修改 Tomcat 的 logging.properties D:\work\apache-tomcat-8.5.70-windows-x64\apache-tomcat-8.5.70\conf

SpringMVC 常用注解介绍

Spring MVC 常用注解介绍 文章目录 Spring MVC 常用注解介绍准备1. RequestMapping1.1 介绍2.2 注解使用 2. 请求参数2.1 传递单个参数2.2 传递多个参数2.3 传递对象2.4 传递数组 3. RequestParam3.1 注解使用3.2 传入集合 4. RequestBody5. PathVariable6. RequestPart7. Rest…

Since Maven 3.8.1 http repositories are blocked.

编译maven 项目时候报错提示下面信息: Since Maven 3.8.1 http repositories are blocked.Possible solutions: - Check that Maven settings.xml does not contain http repositories - Check that Maven pom files do not contain http repository http://XXXXXX:…

Mac电脑上有什么好玩的格斗游戏 《真人快打1》可以在苹果电脑上玩吗

你是不是喜欢玩格斗游戏?你是不是想在你的Mac电脑上体验一些刺激和激烈的对战?在这篇文章中,我们将介绍Mac电脑上有什么好玩的格斗游戏,以及《真人快打1》可以在苹果电脑上玩吗。 一、Mac电脑上有什么好玩的格斗游戏 格斗游戏是…

设计循环队列(队列oj)

1.设计循环队列 设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前用过的空间。…

如何在原生项目中集成flutter

两个前提条件: 从flutter v1.17版本开始,flutter module仅支持AndroidX的应用在release模式下flutter仅支持一下架构:x84_64、armeabi-v7a、arm6f4-v8a,不支持mips和x86;所以引入flutter前需要在app/build.gradle下配置flutter支持的架构 a…

Jmeter 压测-Jprofiler定位接口相应时间长

1、环境准备 执行压测脚本,分析该接口tps很低,响应时间很长 高频接口在100ms以内,普通接口在200ms以内 2、JProfiler分析响应时间长的方法 ①JProfiler录制数据 压测脚本,执行1-3分钟即可 ②分析接口相应时间长的方法 通过Me…

全国产化无风扇嵌入式车载电脑在车队管理嵌入式车载行业应用

车队管理嵌入式车载行业应用 车队管理方案能有效解决车辆繁多管理困难问题,配合调度系统让命令更加精确有效执行。实时监控车辆状况、行驶路线和位置,指导驾驶员安全有序行驶,有效降低保险成本、事故概率以及轮胎和零部件的磨损与损坏。 方…

vue3第二十节(新增编译宏defineModel)

为什么会需要使用defineModel() 注意:defineModel() 需要在3.4及以上版本才可使用; 组件之间通讯,通过 props 和 emits 进行通讯,是单向数据流,比如:props是自上而下的(父组件数据修改导致子组件更新&…

企业网站制作如何被百度收录

1、网站在百度中的整体评分 说俗点就是网站的权重,在优化过程中我们会见到很多网站出现秒收的情况,发布的文章几分钟就可以收录,这个通过SITE语法都可以去查询,那么这跟自己的网站权重以及内容更新习惯是有非常重要的关联。 我们…

每日OJ题_完全背包④_力扣279. 完全平方数(一维和二维)

目录 力扣279. 完全平方数 问题解析 解析代码 优化代码(相同子问题分析和滚动数组) 力扣279. 完全平方数 279. 完全平方数 难度 中等 给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值…

《论文阅读》基于情感原因感知的共情对话生成模型 2023 AAAI

《论文阅读》基于情感原因感知的共情对话生成模型 2023 AAAI 前言简介模型构架情绪推理器回复生成器实验结果前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《The Empathic Dialogue Generation Model…

如何使用自定义Promptbooks优化您的安全工作流程

在当今的数字化时代,安全工作流程的优化变得前所未有的重要。安全团队需要快速、有效地响应安全事件,以保护组织的数据和资产。Microsoft Copilot for Security提供了一种强大的工具——自定义Promptbooks,它可以帮助安全专家通过自动化和定制…