压力测试工具-Jmeter使用总结

目录

一.前言

二.线程组

三.线程组的组件

四.线程组-HTTP请求

1、JSON提取器

2、XPATH提取器

3、正则表达式提取器

五.线程组-断言

1、响应断言

2、JSON断言

六.创建测试

1.创建线程组

2.配置元件

3.构造HTTP请求

4.添加HTTP请求头

5.添加断言

6.添加查看结果树

7.添加汇总报告


一.前言

压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使能根据其做出一些应对措施。所以压力测试是一个非常重要的步骤,下面使用一款压力测试工具JMeter。

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。可以使用它做性能的图形分析或在大并发负载测试服务器/脚本/对象。

官网:Apache JMeter - Download Apache JMeter

准备工作

1.因为JMeter是使用JAVA写的,所以使用JMeter之前,先安装JAVA环境

2.解压下载的二进制包,进入bin目录,使用jmeter.bat启动程序。

3.启动之后会有两个窗口,一个cmd窗口,一个JMeter的 GUI。

前面不要忽略CMD窗口的提示信息:

===============================================================================

Don't use GUI mode for load testing !, only for Test creation and Test debugging.

For load testing, use NON GUI Mode:

   jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

& increase Java Heap to meet your test requirements:

   Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file

Check : https://jmeter.apache.org/usermanual/best-practices.html

===============================================================================

上面的意思就是:不要使用GUI运行压力测试,GUI仅用于压力测试的创建和调试;执行压力测试请不要使用GUI。使用下面的命令来执行测试:

 jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

并且修改JMeter批处理文件的环境变量:HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"

更改语言为中文

官方默认为提供了简体中文。通过 【Options】->【Choose Language】变更为简体中文

长期汉化:修改 Jmeter 安装目录的 bin 目录下的配置文件 jmeter.properties ,添加以下字段:language = zh_cn

更改外观

默认外规颜色是黑色,更改如下

二.线程组

第一部分

在取样器错误后要执行的动作

取样器就相当于是postman发送请求接口,当接口请求失败时,要执行的动作:

  1. 继续:继续执行接下来的操作
  2. 启动下一进程循环:忽略错误,执行下一个循环
  3. 停止线程:退出当前线程,不再执行此线程的任务操作
  4. 停止测试:等待当前执行的采样器结束,接着结束整个测试
  5. 立即停止测试:直接停止整个测试

第二部分

  1. 线程数:即模拟用户数量
  2. Ramp-Up时间(秒):达到指定线程数所需要的时间。比如线程数为100,此处为5秒,100/5=20,那么相当于每秒启动20个线程,用时5秒达到100
  3. 循环次数:要循环的次数,如果勾选“永远”,会一直循环下去
  4. Same user on each iteration:表示每个迭代都用相同的线程。比如线程数为1,循环次数为5,那么创建好1个线程后,每次循环迭代都用这个线程,直到测试结束。如果不勾选,那么每次循环会销毁之前的线程,再创建1个新的线程,测试结束总共会经过5次创建销毁线程,浪费了计算机资源,线程多了甚至可能会影响性能测试结果,所以默认是勾选的。再比如这1个线程中有登录操作,加入cookie后,这个线程5次迭代下来用的都是这一个cookie

第三部分

  1. 延迟创建线程直到需要:勾选,当线程需要执行的时候才会被创建,如果不勾选,在计划开始的时候,所有的线程就都创建好了
  2. 调度器:

持续时间(秒),表示多少秒后,结束测试

启动延迟(秒):表示点击开始执行计划后,延迟多少秒,才真正开始执行

三.线程组的组件

件:多个类似功能组件的容器(类似于类)

1.取样器

发送接口请求,类似于代码中requests封装的请求接口方法。

2.逻辑控制器

控制语句的执行顺序。

3.前置处理器

在取样器发送接口请求之前,需要执行的操作,比如删除数据,恢复数据,生成数据等。

4.后置处理器

在取样器发送接口请求之后,需要执行的操作,比如恢复数据,或处理响应数据,提取需要的值等。

5.断言

判断是否返回了预期的结果。

6.定时器

一般用来延时发送接口请求,类似于代码中的强制等待sleep。

7.测试片段

相当于封装一段代码,供其他脚本使用。

8.配置元件

用于初始化变量,以便采样器使用。类似于自动化框架中的配置文件。

9.监听器

展示执行结果,打印日志信息等。

组件:实现独立的某个功能(类似于方法)

四.线程组-HTTP请求

压力测试请求中的数据传递

在接口请求的过程中,接口之间会有数据传递的功能。例如:系统登录的功能,请求登录的接口,一般给返回给用户一个token的字段,token会有有效期,在有效期内,用户所有的请求带上这个token字段,服务器 就会知道是哪一个用户做的请求。

关联:

当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理。

Jmeter常用的关联方法:

1、JSON提取器

