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),这些虚拟用户用来模拟访问被测系统。
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,意味着一个线程做完一遍事情之后,该虚拟用户就通知运行,若选中永远,则测试运行之后根本停不下来
5. 添加测试页面
可右击线程组->添加->Sampler>HTTP请求;如果你的请求比较多,且有共同的域名或ip和端口,则可以右击test plan-->add-->Config Element-->Http Request Defaults,添加之后可以在这里添加一些共性的参数,域名ip等,然后其他的Http Request 就不用输入这些参数了,可以直接填写其他的请求的参数即可,设置好之后点击保存脚本,然后点击运行(运行日志可点击Options-->勾选log view)
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入门教程