前言
对于jmeter的使用有很多内容,本章节只是简单介绍jmeter的两个方面的内容:一个是使用jmeter模拟postman发送http请求,一个是使用jmete进行压力测试。
更多的内容请参考官方文档:http://jmeter.apache.org/
一.jmeter的下载及简单使用
1.jmeter的下载
下载地址http://jmeter.apache.org/download_jmeter.cgi
本节使用的是jmeter5.0
jmeter不需要安装就可以使用,由于jmeter是使用java编写的的,所以要运行jmeter必须已经安装了jdk配置好了java的环境变量,作为开发的小伙伴,这些基本操作应该我就不啰嗦了。
下载完之后解压,打开程序有两种方法,一是进入bin目录点击jmeter.bat,即可运行jmeter客户端,打开会弹出两个窗口,一个是jmeter的命令窗口,一个是GUI窗口;二是直接进入bin目录下双击ApacheJMeter.jar即可运行GUI。对于两种方法的区别还不是特别清楚,如果有知道的小伙伴,就不要吝啬了,分享才是快乐的。
下面,我将使用第一种方法来演示。
打开界面可以选择语言为中文,但是下次打开还是英文,如果想一直都是英文,可以修改配置文件,网上有教程,我就不多说了。
二.发送http请求报文
这个相当于用postman发送请求的功能一样,也算是一个替代功能吧,如果不想使用postman的可以使用这个功能,发送之前如果是post请求的话要设置报文头和报文体,但是如果是get请求则不用设置报文体。
1.创建一个线程组
选择TestPlan,右键添加
然后就可以设置线程数了,一个线程数代表一个用户,因为这里我只模拟发送报文,所以就设置一个线程,下面的都默认即可;
2.添加一个HTTP请求
添加完成之后,可以设置要发送的ip、端口、上下文路径和请求的方法等,当然ip处也可以使用域名,端口可以不写,默认是80;
3.设置报文头
然后点击添加,添加字段和值
4.添加结果树
为了查看请求结果,需要添加请求树(右键已经创建的线程组),可以根据自己的需要,添加聚合报告等等,此处的添加的结果树可以查看一个请求返回的结果;
5.启动发送请求
6.小案例
模拟发送一个https://blog.csdn.net/zhuxy604/article/details/81012477,然后查看返回结果
a.设置线程组信息
默认即可
b.设置http请求
c.启动发送,查看返回结果
三.使用jmeter进行压力测试(重点)
前面已经讲过了怎么使用jmeter进行发送请求,这节就是在这个基础之上在升级,学会使用jmeter进行压力测试;(参考https://www.cnblogs.com/stulzq/p/8971531.html)
此节是本人查阅资料,然后实践总结出来的;遇到了很多问题也学会了如何处理这些问题;
压力测试不能使用GUI界面进行,GUI界面只是辅助,使用压力测试要从命令窗口进行。
1.使用前的准备
a.需不需要配置jmeter的环境变量?
答:不需要,但是windows打开命令窗口,输入jmeter命令会提示不是内部命令,原因是命令是在C盘的路径下,所以找不到命令,如果不配环境变量,就不能使用这种方法,解决办法是,命令窗口打开后,切换到jmeter的bin目录下,然后使用jmeter命令就可以识别了。
b.如何使用命令?
jmeter的命令有很多,此处只介绍压测时要执行的命令:
jmeter -n -t testplan/RedisLock.jmx -l testplan/result/result.txt -e -o testplan/webreport
说明:
testplan/RedisLock.jmx 为测试计划文件路径
testplan/result/result.txt 为测试结果文件路径
testplan/webreport 为web报告保存路径。
这三个路径都是可以自定义的,为了方便起见,我就按照这个目录,这里是相对路径,意思就是在jmeter的路径下有个testplan的文件夹,如果没有,则要手动新建,其中RedisLock.jmx是自己要执行的测试计划文件,result.txt是自动生成的结果文件,每次会自动新建,所以每次测试完都要手动删除此文件,不然会报已经存在文件的错误,
testplan/webreport这个是压测完成之后生成报告的路径,新建好目录之后,内容也会自动生成(每次压测完还要进行下次压测,记得一定要清空此文件夹的内容),生成的内容中有一个index.html的文件就是压测结果的报告,测试完之查看此报告;注意:result和webreport不要使用一个文件夹,因为生成报告的时候要求这两个目录都为空,但是生成报告的过程是有先后顺序的,一个先生成,后生成的那个就会因为目录不为空而报错。
c.关于压测参数的说明:
(参考:https://blog.csdn.net/a656678879/article/details/80053645)
- 线程数:并发数量,能跑多少量。具体说是一次存在多少用户同时访问
- Rame-Up Period(in seconds):表示JMeter每隔多少秒发动并发。理解成准备时长:设置虚拟用户数需要多长时间全部启动。如果线程数是20,准备时长为10,那么需要10秒钟启动20个数量,也就是每秒钟启动2个线程。
- 循环次数:这个设置不会改变并发数,可以延长并发时间。总请求数=线程数*循环次数
- 调度器:设置压测的启动时间、结束时间、持续时间和启动延迟时间。
测试报告的结果(吞吐量)tps,表示同一时刻可以接受的用户数量,tps越高表示性能越好,这个和应用的优化有很大关系,单台机器的tps是有限的,生产上可以使用负载均衡来提高用户的并发访问量;下面的案例只是本机单台的压测,压测过程中,打开linux,使用top命令来查看CUP和内存的占用情况,CUP占用最高的程序将会放在第一行。
2.小案例
准备工作已经准备完毕后
1.打开Jmeter
打开自己已经保存的执行计划(注意的是此测试计划和CMD窗口命令中的测试计划一定要是同一个,要不然参数设置和执行的不是同一个测试计划),然后设置线程数、Rame-Up Period(in seconds)和循环次数的参数,记得一定要点击保存按钮,不然不生效。
2.CMD打开windows命令窗口
切换到jmeter的bin目录下
3.执行压测命令
(在说一遍:此处执行的测试计划要和窗口的测试计划是同一个)
jmeter -n -t testplan/登录-HTTP请求.jmx -l testplan/result/result.txt -e -o testplan/webreport
4.查看生成的报告
关于测试报告,网上查看说明,请自行查阅,这里就不赘述了。