• 0
  • 0
分享
  • 巧用jmeter逻辑控制器,解决压测中的登录问题——软件测试圈
  • 北极 2022-09-05 15:19:28 字数 1613 阅读 1908 收藏 0

对一个系统的指定功能进行压力测试时,发现把登录接口一起做了压力测试,那么如何在保持登录情况下,单独对指定接口进行压力测试呢?

01 压力测试目标

对接口A进行X次压力测试(本文示例压测10次)

1.png

02 脚本设计思路

接口请求头

【系统登录】接口请求

【系统登录】接口断言

获取token

【子系统登录】接口请求

【子系统登录】接口断言

获取cookie

子系统的功能接口A请求:

添加请求cookie管理器

子系统的功能接口A断言

监听器

03 脚本解说

Logic Controller

逻辑控制器,主要用于控制jmeter脚本运行的逻辑:

Once Only Controller仅一次控制器:主要用于控制登录接口,确保压力测试过程中,登录接口只运行一次即可

Loop Controller循环控制器:用于控制需要进行压力测试的接口,可以循环执行N次

HTTP request

HTTP接口请求,主要用于编辑接口请求的域名(server/IP)、路径(path)、请求数据(request body)

HTTP Header Manager

请求信息头,主要用于保存接口请求的header信息,规定接口响应数据的格式

Content-Type=application/json;charset=UTF-8

Regular Expression Extractor

正则后置处理器,主要用于从接口的响应体内提取对应的token或cookie信息(需要掌握正则表达式基础语法)

Debug PostProcessor

后置调试器,用于调试查看后置处理器生成的变量信息;本文主要用于查看后置处理器Regular Expression Extractor提取成功的token和cookie变量值

Assertion

实现断言功能,从接口的响应体内提取指定的字段,赋值期望值,脚本运行时通过对比期望值和实际值是否一致,来验证接口请求是否成功。

Listener

监听器,通俗点说就是测试报告,jmeter提供了多种测试报告格式,本文主要使用View Results Tree、Aggregate Report两种格式,第一种用于查看接口请求的详细日志信息,第二种用于查看接口请求的耗时等性能信息。

04 脚本正文

1、脚本结构

2.png

2、HTTP request示例-post请求

3.png

3、HTTP request示例-get请求

由于使用正则表达式匹配获取token,所以会匹配到多个数据,此时可在“调试器”内查看具体token在哪个变量上,引用时填入具体变量名称即可

4.png

上图可看到,子系统登录接口请求需要的token在变量“tokenlist_g1”上,故接口入参直接引用变量${ tokenlist_g1},如下图:

5.png

4、HTTP request(压测接口)

添加cookie管理器

6.png

发起请求时会自动获取cookie信息

接口请求配置与上面两个http请求一致,均需要包含域名、路径、请求方法、请求体

7.png

5、JSON Assertion

由于本文案例的接口请求响应数据都是json格式,所以使用json断言。

响应结果如下:

8.png

上图可知,通过判断响应结果的description字段值,来判断接口请求是否成功

对应的断言配置:

9.png

其他接口的断言也可按上述方法设置。

6、逻辑控制器

接口完整请求编辑好后,引入逻辑控制器来控制“登录模块”以及“需要进行压测的接口模块”

将登录相关接口,移动到“Once Only Controller”下,确保执行脚本时,该脚本仅运行一次

将需要进行压测的接口,移动到“Loop Controller”下,确保可以循环运行。

10.png

11.png

7、监听器

本文使用两种监听器存储测试报告

监听器要添加在线程组(Thread Group)上,才可监听所有请求的测试报告,如下图

12.png

05 脚本运行结果

13.png

14.png


作者:测试萌萌

原文链接:https://blog.csdn.net/weixin_50829653/article/details/126704650

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 天风国际分析师郭明錤于8月29日表示,苹果确实在为iPhone14/Pro系列开发卫星通信,并在量产前完成了该功能的硬件测试。此外,华为Mate50/Pro系列新机也可能通过北斗系统支持的卫星通信提供紧急短信服务。除了苹果和华为,谷歌似乎也在发力卫星连接功能。昨日,谷歌平台与生态系统高级副总裁HiroshiLockheimer在一条推文中表示,在2008年发布第一款安卓手机HTCG1时,让3G+WiFi正常工作是一件非常困难的事情。如今,谷歌已经开始致力于让手机与卫星进行连接,谷歌将在下一版本的安卓系统中提供该功能。据9To5Google报道,谷歌确认下一版本的安卓系统即为安卓14,这意味着谷...
            0 0 827
            分享
          •   亚利桑那州立大学(ASU)和 OpenAI 宣布建立合作伙伴关系,将 ChatGPT 带入亚利桑那州立大学的课堂。亚利桑那州立大学在一份新闻稿中表示,该校希望将 ChatGPT Enterprise 的使用集中在"三个关键领域",如"提高学生的成功率、开辟创新研究的新途径以及简化组织流程"。  ASU 副首席信息官凯尔-鲍文(Kyle Bowen)表示:"我们的教职员工已经在使用 ChatGPT,在 ChatGPT Enterprise 推出后,我们解决了很多安全问题,我们认为与 OpenAI 建立联系是有意义的。"他补充说,AS...
            0 0 351
            分享
          •   最近一直在忙的项目刚刚上线交付完成,让自己有了些许喘息的时间。人总是这样,在忙碌的时候,能心无旁骛关注并做好一件事,已是万幸。而全力而为之后的闲暇总是如此的珍贵,在这难得的空隙中,不自觉的开始对自己的职业规划进行了重新审视。回首过去,我意识到,很多像我一样从事软件测试的同学,在刚入行的时候可能并没有过多地考虑过自己的职业之路该如何走。虽然是情理之中的事情,毕竟入行就能有明确职业规划的毕竟只是少数,因为不可控的内因和外因实在是太多了。而自己也只是运气好,走上了管理之路,值得庆幸的同时也觉得应该将一些职业之路上的自我认识和沉淀的东西拿出来分享给大家,当然每个人的境遇自不相同,如有偏差,就当一乐...
            0 0 180
            分享
          •   因项目组需求,需要更换一套Redis集群,为减少开发工作量,调研了一些Redis数据迁移工具,后决定使用Redis-Shake进行集群数据迁移,前期进行了一些测试。  本文主要包括两部分内容:  ·Redis集群搭建和模拟数据初始化:为了模拟生产环境的新旧两套Redis集群,首先在本机上进行环境的搭建,并准备迁移所需要的测试数据。  ·Redis-Shake测试:测试利用Redis-Shake进行数据迁移。  Redis集群搭建  在本部分,首先搭建一套3主3备的集群作为源集群,然后搭建一套5主5备的集群作为目标集群。为了简便起见,我们采用Docker来简化部署。  配置文件准备  首先,...
            0 0 892
            分享
          •       1. TCP和UDP的区别TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输;TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报;TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。      2. TCP和UDP分别对应的常见应用层协议?      2.1 TCP对应的应用层协议      FTP:定义了文件传输协议,使用21端口。常说某某计算...
            8 10 2361
            分享
      • 51testing软件测试圈微信