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

news2024/11/19 9:40:49

目录

一.前言

二.线程组

三.线程组的组件

四.线程组-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

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

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

相关文章

Python之Numpy 和 Pandas

目录 2.1 numpy import numpy as np array np.array([[1,2,3],[2,3,4]]) print(array) print(number of dim:,array.ndim) print(shape:,array.shape) print(size:,array.size)pandas 1,pandas 基本介绍 df2 pd.DataFrame({A:1.,B:pd.Timestamp(20130102),C:pd.Series(1,i…

算法设计与分析实验:最短路径算法

一、网络延迟时间 力扣第743题 本题采用最短路径的思想进行求解 1.1 具体思路 (1)使用邻接表表示有向图:首先,我们可以使用邻接表来表示有向图。邻接表是一种数据结构,用于表示图中顶点的相邻关系。在这个问题中&am…

【C语言进阶篇】assert宏 使用详解

文章目录 一、assert简介 二、assert使用方法和规则 2.1 头文件 2.2 原型 2.3 功能 2.4 示例 2.5 assert的打开与关闭 三、注意事项 3.1 运行效率问题 3.2 assert只适用于调试版本 3.3 资源释放与清理 3.4 过度依赖 四、总结 个人主页: 倔强的石头的…

Datax3.0+DataX-Web部署分布式可视化ETL系统

一、DataX 简介 DataX 是阿里云 DataWorks 数据集成的开源版本,主要就是用于实现数据间的离线同步。DataX 致力于实现包括关系型数据库(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源(即不同的数据库&#x…

(2024,SaFaRI,双三上采样和 DFT,空间特征和频率特征)基于扩散模型的图像空间和频率感知恢复方法

Spatial-and-Frequency-aware Restoration method for Images based on Diffusion Models 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 方法 3.1 修改数据保真度 3.2 …

Python中使用Opencv-python库绘制直线、矩形、圆、文本

Python中使用Opencv-python库绘制直线、矩形、圆、文字 在Python中使用Opencv-python绘制直线、矩形、圆、文本非常简单,分别使用到line、rectangle、circle、putText这几个函数,具体可以参考https://docs.opencv.org/4.9.0/d6/d6e/group__imgproc__dra…

基础小白快速入门c语言----数据类型

数据类型,运算符,表达式 1c语言支持 数据类型 1.基础类型(基本类型) a数值类型 整型:往往有符号和无符号的区分,(signed)有符号 (unsigned)无符号 基础整型&#xff1…

GSM模块的使用及注意事项

1.如何使用? 最近,我准备使用GSM模块(SIM900A)发送英文短信到指定号码,翻阅资料如下: 可见,只要给该模块按照如下步骤发送指令: 就可以使得模块正常工作。(SIM900A&#…

6-1 A. DS二叉树—二叉树构建与遍历(不含框架)

题目描述 给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘#’表示,例如AB#C##D##),建立该二叉树的二叉链式存储结构,并输出该二叉树的先序遍历、中序遍历和后序遍历结果。 输入 第…

【Java程序设计】【C00231】基于Springboot的景区寄存管理系统(有论文)

基于Springboot的景区寄存管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的景区行李寄存系统 主要功能如下:用户登录模块、用户信息管理模块、角色信息管理模块、部门信息管理模块、行李寄存柜…

十、Qt三维图表

一、Data Visualization模块概述 Data Visualization的三维显示功能主要有三种三维图形来实现,三各类的父类都是QAbstract3DGraph,从QWindow继承而来。这三类分别是:三维柱状图Q3DBar三维空间散点Q3DScatter三维曲面Q3DSurface 1、相关类的…

窥探向量乘矩阵的存内计算原理—基于向量乘矩阵的存内计算

在当今计算领域中,存内计算技术凭借其出色的向量乘矩阵操作效能引起了广泛关注。本文将深入研究基于向量乘矩阵的存内计算原理,并探讨几个引人注目的代表性工作,如DPE、ISAAC、PRIME等,它们在神经网络和图计算应用中表现出色&…

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

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

Java项目:基于SSM框架实现的教务管理系统(ssm+B/S架构+源码+数据库+毕业论文)

一、项目简介 本项目是一套ssm813基于SSM框架实现的教务管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#x…

增加Vscode引用路径

增加Vscode引用路径 增加Vscode引用路径问题说明解决思路1在Vscode中进行配置缺点 解决思路2 增加Vscode引用路径 问题说明 在嵌入式开发中需要经常用到库函数(SPL), Vscode需要配置引用路径才能对函数名或变量进行跳转 解决思路1 与Keil5 MDK类似, 在配置C/C的json文件中添…

论在线测径仪在胶管生产行业的投资与回报!

关键词:在线测径仪,胶管测径仪,双轴测径仪,双向测径仪,测径仪,胶管外径检测 胶管种类多、应用广,在胶管生产行业中,在不断加深其自动化程度,在加深的过程中,先要考虑到的是其投入产出比,是否值得投入。在胶…

【自动化测试】---Selenium+Java

1.自动化测试分类 接口自动化测试UI自动化测试(移动端自动化测试、Web端自动化测试) 2.选择Selenium作为web自动化工具原因(面试题) 开源免费支持多个浏览器支持多个系统支持多语言Selenium包提供很多供测试使用的API 3.自动化是什…

从零开始学Linux之gcc链接

目录 创建静态库并使用 创建动态库(共享库)并使用 链接:将.o目标文件链接起来生成一个可执行程序文件,可分为静态链接和动态链接 静态链接:链接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整…

echarts step line

https://ppchart.com/#/ <template><div class"c-box" ref"jsEchart"></div> </template><script> import * as $echarts from echarts // 事件处理函数 export default {props: {// 需要传递的数据data: {type: Array,defa…

单臂路由实验(思科)

一&#xff0c;实验目的 在路由器的一个接口上通过配置子接口的方式&#xff0c;实现相互隔离的不同vlan之间互通。 二&#xff0c;设备配置 Switch1 Switch>enable 全局模式 Switch#configure terminal 配置模式 Switch(config)#vlan 10 …