80%测试员被骗,关于jmeter 的一个弥天大谎!
jmeter是目前大家都喜欢用的一款性能测试工具,因为它小巧、简单易上手,所以很多人都愿意用它来做接口测试或者性能测试,因此,在目前企业中,使用各个jmeter的版本都有,其中以jmeter3.x、4.x的应该居多。
但是,不管大家使用jmeter的什么版本,都可能被jmeter的一个谎言给欺骗了,直到最近jmeter5.2.1版本发布,这个谎言才逐渐浮出水面。
应该大家在做性能测试的时候,都喜欢设置N个线程数,然后循环M次,以此来模拟真实同时N多个用户使用被测系统。对吧!
现实中被测系统,在N多个用户同时使用时,这N个用户应该都是相互独立,互不关联的,对吧!
我们用jmeter设置N个线程数,循环M次,目的就是想模拟这样N个互不关联的用户使用被测系统。但是,jmeter却在这个时候,给我们撒了一个弥天大谎。

大家先看这张图,我在jmeter5.1.1版本创建一个普通的线程组,设置线程数2、循环次数2,线程组下用一个“csv数据文件设置”获取登录的账户信息,一个普通的http取样器做登录,一个普通的http取样器做登录后获取用户列表。
为了找出这个‘谎言’,我在登录接口下面加个后置正则表达式提取器,提取登录成功后的session值,然后把session值放在下一个取样器的‘名称’中打印出来。
分析
如果完全等价于真实场景,那应该有4个用户登录,生成4个session,用4个不同的session去获取用户列表信息,对吧!
好,现在我们用这个脚本run一下,看下结果:

看下结果:

看到一个奇怪的事情没有?4个手机号都不相同,但是session只有2个。线程1的两次迭代使用了相同的session,线程2的两次迭代也使用了相同的session。
说明同一线程无论迭代多少次,都是使用相同的session,也就是线程第一次登录的用户生成的session一直用于后面的迭代。、
为了验证,我们的这个总结,我们修改线程数为3,迭代次数为永远,持续循环10秒钟,再看下run的结果。


看到了吗?不管迭代多少次,同一个线程下,所有用户都是使用相同的session。
原来在我们使用jmeter做性能测试时,使用多线程循环迭代多次,并不是我们理想中的真实场景。jmeter欺骗了我们。
那,这种情况,只是出现在jmeter5.1.1版本中吗?我们把相同的脚本,拷贝到jmeter3.2版本和jmeter4.0版本中,我们再来看看。


看到了吗?原来这是jmeter的家族遗传史啊,都是这样的情况。没有深入研究,你是不是一直都认为jmeter多用户迭代做性能测试,就是你理想中的模拟用户真实使用场景的呢?
这个有没有什么办法,做到你理想中的模拟用户真实的使用场景呢?
告诉大家一个好消息,在jmeter最新的5.2.1版本中,已经发生变化啦!走过、路过、不要错过,都过来看看啦!别被一个‘谎言’迷惑终身啦!
在jmeter5.2版本发布的时候,已经在 线程组 的设置中,悄悄的加上了一个复选配置项:Same user on each iteration 默认为勾选,同时,在cookie管理器、缓存管理器、授权管理器 的配置选项中,也都增加了一个 ‘Use Thread Group configuration to control clearing’ 的复选配置项。


加了这个,怎么用呢?
首先,我们的脚本和前面的脚本做法完全一样。
只是,要注意:
1、在线程组配置时,要去掉默认的Same user on each iteration 的勾选;
2、在cookie管理器配置中,要勾选 Use Thread Group configuration to control cookie clearing
做好了这些,我们来run一下看下:


这样配置后,在发起获取用户列表信息时session都是使用新登陆的用户生成的session,每次都不一样。这样,也就更真实的模拟了大量用户访问被测系统的实际情况。
好了,这个技能,你get到了吗?
感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

