最近,项目需要做接口测试,在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. php中的一些没有用过的,但是见到过的方法 函数

    strlen(); strlen 和 mb_strlen 都是用于获取字符串长度的, 其中 strlen 只针对单字节编码字符,也就是说它计算的是 字符串的总字节数,如果是多字节编码,如 gbk 和 ...

  2. pwnable.tw 3x17

    3x17 文章主要是参考了https://xuanxuanblingbling.github.io/ctf/pwn/2019/09/06/317/ 首先我们检查一下开启的保护 运行一下,先让输入add ...

  3. .Net之Docker部署详细流程

    开篇语 自己从头开始走一遍docker部署.net的流程,作为一种学习总结,以及后续会写一些在该基础之上的文章. 本次示例环境:vs2019.net5.docker.postman 创建项目 本次事例 ...

  4. 【DB宝50】Oracle异构平台迁移之完全可传输导出导入(Full Transportable Export & Import)

    目录 一.简介 1.1.使用场景 1.2.限制条件 二.完全可传输操作步骤 三.案例演示 3.1.环境 3.2.源库操作 3.2.1.将需要传输的用户表空间设置为RO状态 3.2.2.使用Data P ...

  5. 感染性的木马病毒分析之样本KWSUpreport.exe

    一.病毒样本简述 初次拿到样本 KWSUpreport_感染.exe.v 文件,通过使用PE工具,并不能辨别出该样本是那种感染类型,使用了一个比较直接的方法,从网上查资料,获取到了该样本的正常EXE文 ...

  6. IDA动态调试Android的DEX文件

    Android程序的dex文件的动态调试确实是个大问题,网上也有一些教程但是不是特别的详细,今天用到了IDA动态调试Android的DEX文件,特此记录一下. IDA 6.6新添加了对dex文件的调试 ...

  7. PAT 乙级 -- 1002 -- 写出这个数

    题目: 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字 ...

  8. Android系统加载Apk文件的时机和流程分析(1)--Android 4.4.4 r1的源码

    本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80982869 Android系统在启动时安装应用程序的过程,这些应用程序安装好之 ...

  9. java.lang.ClassNotFoundException的解决方案

    举一个特定的例子 java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource 到Maven中央仓库下载 当我们看 ...

  10. FPS游戏方框透视基本原理

    计算机图形学基础 计算机图形学最基础的目标就是把建模时构建好的3D物体显示在2D屏幕上,这就涉及到物体在不同坐标系中坐标的转换.(物体/建模坐标系 ---------> 屏幕坐标系) 坐标系 在 ...