JMeter入门

JMeter简介

JMeter基本概念

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

为什么要使用JMeter

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

JMeter安装配置

Windowns下安装

  1. 点击下载,根据自己将要使用的平台,下载相应的文件
    《JMeter入门》 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

    《JMeter入门》 Jmeter2.jpg
    《JMeter入门》 Jmeter3.jpg

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

其它平台安装

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

JMeter目录结构

《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. 启动远程时,报错:

    《JMeter入门》 Jmeter6.jpg

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

JMeter使用

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

    《JMeter入门》 Jmeter5.jpg

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

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

  2. 图形结果

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

  3. 聚合报表

    《JMeter入门》 聚合报告.jpg
    90%line:90%的响应时间都比这个时间小
    Min:代表时间的数字,是服务器响应的最短时间。
    Max:代表时间的数字,是服务器响应的最长时间。
    Error%:请求的错误百分比。
    KB/sec:是每秒钟请求的字节数。

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

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

    《JMeter入门》 JDBC.jpg

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

    《JMeter入门》 JDBC_1.jpg

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

    《JMeter入门》 JDBC_2.jpg

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

    《JMeter入门》 JDBC_3.jpg
    JDBC Driver class是固定的,Jmeter操作各类数据的Driver参考下图;
    《JMeter入门》 jdbc_4.jpg

  1. jmeter3.2以后没有SOAP/XML-Request

  2. Jmeter的参数化方法

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

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

《JMeter入门》 random.jpg

《JMeter入门》 r.jpg

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

    《JMeter入门》 csv.jpg

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

《JMeter入门》 http.jpg

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

    《JMeter入门》 用户自定义变量.jpg

  1. HTTP Cookie Manager
    用于需要登录cookie的接口中

JMeter使用注意事项

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

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

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

监控内存及CPU等(jconsole)

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

    《JMeter入门》 3.jpg

  2. 选择本地进程,并点击一下sun.tools.jconsole.JConsole这一行,然后点击连接
    原文作者:yo_哥
    原文地址: https://www.jianshu.com/p/dd5e6c33e34b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