最近,项目需要做接口测试,在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. 201871010110-李华 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 (1)理解并掌握代码风格及设计规范:(2)通过任务3进行协作开发,尝试进行代码复审,在进行同伴复审的过程中体会结对 ...

  2. 201871010113-贾荣娟 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 18级卓越班 这个作业要求链接 实验三-软件工程结对项目 这个课程学习目标 掌握软件开发流程,提高自身能力 这个作业在哪些方面帮助我实现了学习目标 本次实验让我对软件工程 ...

  3. SpringBoot+Gradle构建多模块项目

    1 概述 Gradle由于构建速度比Maven快,且比Maven灵活,因此很多后端的应用都使用了Gradle进行构建,但一个问题是,Gradle的多模块项目比较难构建,再加上Gradle的更新非常快, ...

  4. Day05_21_Constructor构造器

    Constructor 构造器 构造方法(构造函数,构造器) 构造方法又被称为 构造函数/构造器/Constructor 构造方法的语法结构: [修饰符列表] 构造方法名 (形式参数列表){ 构造方法 ...

  5. hdu3035 最小割转换成最短路

    题意:       给你一个平面图,要求从求出从左上角到右下角的最小割. 思路:       如果大意的可能直接上来一遍最大流,然后就会各种悲剧的MLE,TLE,其实这个题目可以用到有个论文里面的那个 ...

  6. UVA11624大火蔓延的迷宫

    题意:     给1个n*m的网格,上面有的点能走,有的点不能走(墙),然后有的点是火源,火源和人一样,每次都是上下左右四个方向蔓延,速度一样是1,火也不可以从墙上跨过去,给你人的起点,终点是只要走到 ...

  7. Windows PE 第一章 熟悉OD(顺便破解一个小工具)

    熟悉OD(顺便破解一个小工具) 上一节了解了OD的简单使用,这次就练习下,目标是破解一款小软件(入门练手用的,没有壳什么的). 首先我们来看一下这个小软件: 我们的目的是输入任何字符串都可以成功注册, ...

  8. 表单模块 layui-form

    使用 layui针对各种表单元素做了比较全面的Ui支持,在Ui渲染只要求一点.,在表单体所在父元素加上class="layui-form" 监听事件 提交按钮监听,注意需要加·la ...

  9. 【转】风控中的特征评价指标(二)——PSI

    转自:https://zhuanlan.zhihu.com/p/79682292 风控业务背景 在风控中,稳定性压倒一切.原因在于,一套风控模型正式上线运行后往往需要很久(通常一年以上)才会被替换下线 ...

  10. laravel 批量删除

    <button id="delAll">批量删除</button>//给按钮一个id属性 <input type="checkbox&quo ...