JMeter入门

JMeter简介

JMeter基本概念

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

为什么要使用JMeter

  • 开源免费,基于Java编写,可集成到其他系统可拓展各个功能插件
  • 支持接口测试,压力测试等多种功能,支持录制回放,入门简单
  • 相较于自己编写框架活其他开源工具,有较为完善的UI界面,便于接口调试
  • 多平台支持,可在Linux,Windows,Mac上运行

JMeter安装配置

Windowns下安装

  1. 点击下载,根据自己将要使用的平台,下载相应的文件
    Jmeter1.jpg
  2. 安装JDK,配置环境变量
  • JAVA_HOME【C:\Program Files\Java\jdk1.8.0_73】
  • classpath【.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar】
  • Path【;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;】
  1. 解压下载的JMeter压缩包,打开/bin/jmeter.bat


    Jmeter2.jpg

    Jmeter3.jpg

配置环境变量
JMETER_HOME【E:\1-必备工具\35-JMeter\apache-jmeter-4.0】
Path【;%JMETER_HOME%\bin】

其它平台安装

与windowns一致,除打开入口不同,如Linux下/bin/jmeter.sh

JMeter目录结构

Jmeter4.jpg
  1. bin目录常用文件介绍
  • examples:目录下包含Jmeter使用实例
  • ApacheJMeter.jar:JMeter源码包
  • jmeter.bat:windows下启动文件
  • jmeter.sh:Linux下启动文件
  • jmeter.log:Jmeter运行日志文件
  • jmeter.properties:Jmeter配置文件
  • jmeter-server.bat:windows下启动负载生成器服务文件
  • jmeter-server:Linux下启动负载生成器文件
  1. /docs目录——Jmeter帮助文档
  2. /extras目录——提供了对Ant的支持文件,可也用于持续集成
  3. /lib目录——存放Jmeter依赖的jar包,同时安装插件也放于此目录
  4. /licenses目录——软件许可文件,不用管
  5. /printable_docs目录——Jmeter用户手册

JMeter插件安装

JMeter插件安装很简单,只需要下载相应的插件解压即可。

  1. 点击下载
  2. 下载后解压放入:apache-jmeter-2.12\lib\ext\目录下
  3. 重启jmeter

数据库链接驱动如果需要需要专门下载,例如mysql需要jdbc的jar包,地址:http://dev.mysql.com/downloads/file/?id=462850
使用注意事项:添加第三方插件并使用后保存的jmx文件在未添加该插件的运行环境下会导致无法打开该文件并报错,请保持环境一致性。

JMeter命令行模式

  1. 配置环境变量
    JMETER_HOME 【E:\1-必备工具\33-杂乱工具\apache-jmeter-4.0】
    path 【;%JMETER_HOME%\bin】
  2. 命令:
    jmeter -n -t <testplan filename> -l <listener filename>
  3. 参数:
    -h 帮助 -> 打印出有用的信息并退出
    -n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
    -t 测试文件 -> 要运行的 JMeter 测试脚本文件
    -l jtl文件 -> 记录结果的文件
    -r 远程执行 -> 启动远程服务
    -H 代理主机 -> 设置 JMeter 使用的代理主机
    -P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
    -j 日志文件->设置JMeter日志文件的名称

JMeter分布式测试(windows下)

作为一个纯 JAVA 的GUI应用,JMeter 对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误。不过,JMeter 也可以像 LoadRunner 一样通过使用多台机器运行所谓的 Agent 来分担 Load Generator 自身的压力,并借此来获取更大的并发用户数。

  1. 在所有期望将JMeter作为Load Generator(负载生成器)的机器上安装JMeter,并确定其中一台作为Controller,其他的机器作为Agent。然后运行所有Agent机器上的JMeter-server.bat文件(假定使用192.168.0.11和192.168.0.12作为Agent,Agent机器上必须安装JDK,并设置环境变量)
  2. 在Controller机器的%JMETER_HOME%\bin下,找到JMeter.properties文件,编辑该文件,查找“remote_hosts=”这个字符串,可以找到这样一行“remote_hosts=127.0.0.1”。其中的127.0.0.1表示运行JMeter Agent的机器,这里需要修改成为“remote_hosts=192.168.0.11:1099,192.168.0.12:1099”(其中1099为端口号)。一般资料显示1644为JMeter的Controller和Agent之间进行通讯的RMI端口号,但是在测试时发现设置的1644运行不成功,改成1099后运行通过。
  3. 双击启动Controller机器上的jmeter.bat,选择菜单Rum->Remote Start,将会看到有两台Agent。

常见问题:

  1. 确定在controller机器上安装jdk,版本和jmeter一致,配置环境变量:Java_home等
    在Agent机器上安装jdk,配置环境变量:Java_home和JMeter_home
  2. 在Controller端上控制某台机器Run,提示"Bad call to remote host"。
    解决方法:检查被控制机器上的jmeter-server有没有启动,或者JMeter.properties中remote_hosts的端口配置错误。
  3. Agent机器启动Jmeter_server.bat时,后台提示:"could not find ApacheJmeter_core.jar"
    解决方法:确定在Agent机器安装jdk,并设置环境变量:java_home、path、classpath和jmeter_home
  4. 查看1099端口是否被占用
    netstat -ano | findstr "1099"
    tasklist | findstr "1099"
  5. 启动远程时,报错:


    Jmeter6.jpg

    只要将本机的jmter-server.bat执行即可。要是在jmeter.properties配置的地方写了127.0.0.1 的话就要开本机的 jmeter-sever.bat.。不写的话就不用开了。

