当前位置: 首页 > news >正文

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到了吗?

 感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

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

 

http://www.lryc.cn/news/238968.html

相关文章:

  • Git——感谢尚硅谷官方文档
  • Java WebSocket框架
  • C#实现本地服务器客户端私聊通信
  • PyTorch 之 Dataset 类入门学习
  • Java update scheduler
  • 常见树种(贵州省):006栎类
  • 拓扑排序-
  • Oracle数据库如何定位trace file位置
  • 电脑盘符错乱,C盘变成D盘怎么办?
  • Android WMS——客户端输入事件处理(十九)
  • Python基础学习__测试报告
  • bclinux aarch64 ceph 14.2.10 云主机 4节点 fio
  • 智能座舱架构与芯片- (14) 测试篇 上
  • 【Django-DRF用法】多年积累md笔记,第3篇:Django-DRF的序列化和反序列化详解
  • Redis主从复制,哨兵和Cluster集群
  • Linux嵌入式I2C协议笔记
  • 科技的成就(五十三)
  • Ubuntu22.04 编译 AOSP
  • 【计算机网络】多路复用的三种方案
  • 供应链和物流的自动化新时代
  • Python与ArcGIS系列(九)自定义python地理处理工具
  • Nginx部署前端项目
  • 根据文件类型进行下载, 文档/图片
  • 赋范线性空间3
  • XSLVGL2.0 User Manual 缩略图生成器(v2.0)
  • 练习八-利用有限状态机进行时序逻辑的设计
  • WebAssembly照亮了 Web端软件的未来
  • PDF文件无密码,如何解密?
  • 搜维尔科技:Movella Xsens MVN LINK 实际应用,一镜到底!
  • wsl安装ubuntu的问题点、处理及连接