jmeter使用分享

Jmeter使用介绍html

 

  1. Jmeter安装启动

1.1     Jdk安装和环境变量配置java

1.2     启动jmeter.bat或者直接运行安装目录bin下面的ApacheJMeter.jarsql

1.3     一个最简单的jmeter请求:添加一个线程组,一个http请求,一个查看结果树查看结果。填好http请求相关参数,直接运行就可查看结果。chrome

 

 

  1. Jmeter基础元件

添加线程组后,右击线程组,能够看到jmeter的八大基础元件,以下所示:shell

  1. 控制器使用

3.1     if控制器数据库

判断子取样器是否执行,${test1}==100 && ${test1}==99apache

 

 

3.2     循环控制器json

控制其下的子节点运行次数,能够指定运行次数,也能够勾选永远,持续执行。浏览器

 

 

3.3     吞吐量控制器服务器

控制其下子节点执行的次数或者百分比

 

 

3.4     仅一次控制器

线程组执行期间,该控制器的子节点取样器只运行一次。例如在登录时,若是线程组循环时不清除cookie,那么把登录请求放到该控制器下,除了线程启动第一次循环时会执行该请求,后续的循环不会再执行。

 

 

  1. Samper

4.1     http请求

常规模式的http请求,包括请求域名,方法,请求体参数,信息头字符格式等。

 

 

图中post请求的能够经过parameters或者body data来传值。

Parameter:参数能够直接写在url后面,如http://xxxx.xxxx/test?test = 123&test1 = 123, 也能够在parameter里面的表格中填写

Body data:请求附带请求体,请求体的格式须要在配置元件中的http信息头管理器中指定,如添加:Content-Type:application/json。当添加了这个信息头后,body,data里的参数就须要填写josn格式。

4.2     java请求

其实是对jar包进行测试,具体步骤:

1) 将jmeter的lib\ext下的ApacheJMeter_core.jar和 ApacheJMeter_java.jar两个jar包导入目标工程的扩展类库中

2) 建立一个类Test继承 JavaSamplerClient,复写getDefaultParameters和runTest方法

getDefaultParameters:定义jmeter界面能够传入的参数

runTest:目标测试代码,须要测试的功能或者调用所有写在这里

 

public class Test extends AbstractJavaSamplerClient{

       

    public Arguments getDefaultParameters() {

       

        Arguments args = new Arguments();

       

        args.addArgument("userName", "test ");

        args.addArgument("password", "testing");

               

        return args;

    }

 

    @Override

    public void setupTest(JavaSamplerContext context) {

          }

 

    @Override

    /**

     * 性能测试时的线程运行体,执行的业务方法放在这里。

     */

    public SampleResult runTest(JavaSamplerContext context) {

       

        // 建立SampleResult对象,用于记录执行结果的状态,并返回

        SampleResult sampleResult = new SampleResult();

 

       

        // 获取JMeter中输入的用户参数

        String userName = context.getParameter("userName");

        String password = context.getParameter("password");

       

        // 开始

        sampleResult.sampleStart();

       

        //此处是要执行的目标代码

 

        // 暂停

        // sampleResult.samplePause();

       

        // 重启

        // sampleResult.sampleResume();

       

        // 结束

        sampleResult.sampleEnd();

       

        sampleResult.setSuccessful(accountResult.isSuccess());

       

        // 返回

        return sampleResult;

    }

}

3) 导出工程jar包到jmeter目录lib\ext下,重启jmeter能够选择刚才导入的jar包,以及本身写的对应的方法,写入但愿传入的参数就能够正常进行测试了:

 

 

 

4.3     ftp请求

主要提供文件的上传和下载功能

 

 

服务器名称或ip:远程服务器的域名或者ip

Remote File:须要上传到服务器或者从服务器下载到本地的文件路径和文件名

Local File: 本地须要上传到服务器或者从服务器下载到本地文件路径和文件名

Local File Contents: 选择get下载,put上传

4.4     jdbc request

jdbc主要提供对数据库的增删改查操做,须要配合配置元件里的JDBC Connection Configuration使用

 

 

配置好连接信息,添加jdbc request,Variable Name里填写上面在配置里填写变量名,query type里能够选select,update等不一样的选项来支持不一样的sql语句

 

 

若是语句太多,也可使用下面的parameter values和parameter types来参数化,

parameter values:参数值

parameter types:参数类型

Result variable name:保存查询结果,线程组执行过程当中能够随时经过vars.getObject(“result name”)去读取这个查询结果。

  1. Beanshell

经常使用的内置变量:

log: 写入log相关信息,log.info(“xxxxxxx”);

vars: 操做脚本中的变量,vars.get(String key)获取指定变量,vars.put(String key,String value), 保存修改变量值。

Prev: 调用SampleResult类相关方法:

        prev.getContentType():获取完整的content-type信息

        prev. getResponseDataAsString(). 获取前置请求的返回而且转化成字符串

5.1     BeanShell PreProcessor

前置处理器,在实际的请求发出前运行,能够预先设定一些参数的值或者对传入的参数作处理,请求时使用beanshell处理过的数值。

 

 

上图在编辑模块经过代码获取当前的unix时间戳,使用vars.put(“time”,time)设定变量,在以后即将运行的请求或者相关配置原件中能够经过${time}来动态获取即时的时间戳信息。

5.2     BeanShell PostProcessor

后置处理器,和前置类似。在请求发送后,对相应作处理。

 

 

除了对响应作处理,也能够读取脚本配置的变量来从新赋值或者跳出while等循环或者逻辑控制器。

  1. 配置元件

6.1     csv data set config:

 

 

FileName: csv文件目录,若是和脚本路径相同,只须要填文件名

File Encoding: 默认为ANSI,有中文的时候能够填utf-8

Varible Names: 定义文本文件中的参数名,参数之间逗号分隔.定义后可在脚本在以Shell变量的一样的方式引用

Delimiter(use “\t” for tab):通常状况下,分隔符为英文逗号

Allow Quoated data: 双引号相关

Recycle on EOF: 设置为True后,容许循环取值

Stop Thread on EOF: 当Recycle on EOF为false而且Stop Thread on EOF为true,则读完csv文件中的记录后,中止运行

Sharing Mode: 设置是否线程共享

6.2     http信息头管理器

 

 

主要支持一些复杂的信息头,左边填写名称,右边填写对应的值,值域里面支持变量动态获取

 

6.3     http cookie管理器

 

 

 

6.4     计数器

计数器能够设置一个初始值,每次递增的值,以及增加上限。

 

 

启动:初始值

递增:指定每次数值增长多少

最大值:递增的上限值

引用名称:在其余地方经过此处的名称来引用计数器,上图名称填的是test,若是在其余地方想要引用这个计数器能够经过${test}来获取值。

与每用户独立的跟踪计数器:不勾选的话,全部线程共享一个计数器,不然每一个线程都独自维护一个计数器。

6.5     用户自定义变量

该配置元件能够事先定义一些变量。

 

 

如上所示,填写变量名称和变量值,使用时也时经过${test1}来引用。

6.6     Random Variable

随机变量:按照必定的规则随机生成的变量。

 

 

Variable name: 变量名称,能够经过${name}来引用。

Output format:输出格式,生成的变量值会按照该格式来组合成最终的值。上图填写的时139aa,那最终的输出时139aaxxxxxxxxxx。若是为空,则生成的变量就是最终值。

Minimum value:随机值的下限。

Maximum value:随机值的上限。

Per Thread(User): false时,全部线程共享变量。true,每一个线程单独维护一个变量。

  1. Jmeter录制

Jmeter脚本除了在UI界面上编写或者直接编写xml文件以外,还能够经过一些工具去生成,下面介绍一个浏览器插件blazemeter录制脚本的流程。

在chrome的扩展程序里搜索并安装blazemeter这个插件,安装好后在chrome的右上角会出现启动按钮

 

 

点击启动程序,出现以下界面:

 

 

 

 

使用blazemeter录制一个jmeter脚本分一下步骤:

1) 启动程序后在最上方的输入框为脚本定义一个名称

2) 下方一排有6个按钮,从左到右依次为,开始录制,中止录制,停止录制,编写录制脚本,导出为.jmx脚本,重置全部选项。

3) 点击开始录制按钮后,这时能够在浏览器上作访问操做,工具图标上会记录操做浏览器的动做次数

4) 浏览器访问结束,点击中止录制。

5) 若是须要编辑能够点击编写录制修改相关参数,最后点击导出为能够被jmeter识别的.jmx文件,直接用jmeter打开,运行调试。

  1. 监听器

Jmeter监听器元件里提供了许多结果检测功能:

8.1     Jmeter自带监听器:

1) 查看结果树:能够详细的查看请求的参数,返回等功能,大量压测的话建议勾选上只查看错误请求的功能,以避免界面死掉。

2) 聚合报告:对请求数,响应时间,吞吐量,数据流量作汇总。比较经常使用的功能

 

Sample:请求总数

Average:平均响应时间

Median:一半的请求响应时间小于该时间

90% Line : 90%的请求响应时间小于该时间

Min:最小响应时间

Max:最大响应时间

Error %:出错请求占请求总数的百分比

Throughput:吞吐量,服务器每秒处理的请求数

KB/sec:每秒从服务器接收的数据量

8.2     Jmeter插件

8.2.1       jmeter自带的绘图结果不怎么好看,而且jmeter自己并不能监听服务器的内存,cpu等硬件指标,因此利用JMeterPlugins能够辅助生成一些简单明了的图形结果。下面时操做步骤:

1) 下载JMeterPlugins相关jar包放到jmeter安装路径下的lib\ext下面,重启jemter

2) 为线程组添加监听器,若是jar包生效,就发现菜单中多了一些jp@gc开头的新的监听器。

 

 

3) 新的监听器监听服务器须要部署agent到目标机器上,下载ServerAgent到目标服务器上,运行bat启动文件,以下图所示就启动成功了。此时运行压测脚本就能够看到监听器开始工做。

 

 

 

4) 经常使用监听器介绍:

Transactions per Second:每秒处理的事物数

 

 

 

 

 

Hits per Second:每秒点击率

 

 

 

 

 

 

PerfMon Metrics Collector:性能表现指标收集,该图表须要手动添加目标服务器的ip和端口(对应以前启动agent的端口),选择须要收集的指标,cpu,io,内存等。该监听器中,全部可监听的机器ip和想要的性能指标均可以经过在监听器界面上经过下拉框来选择(红线部分所示)。

 

 

 

 

 

 

 

Active Threads Over Time:活动用户数量,脚本执行期间,正在运行的线程数。

 

 

 

 

8.2.2       除了经过jmeter去监听指标外,也能够经过nmon等工具直接在服务器上收集数据。

 

  1. 分布式部署测试

因为单台机器所能开启的线程数受机器自己的硬件相关配置限制,当有高并发的需求时能够开启分布式部署,将压力分布到到多执行节点上,一台master server负责收集各个节点的运行结果并进行汇总。

下面是分布式部署流程:

9.1     节点机器配置:

安装jmeter而且配置环境变量,JMETER_HOME=jmeter安装路径。

打开jmeter bin目录下的jmeter.properties文件,修改以下参数值:

         server.rmi.localport=1099

         server_port=1099

命令行起启动bin目录下jmeter-server.bat脚本,效果以下所示:

 

 

后续在server上远程启动该节点的信息都会显示在此处。

9.2     Server配置:

打开jmeter bin目录下的jmeter.properties文件,修改其中的值,

       remote_hosts=172.17.3.11:1099(对应各个节点机器的ip和端口配置)

9.3     在server上打开jmeter客户端,选择远程启动的方式,

 

 

此时能够看到以前配置的远程服务器已经在可选的列表中,能够有选择的启动某几台远程服务器,或者所有启动,此时在主控server的jmeter界面上能够看到因此远程服务器的运行状况汇总。

 

10.  线程组

    线程属性配置

 

 

     线程数:用来发送请求的线程数

       Ramp-Up Period(in seconds): 指定的线程数在多少时间内完成启动,若是线程组是屡次循环的,该参数只对首次线程启动的时候起做用,第二次循环开始线程运行不在受此参数影响。

        循环次数:勾选永远会一直跑,填写次数用来设定单个线程的循环次数

        调度器:可让脚本在一个指定的时间段内运行

11.Jmeter和jenkins集成

  11.1   Jmeter命令行运行

在jenkins中运行jmeter脚本须要用到jmeter的nonGUI模式,相关参数以下:

-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter

-t 测试文件 -> 要运行的 JMeter 测试脚本文件

-l 日志文件 -> 记录结果的文件

-r 远程执行 -> 启动远程服务

-H 代理主机 -> 设置 JMeter 使用的代理主机

-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号

       使用示例: jmeter -n -t testplan.jmx -l test.jtl。生成的jtl文件能够在jmeter的聚合报告或者查看结果书界面直接打开查看,以下所示。

 

 
 
11.2   Jmeter,jenkens,ant持续集成。
写好的jmeter脚本能够结合ant,配置到Jenkins持续集成。基本思路是Jenkins构建后执行ant命令,经过ant去调用jmeter脚本,然后把生成的jtl报告转化成可视化的html报告输出:
1) 下载ant:http://ant.apache.org/bindownload.cgi,解压到本地
2) 将jmeter extras目录下的ant-jmeter-1.1.1.jar文件复制到ant的lib目录下
3) 修改jmeter bin目录下的jmeter.properties文件选项的值:

 

 
上图中值原先都是被注释的,使用时去掉前面的注释符号“
第一条红线处,反注释后修改其值为xml,意思时输出文件为xml。
下面一部分是要report中想要保存的结果选项,反注释后修改false为true。
4) 复制jmeter extras目录下的build.xml,collapse.png,expand.png,jmeter-results-detail-report.xsl,jmeter-results-report.xsl文件到jmeter bin目录下。
5) 修改build.xml值以下图所示,若是没有就新增一条:

 

 
 
6) 配置ant环境变量:
ANT_HOME = ant安装路径;
CLASSPATH = %ANT_HOME%\lib;
PATH =  %ANT_HOME%\bin;
 
7) 打开一个cmd命令,切换到jmeter bin下面运行命令:ant,出现以下界面则运行成功:

 

 
8) 在Jenkins界面新建 一个项目或者打开一个已经存在的项目,打开配置界面
9) 点击增长构建步骤以下图所示:

 

 
 
在出来的界面中填写ant执行命令:

 

 
保存项目,开始构建,成功后能够查看HTML报告。

 

 
在Jenkins的项目配置里,选择增长构建后操做步骤:

 

 
在下拉列表中也能够选择一些其余控件对生成的报告做解析而且输出到Jenkins界面上。
相关文章
相关标签/搜索