JMeter使用

  1. 切换中文
  • 【Options】--> 【Choose Language】--> 【Chinese】


    Jmeter5.jpg
  • Jmeter_home/bin/jmeter.properties,设置language=zh_CN
  1. 正则表达式

    Jmeter9.jpg

    引用名称:代表下一个请求要引用的参数名称,如填写“openid”,那么则可用“${openid}”引用它。
    正则表达式:
    ():括起来的部分就是要取的
    . :匹配任何字符
    +:一次或多次
    :在找到第一个匹配项后停止
    模板:用$$引起来,$2$表示取第2个值给openid
    匹配:匹配多个值时,0代表随机取值,1代表取第一个
    缺省值:如果参数没有取到值,那就默认给它一个值

  2. 图形结果

    图形结果.jpg

    样本数目:总共发送到服务器的请求数。
    最新样本:代表时间的数字,是服务器响应最后一个请求的时间。
    吞吐量:服务器每分钟处理的请求数。
    平均值:是总运行时间除以发送到服务器的请求数,即每个请求的平均响应时间。
    中间值:是代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。
    偏离:表示服务器响应时间变化、离散程度测量值的大小,即数据的分布。

  3. 聚合报表

    聚合报告.jpg

    90%line:90%的响应时间都比这个时间小
    Min:代表时间的数字,是服务器响应的最短时间。
    Max:代表时间的数字,是服务器响应的最长时间。
    Error%:请求的错误百分比。
    KB/sec:是每秒钟请求的字节数。

  4. 操作mysql数据库
    操作数据库基本有四个步骤:

  • 导入mysql的jdbc的jar包,存放到\apache-jmeter-4.0\lib下;
  • 创建数据库的连接配置,线程组里添加配置元件-JDBC Connection Configuration;


    JDBC.jpg
  • 线程组里添加jdbc request,写sql语句;


    JDBC_1.jpg
  • 添加察看结果树,点击启动按钮,就能看到执行的SQL。


    JDBC_2.jpg

    特别说明:jmeter还可以操作oracle、postgreSQL、msSQL、mongodb等等数据库,同时不同的数据库,JDBC Connection Configuration填写的Database url格式和JDBC Driver驱动名称也不相同。jmeter数据库驱动列表如下表所示:


    JDBC_3.jpg

    JDBC Driver class是固定的,Jmeter操作各类数据的Driver参考下图;
    jdbc_4.jpg
  1. jmeter3.2以后没有SOAP/XML-Request

  2. Jmeter的参数化方法

  • 利用函数助手获取参数值
    选项->函数助手对话框
    __CSVRead
    生成的函数字符串: ${__CSVRead(,)}第一个参数是文件名(包含路径),第二个参数是文件中的列(列数从0开始);
    csvread.jpg

    csvread1.jpg

__Random
生成的函数字符串:${__Random(,,)}第一个参数为随机数的下限,第二个参数为随机数的上限,第三个参数为储存随机数的变量名;

random.jpg

r.jpg

  • 利用配置元件(CSV Data Set Config)
    选中线程组,右击,添加->配置元件->CSV Data Set Config


    csv.jpg

选中线程组,右击,添加->sampler->HTTP 请求,在http请求参数中引用变量


http.jpg
  • 用户自定义变量
    选中纯种组,右击,添加->配置元件->用户自定义变量


    用户自定义变量.jpg
  1. HTTP Cookie Manager
    用于需要登录cookie的接口中

JMeter使用注意事项

  1. 变量问题
    使用过程中,一定要注意控件的执行顺序以及变量的作用域。

  2. 路径问题
    Windows下支持"/"""并存模式,推荐使用"/",方便跨平台使用。
    在linux格式下支持"/"格式。

  3. Jmeter自身性能问题
    命令行模式:命令相同。
    UI模式:操作方式相同,但会存在windows下能打开linux下打不开的情况,暂不知道原因。

监控内存及CPU等(jconsole)

  1. 直接点击:开始——》运行——》输入cmd——》然后在出现的命令行界面输入“jconsole”即可弹出一个【java监视和管理控制台】


    3.jpg
  2. 选择本地进程,并点击一下sun.tools.jconsole.JConsole这一行,然后点击连接
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • 在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大,所以,当需...
    燕京博士阅读 4,162评论 0 16
  • 转自:http://www.jianshu.com/p/ce0e4cf5dbc7 首先了解下什么是接口测试: 一、...
    夜境阅读 643评论 1 1
  • 本文版权归xmeter.net[http://www.xmeter.net]所有。欢迎转载,转载请注明出处。 简介...
    XMeter性能测试云服务阅读 204,899评论 29 204
  • 我终于将戴了三年的碧玉珠取了下来,转身换上了一根纯金项链,坠子也是金的。看着镜子里画风陡转的人,陌生到想要落泪。 ...
    绎如阅读 231评论 0 2
  • 我的家乡位于华北平原腹地,西有魏巍太行,北有起伏燕山,东可观浩瀚渤海,实乃沃野千里之地,人杰地灵之乡。 这里自古就...
    地中海的传说阅读 1,214评论 0 2