JMeter自动化压力测试-http

news2024/10/6 20:10:11

下载:

Apache JMeter - Download Apache JMeterhttps://jmeter.apache.org/download_jmeter.cgi

安装:

JDK 版本要求为 1.8。

一、Jmeter 介绍


1.1、Jmeter 有什么样功能
Apache JMeter 是一个开源、纯 Java、优秀的性能测试工具

能够测试许多不同的应用程序/服务器/协议类型:

HTTP、HTTPS

REST、SOAP

JDBC

FTP

LDAP

JMS 消息类

邮件类(SMTP、POP3、和IMAP)

命令或 shell 脚本

TCP

Java 请求扩展

主要特性:

可视化设计、功能齐全 (可视化)

快速设计测试计划、简单构建和调试程序 (简易性)

内置八大组件,功能强大,高度灵活设计 (高灵活)

完全、快速的可移植性和 100% Java 纯度 (跨平台)

核心功能高度可扩展,可以快速进行二次开发(高扩展)

1.2、Jmeter 与 LoadRunner 比较

总结:

在目前市场来讲,Jmeter 为必备技能、LoadRunner 为加强技能(个人技能)

Jmeter 为一款轻量级、跨平台、功能强大的性能测试工具,目前热度已然超过 LoadRunner

1.3、常用性能测试工具
目前市场上性能测试工具多达几十种,笔者选取了几种比较实在的测试工具,供大家参考

性能测试工具    使用协议    支持协议    支持场景化    主要用途    说明
Jmeter    开源    多协议    是    http 测试,其它测试    JMeter 是 Apache 开源基金会提供的完全开源的性能测试工具,旨在加载测试功能行为和衡量性能。它最初是为测试 Web 应用程序而设计的,但此后已扩展到其他测试功能
LoadRunner    商业    多协议    是    http 测试,其它测试    LoadRunner 是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试
Kylinpetl/kylinTOP    国产商业    多协议    是    http 测试,其它测试    奇林性能测试软件(简称:kylinPET,performance emulation tool)是一款功能强大的性能测试工具;界面友好、操作方便,资源占用率低;与 LoadRunner 非常类似
ApacheBench    开源    http    否    简易性 http    ApacheBench 是一个轻量级工具。主要用于 HTTP 协议的性能测试。非常简单快捷,不支持场景化测试
Webbench    开源    http    否    简易性 http    Webbench 是知名的网站压力测试工具,非常简单快捷,不支持场景化测试
Sysbench    开源    多协议    #    数据库基准测试    sysbench 是一款开源的多线程性能测试工具,可以执行 CPU/内存/线程/IO/数据库等方面的性能测试
Locust    开源    http    是    http 测试    Locust 是易于使用的分布式用户负载测试工具。它旨在对网站进行负载测试,并确定系统可以处理多少个并发用户。非常易用。很方便地基于 Python 进行脚本扩展和业务请求实现


1.4、性能测试工具如何选型

ab(ApacheBench)、Webbench 使用场景:简单接口测试,无场景化,无参数化处理,命令行工具
Jmter 使用场景:免费+复杂场景化
LoadRunner 使用场景:商业+复杂场景化
Kylinpet/kylinTOP 使用场景:与 LoadRunner 类似,部分功能更为强大
Locust 使用场景:对 Python 熟悉度高,无 UI 设计界面,使用轻量级协程,高并发
工具只是一种形式,无论是性能测试还是功能自动化测试,在学至后面,本质是一种测试编程,工具只是简化了一些功能,但并不能完全替代;Jmeter、LoadRunner 任意掌握一种,就算以后有需要学习其它的,也会变得简单很多

1.5、学习 Jmeter 对 Java 编程的要求


Jmeter 中的脚本编程本质上是 Java 的编程,要求对 Java 有一定的掌握

编写 Jmeter 脚本,熟悉 Java 的基本编程即可,如变量定义、数据类型、条件、循环、Map 及 List 的结构……