作用:针对JSON格式的响应结果数据进行提取

位置:添加方式:测试计划--->线程组--->HTTP请求--->(右击)

2、XPATH提取器

3、正则表达式提取器

五.线程组-断言

断言:让程序自动判断预期结果和实际结果是否一致。

Jmeter常用断言:

1、响应断言

2、JSON断言

六.创建测试

1.创建线程组

在“测试计划”上右键 【添加】-->【Threads(Users)】-->【线程组】。

设置线程数和循环次数。我这里设置线程数为100,五秒内完成,循环一次。

2.配置元件

在刚刚创建的线程组上右键 【添加】-->【配置元件】-->【HTTP请求默认值】。

配置需要进行测试的程序协议、地址和端口,当所有的接口测试的访问域名和端口都一样时,可以使用该元件,一旦服务器地址变更,只需要修改请求默认值即可。

3.构造HTTP请求

在“线程组”右键 【添加-】->【samlper】-->【HTTP 请求】设置需要测试的API的请求路径和数据。

4.添加HTTP请求头

在刚刚创建的线程组上右键 【添加】-->【配置元件】-->【HTTP信息头管理器】。

传输的json数据:Content-Type:application/json,

表单数据:Content-Type:application/x-www-form-urlencoded

5.添加断言

在刚刚创建的线程组上右键 【添加】-->【断言】-->【响应断言】。

根据响应的数据来判断请求是否正常。我在这里只判断的响应代码是否为200。还可以配置错误信息

6.添加看结果树

在刚刚创建的线程组上右键 【添加】-->【监听器】-->【察看结果树】。

直接添加,然后点击 运行 按钮就可以看到结果了。

7.添加汇总报告

在刚刚创建的线程组上右键 【添加】-->【监听器】-->【汇总报告】。

直接添加,然后点击运行按钮就可以看到结果了。

测试计划创建完成,记得点保存。

参考文档:

https://zhuanlan.zhihu.com/p/628517879?utm_id=0

https://www.cnblogs.com/luoshuai7394/p/17930824.html

https://www.cnblogs.com/stulzq/p/8971531.html

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

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

相关文章

SAFe大规模敏捷认证Leading SAFe官方认证班

课程简介 SAFe – Scaled Agile Framework是目前全球运用最广泛的大规模敏捷框架,也是全球敏捷相关认证成长最快、最被认可、最有价值的规模化敏捷认证,目前全球SAFe认证专业人士已达120万人。 据官方统计,获得新证书的IT专业人士的平均工资…

寒假作业2月2号

第一章 命名空间 一.选择题 1、编写C程序一般需经过的几个步骤依次是(C ) A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行 2、所谓数据封装就是将一组数据和与这组数据有关…

Pycharm python用matplotlib 3D绘图显示空白解决办法

问题原因: matplotlib版本升级之后显示代码变了,修改为新的 # ax Axes3D(fig) # 原代码 ax fig.add_axes(Axes3D(fig)) # 新代码import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot3d import Ax…

Electron开发的十大神级产品,vscode、atom、skype、figma等

Hi、我是贝格前端工场,今天分享一下基于Electron的十大著名产品,欢迎友友们补充。 Visual Studio Code 这是一款由微软开发的轻量级代码编辑器,它提供了丰富的功能和插件生态系统,支持多种编程语言和开发工具。Visual Studio Cod…

PDF中公式转word

效果:实现pdf中公式免编辑 step1: 截图CtrlAltA,复制 step2: SimpleTex - Snip & Get 网页或客户端均可,无次数限制,效果还不错。还支持手写、文字识别 单张图片:选 手写板 step3: 导出结果选择 注:…

【笔记】Android 常用编译模块和输出产物路径

模块&产物路径 具体编译到软件的路径要看编译规则的分区,代码中模块编译输出的产物基本对应。 Android 代码模块 编译产物路径设备adb路径Comment 模块device/mediatek/system/common/ 资源overlay/telephony/frameworks/base/core 文件举例res/res/values-m…

开源的三维算法库有哪些

PCL,VTK,VCG,CGAL,Open CASCADE(opencascade),OpenSceneGraph (OSG), 点云网格处理算法:openmesh, meshlab三维算法库,Eigen 网格简化,网格平滑,网格参数化 无序点云网…

[Linux 进程(六)] 写时拷贝 - 进程终止

文章目录 1、写时拷贝2、进程终止2.1 进程退出场景2.1.1 退出码2.1.2 错误码错误码 vs 退出码2.1.3 代码异常终止引入 2.2 进程常见退出方法2.2.1 exit函数2.2.2 _exit函数 本片我们主要来讲进程控制,讲之前我们先把写时拷贝理清,然后再开始讲进程控制。…

与指定数字相同的数的个数 T1061

