JMeter 线程组全家桶教程

发布时间:2024-12-25 21:54

课程形式多样,如讲座、小组活动和在线教程 #生活知识# #生活心理学# #生活技能教育# #自我照顾课程#

宝子们,今天咱就来唠唠 JMeter 里那些超重要的线程相关的玩意儿,学会了它们,你就能在性能测试的世界里 “横冲直撞” 啦!

一、线程组 —— 性能测试的主力军

想象一下,你开了一家超级火爆的奶茶店,门口排着好多人等着买奶茶,这些人就相当于 JMeter 里的线程,而把这些人管理起来的队伍就是线程组啦。

怎么创建线程组呢?

在 JMeter 的界面上,找到 “线程组” 这个元件,右键点击添加就行。

关键参数大揭秘

名称:这个就像是给你的线程组取个名字,方便你在复杂的测试计划里区分不同的线程组。比如说你可以叫 “登录用户线程组”“查询功能线程组” 等,随你心意,只要能让你一眼就知道这个线程组是干啥的就行。 注释:这就像是给线程组写个小备注,你可以在这里详细说明这个线程组的用途、设置的参数为啥是这样、有啥特殊的考虑等等。比如 “这个线程组用于模拟 100 个用户同时登录系统,Ramp-Up 时间设为 10 秒是为了逐渐增加压力,更接近真实场景”,以后你自己或者同事再看这个测试计划的时候,就能很快明白你的意图。 线程数(模拟的用户数量):比如说你想看看你的奶茶店同时接待 10 个顾客会咋样,那就把线程数设成 10。这就意味着同时有 10 个虚拟用户在向你的系统(奶茶店)发起请求(买奶茶)。 Ramp-Up 时间(启动时间间隔):不能一下子让 10 个人全涌进店里吧,得有个先后顺序,不然店员(服务器)会忙不过来。Ramp-Up 时间就是干这个的,比如你设成 2 秒,那就是说这 10 个用户会在 2 秒内陆续进店,平均下来每秒进来 5 个。这样是不是就合理多了? 循环次数: 永远:这个选项的意思就是线程会一直循环执行下去,除非你手动停止测试。就好像有个特别爱喝奶茶的顾客,永远都不会觉得喝够,会一直重复买奶茶的操作,直到你喊停。这种情况适用于你要长时间对系统进行压力测试,看看系统在持续负载下的表现,比如测试服务器能承受多长时间的高并发访问而不崩溃。 具体数字:比如说设成 3,那每个用户就会像个执着的奶茶爱好者一样,把买奶茶的操作重复 3 次。这通常用于你只想让用户进行有限次数的操作,然后观察系统在这几次操作过程中的性能情况,比如测试一个交易流程,用户完成一次交易需要进行 3 个步骤,你就可以设循环次数为 1,让每个用户完整地执行一次交易流程。 在取样器错误后要执行的动作: 继续:如果某个取样器(就像是顾客点奶茶的某个步骤,比如下单)出错了,线程还是会继续执行后面的取样器(比如等待取奶茶、喝奶茶评价等步骤)。这就好像顾客下单的时候出了点小问题,但还是会接着等奶茶、喝奶茶然后评价,不会因为下单出错就直接走了。这种情况适用于你想测试系统在部分请求出错的情况下,整体的稳定性和容错性,比如网站的某些页面加载出错了,但用户还能不能继续使用其他功能。 开始下一次循环:一旦取样器出错,这个线程就直接开始下一次循环,忽略这次出错的情况。就好像顾客下单出错后,直接回到队伍开头,重新开始整个买奶茶的流程。这对于你想测试系统在面对频繁出错的情况下,能否快速恢复并继续处理其他用户请求很有用,比如服务器出现短暂故障后恢复,看用户是否能继续正常使用系统。 停止线程:取样器一出错,这个线程就停止不干了,就像顾客因为下单出错,直接生气地离开了奶茶店。这种情况适用于你要严格检测每个请求都必须成功的场景,如果有一个失败就认为整个测试用例失败,比如一些对数据准确性要求极高的金融交易系统测试。 停止测试:只要有一个取样器出错,整个测试就停止了,所有线程都停下来。这就像奶茶店只要有一个顾客遇到问题,就直接关门整顿了。一般用于你在进行初步的功能测试时,如果发现有严重问题,就直接停止测试去修复问题,避免浪费时间和资源在一个明显有问题的测试上。 立即停止测试:这个就比较 “强硬” 啦,一旦有取样器出错,不仅当前线程停止,整个测试会立刻终止,连正在执行的其他线程也会马上停下来。这就好像奶茶店刚一开业,有一个顾客在点单的时候出了大问题,老板觉得问题太严重了,直接把店门关上,所有人都不许再进行任何操作,先解决这个问题再说。这种情况适用于你发现了一个可能会影响整个系统稳定性或者安全性的严重问题,需要马上停止一切操作来排查和解决,避免造成更严重的后果,比如测试过程中发现了数据库连接泄露这样的严重问题,就需要立即停止测试来修复。 Same user on each iteration(每次迭代使用相同用户):如果勾选了这个选项,那么在每次循环中,线程都会使用相同的用户相关信息(比如登录的用户名和密码)来进行请求。这就好像一个固定的老顾客,每次来奶茶店都用同样的会员卡买奶茶。这种情况适用于你要测试系统对于特定用户的多次操作的处理情况,比如测试一个用户反复进行登录、查询个人信息、修改密码等操作时,系统对这个用户的状态管理是否正确。

