每周读书与学习->JMeter性能测试脚本编写实战(一)-如何实现用户需先登录,然后再请求别的接口

每周读书与学习是由清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书的作者推出,分享作者多年的IT从业经历,希望对很多计算机科学技术IT类专业毕业生以及IT从业者有所帮助。

在前面的学习中,介绍了很多Jmeter的理论知识,包括Jmeter中很多不同元件的详细介绍以及每个元件的作用,本次主要从实践的角度来介绍怎么用这些元件来完成常见性能测试脚本的编写,将会介绍一些常见的性能测试脚本编写案例。

1、如何实现用户需先登录,然后再请求别的接口

在性能测试中,如果对一个系统进行性能压测时,往往经常会需要先进行一次登录,在登录完成后,才能去对接下来的接口进行性能压测,因为如果没有登录成功的话,就无法完成后续的步骤,而且这也符合真实的用户场景,用户访问一个系统时,通常都是需要先登录后,才能进入到系统中做其他的操作,如下图所示。

在Jmeter中,如果要完成这样一个常见场景的性能测试脚本的编写,主要需要用到Jmeter的逻辑控制器中的仅一次控制器以及配置管理器下的HTTP Cookie管理器,如下图所示,是以先登录CSDN(网址:https://blog.csdn.net/)博客,然后再进行关键字搜索的真实案例的性能测试脚本的编写过程,每个主要元件的作用描述如下。

  • 仅一次控制器:主要是用于控制每次需要先进行一次登录,而且一旦登录完成后,后面就不需要再进行登录了。
  • HTTP Cookie管理器:主要用于自动存储登录成功后的Cookie,并且让取样器在调用后续的接口做性能压测时,每次都会自动带上这个Cookie,如下图所示。
  • HTTP请求取样器:由于CSDN博客网站是通过https协议在浏览器中进行访问,所以需要使用Jmeter中的HTTP请求取样器来模拟登录请求和关键字的搜索请求。
  • 查看结果树:主要用于在调试Jmeter测试计划中的脚本时,通过查看结果树来查看取样器发出请求的请求报文和响应结果等信息。

从上图中可以看到,登录CSDN时,需要以POST的请求的形式调用CSDN博客网站的登录接口/v1/register/pc/login/doLogin,并且以Body消息体数据的形式传入登录请求的参数。

从上图中可以看到,当HTTP请求是一个通用的标准的Cookie管理形式时,只需要添加HTTP Cookie管理器,在HTTP Cookie管理器中不需要做任何的其他配置。

如下图所示,为调用CSDN的搜索接口进行搜索,由于该搜索是一个GET形式的请求,所以在HTTP请求取样器中,选择了GET请求,并且在路径中,输入CSDN的搜索接口的请求路径/api/v1/search_top_data,请求参数中,分别填入:

  • 请求参数q:填入需要进行搜索的关键字 。
  • 请求参数t:填入需要进行搜索的范围。

在完成上述的Jmeter元件添加以及配置后,即可运行Jmeter性能测试计划,并且通过查看结果树来查看取样器的运行的结果,如下图所示。

从上图中可以看到,HTTP请求取样器在发起对CSDN的搜索请求时,已经自动携带了登录后的Cookie数据了。

如下图所示,当将HTTP Cookie管理器禁用后,然后再重新发起请求后,通过查看结果树查看取样器的运行结果时发现此时取样器发起对CSDN的搜索请求中,不再会自动携带登录后的Cookie数据,从图中可以看到此时显示的是no cookies,从这个示例中也可以直接看出HTTP Cookie管理器的直接作用就是自动存储登录成功后的Cookie,并且让取样器在调用后续的接口时,每次都会自动带上这个Cookie。

2、本次学习总结

读者们需要能在Jmeter工具下完成常见的性能测试脚本的编写,能完成一些常见的HTTP请求以及数据库请求的性能压测,每天学习一个知识点,持续让自己提高和进步。

出处 :本次学习的内容参考自清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书

相关推荐
蒸鱼Yuzheng1 天前
游戏内存碎片诊断:总量没超标,为什么仍然分配失败
unreal engine·性能分析·内存优化·分配器·内存碎片
蒸鱼Yuzheng2 天前
移动端 CPU 调度分析:线程亲和性、大小核迁移与卡顿
android·perfetto·性能分析·线程优化·cpu调度
爱好曙光4 天前
Redis Cluster 槽迁移:MOVED 重定向与拓扑刷新实战
redis·cluster·性能调优·moved·槽迁移
爱好曙光6 天前
SQLite WAL 高并发写入:busy_timeout 与 checkpoint 调优实战
sqlite·性能调优·checkpoint·wal·并发写入
Web3&Basketball7 天前
TorchTPU 迁移实战:3 个 CUDA 卡点
pytorch·性能调优·cuda·tpu·模型迁移·torchtpu
行者-全栈开发13 天前
InfluxDB TSM 存储引擎深度解析:写入路径与压缩机制
cache·性能调优·influxdb·wal·存储引擎·compaction·tsm
gwf21615 天前
内核态RDMA驱动调试技巧:ftrace/tracepoint/crash分析 —— 深入驱动底层的排错艺术
性能调优·linux驱动·ftrace·rdma·tracepoint·内核调试·crash分析
gwf21616 天前
常见驱动问题定位与解决:设备识别、性能不达预期、CQ错误码 —— 资深RDMA驱动调试排错指南
驱动开发·linux内核·性能调优·rdma·故障排查·mlx5·irdma
gwf21619 天前
SSD I/O路径全栈优化与Linux内核存储栈性能调优实战
性能优化·linux内核·nvme·性能调优·固态硬盘·存储技术·io_uring
桦仔21 天前
自动数据库索引压缩合并
性能调优·聚集索引