一、环境准备
1)JDK安装及配置环境变量
2)下载Jmeter
官网下载地址:http://jmeter.apache.org/download_jmeter.cgi
老版本的下载地址:https://archive.apache.org/dist/jmeter/binaries/
本人使用的是apache-jmeter-3.1
3)下载之后解压,双击bin目录下的jmeter.bat启动Jmeter
二、测试
1)右键点击“测试计划” -> “添加” -> “Threads(Users)” -> “线程组” ,可配置线程数,准备时长(Ramp-Up Period(in seconds))循环次数,调度器等参数:
参数解释:
线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。
循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
Delay Thread creation until needed:直到需要时延迟线程的创建。
调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
持续时间(秒):测试持续时间,会覆盖结束时间
启动延迟(秒):测试延迟启动时间,会覆盖启动时间
启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手 动只需测试时当前时间也会覆盖它。
结束时间:测试结束时间,持续时间会覆盖它。
2)新建HTTP请求。
右键点击“线程组” -> “添加” -> “Sampler” -> “HTTP请求”
举个例子,例如我的接口请求地址是:
http://10.10.77.142:30110/algorithm/603/1.0.0
3)如上图所示,接口的参数是Json格式的话,把json放进Body Data里,然后再右键点击线程组-》添加配置元件-》添加HTTP消息头管理器,在消息头管理器中增加Content-Type = application/json
4)接口运行结果的查看
右键点击“线程组” -> “添加” -> “监听器” -> “察看结果树”
右键点击“线程组” -> “添加” -> “监听器” -> “聚合报告”
5)如果想看测试接口所在服务器的性能情况,如cpu、内存、io等,可按照以下步骤进行,如不需要则跳过。
5.1)我所用的版本及下载地址
JMeterPlugins-Standard-1.4.0 可下载最新的
下载地址:https://jmeter-plugins.org/downloads/old/
ServerAgent 2.2.1.zip
下载地址:https://jmeter-plugins.org/wiki/PerfMonAgent/
5.2)解压JMeterPlugins-Standard-1.4.0.zip,将其中\lib\ext\JMeterPlugins
-Standard.jar包复制到JMeter安装目录下的\lib\ext下
5.3)重启JMeter,在监听器的选项中增加了一些jp@gc开头的监听器,监控CPU、内存、I/O的监听就是jp@gc-PerfMon Metrics Collector,选择添加jp@gc-PerfMon Metrics Collector,然后填写一些信息,如下图
5.4)
1)将下载好的ServerAgent-2.2.1.zip通过放到服务器指定目录下
2)解压:unzip ServerAgent-2.2.1.zip
3)启动服务:bash startAgent.sh
注:如果没有执行权限,需要先授权,chmod 777 startAgent.sh;
如果要将该文件设置为后台执行不关闭,Nohup ./startAgent.sh &
6)点击启动,运行脚本,可查看结果树和聚合报告的接口运行情况,如果配置了上述第五步,点击图中红色区域的位置,可查看服务器的运行状况
关于聚合报告中的参数解释如下:
聚合报告参数详解:
Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
#Samples:请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间
Median:中位数,也就是 50% 用户的响应时间
90% Line:90% 用户的响应时间
Min:最小响应时间
Max:最大响应时间
Error%:错误率——错误请求数/请求总数
Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec