这里写自定义目录标题
jmeter教程
官网:https://jmeter.apache.org/
Jmeter
是纯java编写的,所以使用Jmeter
之前先安装JDK
。目前我使用 Jmeter5.X
版本,官方温馨提示需要Java8
以上的环境。如果使用其他版本的Jmeter
,需要考虑Java
环境,避免产生尴尬的事情。
一、下载和安装
1.1、下载
下载地址:https://jmeter.apache.org/
jmeter5.3
下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-5.3.tgz
浏览器推荐使用
如果使用谷歌双核浏览器下载会非常慢,使用这个
Kuai
。
不过说,这样就下载OK了。
1.2、安装(Windows环境)
解压打开才发现,不用安装,直接启动就可以启动。但是每次都需要到这个安装目录启动,是有些麻烦,我们就配置一下环境变量直接使用命令启动比较方便。
方式一
直接到安装目录的 bin
目录下执行jmeter.bat
就可以启动。
- 启动
这样启动,同时会有一个DOS
窗口,这个窗口不要关闭了。如果关闭,Jmeter
也就随着关闭了。
方式二(推荐)
使用命令操作,启动时会稍微缓慢一些,不过特别方便。
- 配置环境变量
环境变量我个人喜欢配置为个人用户变量,而不是系统变量,可以根据自己的喜好定义即可。
变量名 | 变量值 |
---|---|
JMETER_HOME | D:\软件\apache-jmeter-5.3 # Jmeter安装目录 |
Path | %JMETER_HOME%\bin |
- 查看
Jmeter
版本
jmeter -v
- 1
- 启动
jmeter
jmeter
- 1
1.3、汉化
默认是英文的,如果对英文不太好的,我们想要汉化为咋们母语,使用起来会更佳方便。
- 方式一
- 方式二
更改Jmeter
中的 jmeter.properties
配置文件,这个文件也是在lib
目录下的。
language=zh_CN
- 1
1.4、外观设置
默认的外观样式看起来很爽,但是监听测试结果的时候,图形结果,汇总图等信息看不清楚。所以这个很牛的大黑板我们的更改一下,目前感觉大白板看起来也不错,至少能够看清楚显示的数据,所以将开关更改为大白板(Windows
)。
- 默认样式
- 更改样式
二、Jmeter
使用
2.1、线程组说明
使用Jmeter
需要创建线程组,线程组就是一组用户。因为Jmeter
使用java编写的,并且使用一个java
线程来模拟一个虚拟的用户。线程组就是指一组线程,而这些线程就代表一组用户。所以需要使用Jmeter
必须先创建线程组的原因。
jmeter
中的线程组分为三种,普通线程组、setUp
线程组,Teardown
线程组三种。
setUp
线程组和tearDown
线程组,它们与普通线程组区别在于,setUp
线程在普通线程执行前自动触发执行;
tearDown
线程组在主线程结束后执行。
- 用途
setUp
线程组可以用于测试准备,比如用它来创建测试用户等。
Teardown
线程组可以用于测试清理工作,比如删除测试用户等。
2.2、创建线程组
首先创建一个模块,点击文件 -> 新建。或者工具栏的第一个图标。
这里有一个体验不是很OK
的效果,如果你点击创建之后。如果当前模块并没有保存,会给出一个提示。如果当前模块已经保存了,那么会直接在右边显示一个模块自己填写新的工程,但是这个页面显示的默认是当前模块的数据。不用担心直接更改 ctrl+S
保存即可。
- 线程数
线程数就是创建几个虚拟的用户
Ramp-Up
时间(秒)
多长时间执行完毕所有的线程数,如果这里设置为 0
,线程数为 100
,那么表示同一个时刻发送100
个请求,发送到哪里呢?下面在做分析。
- 循环次数
这里如果选择永远,那么就一直保持执行,不停的执行,如果设置为 X
,那么按照当前的执行规则执行 X
遍,不过这里必须设置为数字,真的搞一个字母谁知道这个字母是多少,除非是一个变量名。
2.3、创建一个HTTP
请求
我们使用的一般都是HTTP
协议,如果使用TCP
等协议的在另外做参考,暂时我也不知道,哈哈哈。这里创建的方式都一样,但是版本的不同会有写差异。
这样就创建完了,可以测试了。但是测试的结果我们还不知道,所以我们需要添加监听器。
2.4、监听器
监听器是用于监听测试的结果和测试过程中的各种变化,Jmeter
提供很多监听方式,可以自己选择添加即可。如果没有监听器,那么测试结果我们获取不到。监听器中,聚合报告和汇总报告需要关注一下,对吞吐量、异常数等信息做了汇总。
2.5、配置原件
参考:https://www.cnblogs.com/wusun/p/13872524.html
JMeter
配置元件可以用来初始化默认值和变量,读取文件数据,设置公共请求参数,赋予变量值等,以便后续采样器使用。将在其作用域的初始化阶段处理。 配置元件(Config Element)提供对静态数据配置的支持,可以为取样器设置默认值和变量。
在测试用,大多数单体系统都是自带认证系统的。所以需要校验Token
等信息,这是就需在请求头设置Token
信息。
三、执行SQL脚本
废话不多说,连接数据库是需要驱动的。连接MySQL
需要MYSQL
驱动,MongoDB
有MongoDB
的驱动。在开发中没有考虑MongoDB
驱动,是因为springboot
默默地帮你完成了这件不起眼却十分关键的事情。但是Jmeter
不一样了,需要手动添加驱动了。
3.1、执行MySQL脚本
添加驱动
如果开发是使用java
开发的,那么数据库驱动可以到maven
本地仓库里面去获取,没有必要在去下载。
创建 JDBC Connection Configuration
注意:更改数据库驱动或者新增数据库驱动,需要重启Jmeter才会生效。
JDBC Connection Configuration
类似于一个数据源,同一个线程组中可以创建多个数据源。JDBC Connection Configuration
中有一个名称为 Variable Name for created pool
的变量,这个变量值就相当于当前数据源的唯一标识。如果同一个线程组中存在多个数据源,那么就靠这个变量名来指定使用哪个数据源。这个变量必须配置,否则会报异常的。
- 必须填写的选项有
Variable Name for created pool
:相当于当前数据源的标识Database URL
:数据库的连接地址JDBC Driver class
:数据库驱动Username
:数据库名称Password
:数据库密码
创建 JDBC Request
注意:目前的这种配置SQL
区域这里只能书写一个SQL
语句,不管SQL
复不复杂,只要是一个SQL
就OK
。
如果测试时需要输入多条SQL
语句,需要在JDBC Connection Configuration
数据库连接地址后面添加 allowMultiQueries=true
即可。
allowMultiQueries=true
- 1
测试
- 创建监听器查看测试结果
- 启动测试
这样就测试OK
了。
四、使用技巧
4.1、刚开启的Jmeter
不能操作问题
Windows
中的Jmeter
,在重启之后。显示的这个测试模块打不开,不管怎么处理都没有。可以点击打开图标,找到保存的文件打开就可以操作了。
4.2、jmx
文件说明
jmx
文件是Jmeter
的操作文件,这个文件保存我们测试中配置的所有信息。如果当前配置文件拷贝到其他机器上测试,JDBC
驱动地址等信息需要改变,可以直接在这个配置文件中更改即可。
如果是在Windows
上测试,我们可以打开在Jmeter
中图形化更改,这样的确很爽。但是如果是cop
到Linux
中测试,这就不得不更改配置文件来解决问题了。
五、Jmeter在Linux上工作
JMeter是
java书写的,不管是在
Windows还是
Linux还是外太空,
JDK`是必须要安装的。
Linux
安装JDK参考:https://blog.csdn.net/qq_41853447/article/details/105715288
5.1、配置环境变量
vim /etc/profile
- 1
JMETER_HOME=/opt/data/apache-jmeter-5.3
PATH=$JMETER_HOME/bin:$PATH
- 1
- 2
source /etc/profile
- 1
检测是否配置成功
jmeter -v
- 1
5.2、测试
在Windows
环境中配置好的jmx
文件上传到Linux
系统中,切记:数据驱动地址一定要更改。因为是配置好环境变量的,所以直接执行命令即可,没有必要在到 JMeter
目录执行命令了。
方式一
jmeter -n -t JDBC测试.jmx -l JDBC测试结果.jtl
- 1
-n
: 非GUI 模式执行JMeter
-t
: 执行测试文件所在的位置及文件名
-r
: 远程将所有agent启动用在分布式测试场景下,不是分布式测试只是单点就不需要-r
-l
: 指定生成测试结果的保存文件, jtl 文件格式
-e
: 测试结束后,生成测试报告
-o
: 指定测试报告的存放位置,指定的文件及文件夹,必须不存在 ,否则执行会失败,对应上面的命令就是resultReport
文件夹必须不存在否则报错
JDBC测试.jmx
需要测试的JMeter
文件,就是Windows
环境下配置的这个。
JDBC测试结果.jtl
:保存执行结果,文件的后缀一般都是 jtl
,但是为其他的也没有毛病的。
方式二
jmeter -n -t 测试文件.jmx -l 测试结果文件.jtl -e -o 生成web测试结果保存的路径
- 1
- 案例
jmeter -n -t /opt/data/jmeter/测试计划.jmx -l /opt/data/jmeter/测试结果.jtl -e -o /opt/data/jmeter/resut
- 1
参数就不用介绍了,和方式一相同。
将测试结果 web
文件 /opt/data/jmeter/resut
下载到本地使用浏览器打开。
目前我的测试任务是两个,所以这里会显示两个测试结果。如果英文不好的,可以使用谷歌浏览器打开翻译即可。
5.3、测试结果分析
查看结果树(View Results Tree
)
这种模式可以详细观看到每个线程的测试结果。
返回数据
- 取样器结果:返回值报200,表示执行接口调试成功
- 请求:发送的数据
- 响应数据:返回的数据
- Thread Name:线程组名称
- Sample Start: 启动开始时间
- Load time:加载时长
- Latency:等待时长
- Size in bytes:发送的数据总大小
- Headers size in bytes:发送数据的其余部分大小
- Sample Count:发送统计
- Error Count:交互错误统计
- Response code:返回码
- Response message:返回信息
- Response headers:返回的头部信息
聚合报告(AggregateReport
)
- Label - 请求对应的name属性值。
- Samples - 具有相同标号的样本数,总的发出请求数。
- Average - 请求的平均响应时间。
- Median - 50%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第50%的值。
- 90% Line - 90%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第90%的值。
- 95% Line - 95%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第95%的值。
- 99% Line - 99%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第99%的值。
Min -
最小响应时间。Max -
最大响应时间。- Error % - 本次测试中,有错误请求的百分比。
- Throughput - 吞吐量是以每秒/分钟/小时的请求量来度量的。这里表示每秒完成的请求数。
- Received KB/sec - 收到的千字节每秒的吞吐量测试。
- Sent KB/sec - 发送的千字节每秒的吞吐量测试。
如果当前的语言是中文,那么这里显示的就是中文。但是对于这些名称或许不太理解,所以这里附加说明。
常见异常
在DOS
窗口下提示这个异常,说明创建 JDBC Request
的时候 Variable Name of Pool declared in JDBC Connection Configuration
指定数据源的这个名称为空了。
Exception "java.lang.ClassNotFoundException: com/intellij/codeInsight/editorActions/FoldingData"while constructing DataFlavor for: application/x-java-jvm-loc
- 1
Response message:java.sql.SQLException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
数据库驱动不对,检查当前模块中引入的数据库驱动是否存在,或者是否正确。在检查 JDBC Request
中书写的数据库驱动是否正确。
版权声明:本文为CSDN博主「逍遥客.」的原创文章
原文链接:https://blog.csdn.net/qq_41853447/article/details/110521281