zoukankan      html  css  js  c++  java
  • JMeter使用

    JMeter控制器

    https://www.cnblogs.com/111testing/p/6413543.html

    JMeter参数化取值规律---CSV Data Set Config

         

    • 一个线程循环一次或多次:只取第一个值
    • 三个线程循环一次或多次:只取第一、二、三个值
    • 允许多列取值,多列时,参数名写多个并用逗号分隔
    • 当同一个参数名被CSV参数化同时又是全局变量名时,取CSV中的值

    Allow quoted data?:是否允许带双引号的数据

    此项实际是控制csv文件中的双引号是否为有效字符;
    如果数据带有双引号且此项设置TRUE,则会自动去掉数据中的引号使能够正常读取数据,且即使引号之间的内容包含有分隔符时,仍作为一个整体而不进行分隔;
    如果数据带有引号且此项设置为FALSE,则读取数据报错;
    如果希望双引号字段中间再包含双引号,则需要加两个双引号来代表单个双引号

    Recycle on EOF?:到了文件尾是否循环,True---继续从文件第一行开始读取,False---不再循环

    Stop thread on EOF?:到了文件尾是否停止线程,True---停止,False---不停止,注:当Recycle on EOF设置为True时,此项设置无效。

    Sharing mode:

    All threads:测试计划中所有线程

                       假如说只有1个线程,则该线程第1次取第一行,下一次取下一行,直到取完所有值后,如果允许循环取值,那么又从第一行开始依次往下取值

                       假如说有线程1到线程n (n>1),线程1取了一次值后,线程2取值时,取到的是csv文件中的下一行,即与线程1取的不是同一行,线程N依次类推;如果允许循环取值,则当线程1或2或N取完所有值后,各个线程独自取第1个,第2个...第N个值

    Current thread:当前线程

          假如说只有1个线程,则该线程第1次取第一行,下一次取下一行,直到取完所有值后,如果允许循环取值,那么又从第一行开始依次往下取值

          假如说有线程1到线程n (n>1),线程1取了第一行值后下一次取下一行,线程2取值时,也从第一行开始取值下一次下一行,即线程1 。。。 N 各自独立取值;如果允许循环取值,则当线程1或2或N取完所有值后,各个线程独自取第1个,第2个...第N个值

    Current thread group:当前线程组

                  假如说只有1个线程,则该线程第1次取第一行,下一次取下一行,直到取完所有值后,如果允许循环取值,那么又从第一行开始依次往下取值

                      假如说有线程1到线程n (n>1)组成的同一个线程组,线程1 。。。 N 轮流交互取值,如线程1取了第一行值后,下一个请求无论是线程1还是线程2取下一行值,如果允许循环取值,则线程1 。。。 N 轮流交互循环取值。也就是说线程组中任何一个线程取了一次值后,下一次无论改线程组中哪个线程来取值都取下一行

    https://segmentfault.com/a/1190000017366280

    JMeter脚本调试技巧--使用镜像服务器

       在调试和修改测试计划的过程中,通常会为采样器增加一些额外的设置,比如设置额外的HTTP头、cookie管理器或认证管理器等,但当设置了这些内容后,sampler发出的请求是否就与预期一致呢?当然可以通过添加监听器来看查采样器发出的HTTP请求,但如果调试过程中并不想真正地把请求发送给被测应用或暂时还没有被测试应用环境该如何办呢?Jmeter 提供了一个名叫HTTP Mirror Server的组件,HTTP Mirror Server可以启动一个镜像服务器,该服务器把所有接收到的请求原封不动地返回,这样就可以看到发出请求的具体内容了。使用步骤如下:

    1、右键点击“工作台”-->非测试元件-->HTTP Mirror Server 

        

       

       设置端口号、最大线程数和队列长度,这三个参数的含义如下,然后点击启动按钮以启动镜像服务器。

    Port:Port on which Mirror server listens, defaults to 8081.
    Max Number of threads:If set to a value > 0, number of threads serving requests will be limited to the configured number, if set to a value =0 a new thread will be created to serve each incoming request. Defaults to 0
    Max Queue size:Size of queue used for holding tasks before they are executed by Thread Pool, when Thread pool is exceeded, incoming requests will be held in this queue and discarded when this queue is full. This parameter is only used if Max Number of Threads is greater than 0. Defaults to 25

    2、调试的时候,将HTTP请求发送到localhost:8081(也就是Mirror Server启动的端口)即可从监听器的响应查看请求了。

        

        

     

     

    JMeter分布式测试

        利用JMeter进行负载测试的时候,使用单台机器模拟测试超过1000个线程(根据请求的类型和机器配置或更少)的并发就有些力不从心,在执行的过程中,JMeter自身会自动关闭,要解决这个问题,可以使用分布式测试,运行多台机器运行所谓的Agent来分担JMeter自身的压力,并借此来获取更大的并发用户数。

                

    配置步骤如下:
        1、在所有期望运行JMeter作为Load Generator的机器上安装JMeter,并确定其中一台机器作为Controller,其他的机器作为Agent。然后运行所有Agent机器上的JMeter-server.bat文件——假定我们使用两台机器192.168.0.1和192.168.0.2作为Agent。
        2、在Controller机器的JMeter安装目录下找到bin目录,再找到JMeter.properties这个文件,使用记事本或者其他文字编辑工具打开它;在打开的文件中查找“remote_hosts=”这个字符串,你可以找到这样一行“remote_hosts=127.0.0.1”。其中的127.0..0.1 表示运行JMeter Agent的机器,这里需要修改为“remote_hosts=192.168.0.1:1099,192.168.0.2:1099”——其中的1099为JMeter的Controller和Agent之间进行通讯的默认RMI端口号。
        3、保存文件后重新启动Controller机器上的JMeter.bat,并进入Run -> Remote Start菜单项,在这里可以看到远程启动菜单下面有192.168.0.1,192.168.0.1两个IP地址,如果要让某个Agent执行,可以点击该Agent的IP地址就可以,或者点击全部运行。
        4、可以将用作Controller的机器同时当作Agent使用,则同样需要修改JMeter.properties文件,将Controller的IP地址写入。同时,这个时候,需要打先打开Controller电脑中JMeter下bin目录下的jmeter-server.bat,然后再打开JMeter.bat,此时,进入Run -> Remote Start菜单,可以看到Controller也作为远程机器进行运行。

    命令行方式:

    1、在jmeter远程服务器上运行JMETER_HOME/bin/jmeter-server (UNIX)或者JMETER_HOME/bin/jmeter-server.bat(Windows)脚本。

    2、在jmeter客户端上修改/bin/jmeter.properties文件,找到属性"remote_hosts",使用JMeter远程服务器的IP地址作为其属性值。可以添加多个服务器的IP地址,以逗号作为分隔。
    例如:
    #remote_hosts=127.0.0.1
    remote_hosts=9.115.210.2:1099,9.115.210.3:1099,9.115.210.4:1099
    # RMI port to be used by the server (must start rmiregistry with same port)
    server_port=1099

    3、在jmeter客户端上启动jmeter:
    ./jmeter -n -t plan.jmx -r #选项-r表示远程启动(remote) jmeter客户端会自动向jmeter远程服务器上分发测试计划。

    jmeter -n -t  plan.jmx -l result1.jtl  -j dddss.logog -R 192.168.0.2  #只运行192.168.0.2

    执行分布式测试时,Controller、Agent和被测试系统之间检查满足下面的一些条件:

       1、所有的防火墙应该关闭。
       2、所有的Agent都是在同一个子网中。
       3、确保Agent与待测服务器以及Controller之间都能连通。
       4、确保各个安装的jMeter、JVM的版本都是一致的,不同版本的Jmeter可能不会协同工作。

     另外JMeter分布式测试可能还会有下面这些限制:

         

  • 相关阅读:
    你应该知道的那些Android小经验
    ArrayList和LinkedList的区别
    Android 监听apk安装替换卸载广播
    关于 Android 进程保活,你所需要知道的一切
    Java Thread 总结
    Android分包原理
    Flask web开发 处理POST请求(登录案例)
    Flask web开发 简单介绍
    编写存储过程导出oracle表数据到多个文本文件
    Linux 特殊符号使用: 倒引号`的使用
  • 原文地址:https://www.cnblogs.com/yezhaohui/p/3468368.html
Copyright © 2011-2022 走看看