jmeter从安装到使用
最近,项目需要做接口测试,在python和jmeter之前选择,最终还是选择jmeter,虽然脚本管理及持续集成方面有所不便,但胜在使用简单,调试方便,方便后续做并发压力测试,而且最后的报告统计图表也非常完善。但jmeter许久不用,早已忘记,经过这次应用,把相关的知识又捡了起来,特此记录一下,方便后续查看。
安装
jmeter的安装非常简单,总结起来就两步,去官网下载发布包(前提是要首先安装好jdk1.8以上版本,此处不再说明),配置好本机环境变量,然后,直接用就完了。
具体来说
1.jmeter官网http://jmeter.apache.org/download_jmeter.cgi下载发布包,本人取的是binaries版本。下载下来后直接解压。
2.配置环境变量。由于jmeter实际是用java编写的,这里实际上要配置的是java的环境变量。
在桌面,鼠标右键点击“计算机”图标,选择“属性”,点击高级系统设置->高级->环境变量->系统变量,创建JAVA_HOME的系统变量,变量值为jdk的bin文件所在路径,如下图:

在系统变量中,点击Path变量,点击编辑,新增jdk的bin路径%JAVA_HOME%\bin到环境变量中,并上移到最上面,点击确定。如图:

配置classpath变量,新增变量名CLASSPATH,变量值为.;%JAVAHOME%\lib;%JAVAHOME%\lib\tools.jar。(注意最前面有一个.,中间用分号隔开)如图:

点击确定完成环境变量配置,便可打开jmeter安装路径,在bin文件夹下找到jmeter.bat的批处理文件,双击即可打开jmeter使用了。
使用
jmeter的使用足够写一本书,这里只记录此次踩坑或个人觉得特别重要的过程。
对于http应用来说,HTTP Header Manager这个配置元件是一定要有的,配置好http头的各项信息,对于后续应用来说是极大地简化了使用过程。此次我主要配置了Referer、Accept-Language、Accept-Encoding、Accept、User-Agent、token、Content-Type这几项。个人觉得特别重要的是token和content-type。token需要在登陆后使用正则表达式提取出来,然后通过beanshell后置处理器保存为全局变量,再通过HTTP Header Manager中,每次的http头部把token带上。如图:

content-type有3种类型,application/x-www-form-urlencoded、application/json和multipart/form-data。
application/x-www-form-urlencoded是url编码的方式,具体参数格式类似:key1=value1&key2=value2
application/json是json格式的,形式如下:
{
"key1":"value1",
"key2":"value2"
}
multipart/form-data是表单,当既包含上传文件,又包含其他上传参数时,要用这种格式。以这种格式上传,会在每一段加上分隔符,作为边界。
HTTP Request Defaults作为配置元件,也是非常必要的,在这里配置远端服务的IP和端口,以及编码方式等信息,这样在后续的http取样器中,就无须再反复填写IP和端口号。值得注意的是,在高级页签中,有代理服务器的IP和端口设置,这里设置本机的IP:127.0.0.1,端口是默认8888,这样,每次jmeter运行,进行HTTP采样时,通过fiddler等抓包工具,经过合适的配置,便可直接在fiddler中查看抓包信息,方便接口调试。如图:

接下来使用http取样器,进行各个http接口的测试,需要注意的一点时,对于有上传文件的http post请求,需在File Upload页签中设置后文件路径和参数名,其中的参数名为在抓包中的name字段所包含的名称,MIME Type需对应好具体的媒体类型,本次我上传的是二进制流文件,因此对应的MIME Type为application/octet-stream

需要注意,对于除了文件,还需上传其他参数的http请求,参数中如果存在a={……}这样的形式,需在高级选项卡中,选择Implementation中的java方式,若不想在Implementation中选择任何值,则需要对a参数进行URLEncoding,否则接口会报错。
参数化
jmeter的参数化又是一个大课题,我此次用到了CSV Data Set Config,在配置元件中。如下图:

