以“删除类别”来说明Jmeter的简单使用

2 篇文章 0 订阅

写在最前页面:

本篇BLOG仅仅是根据我自己的实际经历,来说明Jmeter的一些基本用法,并无恶意,谢谢!

前段时间,无意中发现CSDN的博客支持了Markdown语法,于是我就使用CSDN的“博客搬家”功能,将博客从ITEye迁移至CSDN了。迁移之后,一直没有时间来打理。最近,得空看了一眼搬家到CSDN的博客,感觉很多方面还不错,但是有一个方面让我很郁闷,就是,之前在ITEYE中的博客的“tag”,搬迁到CSDN之后,全部变成了“博客类别”,这直接导致我的博客类别有600多个。。。

咋一看,觉得没多少啊,但是请大家注意看上图右边的滚动条。此刻我的内心是崩溃的。:(
这么多可咋办呢?删除呗。但是,CSDN又没有提供批量删除的功能,于是,我只能一个一个的手动删除起来了。刚删了没几个,觉得这不对啊。我大概算了一下,删除一个标签,平均下来算它花费3.5秒。那么,我删除这600个标签,总共要的时间至少为:

3.5 * 600 / 60 = 35 分钟

转身一想,身为程序猿的我,处理这种事情怎么能这么LOW呢。
于是乎,想起了之前测试web应用时所使用过的神器Jemeter,同时有一款配合使用的软件badboy。它们正适合此场景来使用。哈哈。
下面开始步入正题,说明一下,如何使用Jemeter来批量删除类别。

使用badboy录制删除一个博客类别的脚本


参照上图,先在红框框处,输入CSDN的登陆页面的地址,然后,点击它右边的的绿色小箭头,就可以打开CSDN的登陆页面了。
接下来,在页面中完成登陆操作,并跳转至博客类别管理页面,然后,删除一个类别。这之后,点击,badboy工具栏中的“红色按钮”来停止录制脚本。

badboy录制的脚本导出为Jemeter的格式

Jemeter打开导出的脚本


从图中可以看到,这个脚本有很多步骤是我们不需要的,比如,“pos.baidu.com/acom”这种的,我们需要把它从脚本中删除。
最终,我将它删除成如下这个样子:
登陆CSDN 请求

另外两个HTTP请求分别是:

获取所有博客 请求(其实,这个请求也可以删除的)

删除指定 博客类别 请求

另外,我为了下面好描述,在脚本了增加了一个叫“察看结果树”的监听器,它的作用就是可以把你发送的每个请求都记录下来,然后你可以查看每个请求的具体状态。

我本以为修改一下所需删除的博客类别的ID,然后运行这个脚本就可以了的。但是,没想法,我连登陆都登陆不上去。

从图中可以看出,当我们执行第二个请求的时候,CSDN返回的是“帐号登录”页面,也就是我执行了这个脚本之后,CSDN都没有登陆得上,更别谈删除博客类别了。

可是,这是为什么呢?这个是用badboy录制的脚本啊,为什么再执行就不行了呢?
于是,我重新看了一下登陆CSDN请求,看到了它所需要的参数里,有“lt”“execution”这两个参数比较可疑,由于调查了一下。

我用Chrome打开了CSDN的登陆页面,F12打开Chrome的控制台,定位到它的登陆按钮,有一行赤裸裸的注释告诉了我秘密:

我几次刷新页面之后,这两个参数的值是会发生变化的。
所以,我自然而然的想到一个方法:先发送一个 登陆请求, 然后从这个请求的返回中 提取出所需要的两个参数的值,然后再次发送一个 登陆 请求,并使用提取出来的值作为参数值发送给服务器
那么,问题来了,要怎么样来提取这两个参数的值呢?
还好,之前测试的时候,使用过 正则表达式 来从请求的响应中提取 相关内容。

首先,添加一个 HTTP请求 sampler


然后,在它的下面增加两个“正则表达式提取器”这个后置处理器




先简单说一下正则表达式提取器的参数的意义:
- 引用名称:就是声明一个变量,供其他组件来调用,比如上面声明了一个lt的引用名称,那么,那他组件便可以来引用它,引用的方式是 ${xxx},比如,${lt}
- 正则表达式:用来提取指定内容的正则表达式
- 模板:要返回的值的格式,可以使用$number$来引用正则表达式返回的某个组。像我上面的那个$1$,表示仅仅返回正则表达式返回的第1组的内容。如果改成$1$–$1$,则表示,用连接正则表达式的第1组的内容,并返回。
PS:正则表达式的相关知识在此不作说明,请自行查阅。

上面增加正则表达式提取器之后,下面,我们需要修改一个CSDN LOGIN这个请求的参数值了

好了,经过以上修改,重新运行这个脚本,可以看到,的确可以正常删除指定的博客类别了。

可是,感觉好像还有什么不对劲的样子。。。
不错,我们要删除的是600多个 类别,如果每个类别都要这么执行一下脚本,那和从浏览器上一个一个的删除有什么区别呢?我们要的是批量删除!批量删除!

这个时候,又得感谢之前测试的工作了,因为Jmeter提供了一种方法来实现批量操作啊,简单来说,就是把所有要删除的类别的ID列在一份CSV文件中,然后让Jmeter来遍历这个CSV文件进行批量删除。下面来说使用方法。

添加“CSV Data Set Config”这个元件



下面说一下“CSV Data Set Config”这个元件各个参数的意义
- FileName:就是你要使用的CSV文件的路径
- File encoding:为了避免乱码问题,请填写与你CSV文件所使用的编码一样的编码格式
- Variable Names:将CSV的每一行,按指定分隔符分割之后,每个分割结果对应的变量的名称
- Delimiter:每一行分割所使用的分割符
- 其他的几个我也没怎么具体了解过,请自行查阅

CSV文件的内容为


总共600多个,这里只截了20来个

好了,修改完毕,重新跑一下脚本吧:


不对啊,应该是删除600多个呢啊,怎么还是只发送了一个 删除 请求啊,这不科学啊。

好吧,先来看一眼 线程组的配置:

从图里可以看出,这个线程组里只有一个线程,而且只循环一次就结束了。所以啊,即使我们配置了从CSV文件里读取,但是因为每次运行脚本时,只有一个线程去文件里读取,所以就只会发送一个请求啊。

这个时候,你可以想着去修改线程数或者循环次数来达到读取CSV文件中所有行的内容。这么做可以是可以,但是不推荐这么做。为什么呢?因为这样改了之后,你每循环一次,就要把整个流程都要跑一遍,从登陆删除,都要跑一次,这样很浪费,别搞得CSDN把你的IP给封了。

那么,有没有什么办法来遍历CSV中的所有行呢?当然有啦,这个时候,就轮到“循环控制器”上场了。


上图中的循环次数只要等于你的待删除的类别的数量就可以了。

OK,到此结束,我们最后来看一下,这个时候,脚本运行的最终结果:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值