Jmter 的二次开发,对 Java 要求上关注较高,要求熟悉使用 Java 和第三方协议的使用,如 Kafaka,Redis 等

2.配置与使用

2.1、JDK环境配置

Linux 系统下面环境变量设置

export JAVA_HOME=/home/xiangsl/softwares/jdk1.8.0_161
PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar


windows下面环境变量设置

JAVA_HOME=D:\Program Files\Java\jdk1.8.0_261;
PATH=%JAVA_HOME%\bin;.......
CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;


2.2、Jmeter 三种模式
Jmeter 模式    设计测试计划    性能压测    角色说明    说明
GUI 模式    √    √    图形端与压力机在本机    设计测试计划,同时可以作轻量级性能测试
客户端模式        √    命令行模式    命令行模式来进行性能压测,使用上快捷方便,跨平台
远程模式        √    图形端与压力机分开    远程模式下可以水平扩容,一般配合图形界面使用
2.4、主要配置介绍
2.4.1、setenv 配置
win 下面以 setenv.bat 存在,linux 下面以 setenv.sh 存在,默认不存在,需要手工创建主要是用于配置一些系统环境变量,如 JVM 启动参数,默认语言等

配置详情见官网(1.4 Running JMeter):https://jmeter.apache.org/uscrmanual/get-started.htmI#frunning

2.4.2、jmeter.properties
几乎所有的配置都可以通过该文件进行修改,比较常用的有:19.7 Remote hosts and RMl configuration

配置详情见官网:https://jmeter.apache.org/usermanual/properties_reference.html

2.4.3、user.properties
用户自定义参数,一般用于测试计划;在这里,我们可以定义任何自己需要的参数

2.4.4、常用命令介绍
windows 命令,一般用于图形界面,主要命令如下:

启动命令    作用
jmeter.bat    图形模式下启动界面(有 cmd 命令框),如果有控制台消息的时候建议使用
jmeterw.cmd    图形模式下启动界面(没有 cmd 命令框)
jmeter-server.bat    以服务端模式启动
mirror-server.cmd    启动一个镜像服务器
linux 命令,一般用于服务端,主要命令如下:

启动命令    作用
jmeter    图形模式下启动界面(有终端命令框),如果有控制台消息的时候建议使用
jmeter.sh    图形模式下启动界面(没有终端命令框)
jmeter-server    以服务端模式启动
mirror-server.sh    启动一个镜像服务器
2.5、Jmeter 图形端安装
2.5.1、前置条件
操作系统: 不限,一般是win系统居多

JDK: 1.8+

下载后解压至某一文件夹

2.5.2、参数修改
(1)、在 bin 目录下面增加 setenv.bat 文件

rem This is the content of bin\setenv.bat,rem it will be called by bin\jmeter.bat
set JVM_ARGS=-Xms2g -Xmx2g -Dpropname=longge

这里根据自行调整内存大小,默认为1024m,做大型测试时起步4G
其它参考选项,详见官网(1.4 Running JMeter)
https://jmeter.apache.org/usermanual/get-started.html#running
 
(2)、修改 jmeter.properties 配置文件

server.rmi.ssl.disable=true
sampleresult.default.encoding=UTF-8  // 未设置的话,采样器结果有可能乱码

2.5.3、启动/检测
(1)、运行 jmeter.bat 或者 jmeterw.cmd 启动

(2)、启动后,打开 cmd,采用如下命令,检测进程详细,如下表示进程存在且参数配置生效

wmic process where caption="java.exe" get processid,caption,commandline /value
wmic process where caption="javaw.exe" get processid,caption,commandline /value
 


2.6、Jmeter 服务端安装
2.6.1、前置条件
操作系统: 不限,一般为 Linux 系统居多

JDK: 1.8+

下载后解压至某一文件夹

2.6.2、参数修改
(1)、在 bin 目录下面增加 setenv.sh 文件

#This is the content of bin\setenv.sh,
#it will be called by bin\jmeter.sh
export JVM_ARGS="-Xms2g -Xmx2g -Dpropname=longge"

