jmeter入门(环境搭建&运行&初识)
最近了解了一些性能测试的基础知识和原理决定动手实践下,比较选择了jmeter
一、什么是jmeter
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
二、下载&GUI模式运行(基于windows):
我下载的版本是目前最新的4.0版本apache-jmeter-4.0.zip
官网地址:
http://jmeter.apache.org/download_jmeter.cgi
jmeter不需要安装,只需要配置好JDK环境,然后在在jmeter的bin目录中双击运行jmeter.bat文件即可
4.0版本官方建议配置的JDK最好用1.8或者1.9版本(检查java版本 java -version)
双击运行会弹出一个cmd命令窗口&jmeter图形界面,cmd命令窗口内容如下(关闭cmd命令窗口,jmeter也会同时被关闭):
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模式进行负载测试,只用于测试创建和调试!
对于负载测试使用no-GUI的方式进行运行:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to output folder]
或者进行修改堆内存的大小:
Jmeter的默认堆为256m,因此,如果使用Jmeter进行负载测试建议将堆内存进行修改到合适的大小;
修改方法:
在jmeter的bin目录下,找到jmeter.bat文件打开,修改heap(4.0版本在144行)
三、更改文字为中文(建议用英文)
官方默认为我们提供了简体中文。通过 【Options】->【Choose Language】变更为简体中文
四、Non-GUI Mode (Command Line mode)
如果要直接在cmd命令行运行则需要配置jmeter的环境变量否则每次执行命令都要切换到bin目录下:
右键计算机属性---》高级系统设置---》环境变量---》
变量名: JMETER_HOME
变量值: D:\apache-jmeter-4.0
变量名: Path (在后面添加以下变量值)
变量值:;%JMETER_HOME%\bin;
对于负载测试,必须在此模式下运行JMeter(没有GUI)以从中获得最佳结果。为此,请使用以下命令选项:
-n 这指定JMeter将以非gui模式运行 -t [包含测试计划的JMX文件的名称]。 -l [将样本结果记录到的JTL文件的名称]。 -j [JMeter运行日志文件的名称]。 -r 在JMeter属性“ remote_hosts ” 指定的服务器中运行测试 -R [远程服务器列表]在指定的远程服务器中运行测试 -G [CSV文件的路径]仅生成报告仪表板 -e 负载测试后生成报告仪表板 -o 输出文件夹在加载测试后生成报告仪表板的位置。文件夹不得存在或为空
该脚本还允许您指定可选的防火墙/代理服务器信息: -H [代理服务器主机名或IP地址] -P [代理服务器端口]
例子:
jmeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000
ps:If the property jmeterengine.stopfail.system.exit is set to true (default is false),
then JMeter will invoke System.exit(1) if it cannot stop all threads. Normally this is not necessary.
如果属性jmeterengine.stopfail.system.exit被设置为true(默认为false),如果无法停止所有线程,jmeter将会引用System.exit(1)。通常这不是必需的。
五、熟悉jmeter的安装目录(windows&只针对bin目录)
1.JMeter自动从以下目录中的jar中查找类:
JMETER_HOME/lib目录用于存放实用程序和依赖的jar包
JMETER_HOME/lib/ext目录用于JMeter组件和插件(如果自己开发了相关组件也可以打成jar包放在这个目录下,组件依赖的jar包放在/lib下)
*.cmd文件运行需要系统在win2000以上的版本
文件名 | 含义 |
---|---|
jmeter.bat | 运行Jmeter(这个默认是带win shell控制台的)(默认使用GUI模式) |
jmeterw.cmd | 运行Jmeter,但是不显示win shell控制台(可以对比jmeter.bat启动的jmeter)(默认使用GUI模式) |
jmeter-n.cmd | 将JMX文件拖拽到该命令文件上,将会以non-GUI模式运行该测试 |
jmeter-n-r.cmd | 将JMX文件拖拽到该命令上,将会在远程测试机上以non-GUI模式运行该测试 |
jmeter-t.cmd | 将JMX文件拖拽到该命令上,使用GUI模式加载该JMX |
jmeter-server.bat | 使用服务模式启动Jmeter(用于分布式的服务端启动) |
mirror-server.cmd | 使用non-GUI模式启动Jmeter镜像服务 |
shutdown.cmd | 运行Shutdown客户端关闭一个non-GUI实例 |
stoptest.cmd | 运行Shutdown客户端关闭一个non-GUI实例 |
GUI模式----推荐使用GUI模式进行创建脚本以及调试脚本,不推荐进行负载测试(所谓负载测试是属于性能测试的一种类型,通过测试系统在资源超负荷情况下的表现,以发现设计上的错误和验证系统的负载能力,在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力;负载测试的目的是确定并确保系统在超出最大预期工作量的情况下仍能正常运行,此外,负载测试还要评估性能特征;例如:响应时间、事务处理速率和其他与时间相关方面),因此可以看出负载测试是比较浪费系统资源的,GUI界面本身便很浪费资源,因此如果出现大并发或者机器处于大负载的情况下,非但不会得到你想要的结果,机器是必然会出现卡死的情况。 --------这部分理解转自:https://www.cnblogs.com/richered/p/8324039.html
参考:
官方入门文档(本文只是根据个人学习进度摘取了部分学习并记录,不定期更新):
http://jmeter.apache.org/usermanual/get-started.html#running
其他博客的全文翻译(这个文章是2017年8月的可能和现在的官方文档有出入,仅作参考):
https://blog.csdn.net/yue530tomtom/article/details/76529619