#include<bits/stdc.h> using namespace std; int n,m; const int N110; int f[N]; int a0; int main(){cin>>n>>m;for(int i0;i<n;i)cin>>f[i];for(int j0;j<n;j){if(f[j]m){a;}}cout<<a<<endl;return 0; }

安科瑞消防设备电源监控系统在地铁工程的设计与应用

【摘要】&#xff1a;本文介绍了地铁工程中消防设备电源监控系统设置的必要性及规范求&#xff0c;分析了监控设计方案&#xff0c;提出该系统在地铁工程中的应用要求及建议&#xff0c;以供地铁工程建设参考。消防设备电源监控系统主要针对消防用电设备的电源进行实时的监控&a…

react 之 zustand

zustand可以说是redux的平替 官网地址&#xff1a;https://zustand-demo.pmnd.rs/ 1.安装 npm i zustand2.基础使用 // zustand import { create } from zustand// 1. 创建store // 语法容易出错 // 1. 函数参数必须返回一个对象 对象内部编写状态数据和方法 // 2. set是用来…

Springboot做查询数据库某个表的数据时,后台一切正常前台显示不了数据

当我在用springboot做项目的时候查询整个表的数据或者条件查询的时候发现我的后台功能一切正常但是我的前台界面就是显示不了数据&#xff0c;这个问题解决也很简单&#xff0c;就是需要我们平时多加注意&#xff0c;不要漏代码&#xff01;&#xff01;&#xff01; Builder …

51单片机学习笔记 --步进电机驱动说明

文章目录 工作原理代码编写驱动方式全步进驱动半步进驱动微步进驱动 工作原理 工作原理简要说明&#xff0c;和单片机一起配合使用的步进电机多为28BYJ28 五线四相步进电机&#xff0c;配合ULN2003驱动板进行控制&#xff0c;如图所示&#xff0c;对于扭矩、精度要求较高的还有…

【开源】JAVA+Vue.js实现校园二手交易系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 二手商品档案管理模块2.3 商品预约管理模块2.4 商品预定管理模块2.5 商品留言板管理模块2.6 商品资讯管理模块 三、实体类设计3.1 用户表3.2 二手商品表3.3 商品预约表3.4 商品预定表3.5 留言表3.6 资讯…

2024年第九届信号与图像处理国际会议(ICSIP 2024)

2024第九届信号与图像处理国际会议&#xff08;ICSIP 2024&#xff09;将于2024年7月12-14日在中国南京召开。ICSIP每年召开一次&#xff0c;在过去的七年中吸引了1200多名与会者&#xff0c;是展示信号和图像处理领域最新进展的领先国际会议之一。本次将汇集来自亚太国家、北美…

Multisim14.0仿真(四十三)LM311应用

一、LM311简介&#xff1a; lm311是一款高灵活性的电压比较器&#xff0c;能工作于5V-30V单个电源或正负15V分离电源。 二、LM311主要特性&#xff1a; ★ 快速响应时间&#xff1a;165 ns。 ★ 选通能力。 ★ 最大输入偏置电流&#xff1a;300nA。 ★ 最大输入偏置电流&#…

【LLM KBQA】FlexKBQA:一种结合LLM的KBQA框架

前言 大语言模型&#xff08;LLMs&#xff09;在知识库问答&#xff08;KBQA&#xff09;领域的应用主要集中在包括但不限于以下几个方面&#xff1a; 直接生成答案&#xff1a;一些方法直接利用LLMs生成答案&#xff0c;而不是生成中间的程序&#xff08;如SPARQL查询&#…

iTOP-3A5000开发板支持PCIE 3.0、USB 3.0和 SATA 3.0.显示接口2 路、HDMI 和1路VGA等

性能强 采用全国产龙芯3A5000处理器&#xff0c;基于龙芯自主指令系统 (LoongArch)的LA464微结构&#xff0c;并进一步提升频率&#xff0c;降低功耗&#xff0c;优化性能。 桥片 采用龙芯 7A2000&#xff0c;支持PCIE 3.0、USB 3.0和 SATA 3.0.显示接口2 路、HDMI 和1路 VGA…

C++ pair+map+set+multimap+multiset+AVL树+红黑树(深度剖析)

文章目录 1. 前言2. 关联式容器3. pair——键值对4. 树形结构的关联式容器4.1 set4.1.1 set 的介绍4.1.2 set 的使用 4.2 map4.2.1 map 的介绍4.2.2 map 的使用 4.3 multiset4.3.1 multiset 的介绍4.3.2 multiset 的使用 4.4 multimap4.4.1 multimap 的介绍4.4.2 multimap 的使…

【TCP】四次挥手(终止连接)

前言 TCP&#xff08;传输控制协议&#xff09;是互联网协议&#xff08;IP&#xff09;中的一种重要传输层协议&#xff0c;用于在通信的计算机之间建立可靠的、有序的和错误校验的数据传输。在TCP连接中&#xff0c;数据传输是双向的&#xff0c;因此需要一种机制来开始和结…