参数说明如下:
Filename:csv文件路径,可以是绝对路径,也可以是jmeter脚本的相对路径。
File encoding:文件编码方式,选择UTF-8。
Variable Names:引用变量名称,以,分隔,后续以此变量名引用。
Ignore first line:是否忽视首行。
Delimiter:分隔符,默认,
Allow quoted data?:是否允许引用数据,默认False
Recycle on EOF?:结束后是否从头开始循环?,选True
Stop thread on EOF?:文件结束后是否停止线程?选False
Sharing mode:共享方式,暂时选择所有线程。
设置完毕后,就可以通过设置好的变量名称,对csv文件中的各参数实行引用了。CSV Data Set Config和UserParameters不同,即便只有一个线程,也可以使用csv文件里面的参数,而用户参数,是针对不同的线程来使用的。
性能监控
做压测时, 除了为每个取样器设置断言的基本操作,对远端机器的性能监控也是一个必要的步骤。本次用到的是2个插件,JMeterPlugins-Standard-1.4.0(pwd:cjqd)、ServerAgent-2.2.1(pwd:pxui);
解压JMeterPlugins-Standard-1.4.0.zip,将其中\lib\ext\JMeterPlugins-Standard.jar包复制到jmeter安装目录下的\lib\ext下;
重启jmeter,选择监听器,我们可以看到监听器中多了一些东西(这里边就有我们监控要用到的功能),如下图所示:

选择jp@gc-PerfMon Metrics Collector,界面如下所示:

点击“AddRow”按钮新增监控对象,可包含cpu、memory、i/o、swap等许多监控参数,点击“Browse”按钮,选择待写入监控信息的文件名,如不存在,则会自动新建,如已存在,则会询问是否覆盖或续写文件。在非GUI测试时,也可以通过此功能,导入已生成的结果文件(.jtl),通过图表形式查看各监控结果。
配置完监控界面,要真正的监控生效,还需要远端机器上运行一个服务端,用来采集被监控机器的各资源消耗情况。这里用到的是ServerAgent插件。通过前文链接完成下载后,把它拷贝到被检测服务器上,解压,如果是windows的机器,直接运行startAgent.bat文件即可;如果你的服务器是linux,那么需要运行startAgent.sh文件即可(运行方式:找到startAgent.sh文件所在路径,打开终端命令行,保险起见可以先将startAgent.sh设置成可执行文件:chmod 777 startAgent.sh,然后执行命令:./startAgent.sh,这样我们的agent服务就启动了);
然后,在每次运行jmeter脚本时,便会有远端服务器的资源情况同时被监控。
非GUI运行
最后再补充说明一下非GUI方式运行jmeter的必要参数配置。如果高并发,或者一直盯着jmeter 的GUI界面上的监控图表来看,jmeter很快就会由于内存不足而退出,此时需要用到非GUI运行,即命令行参数运行jmeter,同时保存结果以及生成html报告供查看。
windows
1、cmd打开命令行模式
2、切换到Jmeter安装目录下的bin目录下
3、执行命令:jmeter -n -t jmx文件所在路径 -l jtl文件所在路径 -e -o 结果报告存放文件夹
注意:jmx文件为jmeter的脚本文件,jtl文件为jmeter运行结果存放文件,也可以保存为csv格式,结果报告存放文件夹为最终存放html报告的文件夹,必须事先不存在,否则会提示错误。
各参数释义如下:

在脚本运行过程中,由于无界面,命令窗口会每隔一段时间打印一下当前的运行状态,你会在窗口中看到类似下面的信息:

summary+ 是开始这个时点的报告。
summary= 是总结它之前的报告,呈现出的是当前时点之前总的情况,通常是均值。
最后一个summary=是本次压测总的情况。
jmeter还可以做分布式压测,本次由于压力不大,暂时未做此尝试,等后续有需要再学习试用。
总结
本次由于项目需要,对jmeter做了一个全面的回顾,以及使用技巧上的复习。但是jmeter还有许多高级属性,尤其beanshell的使用,仍然了解非常浅显。还有取样器之间的各种逻辑,也没有涉及到这块的使用。另外,高并发下,对性能瓶颈做出判断和分析,包括对jvm的监控分析,也是欠缺的能力。道阻且长,行则将至。加油!
参考文档:
https://www.cnblogs.com/L-Test/p/9427795.html