这里根据自行调整内存大小,默认为 1024m,做大型测试时起步 4G
其它参考选项,详见官网(1.4 Running JMeter)
https://jmeter.apache.org/usermanual/get-started.html#running

(2)、修改 jmeter.properties 配置文件

server.rmi.ssl.disable=true
sampleresult.default.encoding=UTF-8
1
2
(3)、修改 jmeter-server 文件

RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.128.166

这里根据主机地址修改

2.6.3、启动&检测
(1)、运行 sh jmeter-server 启动

(2)、启动后,采用如下命令,检测进程详细,如下表示进程存在且参数配置生效

ps -ef|grep longge

缺图

2.6.4、图形端修改
修改 jmeter.properties 文件,多个主机用逗号隔开

remote_hosts=192.168.128.166:1099,192.168.128.167:1099,192.168.128.168:1099

图形端启动后,在 Run/Remote Start 里面能够看到相关主机表示安装成功
 
2.7、安装小结
(1)、大部分配置采用纯手工修改,一定要细小,注意空格,中英文,端口的影响

(2)、理解 Jmeter 的三种模式的应用场景,对我们后续有比较好的指导意义

三、Jmeter 常规配置
3.1、设置中文
3.1.1、临时设置中文
依次点击 Options <<< Choose Languse <<< Chinese(Simplified)

3.1.2、永久设置中文
进入 jmeter 安装路径的 bin 目录下,找到 jmeter.properties 文件


打开 jmeter.properties 文件,找到 #language=en,修改成language=zh_CN,并将前面的 “#” 号去掉,最后保存文件


最后重新打开 jmeter ,就变成中文了
3.2、设置外观(白色)
依次点击 选项 <<< 外观 <<< Windows

3.3、中文乱码
(1)、进入 Jmeter 的bin目录下,找到 jmeter.properties 文件

(2)、找到 #sampleresult.default.encoding=UTF-8,将前面的 # 号去掉,并保存

(3)、重启 Jmeter

测试用例创建

创建一个测试分组

每个项目用一个组,如APP一个,Web一个,或者说当前公司的项目按模块分组也可以。

 创建线程池分组

此分组可以根据模块功能来分,如:login,或者用户管理,用一个线程池组来统一管理测试。

创建成功之后,在当前TestPlan生成一个子级别的线程组,保存:ctrl +s,或者点击工具栏保存按钮 :

1)线程数:即虚拟用户数。设置多少个线程数也就是设置多少虚拟用户数

(2)Ramp-Up时间(秒):设置虚拟用户数全部启动的时长。如果线程数为20,准备时长为10秒,那么需要10秒钟启动20个线程。也就是平均每秒启动2个线程。

(3)循环次数:每个线程发送请求的个数。如果线程数为20,循环次数为10,那么每个线程发送10次请求。总请求数为20*10=200。如果勾选了“Infinite(无限次)”,
那么所有线程会一直发送请求,直到手动点击工具栏上的停止按钮,或者设置的线程时间结束。

添加Http请求

确定模块线程池之后,那么 当前登录就有一个http接口测试需求。接下来创建用于测试的,具体的http请求接口。

启动Http接口压力测试,点击启动按钮 :

刚才配置时候不小心勾选了,无限次(Infinite),需要手动点Stop按钮 ,终止测试,要不看后端服务一直接收到请求。 

判断测试结果:添加断言

配置好接口信息后,配置断言,用于检查测试结果是否符合预期,

创建成功之后,如上图所示,此项是在http请求接口子级,因为上断言是只针对当前登录接口的。

断言编写配置

 如我的测试返回是一个字符串:Person{name="lani",age="18"},响应的header这样的:

 所以我添加一个断言,如下 ,Reponse Code里有200,那我这个测试就OKb 

查看当前接口测试结果 

配置预期结果,之后,配置监听此接口压力的测试的结果

 此项是在http请求接口子级,如下图,View Result Tree,是在当前登录htttp接串口的子级,每一个结果一个测试result集。 

