Apache JMeter是Apache组织开发的基于Java的压力测试工具.它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
Jmeter的作用
1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。
2.完全的可移植性和100% 纯java。
3.完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.)包。
4.完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。
5.精心的GUI设计允许快速操作和更精确的计时。
6.缓存和离线分析/回放测试结果。
*JMeter的高可扩展性**
1.可链接的取样器允许无限制的测试能力。
2.各种负载统计表和可链接的计时器可供选择。
3.数据分析和可视化插件提供了很好的可扩展性以及个性化。
4.具有提供动态输入到测试的功能(包括Javascript)。
5.支持脚本编程的取样器(在1.9.2及以上版本支持BeanShell)。
JDK
Jmeter使用,需要依赖JDK1.8,可前往官网进行下载
1 | 归档版: |
这里使用自己下载好的下载链接
1 | https://nmk0718.com.com/jdk/jdk-8u181-windows-x64.exe |
windows安装JDK
双击下载好的exe一直下一步即可
配置环境变量:右键我的电脑>属性>高级系统设置>环境变量
![](\image\image-20210319105114950.png)
新增用户变量
1 | 变量名:JAVA_HOME |
通过cmd查看是否已经配置完成
![](\image\image-20210319105859901.png)
linux安装JDK
1 | [root@centos ~]# cd /usr/local/ |
配置环境变量
1 | [root@centos local]# vi /etc/profile |
windows
官网下载地址
1 | https://mirrors.bfsu.edu.cn/apache//jmeter/source/ |
下载
1 | wget https://mirrors.tuna.tsinghua.edu.cn/apache/jmeter/binaries/apache-jmeter-5.2.zip |
解压jmeter包,进入apache-jmeter-5.2\bin目录双击jmeter.bat
![](\image\image-20210312165019995.png)
界面更改语言为简体中文(此次生效)
修改jmeter.properties文件中的#language=en为language=zh_CN,就可以实现永久中文界面了
虚拟用户压测
添加线程组
![](\image\image-20210312165142531.png)
配置线程数和时间
![](\image\image-20210315160425834.png)
线程数:配置几个就代表有几个虚拟用户
Ramp-Up 时间(秒):表示从第一个虚拟用户开始生成直到最后一个虚拟用户开始生成的时间,加入配置了5个虚拟用户,Ramp-Up 设置成10s,那么jmeter会每隔2s生成1个虚拟用户,这个选项主要的作用是控制并发的强度,不让虚拟用户在同一时间产生从而对系统造成多大的复杂,Ramp-Up设置成0,那么所有用户将会同时立即产生
循环数:要么是N次,要么是永远
调度器:就是定时执行的设置方式。我们可以设置在未来的某个时间开始执行也可以设置多少秒后开始执行。
添加HTTP请求
![](\image\image-20210315161224028.png)
配置请HTTP请求
![](\image\image-20210315161618996.png)
添加结果树和聚合报告
![](\image\image-20210315161726624.png)
配置HTTP信息头
![](\image\image-20210315161937333.png)
执行请求
![](\image\image-20210315162059990.png)
聚合报告中可查看到请求总数,异常数,吞吐量等
查看结果树中可查看到请求的接口返回结果
![](\image\image-20210315162241338.png)
点击清除按钮,清除上次执行请求的结果
![](\image\image-20210315162344364.png)
保存测试计划,保存后格式为jmx
![](\image\image-20210315162551652.png)
真实用户参数化压测
模拟多用户请求
![](\image\image-20210318145516123.png)
配置CSV数据文件
![](\image\image-20210318145657948.png)
在浏览中引入定义的CSV文件,指定文件的编码格式为UTF-8,定义变量名{phone,code},变量名称个数与CSV中的列数相对应,变量名以逗号分隔
CSV数据示例
![](\image\image-20210318145932235.png)
更改HTTP请求中的请求数据为参数化,把请求的手机号和二维码信息配置为上面定义的参数,参数格式为${参数}
![](\image\image-20210318150323783.png)
添加表格查看结果
![](\image\image-20210318150700170.png)
压测请求后,可看到具体请求时间,请求时间,连接大小等参数
![](\image\image-20210318150630922.png)
修改jmeter启动内存
修改jmeter.bat文件
1 | 修改前: |
启动meter.bat,发现弹窗里出现的还是256m,经检测发现该弹窗内显示的只是引导语,类似欢迎你,是写死的,不是真实的配置
![](\image\image-20210318195746254.png)
可使用java中的jconsole(jdk\bin\jconsole.exe)查看真实的内存配置
![](\image\image-20210318200420577.png)
连接本地的Jmeter进程,选择VM概要可查看到真实的内存配置
![](\image\image-20210318200539443.png)
Linux
官网下载地址
1 | https://mirrors.bfsu.edu.cn/apache//jmeter/source/ |
下载
1 | wget https://mirrors.tuna.tsinghua.edu.cn/apache/jmeter/binaries/apache-jmeter-5.2.zip |
解压jmeter包
1 | unzip apache-jmeter-5.2.zip |
配置环境变量
1 | #编辑系统环境变量 |
上传windows保存的测试计划.jmx文件到jmeter的bin目录下
1 | [root@centos bin]# pwd |
执行测试计划
1 | [root@centos bin]# jmeter -n -t HttpRequest.jmx -l request.log |
查看结果
1 | [root@centos bin]# cat request.log |
查看聚合报告
把request.log下载到桌面,添加一个新的聚合报告,导入request.log即可看到聚合报告
![](\image\image-20210315164725351.png)
查看请求结果
从linux导出的文件,是看不到请求返回的数据的
1 | [root@centos bin]# pwd |
再重新执行脚本
1 | [root@centos bin]# jmeter -n -t HttpRequest.jmx -l request.jtl |
在windows查看结果树
![](\image\image-20210319155449953.png)
导入request.jtl文件,即可看到请求的响应数据
![](\image\image-20210319155539610.png)