使用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调用接口的方法,是不是很简单,很方便。当然还有很多高级的用法,有兴趣,可以慢慢探索。

原文地址:https://www.cnblogs.com/pcheng/p/13055234.html