zoukankan      html  css  js  c++  java
  • jmeter压测实践

    技巧一:命令行执行

    命令执行:指定参数,报告的存储位置

    jmeter -n -t baidu_requests_results.jmx -r -l baidu_requests_results.jtl -e -o /home/resultReport

    -n : 非GUI 模式执行JMeter

    -t : 执行测试文件所在的位置及文件名

    -r : 远程将所有agent启动用在分布式测试场景下,不是分布式测试只是单点就不需要-r

     -l : 指定生成测试结果的保存文件, jtl 文件格式

    -e : 测试结束后,生成测试报告

    -o : 指定测试报告的存放位置

    注意事项:

    1、-o 指定的文件及文件夹,必须不存在 ,否则执行会失败,对应上面的命令就是resultReport文件夹必须不存在否则报错

    2、只有自动结束才会生成测试报告,强制结束执行不会生成测试报告

    技巧二:阶梯压测

    Concurrency Thread Group和Stepping Thread Group两种线程组都可用于阶梯式加压测试,但是由于Stepping Thread Group已经不再被官方推荐使用了,我们对Concurrency Thread Group进行介绍。

    target concurrency:目标并发数

    ramp up time(min):加速时间

    ramp-up steps count:加速步骤计数

    hold target rate time(min):保持目标速度时间

    thread iterations limit:线程迭代次数限制

    log threads status into file:将线程状态记录到文件

    以上,以图形的方式展示了线程加压的过程。

    技巧三:控制请求数(QPS)压测

    Arrivals Thread Group我们可以通过该线程组达到控制请求数的目的

    target rate:目标速率,每秒钟多少个请求数

    ramp up time(sec):达到目标速率需要的时间

    ramp-up steps count:达到目标速率需要多少步

    hold target rate time(sec):保持目标速率时间

    thread iterations limit:线程迭代次数限制

    log threads status into file:将线程状态记录到文件

    concurrency limit:最大并发数限制

     

    技巧四:权重控制压测

    weighted switch controller 控制权重百分比的场景控件

     

    技巧五:调试脚本添加Debug PostProcessor

    一般是在需要添加正则(Regular Expression Extractor)、Xpath Extractor、 JSON Path Extractor等提取器的时候或者在参数化的时候,添加一个Debug PostProcessor,这样方便在调试脚本的时候,

    看是否正确的提取到了所要的信息。当然,得添加View Result Tree,因为执行脚本以后是在tree里看debug的信息

     

    技巧六:benshell使用

        JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:

    • log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!”);

    •  beanshell断言 Failure=true/false
    • ctx:该变量引用了当前线程的上下文,使用方法可参考:org.apache.jmeter.threads.JMeterContext

      ctx.getCurrentSampler(); 获取当前 sampler 请求

      ctx.getPreviousSampler(); 获取前一个 sampler 请求

      ctx.getThreadNum(); 获取当前线程的序号,从 0 开始计数

      ctx.getThread(); 获取当前线程

      ctx.getThreadGroup(); 获取当前线程组

      ctx.getProperties(); 获取所有属性

      ctx.getVariables(); 获取当前线程的所有变量

    • vars - (JMeterVariables):操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:

        a) vars.get(String key):从jmeter中获得变量值

        b) vars.put(String key,String value):数据存到jmeter变量中

        更多方法可参考:org.apache.jmeter.threads.JMeterVariables

    • props - (JMeterProperties - class java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。 

        a) props.get("START.HMS");  注:START.HMS为属性名,在文件jmeter.properties中定义 

        b) props.put("PROP1","1234"); 

    • prev - (SampleResult):获取前面的sample返回的信息,常用方法:

        a) getResponseDataAsString():获取响应信息

        b) getResponseCode() :获取响应code

  • 相关阅读:
    NHibernate中session.update()及session.merge()的区别
    子序列 (All in All,UVa 10340)
    古老的密码 (Ancient Cipher,NEERC 2004,LA 3213)
    例题1 勇者斗恶龙 (The Dragon of Loowater,UVa 11292)
    HDU1869 六度分离
    B. T-primes
    PoJ 1595 PrimeCuts
    poj 3518 Prime Gap
    PKU1988磁铁
    求组合数
  • 原文地址:https://www.cnblogs.com/unknows/p/10954737.html
Copyright © 2011-2022 走看看