一、做压力测试的步骤:
- 写脚本或者录制脚本
- 使用用户自定义的参数
- 场景设计
- 使用控制器,来控制模拟多少用户
- 使用监听器,查看测试结果
二、实际例子 参考博文:https://blog.csdn.net/qq_36396763/article/details/89194803 1.创建线程组 (1)在“测试计划”上右键【添加】—【Threads(Users)】----【线程组】。
(2)设置线程数和循环次数。我这里设置线程数为100,循环1次。
(3)这里有三个参数需要稍微注意一下,平时我们测试用到比较多的设置参数就是这三个。 其中, 线程数 ÷ Ramp-up = 一秒执行多少个线程; 线程数 × 循环次数 = 一共执行了多少线程; Ramp-up × 循环次数 = 总的执行时间; 在测试之前我们要确定好这三个参数,比如我依次填入20;10;5,即有20个虚拟用户,每次要10秒全部执行完,循环次数为5次
2.配置元件 — HTTP请求默认值 在我们刚刚创建的线程组上右键【添加】-----【配置元件】-----【HTTP请求默认值】。 【HTTP请求默认值】的作用就是将第三步【HTTP请求】中web服务器信息设置为默认值,测试多个接口时不用反复填写,一劳永逸。当所有的接口测试访问的域名和端口都一样时,可以使用这个元件;一旦服务器地址变更,只需要修改请求默认值即可。也可以不设置。
配置我们需要测试的程序协议、地址、端口号。
3.构造HTTP请求 (1)在 “线程组” 右键【添加】—【取样器】—【HTTP请求】设置我们需要测试的API的请求路径和数据。
(2)在这个页面中我们需要填写的部分如下: 协议:https或者http,根据我们接口的实际对应协议来写即可。 方法:我们的接口用的是POST方法,所以将方法设置为POST. 路径:即接口对应的URL信息。 Content encoding:编码格式,通常为utf-8。
(3)POST方法的参数要写在请求体中,我们可以点击下方的【消息体数据】将参数写入。
4.添加HTTP请求头管理器 因为POST请求在填写了【消息体数据】后是无法打开【参数】栏的,如果想要添加信息头,可以使用jmeter自带的消息头管理器。 在刚刚创建的线程组上右键【添加】-----【配置元件】-----【HTTP信息头管理器】。 因为我们要传输的数据为json,所以设置信息头参数:Content-Type:application/json。
※要注意的是Content-Type若为“x-www-form-urlencoded”结尾(此为 Jquery的Ajax请求默认方式)可能会导致向服务器发送数据不成功,运行时会报如下错误:
{“timestamp”:“2019-04-10T12:29:10.560+0000”,“status”:415,“error”:“Unsupported Media Type”,“message”:“Content type ‘application/www;charset=UTF-8’ not supported”,“path”:"/esa/circulation/insert"}
我们需要将x-www-form-urlencoded改为json,即上图中的填写方式,方可以正常接收。 5.添加监听器 此时其实就可以点击上面中间的绿色按钮来执行了,但是我们为了便于观察执行结果,还要添加一个监听器。 在【HTTP请求】(如果你更改了名称就是你自己所改的名称)上右键,选择监听器,可以添加一个【察看结果树】
6.聚合报告
三、分析时会出现几种比较常见的故障 被测地址写错 这样会直接报404,看一眼报告结果就知道了,可能是地址不存在,或者https写成了http等。 415请求不通(请求方式问题) 上面文中有提到过,若信息头中编码格式写成了以“x-www-form-urlencoded”结尾(为 Jquery的Ajax请求默认方式)可能会导致向服务器发送数据不成功,运行时会报如下错误:
{“timestamp”:“2019-04-10T12:29:10.560+0000”,“status”:415,“error”:“Unsupported Media Type”,“message”:“Content type ‘application/www;charset=UTF-8’ not supported”,“path”:"/esa/circulation/insert"}
我们需要将x-www-form-urlencoded改为json,就可以正确接收啦。
|