查看我的此次运行此接口测试结果,显示都成功了,每一次测试结果头都有:200,这个code。 

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

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

相关文章

lua | 运算符与字符串

目录 一、运算符 算数运算符 关系运算符 逻辑运算符 其他运算符 运算符优先级 二、字符串 转义字符 方法与用途 字符串截取 字符串大小转换 字符串查找与反转 字符串格式化 字符与整数的转换 匹配模式 本文章为笔者学习分享 学习网站&#xff1a;Lua 基本语法 | …

分享三种高效的方法,快速将一个PDF文件分割成两个!

如何将一个PDF分割成两个&#xff1f;PDF文件在学习和工作中都是常用的文件格式&#xff0c;但是有时候我们可能只需要其中的一部分内容&#xff0c;这时候就需要将PDF文件分割成两个或多个。本文将分享三种不同的方法&#xff0c;供大家参考。 一、使用在线工具分割 记灵在线…

设计模式:DDD领域驱动设计

领域 Domain-driven design DDD 强调是说得先把 “领域” 中涉及到的数据、流程、规则等都弄明白了&#xff0c;然后以面向对象的观点为其建立一个模型&#xff08;即领域模型&#xff09;&#xff0c;而这个模型&#xff0c;决定了你将用什么技术、什么架构、什么平台来实现这…

国产仪器 1652A/1652B 函数/任意波形发生器

1652A函数/任意波形发生器采样率2.5GSa/s&#xff0c;垂直分辨率14bits&#xff0c;最高输出频率500MHz&#xff08;直流耦合模式&#xff09;&#xff0c;双通道&#xff0c;存储深度1G点/通道&#xff1b;1652B函数/任意波形发生器采样率5GSa/s&#xff08;插值到10GSa/s&…

【Flink】DataStream API使用之执行环境

1. 执行环境 Flink 程序可以在各种上下文环境中运行&#xff1a;我们可以在本地 JVM 中执行程序&#xff0c;也可以提交 到远程集群上运行。不同的环境&#xff0c;代码的提交运行的过程会有所不同。这就要求我们在提交作业执行计算时&#xff0c;首先必须获取当前 Flink 的运…

【Unity3D插件】动态连线插件CustomWire,使用教程

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 CustomWire插件可以在Unity3D中实现动态连线&#xff0c;将三维…

ADAudit Plus的UEBA功能如何解决企业面临的安全挑战

随着企业信息系统的不断发展和扩大&#xff0c;越来越多的安全威胁开始涌现。从内部员工的误操作到外部黑客的入侵&#xff0c;企业信息系统的安全风险日益增加。为了保护企业的关键数据和业务&#xff0c;企业需要采取一系列的安全措施。而其中一项关键的安全措施是实时监控和…

【BingChat】Microsoft Edge/Bing Chat 注册使用完全指南

欢迎关注【youcans的学习笔记】原创作品&#xff0c;火热更新中 【BingChat】Microsoft Edge/Bing Chat 注册使用完全指南 1. BingChat 简介2. BingChat 用户注册2.1 下载微软浏览器 Edge 预览版2.2 申请微软账户2.3 登录 Bing.com2.4 手机/平板使用 BingChat 3. BingChat 的聊…

P1056 [NOIP2008 普及组] 排座椅

题目描述 上课的时候总会有一些同学和前后左右的人交头接耳&#xff0c;这是令小学班主任十分头疼的一件事情。不过&#xff0c;班主任小雪发现了一些有趣的现象&#xff0c;当同学们的座次确定下来之后&#xff0c;只有有限的 &#xfffd;D 对同学上课时会交头接耳。 同学们…

【OpenSSH】无需公网IP使用SSH远程连接服务器

文章目录 前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转…

家里小孩要去学网络安全,网络安全行业前景到底怎么样?

最近接待了很多学生家长来咨询网络安全学习的问题。 家长们最主要关注三点&#xff1a;什么是网络安全&#xff1f;网络安全行业前景好吗&#xff1f;工资能拿多少&#xff1f;哪些专业什么学历可以学习网络安全&#xff1f; 那么盾叔就来综合解答一下。 什么是网络安全&…

