2021-03-24

JMeter之模拟用户登录后进行接口压测

本文记录了使用JMeter来模拟用户登录,并从登录接口返回的JSON数据提取Token供其它线程组使用。

主要内容:

  • 1.登录提取token设置全局变量
  • 2.使用全局token进行接口压测

1.下载

http://jmeter.apache.org/download_jmeter.cgi

2.新建测试计划

2.1.新建 HTTP请求默认值

HTTP请求默认值

用来统一管理待测试的服务器地址和端口

image

这里将测试服务器地址设置为 http://127.0.0.1:9999

2.2 新建 setUp线程组

setUp线程组

这里的线程组来模拟登录使用只需要执行一次即可,所以单独用一个线程组。
在这个线程组下新建 HTTP请求来模拟登录

HTTP请求
配置登录接口

我这里登录是用的JSON格式,所以下面设置登录请求头为Content-Type:application/json

HTTP信息头管理器
设置请求头为JSON

测试是否登录成功,新建 查看结果树

查看结果树

运行测试计划

运行测试计划

可以看到登录已经成果返回了

{
    "data": {
        "token": "OGMwYTkzMzA1MDc3NDBiOGJjYjQyNDdkMjkwYmU2ZmQ6MTExMzAwMzEyNDA5MzYxNjEyOQ",
        "user": {
            "id": "1113003124093616129",
            "username": "admin",
            "truename": "管理员"
        }
    },
    "message": "操作成功!",
    "resultCode": "00000"
}

2.3.提取登录返回数据中的token并设置全局变量

1.提取token
新建 JSON提取器

新建 JSON提取器
JSON提取器 配置

这里 就是返回的JSON对象 $.data.token 就是获取token 然后赋值给 token 变量

2.将token赋值全局变量
新建 Bean shell 后置处理程序

Bean shell 后置处理程序
设置全局的Token

${__setProperty(Token,${token},)} 将token赋值给Token

2.4.使用全局的Token

类似于登录,我们新建一个线程组来测试业务接口

新建 线程组
线程组示例

在线程组下有个HTTP信息头管理器,我们可以设置获取全局Token

获取全局Token

${__P(Token,)} 获取Token

这样设置后线程组下面的所有业务接口都能复用第一次登录的token了。

3.对登录一次对线程组里的业务接口进行压力测试

前面我们已经获取到全局的Token现在只需要给线程组设置规则就好了

50个线程循环50次

新建 聚合报告

聚合报告

运行,并查看报告

聚合报告

4.参考

https://www.jianshu.com/p/d1f636dd68a6
https://www.jianshu.com/p/e31b995d80e3

你可能感兴趣的:(2021-03-24)