调度器

持续时间:这就是说你这个线程组要运行多长时间。比如说你想让你的 “奶茶店顾客线程组” 运行 1 个小时,那就把持续时间设成 3600 秒(1 小时 = 3600 秒)。这样你就能测试系统在这 1 个小时的持续负载下的性能表现,看看服务器会不会在长时间运行后变慢或者出现其他问题,就像观察奶茶店在一整天的营业时间里,随着顾客越来越多,会不会出现忙不过来的情况。 启动时间:你可以设置线程组在测试开始后延迟多久启动。比如你想让 “奶茶店顾客线程组” 在测试开始 10 分钟后再开始进店买奶茶,那就把启动时间设成 600 秒(10 分钟 = 600 秒)。这对于模拟真实场景中用户不是同时到达,而是陆续在一段时间内开始使用系统的情况很有用,比如一个在线学习平台,用户可能在课程开始后的不同时间点陆续登录进入课堂。

啥时候用线程组呢?

只要你想模拟一堆用户同时对一个系统做同样的操作,比如好多人同时登录一个网站、查询数据库、调用接口啥的,就用线程组。简单粗暴又好用!

二、Setup 线程组 —— 幕后英雄登场

这个 Setup 线程组就像是在奶茶店开业前,提前来帮忙准备食材、打扫卫生、启动设备的那些工作人员。

创建方法和位置

同样在 JMeter 里,找到对应的地方添加就行,它一般在测试计划的开头部分。

共性和关键参数

名称和注释:和线程组一样,给它取个合适的名字和写清楚注释,方便你知道它是用来做什么前期准备工作的。比如 “数据库连接初始化 Setup 线程组”,注释里写 “用于创建数据库连接池,加载初始数据,为后续的测试线程组提供稳定的数据库环境”。 循环次数:通常情况下,Setup 线程组只需要执行一次就够了,因为那些前期准备工作不需要反复做。所以循环次数一般就设为 1,就像奶茶店开业前的准备工作,只需要在开业前做一次,不需要每天开业都重新准备一遍。 在取样器错误后要执行的动作:一般来说,如果 Setup 线程组里的取样器出错了,整个测试就应该停止,因为前期准备工作都没做好,后面的测试也就没法正常进行了。所以通常会选择 “停止测试” 这个选项,就像奶茶店如果准备食材的时候发现食材都坏了,那就直接别开业了,先解决食材问题。

它的作用是啥呢?

比如说你在测试一个电商网站,在正式开始大量用户购物之前,你得先创建好数据库连接、加载商品数据、初始化一些配置信息吧。这些在正式测试前只需要做一次的准备工作,就交给 Setup 线程组来搞定。它会在所有的线程组(那些来买东西的顾客)开始之前,默默地把这些前期工作做好,确保测试环境一切就绪。

三、Teardown 线程组 —— 完美收场的保障

等奶茶店打烊了,是不是得有人留下来收拾垃圾、清理柜台、关闭设备呢?这就是 Teardown 线程组的活儿。

创建方法和位置

还是在 JMeter 界面上找到它,添加到合适的位置,通常在测试计划的最后面。

共性和关键参数

名称和注释:同样要取个清晰明了的名字和写好注释,比如 “资源清理 Teardown 线程组”,注释写 “用于关闭数据库连接、清理临时文件、释放系统资源等操作,保证测试环境干净整洁,以便下次测试使用”。 循环次数:一般也只需要执行一次,因为收尾工作在测试结束后做一次就够了,不需要反复清理。所以循环次数通常设为 1,就像奶茶店打烊后,只需要打扫一次卫生,不需要反复打扫。 在取样器错误后要执行的动作:这里如果出错了,其实也没有太多可以挽回的办法,因为测试都已经结束了。不过你可以根据情况选择记录下错误信息,以便后续查看是什么原因导致清理工作没做好,可能会影响下次测试。一般可以选择 “继续”,让它尽量完成其他能完成的清理任务,同时把错误记录下来。

作用可不小哦

在所有的测试线程(顾客)都完成了自己的任务(买完奶茶走了)之后,Teardown 线程组就开始行动了。它会关闭数据库连接、清理临时文件、释放系统资源等。要是没有它,你的测试环境可能就会变得乱糟糟的,就像奶茶店关门后没人收拾一样,下次再想用就不方便了。 宝子们,这三个线程组元件在 JMeter 里可是各司其职,搭配起来用,就能把性能测试这件事儿干得漂漂亮亮的!赶紧去试试吧,说不定你就能发现你软件系统里那些隐藏的性能问题,然后一举攻克,成为公司里的性能测试大神!

网址:JMeter 线程组全家桶教程 https://www.yuejiaxmz.com/news/view/566875

相关内容

jmeter基础教程
二、Jmeter Web压测
Apache高并发测试工具JMeter
使用 JMeter 进行压力测试
马桶盖安装教程全过程是怎样的
压测工具哪个好?LoadRunner、Jmeter、Locust、Wrk 全方位对比....
Jmeter进行压力测试不为人知的秘密
压力测试+接口测试(工具jmeter)
Jmeter压力测试thread group中ramp
压力测试工具jmeter

随便看看