jmeter从安装到使用的更多相关文章
- Jmeter之安装(一)
Jmeter Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 小七这边之前用jmeter ...
- Jmeter下载安装配置及使用(windows)
1 前言 仅作为记录使用. 2 步骤 2.1 下载地址:http://jmeter.apache.org/download_jmeter.cgi 2.2 选择binary版本即可:apache-jme ...
- centos7 jmeter分布式安装
step1 环境说明:腾讯云主机--> centos7 1主2从 下面使用内网 IP master节点:10.21.11.6 slave1节点:10.21.11.44 slave2节点:10. ...
- 【Jmeter自学】JMeter的安装(一)
==================================================================================================== ...
- 挨批记后记--Jmeter环境安装
挨批之后的艰难挣扎: 首先说所要造的数据是性能测试任务的创建,而创建任务还需要先创建场景,场景则又牵涉到jmx文件... 经过搜索后发现jmx文件通过jmeter生成,所以软件的安装就开始了.. jm ...
- Jmeter入门--安装教程
jmeter简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动 ...
- Jmeter+Badboy安装使用文档
Jmeter+Badboy安装使用文档 目录 1.jmeter安装 1 2.Jmeter基础使用 3 3. 使用Jmeter进行分布式测试 ...
- 3.1、Ubuntu系统中jmeter的安装和目录解析
以下内容亲测,如果不对的地方,欢迎留言指正,不甚感激.^_^祝工作愉快^_^ Jmeter是一个非常好用的压力测试工具. Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测 ...
- JMeter的安装和目录解析
Ubuntu系统中jmeter的安装和目录解析 作为一个Linux新手,在使用jdk时,或许会安装配置多次仍然导致无法使用情况(如无法登录系统等),请按如下步骤一步一步安装并配置 相关软件下载地址 J ...
- jmeter的安装和基本使用
本篇文章主要介绍一下JMeter的安装及基本使用方法. 1.安装 JMeter的官方网址为http://jmeter.apache.org/ 下载地址为http://jmeter.apache.org ...
随机推荐
- 【1.0 Regular Expressions 正则表达式】
[概念] RegEx 正则表达式是一种特殊的字符序列,可帮助您使用专门的模板语法,来匹配对应的匹配方法或字符串组 它们可用于搜索,编辑或操纵文本和数据 正则表达式通常用于验证输入和检索信息 比如我们要 ...
- 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之本地仓库-06
自动化kolla-ansible部署ubuntu20.04+openstack-victoria之本地仓库-06 欢迎加QQ群:1026880196 进行讨论 1. 安装docker registry ...
- 孙悟空的身外身法术使用了Java设计模式:原型模式
目录 定义 意图 主要解决问题 何时使用 优缺点 结构 简单形式的原型模式 登记形式的原型模式 两种形式比较 浅克隆和深克隆 孙悟空的身外身法术 浅克隆实现 深克隆实现 定义 原型模式属于对象的创建型 ...
- src/众测篇:oracle注入过滤-- , + - * /,case when ,select,from,decode等函数如何证明是注入?
(1)nullif: NULLIF:如果exp1和exp2相等则返回空(NULL),否则返回第一个值 真: 假: (2)nvl/nvl2 测试失败无法实现:)记录 (3)如果是oracle报错注入 ...
- 【新手指南】Android Studio中应用App的相关配置
前言: 注意这是一个对于Android开发入门学习者而言的一个教程,因为自己平时很少使用Android进行原生应用的开发,对于使用Android Studio配置Android App应用的一些参数( ...
- Word Reversal(string)
For each list of words, output a line with each word reversed without changing the order of the word ...
- 【原创】Centos8使用ansible
目录 使用ansible发布公钥 ansible基本命令 ansbile配置文件详解 一.使用ansible发布公钥 1.0 生成秘钥对 1.生成命令 ssh-keygen -t rsa# 推送单个公 ...
- hdu4179 限制最短路
题意: 这个题目估计读懂题意就ok了,关键是题意蛋疼,像我这样的英语渣渣活着可真难啊,题意大体是这样,给你n个点m条无向边,给你起点和终点,让你求从起点到终点的最短路径,其中有一些限制: ...
- PAT 乙级 -- 1014 -- 福尔摩斯的约会
题目简介 大侦探福尔摩斯接到一张奇怪的字条:"我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm&quo ...
- POJ1698 最大流或者匈牙利
题意: 一个人他有n个任务,每个任务都有一些限制: (1)只能在一个星期中指定的日子去做,比如周1 2 6啥的 (2)总工作量有几天,就是一共要工作几天 (3)必须在几周之内完成,就 ...