前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jmeter系列(47)- 针对需要登录的接口如何做性能测试?

Jmeter系列(47)- 针对需要登录的接口如何做性能测试?

作者头像
小菠萝测试笔记
发布2020-07-15 16:16:47
1.8K0
发布2020-07-15 16:16:47
举报

如果你想从头学习Jmeter,可以看看这个系列的文章哦

https://www.cnblogs.com/poloyy/category/1746599.html

前言

  • 在实际业务场景中,很多业务都需要先登录才能正常使用
  • 在做接口性能测试的时候,需要测试登录后才能访问的接口肯定是无法避免的
  • 那么,我们怎么才能完成先登录后发出请求的性能脚本呢

思路

  1. 发出登录请求
  2. 提取响应的认证内容
  3. 后面的请求引用认证内容
提出问题

做性能测试,是模拟多个虚拟用户实现并发的,那我们的登录接口也需要重复发起吗?

可以类比一个场景

做 UI 自动化的时候肯定也需要登录的,一般我们会将登录放到全局前置来操作,所以整个测试流程下来只需要登录一次

关键点

一个用户只需要登录一次,避免重复发起登录请求,造成不必要的资源消耗

最简单的场景

  • 所有虚拟用户使用同一个用户账户,每次都是先调登录接口,再调登录之后接口请求吗?
  • 如果你的系统,业务上允许一个用户在不退出情况下,反复登录,且没有登录次数限制,这种最理想的情况,你完全可以这么做
  • 做完了,你可能会想,我不用一个账户,100个并发用户数,我就用100个独立账户,

每个用户拥有独立账户

灵魂拷问

每个虚拟用户都试用一个独立账户,还是先调登录,再调登录之后接口请求,这样可以吗,要怎么做?

当然可以
  • 在你的线程组里面用上 csv 数据文件设置读取出用户账户信息,或者用 JDBCrequest 从数据库获取出用户信息
  • 然后再在登录接口中用取出的用户信息来登录
  • 这样,在性能测试时,就会循环使用你用户总量中的用户来发送请求
  • 这样,理论上是行的通的,但是,现实有些骨感
  • 因为做性能测试,使用的是高并发,可能存在竞争关系,可能出现后续接口,使用的关联参数取不到值的情况
  • 从而导致请求报错,而这种错误,不是性能测试服务器响应报错,而是脚本问题导致报错,影响我们对性能结果的判断

那么,我们就会问,还有没有其他办法呢?

终极好办法

上面也说了一个关键点:一个用户只需要登录一次

既然我们一个线程就是一个模拟用户,那我们只需要针对每个线程做到只发出一次登录请求,其他接口可以无限次发起

具体步骤
  1. 在线程组下添加一个逻辑控制器【仅一次控制器】
  2. 在该逻辑控制器下添加登录请求
  3. 登录请求下添加提取器,提取登录响应内容
  4. 和逻辑控制器平级下添加需要并发的请求
运行查看聚合报告

可以看到 login 登录接口总共调用了 5 次,针对重置密码接口进行了并发请求

注意:并发请求并不代表在测试过程中,每个用户的并发总次数会相等

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 思路
    • 提出问题
      • 可以类比一个场景
        • 关键点
        • 最简单的场景
        • 每个用户拥有独立账户
          • 灵魂拷问
            • 当然可以
            • 终极好办法
              • 具体步骤
                • 运行查看聚合报告
                相关产品与服务
                测试服务
                测试服务 WeTest 包括标准兼容测试、专家兼容测试、手游安全测试、远程调试等多款产品,服务于海量腾讯精品游戏,涵盖兼容测试、压力测试、性能测试、安全测试、远程调试等多个方向,立体化安全防护体系,保卫您的信息安全。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档