使用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调用接口的方法,是不是很简单,很方便。当然还有很多高级的用法,有兴趣,可以慢慢探索。
本文来自博客园,作者:PC君,转载请注明原文链接:https://www.cnblogs.com/pcheng/p/13055234.html