UG NX二次开发(C#)-建模-判断一条曲线是否封闭的方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、在UG NX中创建一条不封闭的曲线和一条封闭的曲线3、函数说明4、代码5、测试1、前言 前面有个博客介绍了边UG NX二次开发(C#)-建模-判断一条曲线是不是封闭,但是这个博客是判断边对象是…

Interest-aware Message-Passing GCN for Recommendation(www 21)

论文地址&#xff1a;https://arxiv.org/abs/2102.10044 BACKGROUND GCN信息聚合的模式非常适合推荐&#xff0c;但众所周知在模型设计的时候通常只能堆叠2-3层&#xff0c;再多就会出现过平滑问题&#xff08;结点特征之间没有区分度&#xff09;&#xff0c;LightGCN证明了G…

【是C++,不是C艹】 引用的概念 | 引用的使用 | 引用与指针的区别

&#x1f49e;&#x1f49e;欢迎来到 Claffic 的博客&#x1f49e;&#x1f49e; &#x1f449; 专栏&#xff1a;《是C&#xff0c;不是C艹》&#x1f448; 前言&#xff1a; 前面带大家学习了函数重载等C基础&#xff0c;这期继续C基础的学习&#xff1a;引用。 注&#xff1…

最常用的js混淆加密解

JS混淆加密是一种用于保护JS代码的技术&#xff0c;它能够将代码变得难以理解和修改&#xff0c;从而提高代码的安全性。但是&#xff0c;当我们需要修改和维护这些代码时&#xff0c;我们就会面临困难。因此&#xff0c;在某些情况下&#xff0c;我们需要解这些JS代码。 下面…

新唐NUC980使用记录(5.10.y内核):访问以太网(LAN8720A) 启用SSH

文章目录 目的修改内核和设备树以访问以太网制作根文件系统并启用SSH总结 目的 这篇文章主要测试新唐NUC980&#xff08;5.10.y内核&#xff09;访问以太网&#xff08;PHY为LAN8720A&#xff09;以及启用SSH。 这篇文章中内容均在下面的开发板上进行测试&#xff1a; 《新唐…

【三维几何学习】网格可视化-Cube engraving数据集

网格可视化-Cube engraving数据集 引言一、blender二、meshlab三、3D查看器 引言 三角网格(Triangular Mesh)分类数据集 MeshCNN: A Network with an Edge 可参考以上链接深入了解 or 下载数据集。Cube engraving(论文叫法)数据集&#xff0c;又称为Cubes classification datas…

ClickHouse之Explain查看执行计划

文章目录 前言基本语法EXPLAIN 类型EXPLAIN PLANEXPLAIN ASTEXPLAIN SYNTAXEXPLAIN PIPELINEEXPLAIN ESTIMATE 补充忠告 前言 在 clickhouse 20.6 版本之前要查看 SQL 语句的执行计划需要设置日志级别为 trace 才能 可以看到&#xff0c;并且只能真正执行 sql&#xff0c;在执…

快商通联合创始人李稀敏入选“科技专家库专家名单”

3月10&#xff0c;厦门市科学技术局关于2023年第一批拟入选科技专家库专家名单进行公示。经过层层审核&#xff0c;快商通联合创始人李稀敏入选“科技专家库专家名单”。 据了解&#xff0c;厦门市科学技术局的“科技专家库专家名单”是由市科技局精心挑选的一批优秀专家&…

Unsupervised Domain Adaption (UDA)及domain shift介绍

UDA UDA想解决的问题是目标域上数据标签的缺乏&#xff0c;具体而言&#xff0c;存在着源域和目标域&#xff0c;源域上存在大量的标注样本对 D s { ( X i , y i ) } D_s\{(X_i,y_i)\} Ds​{(Xi​,yi​)}&#xff0c;我们可以在上面以有监督的方式训练各种模型&#xff0c;但此…