掌控 JMeter 测试节奏:Once Only Controller 让关键操作 “一步到位”
嘿,小伙伴们!假设你已经顺利安装好 JMeter,也搭建起了测试计划,还添加了线程组,那咱们这就直奔主题,深入探究一下 Once Only Controller 这个超厉害的 “小帮手”,看看它是怎么在性能测试里大显身手的。
一、引入 Once Only Controller
想象一下,你手头有个任务,就好比要给一群新入职员工发入职资料,每人都得有一份,但有些资料只需要发一次,不管后面流程循环多少次。这时候,Once Only Controller 就派上用场啦!
-
找到咱们之前建好的线程组,就像找到那群新员工,在它上面右键轻轻一点,然后顺着 “Add”->“Logic Controller”->“Once Only Controller” 这么一选,瞧,在线程组下面立马就多了一个 Once Only Controller 元件,它就像一个神奇的资料分发员,默默准备着干活。
-
这个控制器有点低调,表面上没啥花里胡哨的设置项,可别小瞧它,人家本事大着呢!一旦添加成功,它就开启了 “只执行一次” 的神秘力量。这里面可有个关键知识点,它会盯着每个线程(可以理解成每个员工),当线程第一次进入循环的时候,它就麻溜地把旗下的活儿干一遍,之后就算这个线程又循环回来,它也眼皮都不抬一下,直接忽略,绝不重复劳动。而且在多线程环境下,它的行为还和线程数、线程分配、Loop Count 这些设置有着千丝万缕的联系。比如说,线程数越多,就好比新员工越多,那它控制的采样器首次执行的总次数也就跟着增多,反正就是按照每个线程各自的首次循环来精准触发,绝不乱套。
二、添加采样器(以 HTTP 请求为例)
现在,咱们得给 Once Only Controller 找点具体事儿干,就拿常见的 HTTP 请求来说吧。
-
选中咱们刚请来的 “资料分发员”——Once Only Controller,再右键点击,按照 “Add”->“Sampler”->“HTTP Request” 这么操作,一个 HTTP 请求采样器就诞生啦。
-
接着,得给这个 HTTP 请求 “指个路”。在它的配置面板里,“Server Name or IP” 这块,就填上你要测试的目标网站域名或者 IP 地址,比如说 “www.example.com”,这就好比告诉快递员要把包裹送到哪个小区;“Port Number” 呢,一般 HTTP 用 80,HTTPS 用 443,这就是小区的大门牌号;“Path” 就填具体的请求路径,像 “/index.html”,相当于具体的楼层和房间号。这么一套连招下来,一个简单又实用的 HTTP 请求就配置妥当了。重点来了,这个请求在整个测试计划执行期间,不管外面的线程组循环多少次,它在 Once Only Controller 手下的这组虚拟用户里,就只执行一次,是不是很神奇?
三、添加监听器查看结果
活儿干完了,总得看看效果咋样吧,这时候就轮到监听器登场啦。
-
在测试计划或者线程组上右键一点,顺着 “Add”->“Listener” 去找,JMeter 就像个百宝箱,里面有好多监听器供咱们挑选,其中 “View Results Tree” 可是个明星产品,特别好用,咱就选它。
-
选好之后,点击菜单栏的 “Run”->“Start”,或者直接点工具栏上那个醒目的绿色三角形按钮,测试就风风火火地跑起来啦。等跑完,赶紧跑到 “View Results Tree” 监听器里瞅瞅,这里面全是 HTTP 请求的 “成绩单”,像请求有没有成功送达、路上花了多长时间(也就是响应时间)、服务器给咱返回了啥数据,一目了然。下面咱就来解读解读这份成绩单:
-
响应时间:这就好比你点了个外卖,从下单到拿到餐所花的时间。自然是越短越好啦,如果这个时间太长,那要么是餐厅做菜慢(服务器处理速度慢),要么就是路上堵车(网络延迟高)。
-
成功率:体现了请求成功的比例,要是接近 100%,那就跟考试拿高分一样,让人安心,说明系统运行得挺稳。要是成功率低,那可得赶紧查查,是请求配置出了岔子,还是服务器闹脾气了。
-
错误率:和成功率对着干,高错误率就像警报拉响,必须得重视起来,赶紧排查问题。
另外,还有个叫吞吐量的指标也很重要,它表示单位时间内系统处理的请求数量,吞吐量越高,说明系统这台 “机器” 运转得越快,处理能力越强。咱们根据这些数据,就能像医生看病一样,初步分析出网站的性能表现,哪里不舒服治哪里,根据测试结果调整性能瓶颈,进一步优化系统,让它跑得更快更稳。
四、更多控制器组合示例
光会用 Once Only Controller 还不够,要是能和其他控制器联手,那更是如虎添翼,能模拟出更复杂、更贴近实际工作的场景。
-
数据库查询与循环 HTTP 请求组合:比如说,咱们要模拟一个电商购物流程,用户登录前得先从数据库里获取自己的账号信息,这个数据库查询操作只需要在每个用户登录时做一次就行。这时候,就把数据库查询请求放在 Once Only Controller 中,它就像个一次性的钥匙,帮用户打开数据宝库,获取基础数据,比如用户信息表中的用户列表。而在线程组下添加个 Loop Controller,这个 Loop Controller 就像个不知疲倦的购物引导员,设置好循环次数,然后在里面添加多个不同的 HTTP 请求,像模拟用户登录、浏览商品、下单等操作。这样一来,Once Only Controller 中的数据库查询只会在每个线程首次执行时运行一次,拿到数据后,后续的循环里就一门心思执行那些不同的 HTTP 请求,完美模拟出一个用户从登录到购物的完整流程,还高效利用了数据库查询,一点不浪费资源。
-
与 Throughput Controller 结合:再假设个场景,咱们有个系统,刚启动的时候需要加载一些初始化配置,这个请求至关重要但只需要执行一次。同时呢,还有日常的数据查询请求,得按照一定的节奏来,不能一股脑全涌上去。这时候,就把系统初始化配置请求妥妥地放在 Once Only Controller 下,确保只执行一次,稳稳地给系统打好基础。对于日常数据查询请求,添加个 Throughput Controller,给它设置个合适的吞吐量值,比如每分钟 100 次请求,这就相当于给数据查询请求安排了个 “流量管理员”,让它们按照设定的频率有序执行,既满足了不同业务需求,又精准控制了请求的执行节奏,系统运行得井井有条。
原文地址:https://blog.csdn.net/a1161638320/article/details/145148656
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!