Jmeter的入门与使用

1. Jmeter的作用

    jmeter是Apache下的一款开源的软件,采用100%java语言编写,可以测试Web容器,静态资源,动态资源以及数据库的抗压性能,可以模拟高并发量,对一个服务器或一组服务器在短时间内发起大量的访问,达到测试软件性能的效果

2. Jmeter的使用

    1) 下载jmeter,然后配置jmeter的环境变量(请确保在操作之前已经安装好jdk并配置了环境),这样就可以在任意目录下的命令行中,直接输入jmeter启动jmeter的GUI来操作

        jmeter bin文件夹下的各脚本的作用

jmeter.bat
run JMeter (in GUI mode by default)
jmeterw.cmd
run JMeter without the windows shell console (in GUI mode by default)
jmeter-n.cmd
drop a JMX file on this to run a non-GUI test
jmeter-n-r.cmd
drop a JMX file on this to run a non-GUI test remotely
jmeter-t.cmd
drop a JMX file on this to load it in GUI mode
jmeter-server.bat
start JMeter in server mode
mirror-server.cmd
runs the JMeter Mirror Server in non-GUI mode
shutdown.cmd
Run the Shutdown client to stop a non-GUI instance gracefully
stoptest.cmd
Run the Shutdown client to stop a non-GUI instance abruptly

    2) 环境变量的配置                

1、设定目录为 D:\apache-jmeter-3.2\

2、新增1个系统变量名JMETER_HOME、变量值输入 D:\apache-jmeter-3.2\

3、新增1个系统变量名CLASSPATH、变量值输入%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar; %JMETER_HOME%\lib\jorphan.jar; 
4、在变量path后面加上%JMETER_HOME%\bin
5、配置完成后输入: jmeter和jmeter –v测试一下是否配置正确!

    3) 建立测试计划

          1. 添加线程组:右击“测试计划”>添加>Threads(Users)>线程组. 线程组在jmeter中的定义JMeter是由Java实现的,并且使用一个Java线程来模拟一个用户,因此线程组(Thread Group)就是指一组用户的意思,换句话说一个线程组就是一组虚拟用户(virtual users),这些虚拟用户用来模拟访问被测系统。

            Jmeter的入门与使用

        2. 线程组中设置

        线程数:这里就是指虚拟用户数,默认的输入是“1”,则表明模拟一个虚拟用户访问被测系统,如果想模拟100个用户,则此处输入100

            3. Ramp-Up Period(int seconds):虚拟用户增长时长;举例解释,比如你测试的是一个考勤系统,那么实际用户登录使用考勤系统的时候并不是大家喊1、2、3 - 走起,然后一起登录。实际使用场景可能是9点钟上班,那么从8:30开始,考勤系统会陆陆续续有人开始登录,直到9:10左右,那么如果完全按照用户的使用场景,设计该测试的时候此处应输入40(分钟)* 60(秒)= 2400。但是实际测试一般不会设置如此长的Ramp-Up时间,原因嘛,难道你做一次测试要先等上40分钟做登录操作?一般情况下,可以估计出登录频率最高的时间长度,比如此处可能从8:55到9:00登录的人最多,那这里设置成300秒,如果“线程数”输入为100,则意味着在5分钟内100用户登录完毕。

            4. loop count(循环次数): 即一个线程(用户)做多少次测试,默认是1,意味着一个线程做完一遍事情之后,该虚拟用户就通知运行,若选中永远,则测试运行之后根本停不下来

            Jmeter的入门与使用

        5. 添加测试页面

        可右击线程组->添加->Sampler>HTTP请求;如果你的请求比较多,且有共同的域名或ip和端口,则可以右击test plan-->add-->Config Element-->Http Request Defaults,添加之后可以在这里添加一些共性的参数,域名ip等,然后其他的Http Request 就不用输入这些参数了,可以直接填写其他的请求的参数即可,设置好之后点击保存脚本,然后点击运行(运行日志可点击Options-->勾选log view)

Jmeter的入门与使用

       Jmeter的入门与使用

        6. 添加结果监听器

            右击线程组-->监听器-->查看结果树来查看性能测试过程中请求和响应的信息,添加完毕后,保存测试脚本,再次运行

            目前为止一个简单的Jmeter的性能测试用例就介绍完了

4)命令行的方式运行测试脚本

    官方并不推荐我们用GUI Mode的方式去进行压测,因为GUI非常吃内存,当你的线程数特别多的时候,电脑很容易卡死(亲测过),故特此推荐使用命令行的方式运行测试脚本进行压测;运行命令的格式:jmeter -n -t [jmx脚本路径] -l [测试输出文件路径]

        1. Non-GUI模式下常用的参数

            

-n  This specifies JMeter istorunin non-gui mode

#Non-GUI模式运行

-t  [nameof JMX filethatcontainsthe Test Plan].

#要执行的JMeter脚本

-l  [nameof JTL filetolog sample results to].

#采样器的log文件,一般以.jtl结尾

-j  [nameof JMeter runlogfile].

#指定记录JMeter log的文件,默认为bin目录下的jmeter.log

-r  Run the test inthe servers specified bythe JMeter property"remote_hosts"

#启动远程server(在jmeter.properties中定义好的remote_hosts

-R  [listof remote servers] Run the test inthe specified remote servers

#启动远程server(如果使用此参数,将会忽略jmeter.properties中定义的remote_hosts

-H  proxyHost <argument>    [proxy server hostname or ip address]

#代理服务器地址

-P  [proxy server port]

#代理服务器端口

-u  username <argument>  Set username for proxy server that JMeter isto use

 #代理服务器用户名

-a  password <argument>  Set password for proxy server that JMeter isto use

  #代理服务器密码

-J  jmeterproperty<argument>=<value>    Defineadditional JMeter properties

 #JMeter属性,Non_GUI模式时传入参数使用。

-L  loglevel<argument>=<value>       [category=]level e.g. jorphan=INFO or jmeter.util=DEBUG

#定义JMeter运行时的日志级别

-X  remoteexit        Exit the remote servers atendof test (non-GUI)

#测试结束后,退出(在Non-GUI模式下)

5)参考资料

   1. jmeter官网

    2. JMeter入门教程

    3. Windows——jmeter环境变量配置