zoukankan      html  css  js  c++  java
  • 使用JMeter测试HTTP接口的方法

      JMeter是Apache出的一款用JAVA开发的性能测试工具,可以方便的对各种接口进行测试。下面就来看一下,使用JMeter对HTTP接口进行测试的方法。

    1、添加线程组,用来控制执行过程。右键“测试计划”→“添加”→“Threads(Users)”→“线程组”。


    线程组有三个属性:

    线程数:启动的线程数量。

    Ramp-Up Period:指定时间启动所有线程。会用相等间隔启动所有线程。

    循环次数:线程循环执行的次数。

    举个栗子:设置线程数=2、Ramp-Up Reriod=10、循环次数=3,那么流程就是,启动1个线程,隔5秒再启动第2个线程,每个线程启动后执行3次。

    2、添加HTTP请求,用来设置具体HTTP请求的内容。右键“线程组”→“添加”→“Sampler”→“HTTP请求”。

    以这个请求地址为例:http://127.0.0.1:18080/getUserInfo

    最简单的参数设置方法,是直接将请求地址填在路径里,如下:

    也可以将参数分开填写到对应位置(分开填写的好处是后期可以动态配置),如下:


    3、添加查看结果页面,用来查看HTTP请求的结果。右键“线程组”→“添加”→“监听器”→“察看结果树”。

    请求过后,可以在取样器结果、请求、响应数据三个页面中看到请求的所有信息,包括请求地址、参数、返回值、耗时等等。如下:

    4、请求参数的设置。

    刚的HTTP请求,并没有传参,但通常的接口请求都会带有参数,那么在哪里添加呢?就是在第2步的HTTP请求页面中的Parameters、BodyData。

    接口参数接收方式通常有2种,对应传参方式如下:

    (1)键值对的方式。

    1     public Map<String, Object> getUserInfo(@RequestParam String userId) {
    2         return getUserInfo(userId);
    3     }

    对应JMeter的传参方式Parameters。如下:

    (2)Json的方式。

    1     public Map<String, Object> getUserInfo(@RequestBody UserInfo userInfo) {
    2         return getUserInfo(userId);
    3     }
    4 
    5     @Data
    6     public class UserInfo {
    7         private String userId;
    8     }

    对应JMeter传参方式Body Data。如下:

    传参时,还需要指定传参格式,即请求头中的参数Content-Type。

    (1)使用Parameters时,Content-Type传:application/x-www-from-urlencoded。

    (2)使用Body Data时,Content-Type传:application/json。

    Content-Type的默认值为application/x-www-from-urlencoded,所以当使用Parameters时可以不传。

    设置Content-Type的方法。右键“HTTP请求”→“添加”→“配置元件”→“HTTP信息头管理”。添加一对健值。如下图:

    这样设置的参数值固定的,有时候我们可能希望参数是动态的,可以通过下面这种方式。

    5、动态请求参数的设置。

    (1)动态参数使用到Bean Shell PreProcessor。右键“HTTP请求”→“添加”→“前置处理”→“Bean Shell PreProcessor”。

    在Script里,根据你需要的规则生成参数的值,并使用vars.put(String key,String value)把数据存到JMeter变量中。如上图。

    (2)然后在HTTP请求页中以 ${key} 的格式,引用对应的变量。如下图:

      以上就是JMeter调用接口的方法,是不是很简单,很方便。当然还有很多高级的用法,有兴趣,可以慢慢探索。

  • 相关阅读:
    简化得最没道理的6个汉字,让人大跌眼镜
    简化得最没道理的6个汉字,让人大跌眼镜
    简化得最没道理的6个汉字,让人大跌眼镜
    java面向对象高级分层实例_测试类(main方法所在的类)
    java面向对象高级分层实例_测试类(main方法所在的类)
    java面向对象高级分层实例_测试类(main方法所在的类)
    java面向对象高级分层实例_数据库操作类
    squared-error loss is much more repaidly updated than mean-absolute-deviation when searching for splits
    Greedy Function Approximation:A Gradient Boosting Machine
    ridge regression 无惩罚,导致预测结果空间过大而无实用价值
  • 原文地址:https://www.cnblogs.com/pcheng/p/13055234.html
Copyright © 2011-2022 走看看