掌控 JMeter 测试节奏:Once Only Controller 让关键操作 “一步到位”

嘿,小伙伴们!假设你已经顺利安装好 JMeter,也搭建起了测试计划,还添加了线程组,那咱们这就直奔主题,深入探究一下 Once Only Controller 这个超厉害的 "小帮手",看看它是怎么在性能测试里大显身手的。

一、引入 Once Only Controller

想象一下,你手头有个任务,就好比要给一群新入职员工发入职资料,每人都得有一份,但有些资料只需要发一次,不管后面流程循环多少次。这时候,Once Only Controller 就派上用场啦!

  1. 找到咱们之前建好的线程组,就像找到那群新员工,在它上面右键轻轻一点,然后顺着 "Add"->"Logic Controller"->"Once Only Controller" 这么一选,瞧,在线程组下面立马就多了一个 Once Only Controller 元件,它就像一个神奇的资料分发员,默默准备着干活。

  2. 这个控制器有点低调,表面上没啥花里胡哨的设置项,可别小瞧它,人家本事大着呢!一旦添加成功,它就开启了 "只执行一次" 的神秘力量。这里面可有个关键知识点,它会盯着每个线程(可以理解成每个员工),当线程第一次进入循环的时候,它就麻溜地把旗下的活儿干一遍,之后就算这个线程又循环回来,它也眼皮都不抬一下,直接忽略,绝不重复劳动。而且在多线程环境下,它的行为还和线程数、线程分配、Loop Count 这些设置有着千丝万缕的联系。比如说,线程数越多,就好比新员工越多,那它控制的采样器首次执行的总次数也就跟着增多,反正就是按照每个线程各自的首次循环来精准触发,绝不乱套。

二、添加采样器(以 HTTP 请求为例)

现在,咱们得给 Once Only Controller 找点具体事儿干,就拿常见的 HTTP 请求来说吧。

  1. 选中咱们刚请来的 "资料分发员"------Once Only Controller,再右键点击,按照 "Add"->"Sampler"->"HTTP Request" 这么操作,一个 HTTP 请求采样器就诞生啦。

  2. 接着,得给这个 HTTP 请求 "指个路"。在它的配置面板里,"Server Name or IP" 这块,就填上你要测试的目标网站域名或者 IP 地址,比如说 "www.example.com",这就好比告诉快递员要把包裹送到哪个小区;"Port Number" 呢,一般 HTTP 用 80,HTTPS 用 443,这就是小区的大门牌号;"Path" 就填具体的请求路径,像 "/index.html",相当于具体的楼层和房间号。这么一套连招下来,一个简单又实用的 HTTP 请求就配置妥当了。重点来了,这个请求在整个测试计划执行期间,不管外面的线程组循环多少次,它在 Once Only Controller 手下的这组虚拟用户里,就只执行一次,是不是很神奇?

三、添加监听器查看结果

活儿干完了,总得看看效果咋样吧,这时候就轮到监听器登场啦。

  1. 在测试计划或者线程组上右键一点,顺着 "Add"->"Listener" 去找,JMeter 就像个百宝箱,里面有好多监听器供咱们挑选,其中 "View Results Tree" 可是个明星产品,特别好用,咱就选它。

  2. 选好之后,点击菜单栏的 "Run"->"Start",或者直接点工具栏上那个醒目的绿色三角形按钮,测试就风风火火地跑起来啦。等跑完,赶紧跑到 "View Results Tree" 监听器里瞅瞅,这里面全是 HTTP 请求的 "成绩单",像请求有没有成功送达、路上花了多长时间(也就是响应时间)、服务器给咱返回了啥数据,一目了然。下面咱就来解读解读这份成绩单:

  • 响应时间:这就好比你点了个外卖,从下单到拿到餐所花的时间。自然是越短越好啦,如果这个时间太长,那要么是餐厅做菜慢(服务器处理速度慢),要么就是路上堵车(网络延迟高)。

  • 成功率:体现了请求成功的比例,要是接近 100%,那就跟考试拿高分一样,让人安心,说明系统运行得挺稳。要是成功率低,那可得赶紧查查,是请求配置出了岔子,还是服务器闹脾气了。

  • 错误率:和成功率对着干,高错误率就像警报拉响,必须得重视起来,赶紧排查问题。

另外,还有个叫吞吐量的指标也很重要,它表示单位时间内系统处理的请求数量,吞吐量越高,说明系统这台 "机器" 运转得越快,处理能力越强。咱们根据这些数据,就能像医生看病一样,初步分析出网站的性能表现,哪里不舒服治哪里,根据测试结果调整性能瓶颈,进一步优化系统,让它跑得更快更稳。

四、更多控制器组合示例

光会用 Once Only Controller 还不够,要是能和其他控制器联手,那更是如虎添翼,能模拟出更复杂、更贴近实际工作的场景。

  1. 数据库查询与循环 HTTP 请求组合:比如说,咱们要模拟一个电商购物流程,用户登录前得先从数据库里获取自己的账号信息,这个数据库查询操作只需要在每个用户登录时做一次就行。这时候,就把数据库查询请求放在 Once Only Controller 中,它就像个一次性的钥匙,帮用户打开数据宝库,获取基础数据,比如用户信息表中的用户列表。而在线程组下添加个 Loop Controller,这个 Loop Controller 就像个不知疲倦的购物引导员,设置好循环次数,然后在里面添加多个不同的 HTTP 请求,像模拟用户登录、浏览商品、下单等操作。这样一来,Once Only Controller 中的数据库查询只会在每个线程首次执行时运行一次,拿到数据后,后续的循环里就一门心思执行那些不同的 HTTP 请求,完美模拟出一个用户从登录到购物的完整流程,还高效利用了数据库查询,一点不浪费资源。

  2. 与 Throughput Controller 结合:再假设个场景,咱们有个系统,刚启动的时候需要加载一些初始化配置,这个请求至关重要但只需要执行一次。同时呢,还有日常的数据查询请求,得按照一定的节奏来,不能一股脑全涌上去。这时候,就把系统初始化配置请求妥妥地放在 Once Only Controller 下,确保只执行一次,稳稳地给系统打好基础。对于日常数据查询请求,添加个 Throughput Controller,给它设置个合适的吞吐量值,比如每分钟 100 次请求,这就相当于给数据查询请求安排了个 "流量管理员",让它们按照设定的频率有序执行,既满足了不同业务需求,又精准控制了请求的执行节奏,系统运行得井井有条。

相关推荐
Freed&2 天前
《没有架构图?用 netstat、ss、tcpdump 还原服务连接与数据流向》
网络·测试工具·tcpdump
CesareCheung2 天前
JMeter分布式压力测试
分布式·jmeter·压力测试
测试界清流2 天前
jmeter使用技巧
jmeter
春时似衿里2 天前
jmeter配置数据库连接步骤
数据库·jmeter
新知图书2 天前
JMeter的安装部署
jmeter
程序员杰哥2 天前
什么是Jmeter? Jmeter工作原理是什么?
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·测试用例
乐神嘎嘎嘎2 天前
Jmeter测试
jmeter
卓码软件测评2 天前
第三方软件测试机构【性能测试工具用LoadRunner还是JMeter?】
java·功能测试·测试工具·jmeter·性能优化
鱼鱼说测试2 天前
如何用Postman做接口自动化测试
测试工具·postman
瑞瑞绮绮2 天前
玩转PostMan之调试天气接口-心知天气 API
测试工具·postman