最近,项目需要做接口测试,在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://blog.csdn.net/MenofGod/article/details/79009646?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

https://www.cnblogs.com/L-Test/p/9427795.html

jmeter从安装到使用的更多相关文章

  1. Jmeter之安装(一)

    Jmeter Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 小七这边之前用jmeter ...

  2. Jmeter下载安装配置及使用(windows)

    1 前言 仅作为记录使用. 2 步骤 2.1 下载地址:http://jmeter.apache.org/download_jmeter.cgi 2.2 选择binary版本即可:apache-jme ...

  3. centos7 jmeter分布式安装

    step1 环境说明:腾讯云主机--> centos7  1主2从 下面使用内网 IP master节点:10.21.11.6 slave1节点:10.21.11.44 slave2节点:10. ...

  4. 【Jmeter自学】JMeter的安装(一)

    ==================================================================================================== ...

  5. 挨批记后记--Jmeter环境安装

    挨批之后的艰难挣扎: 首先说所要造的数据是性能测试任务的创建,而创建任务还需要先创建场景,场景则又牵涉到jmx文件... 经过搜索后发现jmx文件通过jmeter生成,所以软件的安装就开始了.. jm ...

  6. Jmeter入门--安装教程

    jmeter简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动 ...

  7. Jmeter+Badboy安装使用文档

                  Jmeter+Badboy安装使用文档       目录   1.jmeter安装    1 2.Jmeter基础使用    3 3. 使用Jmeter进行分布式测试    ...

  8. 3.1、Ubuntu系统中jmeter的安装和目录解析

    ​以下内容亲测,如果不对的地方,欢迎留言指正,不甚感激.^_^祝工作愉快^_^ Jmeter是一个非常好用的压力测试工具.  Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测 ...

  9. JMeter的安装和目录解析

    Ubuntu系统中jmeter的安装和目录解析 作为一个Linux新手,在使用jdk时,或许会安装配置多次仍然导致无法使用情况(如无法登录系统等),请按如下步骤一步一步安装并配置 相关软件下载地址 J ...

  10. jmeter的安装和基本使用

    本篇文章主要介绍一下JMeter的安装及基本使用方法. 1.安装 JMeter的官方网址为http://jmeter.apache.org/ 下载地址为http://jmeter.apache.org ...

随机推荐

  1. 如果你的application.properties中还存在明文密码----加密Spring Boot中的application.properties

    1 概述 什么?都2020年了还在Spring Boot的配置文件中写明文密码? 虽然是小项目,明文也没人看. 明文简单快捷方便啊!!! 你看直接用户名root密码123456多么简单!!! ... ...

  2. Linux 递归修改后缀名

    1 修改命令 需要用到: find awk xargs 递归修改命令如下: find . -name '*.XXX' | awk -F "." '{print $2}' | xar ...

  3. Go-24-异常处理机制

    error 接口 type error interface(){ Error() string } 在Go语言中处理错误的方式通常是将返回的错误与nil进行比较.nil值表示没有发生错误,而非nil值 ...

  4. 前端进阶(1)Web前端性能优化

    前端进阶(1)Web前端性能优化 Web前端性能优化, 不仅能够改善站点的用户体验,并且能够节省相当的资源利用.下面将从1)服务器.2)html内容.3)css. 4)javascript. 5)图片 ...

  5. 鸿蒙HI3516-驱动开发(1.1-LTS)

    代码在:https://gitee.com/kwydm/open-harmony-taurus 目录大致结构 1.驱动开发创建目录://vendor/huawei/hdf/LED/src 新建Make ...

  6. TP5 验证-内置规则

    系统内置的验证规则如下: 格式验证类 require 验证某个字段必须,例如: 'name'=>'require' number 或者 integer 验证某个字段的值是否为数字(采用filte ...

  7. hdu1572 水搜索

    题意: 中文的不解释; 思路:           其实就是一个水的搜索,直接搜索不会超时,还有别跑最短路了,题目没要求跑最短路,别读错题,刚开始自己嘚嗖的跑了一边最短路 wa了 ,正好最近看了STL ...

  8. Heap Spray原理浅析

    Heap Spray定义基本描述 Heap Spray并没有一个官方的正式定义,毕竟这是漏洞攻击技术的一部分.但是我们可以根据它的特点自己来简单总结一下.Heap Spray是在shellcode的前 ...

  9. Hexo 博客Next 搭建与美化主题

    ========================================================================================将页面部署到GitHub ...

  10. zTree增加树形菜单格式

    result为json字符串 //展示树形菜单 function showMenuTree(result) { console.log("页面展示函数:"+result); //属 ...