最近,项目需要做接口测试,在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. malloc函数详解 glibc2.27

    malloc 函数分析(glibc.2.27) 本人菜一只,如果分析的有错误,请大佬指正. __libc_malloc函数分析 void * __libc_malloc (size_t bytes) ...

  2. Vue3.0中引入地图(谷歌+高德+腾讯+百度)

    1 概述 项目需求需要引入地图,对于目前最新的Vue3.0,无论是百度/高德/腾讯地图目前还没有适配,只有Vue 2.x版本的: 目前只有谷歌地图的Vue3.0适配: 但是没有适配并不代表不能使用,本 ...

  3. fiddler 手机抓包(含https) 完整流程

    第一部分:下载并安装fiddler 一.使用任一浏览器搜索[fiddler下载安装],并下载fiddler 安装包. 二.fiddler安装包下载成功后,将下载的fiddler压缩包解压到自定义文件夹 ...

  4. Day09_46_Set集合_SortedSet03

    SortedSet03 让SortedSet集合完成比较,还有另外一种方法,那就是单独编写一个比较器. java.util.comparator 在TreeSet集合创建的时候可以在集合中传入一个比较 ...

  5. Java双刃剑之Unsafe类详解

    前一段时间在研究juc源码的时候,发现在很多工具类中都调用了一个Unsafe类中的方法,出于好奇就想要研究一下这个类到底有什么作用,于是先查阅了一些资料,一查不要紧,很多资料中对Unsafe的态度都是 ...

  6. 01- Python语言简介

    Python的简介: 创始人:Guido van Rossum(创始人) 时间:1989年 圣诞节 Python的命名:源于一个喜剧团 Monty Python Python语言排名 目前Python ...

  7. PHP 导出 Excel 兼容 CSV XlS格式

    class ExcelRead { /** * 获取Excel文件内容 * @param $file * @return mixed * @throws PHPExcel_Reader_Excepti ...

  8. DVWA之DOM XSS(DOM型跨站脚本攻击)

    目录 Low Medium High Impossible Low 源代码: <?php # No protections, anything goes ?> 从源代码可以看出,这里low ...

  9. xposed结合Zygote分析

    android中zygote相信大家都很熟悉,它执行的函数是app_main.cpp,而xposed主要实现的就是替换app_main.cpp.所以在分析xposed时有必要来认识下zygote.好了 ...

  10. 机器视觉-EasyDL商品检测-标准版-Demo

    机器视觉-EasyDL商品检测-标准版 功能: EasyDL是百度大脑中的一个定制化训练和服务平台,EasyDL零售版是EasyDL针对零售场景推出的行业版,定制商品检测服务是EasyDL零售版的一项 ...