[转帖]【P1】Jmeter 准备工作
一、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 5.x | Loadrunner 2021 |
---|---|---|
协议 | 开源协议 | 商业版、社区版(用户数有限制) |
安装 | 体积小、易安装 | 体积庞大、安装时间长 |
跨平台性 | Java 编写,支持多种操作系统和跨平台操作 | 界面仅支持 windows,压力机支持 Linux |
功能性方面 | 比较强大,常用协议使用时与 LR 相差不大 | 非常强大,协议多 |
界面体验 | 稍弱 | 好 |
脚本录制 | 比较方便 | 非常方便,种类大 |
测试计划 | 稍弱 | 强大 |
指标分析 | 界面稍弱 | 界面友好,功能强大 |
学习成本 | 入门快,学至后面需要掌握 Java 语言 | 入门较快,学至后面需要 C 语言 |
软件性能 | 中等 | 高 |
总结:
在目前市场来讲,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 等
二、Jmeter 软件安装
2.1、官网介绍
官网地址: https://jmeter.apache.org/
下载地址: https://jmeter.apachc.org/download_jmeter.cgi
2.2、JDK 安装及环境配置
JDK 版本要求为 1.8
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
- 1
- 2
- 3
- windows下面环境变量设置
JAVA_HOME=D:\Program Files\Java\jdk1.8.0_261;
PATH=%JAVA_HOME%\bin;.......
CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;
- 1
- 2
- 3
2.3、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
- 1
- 2
- 3
- 4
- 5
- 6
(2)、修改 jmeter.properties 配置文件
server.rmi.ssl.disable=true
sampleresult.default.encoding=UTF-8 // 未设置的话,采样器结果有可能乱码
- 1
- 2
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
- 1
- 2
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
(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
这里根据主机地址修改
- 1
- 2
- 3
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 里面能够看到相关主机表示安装成功
- 1
- 2
- 3
- 4
- 5
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
- 一次修改,终身有效
</article>
[转帖]【P1】Jmeter 准备工作的更多相关文章
- JMeter转制LoadRunner HTTP协议脚本的小技巧
对于Http协议的请求,除了手工编写脚本外,JMeter还提供了录制浏览器操作的功能,甚是方便.那如果手头有一堆HTTP协议的LoadRunner脚本,能不能比较快速的转制成JMeter脚本呢?其实也 ...
- Redis 分布式锁(一)
前言 本文力争以最简单的语言,以博主自己对分布式锁的理解,按照自己的语言来描述分布式锁的概念.作用.原理.实现.如有错误,还请各位大佬海涵,恳请指正.分布式锁分两篇来讲解,本篇讲解客户端,下一篇讲解r ...
- 转帖Jmeter中的几个重要测试指标释义
Aggregate Report 是 JMeter 常用的一个 Listener,中文被翻译为“聚合报告”.今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下,以备大家查阅. 如果 ...
- jmeter beanshell断言接口自动化实例
一.JMeter介绍 Apache JMeter是一款优秀的开源性能测试工具,在国外无论是在性能测试还是接口测试领域都有着非常高的使用率,但由于本身没有完善的中文文档以及典型开源工具特点(界面不美观) ...
- JMeter执行dos命令
1.通过java代码实现 参考Java实现操作dos命令 2.直接通过JMeter内置的beanshell脚本操作 String command = "cmd /c start ping w ...
- 会务准备期间材料准备工作具体实施总结 ----(vim技巧应用, python信息提取与整合, microsoft word格式调整批量化)
会务准备期间材料准备工作具体实施总结(vim, python, microsoft word) span.kw { color: #007020; font-weight: bold; } code ...
- JMeter中BeanShell实现写入文件
1.首先F:\test.txt文件为空
- JMeter学习-026-JMeter 分布式(远程)参数化测试实例
以前文所述对文章详情的HTTP请求进行性能测试为例.日常实际场景中,不可能所有的人都在同时访问一篇文章,而是多人访问不同的文章,因而需要对文章编号进行参数化,以更好的模拟日常的性能测试场景.同时,因文 ...
- JMeter学习-025-JMeter 命令行(非GUI)模式详解(三)-测试图形化 HTML 报表(dashboard)生成
闲话少述,接 上文 继续... 6.生成测试报表 生成测试报表前,需要先生成性能测试结果 jtl 或 csv 文件,用于测试结果的生成. jmeter -n -t JMeter分布式测试示例.jmx ...
- JMeter学习-023-JMeter 命令行(非GUI)模式详解(一)-执行、输出结果及日志、简单分布执行脚本
前文 讲述了JMeter分布式运行脚本,以更好的达到预设的性能测试(并发)场景.同时,在前文的第一章节中也提到了 JMeter 命令行(非GUI)模式,那么此文就继续前文,针对 JMeter 的命令行 ...
随机推荐
- django 定时任务 apscheduler 踩坑
本想每天定点的去查询一些数据然后用钉钉机器人发出来,前两三天还好好的,后面就执行 ERROR了 看了下错误问题,就跟连不上数据库一样,参考别人的解决方法 scheduler.add_job(every ...
- 文心一言 VS 讯飞星火 VS chatgpt (34)-- 算法导论5.3 1题
一.Marceau 教授不同意引理 5.5 证明中使用的循环不变式.他对第1次送代之前循环不变式是否为真提出质疑.他的理由是,我们可以很容易宣称一个空数组不包含0排列.因此一个空的子数组包含一个0排列 ...
- 理解三值逻辑与NULL,你离SQL高手更近了一步
什么是NULL NULL 用于表示缺失的值或遗漏的未知数据,不是某种具体类型的值.数据表中的 NULL 值表示该值所处的字段为空,值为 NULL 的字段没有值,尤其要明白的是:NULL 值与 0 或者 ...
- 企业诊断屋:二手车交易平台 APP 如何用 AB 测试赋能业务
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 2023年汽车行业新车市场低靡,由新车降价引发的车辆价格波动很快传导到二手车市场,二手车的交易也受到了冲击,收车验 ...
- 【活动预告】数据集成引擎BitSail遇上CDC
BitSail是字节跳动开源数据集成引擎,于2022年10月26日宣布开源,可支持多种异构数据源间的数据同步,并提供离线.实时.全量.增量场景下全域数据集成解决方案.BitSail支撑了字节内部众多的 ...
- Solon Web 开发,三、打包与运行
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- POJ:1511 Invitation Cards(双向搜索最短路径)
POJ :1511 http://poj.org/problem?id=1511 思路 求1号点到其他点的最短路 + 其他点到1号点的最短. 结果用long long. 用快读可以加快时间 代码 sp ...
- 汇编 | CPU物理地址本质理解
物理地址 我们知道,CPU访问内存单元时,要给出内存单元的地址.所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们将这个唯一的地址称为物理地址. CPU通 ...
- PostMan——安装使用教程(图文详解)
https://blog.csdn.net/m0_61843874/article/details/123324727 postman使用教程1-安装与使用: https://www.cnblogs. ...
- babel相关配置
npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node npm install --save @babe ...