相关文章:
80%测试员被骗,关于jmeter 的一个弥天大谎!
jmeter是目前大家都喜欢用的一款性能测试工具,因为它小巧、简单易上手,所以很多人都愿意用它来做接口测试或者性能测试,因此,在目前企业中,使用各个jmeter的版本都有,其中以jmeter3.x、4.x的应该居多。 但是…...
Git——感谢尚硅谷官方文档
Git——尚硅谷学习笔记 第1章 Git 概述1.1 何为版本控制1.2 为什么需要版本控制1.3 版本控制工具1.4 Git 简史1.5 Git 工作机制1.6 Git 和代码托管中心 第2章 Git 安装第 3 章 Git 常用命令3.1 设置用户签名3.2 初始化本地库3.3 查看本地库状态3.4 添加暂存区3.4.1 将工作区的文…...
Java WebSocket框架
引言 随着互联网和移动互联网的迅猛发展,实时通信成为了应用程序的一项重要能力。WebSocket作为一种在Web上实现双向通信的协议,极大地丰富了Web应用程序的交互方式。而在Java领域,也有许多优秀的WebSocket框架可供选择,本文将介…...
C#实现本地服务器客户端私聊通信
(一)需求 在游戏中我们经常能够看到玩家与玩家之间可以进行私聊,在QQ或微信中最基本的功能就是用户与用户之间的通信。抽象成计算机网络,就是两个客户端通过服务器进行私聊通信,两个客户端可以互相看到对方发送过来的信…...
PyTorch 之 Dataset 类入门学习
PyTorch 之 Dataset 类入门学习 Dataset 类简介 PyTorch 中的 Dataset 类是一个抽象类,用来表示数据集。通过继承 Dataset 类可以进行自定义数据集的格式、大小和其它属性,供后续使用; 可以看到官方封装好的数据集也是直接或间接的继承自 …...
Java update scheduler
引言 Java 更新调度器是 Java 中的一个特性,可以自动化 Java 应用程序的更新过程。它提供了一种方便的方式来安排 Java 应用程序的更新,确保其与最新的功能、错误修复和安全补丁保持同步。本文将深入介绍如何使用 Java 更新调度器,并解释它对…...
常见树种(贵州省):006栎类
摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、麻栎 …...
拓扑排序-
有向无环图是拓扑排序 拓扑排序将图中所有的顶点排成一个线性序列,使得所有的有向边均从序列的前面指向后面。 拓扑排序使用深度优先搜索来实现,图中有环则无法进行拓扑排序 一个有向图,如果图中有入度为0的点,就把这个点删掉…...
Oracle数据库如何定位trace file位置
用一个示例来说明吧。 在导入master key时,出现错误: ADMINISTER KEY MANAGEMENTIMPORT KEYS WITH SECRET "my_secret"FROM /tmp/export.expIDENTIFIED BY keypwd5 WITH BACKUP; ADMINISTER KEY MANAGEMENT * ERROR at line 1: ORA-46655…...
电脑盘符错乱,C盘变成D盘怎么办?
在一些特殊情况下,磁盘盘符会出现错乱,C盘可能会变成D盘。那么,这该怎么办呢?下面我们就来了解一下。 通过磁盘管理更改盘符 磁盘管理是Windows自带的工具,它位于“计算机管理”的控制台中。管理硬盘及其所包含的卷或…...
Android WMS——客户端输入事件处理(十九)
前面的文章我们介绍了 WMS 中的输入服务的启动及事件处理,这一篇我们来看一下客户端对输入事件的处理。 一、事件初始化 事件的初始化就是在添加窗口的过程。 1、ViewRootImpl 源码位置:/frameworks/base/core/java/android/view/ViewRootImpl.java public void setView(…...
Python基础学习__测试报告
# 使用pycharm生成报告:只有在单独执行一个TestCase文件时可以生成,使用TestSuite等就不能用了 # 使用第三方的测试报告:例如:HTMLTestRunner第三方类库 #使用HTMLTestRunner这个执行对象# 1.获取第三方的测试运行类Runner模块(一个py文件),将其放在代码目录下 # 2.导包:unitte…...
bclinux aarch64 ceph 14.2.10 云主机 4节点 fio
ceph -s 由于是基于底层分布式存储的云主机,数据仅供参考 本地云盘性能 direct1 1M读取 IOPS134, BW134MiB/s [rootceph-client rbd]# cd / [rootceph-client /]# fio -filenamefio.bin -direct1 -iodepth 128 -thread -rwread -ioenginelibaio -bs1M -size10G -n…...
智能座舱架构与芯片- (14) 测试篇 上
一、 验证平台概要 1.1 测试软件方法论 “软件定义汽车” 的时代,软件在整车制造中的重要性日渐凸显。但不同于其他行业的软件开发,汽车行业有自己独特的软件开发要求。首先是需求严谨、需求层次复杂、需要通过专业的工具进行管理;其次开发…...
【Django-DRF用法】多年积累md笔记,第3篇:Django-DRF的序列化和反序列化详解
本文从分析现在流行的前后端分离Web应用模式说起,然后介绍如何设计REST API,通过使用Django来实现一个REST API为例,明确后端开发REST API要做的最核心工作,然后介绍Django REST framework能帮助我们简化开发REST API的工作。 全…...
Redis主从复制,哨兵和Cluster集群
主从复制: 主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份(和同步),以及对于读操作的负载均衡和简单的故障恢复。 缺陷:故障恢复无法自动化…...
Linux嵌入式I2C协议笔记
硬件: 1.I2C结构 在一个SOC中有一个或者多个I2C控制器,一个I2C控制器可以连接一个或多个I2C设备。 I2C总线需要两条线,时钟线SCL和数据线SDA 2.I2C传输数据格式 开始信号(S):SCL为高电平时,S…...
科技的成就(五十三)
503、任天堂首次公开 Switch 2016 年 10 月 20 日,任天堂首次公开 Switch 正式名称及造型。Switch 是任天堂推出的混合型游戏机,可作为家用游戏机,也可作为便携式掌机。Switch 在开发过程中就以代号 NX 而闻名,成为当年的现象级产…...
Ubuntu22.04 编译 AOSP
在 Ubuntu 22.04 系统上搭建环境编译 AOSP(Android Open Source Project)需要进行以下步骤: 1, 更新系统:首先,确保您的 Ubuntu 22.04 系统已经更新到最新版本。可以使用以下命令进行系统更新: sudo apt update sudo apt upgrade2,安装必要的软件包:AOSP 编译需要一些…...
【计算机网络】多路复用的三种方案
文章目录 1. selectselect函数select的工作特性select的缺点 2. pollpoll函数poll与select的对比 3. epollepoll的三个接口epoll的工作原理epoll的优点LT和ET模式epoll的应用场景 🔎Linux提供三种不同的多路转接(又称多路复用)的方案…...
保姆级教程:用UniApp给微信小程序加个‘分享到朋友圈’按钮(附完整代码与适配方案)
UniApp实战:微信小程序分享功能全解析与朋友圈适配指南 在移动互联网时代,社交分享已成为小程序获客的重要渠道。数据显示,具有完善分享功能的小程序用户留存率比普通小程序高出37%。本文将带你从零实现UniApp小程序的两种核心分享能力——好…...
Vim插件备份恢复终极指南:Vundle.vim确保配置永不丢失
Vim插件备份恢复终极指南:Vundle.vim确保配置永不丢失 【免费下载链接】Vundle.vim Vundle, the plug-in manager for Vim 项目地址: https://gitcode.com/gh_mirrors/vu/Vundle.vim Vundle.vim作为Vim的插件管理器,不仅能帮助用户轻松管理各类插…...
3个隐藏技巧解锁KeymouseGo:让电脑替你打工的免费神器
3个隐藏技巧解锁KeymouseGo:让电脑替你打工的免费神器 【免费下载链接】KeymouseGo 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input 项目地址: https://gitcode.com/gh_mirrors/ke/KeymouseGo 你是否也…...
如何3分钟搭建免费H5页面编辑器:零代码制作专业移动端页面
如何3分钟搭建免费H5页面编辑器:零代码制作专业移动端页面 【免费下载链接】h5maker h5编辑器类似maka、易企秀 账号/密码:admin 项目地址: https://gitcode.com/gh_mirrors/h5/h5maker 还在为制作精美的H5页面而发愁吗?想要像专业设计…...
告别‘变砖’恐慌:详解STM32 IAP升级中BootLoader+Setting+App+Download分区方案的实战配置
STM32 IAP升级防变砖全攻略:BootLoaderSettingAppDownload分区架构深度解析 当你的STM32设备在凌晨3点的工厂里突然变砖,而客户的生产线因此停摆——这种噩梦般的场景,正是我们今天要彻底解决的痛点。不同于市面上泛泛而谈的BootLoader教程&a…...
构建个人数字图书馆:novel-downloader 小说下载解决方案
构建个人数字图书馆:novel-downloader 小说下载解决方案 【免费下载链接】novel-downloader 一个可扩展的通用型小说下载器。 项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader novel-downloader 是一个基于 TypeScript 构建的可扩展浏览器脚本…...
如何用Python的SALib库在10分钟内完成模型敏感性分析
如何用Python的SALib库在10分钟内完成模型敏感性分析 【免费下载链接】SALib Sensitivity Analysis Library in Python. Contains Sobol, Morris, FAST, and other methods. 项目地址: https://gitcode.com/gh_mirrors/sa/SALib 你是否曾经面对复杂的数学模型࿰…...
小红书水印怎么去掉保存照片?2026官方方法和第三方工具实测指南
打开小红书看到喜欢的图片,想保存下来却发现水印挡住了关键内容,这是很多小红书用户的日常烦恼。本文将为你详细介绍小红书水印去除的多种方法,包括官方原生功能和第三方工具方案,帮助你轻松保存高清照片。小红书官方保存方法小红…...
MacBook Air M4到手后,我第一时间用它跑了Llama 3.1:本地大模型体验报告
MacBook Air M4实战Llama 3.1:移动端大模型体验全记录 当这台午夜色的MacBook Air M4从包装盒滑出的瞬间,我就知道该给本地大模型来个"压力测试"了。作为每天在咖啡厅和地铁间穿梭的开发者,真正关心的从来不是发布会PPT上的参数对比…...
TIDAL音乐下载器终极指南:tidal-dl-ng让您轻松收藏高品质音乐
TIDAL音乐下载器终极指南:tidal-dl-ng让您轻松收藏高品质音乐 【免费下载链接】tidal-dl-ng TIDAL Media Downloader Next Generation! Up to HiRes / TIDAL MAX 24-bit, 192 kHz. 项目地址: https://gitcode.com/gh_mirrors/ti/tidal-dl-ng 还在为TIDAL平台…...
