zoukankan      html  css  js  c++  java
  • JMeter 简介

     

    1. 背景说明

    1.1. 背景简介

    JMeter是Apache软件基金会下的一个开源项目,纯java开发的应用工具,可以作为进行负载和压力测试的工具来使用。从最开始时被设计成测试应用程序到现在扩展到了可测试其他功能。

    JMeter可以测试静态或动态的资源或是动态的应用程序,并且支持的应用、服务、协议的类型包括有:

    1) Web(HTTP、HTTPS(Java、NodeJS、PHP、ASP.NET)、...)

    2) SOAP/REST Webservices

    3) FTP

    4) 通过jdbc的方式操作数据库

    5) LDAP

    6) JMS(基于中间件的消息)

    7) Mail(SMTP、SMTPS、POP3、POP3S、IMAP、IMAPS)

    8) TCP

    9) Java Objects

    支持基于浏览器或本地应用的录制,及构建和调试脚本。

    支持以命令行及图形界面方式来运行,可运行在Windwos、Linux、Mac OSX操作系统上。

    可基于已有jtl数据文件生成html报告文件,或是在压测完成后生成html报告文件。

    支持从html、json、xml、txt的文件中来获取所需要的关联数据。

    支持以多线程、多线程组的方式进行不同类别的测试。

    支持各类组件的扩展及第3放的开源库扩展:如Maven、Jenkins、Graddle。

    1. 下载安装

    2.1. 下载JDK和JMeter

    2.1.1. 下载JDK

    因运行3.2版本的JMeter需要JDK环境,并且需要JDK8+版本,因此还需要下载JDK8的安装包。Oracle官方网站地址:

    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    由于安装包有区分是支持32、64位操作系统,因此,可根据你需要什么操作系统上来运行及位数,来下载对应支持的系统和位数JDK的安装包。其中:X86表示支持32操作系统,x64表示支持64位操作系统。

    Windows操作系统位数查看:点击开始菜单-右键计算机-进入的界面-系统栏

    (路径:控制面板所有控制面板项系统)查看方式选小图标

    Linux操作系统位数查看:

    输入命令:uname -a,在结果中出现x86_64,表明系统为64位的操作系统。

    1.1.1. 下载JMeter

    JMeter官方网站地址:http://jmeter.apache.org/

    现在JMeter最新版本为3.2,因此下载3.2版本。如果想在windows上运行,就下载apache-jmeter-3.2.zip包,想在Linux上运行,就下载apache-jmeter-3.2.tgz包。

    1) tgz包的下载地址:

    http://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-3.2.tgz

     

    2) zip包的下载地址:

    http://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-3.2.zip

     

    1.1. 安装JDK和JMeter

    1.1.1. 安装JDK1.8

    1.1.1.1. 安装

    在windows机器上,找到安装包的exe文件,直接双击运行exe,如果需要修改安装路径,则在安装时选择安装的路径,然后按提示默认操作即可完成。

    我计算机上安装的JDK路径:D:Program FilesJava

     

    1.1.1.1. 配置环境变量

    修改环境变量,点击开始按钮-右键计算机-点击高级系统设置-选择高级-点击环境变量-选择系统变量或某用户变量,如果已存在某变量就将值放在对应变量后面,以英文;分割,如果不存在某变量,就新增变量及值。变量值的配置参考下方,其中路径是你安装JDK时的路径。(新建变量JAVA_HOME和CLASSPATH,编辑PATH)

    JAVA_HOME=D:Program FilesJavajdk1.8.0_131

    PATH=%JAVA_HOME%in;%JAVA_HOME%jrein;%JMETER_HOME%in;

    CLASSPATH=%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;

    1.1.1.1. 检查是否安装成功

    可通过java javac java -version javac -version 个命令来验证安装和配置JDK是否成功,如果出现如下结果,则表明安装和配置JDK成功。

    部分命令如图:

    1.1.1. 安装JMeter3.2

    1.1.1.1. 安装

    JMeter是免安装的工具,直接解压后,配置好环境变量就可运行。

    1.1.1.2. 配置环境变量

    配置环境变量参考配置JDK的操作方式。

    JMETER_HOME=D:jmeterjmeter3.2

    CLASSPATH=%JMETER_HOME%libjorphan.jar;%JMETER_HOME%libextApacheJMeter_core.jar;

    PATH=%JMETER_HOME%in;

    1.1.1.3. 检查是否安装成功

    进入JMeter安装目录,运行bin目录下的jmeter.bat脚本,出现一个DOC窗口,及一个JMeter图形界面窗口,表明安装和配置JMeter成功,启动JMeter图形界面有点慢,请耐心等待一会。我计算机上JMeter的安装路径:D:jmeterjmeter3.2

    DOC界面窗口

     

    图形界面窗口

    非图形界面启动:

    jmeter -n -t ..script某系统_Ver*.*.*_某功能_yyyy-mm-dd_某人.jmx

    -l .. esult某系统_Ver*.*.*_某功能_yyyy-mm-dd_某人.jtl

    -j .. esult某系统_Ver*.*.*_某功能_yyyy-mm-dd_某人.log

    -e -o .. esult eport某系统_Ver*.*.*_某功能_yyyy-mm-dd_某人

    -n 以非图形界面方式运行jmx脚本

    -t 要运行的jmx脚本文件

    -j 运行脚本过程中生成的日志记录文件

    -l 运行脚本过程中生成的结果记录文件 可以为jtl(-l result.jtl)、xml(-l result.xml)格式的文件,同时需要修改jmeter.properties

    -e 运行脚本完成后,需要生成html格式的报告文件

    -o 存放生成报告文件的路径,目录不能在原路径中存在

    如果jmx脚本不在% JEMTER_HOME %in目录下,则运行的jmx文件路径需为绝对路径

    1.1.1.1. 修改其他配置项

    为了提升启动JMeter的启动速度,及正确显示响应结果中的中文数据,则需要修改配置文件中的一些配置项。

    修改jmeter.bat文件:set HEAP=-Xms3072m -Xmx3072m,调整堆的最大和最小值,建议为计算机内存的30%左右。

    修改jmeter.properties文件:

    jmeter.gui.action.save.backup_on_save=false

     

    jsyntaxtextarea.font.family=宋体

    jsyntaxtextarea.font.size=14

    sampleresult.default.encoding=UTF-8

     

    1.1.1.1. 插件安装

    如果想要使用一些高级的功能操作,则需要下载一些扩展的包。首先需要将扩展管理包(jmeter-plugins-manager-0.16.jar)放到libext目录下,重启JMeter后,在选项中可看到Plugins Manager选项,点击该选项,进入插件安装、升级界面,选择所需要的插件安装完成后,JMeter会自动重启,之后可在JMeter中使用你现在的扩展组件了。

    JMeter插件网站:https://jmeter-plugins.org/downloads/all/

    插件包名称:jmeter-plugins-manager-0.16.jar

     

    1.1.1.1. 目录结构

    从官网上下载的jmeter包中,不包含(data、script、result)目录,需要手动新建这3个目录。

     

    1. 界面结构

    1.1. 结构简说

    包含1标题栏、2菜单栏、3左侧组件栏、4右侧上部分、5右侧下部分,共5部分。

     

    1. 原理及作用域

    1.1. 运行原理

    JMeter通过线程组来启动1个或多个线程,向被测试应用发起请求操作,在测试过程中搜集压测的数据,可以图表或文件的方式保存及展示结果数据。

    1.2. 作用域简介

    1) 配置元件(影响作用域范围内的元件),前置处理器(在其作用域范围内每个取样器之前执行),后置处理器(在其作用域范围内每个取样器之后执行),定时器(影响作用域范围内的每个取样器),断言(在其作用域范围内每个取样器的结果执行校验),监听器(搜集在其作用域范围内每个取样器结果数据并展示在界面)

    2) 取样器不存在作用域

    3) 逻辑控制器仅对其子节点的逻辑控制器和取样器起作用。

    4) 除了逻辑控制器和取样器外的元件,如果是某个取样器的子节点,则该元件对其父子节点起作用。

    5) 除了逻辑控制器和取样器外的元件,如果父节点不是取样器,则该元件对其父子节点及后代节点都起作用。

    1.3. 执行顺序简介

    1) 在同一个作用域范围内,元件按(配置元件-前置处理器-定时器-取样器-后置处理器-断言-监听器)执行。

    2) 前置处理器、后置处理器、断言等元件仅对取样器启作用,如果在其作用域内没有取样器,则这些元件不被执行。

    3) 同一作用域中存在同一类型的元件,则按元件在测试计划中的顺序来执行。

    1. 元件简介

    2.1. 测试计划

    2.1.1. 用途

    JMeter中各个组件需要放在测试计划中来运行,并且只有1个测试计划,1个测试计划下可以放多个线程组。

    1.1. 测试片段

    1.1.1. 用途

    主要用于备份开发过程中的脚本,及该项下的组件可被模块控制器来使用。

    1.1. 工作台

    1.1.1. 用途

    高级特性的使用,包括监控和录制压测时的请求信息,录制脚本,查看jmeter属性。

    1.1.2. 常用类型介绍

    1.1.2.1. 镜像服务器

    HTTP Mirror Server:用于测试时的监控。

    1.1.2.2. 代理服务器

    HTTP代理服务器:设置好后可录制请求的URL信息。

    1.1.2.3. 属性显示

    Property Display:显示jmeter属性信息。

     

    1.1. 线程组

    1.1.1. 用途

    用于设置怎样去模拟发起请求的用户。

    1.1.2. 常用类型介绍

    1.1.2.1. 普通线程组

    图标:如下图

    原生的线程组有3个,一种只用其中的普通线程组,如果安装了插件,则可使用其他线程组,线程组的使用可根据需要测试的类型和达到的目的去选择使用。一般使用普通线程组就可以达到目标。

     

    可通过快捷键ctrl+t键,来启用和禁用线程组,其他组件也可通过该方式来启用和禁用。

    1.1. 配置元件

    1.1.1. 用途

    用于设置在请求中使用到的参数化的数据和其他默认值。

    1.1.2. 常用类型介绍

    自定义变量

     

    1.1.1.1. HTTP请求默认值

     

    1.1.1.1. HTTP Cookie管理器

     

    1.1.1.1. HTTP信息头管理器

     

    1.1.1.1. CSV Data Set Config

     

    1.1. 逻辑控制器

    1.1.1. 用途

    用于设置运行脚本的流程和场景。

    1.1.2. 常用类型介绍

    1.1.2.1. 简单控制器

    用于管理作用域范围内的各类元件,方便编写和阅读。

     

    1.1.1.1. While Controller

    设置作用域范围内请求,根据填写的条件的值,是否继续循环执行。

    Condition:取值分3种。

    保持空:迭代执行该控制器下的所有子节点,直到最后一个子节点失败时停止,如果不是最后一个执行失败,也会继续执行。

    LAST:迭代执行该控制器下的所有子节点,直到最后一个子节点失败时停止,并且当控制器的上一个节点失败,则执行时不会进入该控制器。

     

    填写表达式:表达式取值等于false字符时,退出循环。比如:${var},${__javascript(“${var}”==”found”)},${_P(var)}的结果为false时退出循环。

     

    1.1.1.1. 事务控制器

     设置综合统计作用域范围内请求的响应时间、吞吐量等信息并汇总。

    1.1.1.1. 如果(If)控制器

    类似编程中的if语句,设置作用域范围内的请求,根据表达式的值,来判断是否执行。如果表达式为字符串,则用””包裹起来,选中Evaluate for all children?后,其字节点执行时都会被执行1次。

     

    1.1.1.1. 循环控制器

    用于设置作用域范围内的请求执行的次数,或者一直执行

    1.1.1.1. ForEach控制器

    类似编程语言中的for循环语句的作用,设置作用域范围内的请求,按照指定的条件去执行。

    1.1. 定时器

    1.1.1. 用途

    用于设置控制请求之间时间的长短。

    1.1.2. 常用类型介绍

    固定定时器  

    1.1.1.1. 同步定时器

    Number of Simulated Users to Group by:设置该项中的数字要小于等于线程数,否则一直会线程处于等待状态。

    Timeout in milliseconds:设置为0,当集合的线程达到上面项中的数字后,开始执行请求。设置>0,则超过等待固定的时间后,集合的线程还未达到上面项中的数字后,也会开始执行请求。

    1.1. 前置处理器

    1.1.1. 用途

    用于设置在发起请求之前需要进行的操作。

    1.1.2. 常用类型介绍

    1.1.2.1. Bean Shell PreProcessor

    BeanShell是一种免费的java源码解释器,支持对象式的脚本语言,也可以嵌入到java源码中。添加了该处理器后,可直接在里面编写java代码,实现你要的功能操作。

    1.1. 取样器

    1.1.1. 用途

    用于设置模拟用户发起URL的请求信息。

    1.1.2. 常用类型介绍

    1.1.2.1. Debug Sampler

    加上该取样器,可显示请求过程中各参数的值,用于跟踪调试请求是否存在问题。

     

    1.1.1.1. HTTP请求

     

    Java请求

     

    1.1.1.1. JDBC Request

     

    注:以上内容引用别处,仅用于收藏学习。 

     

     

     

     

     

     

  • 相关阅读:
    Linux 系统中用户切换(su user与 su
    linux 用户打开进程数和文件数调整
    hive sql 语法详解
    iOS
    iOS
    MySQL的事务的处理
    iOS
    iOS AOP编程思想及实践
    iOS 静态库和动态库(库详解)
    iOS 沙盒目录结构及正确使用
  • 原文地址:https://www.cnblogs.com/Sammy-chen/p/7839415.html
Copyright © 2011-2022 走看看