Jmeter是一款强大的图形界面压力测试工具,完全用Java写成,关于Jmeter的介绍,网上其实有不少的文章,我原本是不想再重复写类似文章的,但我发现有些很关键性的,在我们测试中一定会用到的一些设置或操作很少见到有文章写清楚的,比如有这样的一个常见问题:如何对一个网站的多个链接进行压力测试?因为通常情况下,我们要测试的不是一个链接,假如我们测试的是某一网站的话,而这些链接我们通常都是写入到一个文本文件中,测试的过程中,会随机读取文件中的链接进行压力测试,我们所熟知的一些压力测试工具,例如Siege就可以这样干。51Testing软件测试网? @J~[
在我使用Jmeter的过程中,我发现我周围有之前使用过Jmeter的同事,但即使如此,他们对如何将多个链接写入到文本文件中并随机读取进行压力测试也不清楚,故我打算还是在有空的时候写一篇这样的文章,以方便使用者。51Testing软件测试网DXgd1et0Nh5Y
一、 官方网址
-Q!R8uv#E j`5Y0http://jakarta.apache.org/jmeter/
^m Quhp0二、 运行
:LDG/]Gk
ZN0下载解压后,在目录jakarta-jmeter-2.4\bin下可以见到一个jmeter.bat文件,双击此文件,打开初始界面如下图:
&}9k'n7pr{.lE051Testing软件测试网&c:s FqH
K!X
注意的是上面显示的是中文,如果你想使用其他语言,比如英文,那么通过菜单选项->选择语言->英文即可,当然转为中文也是同样操作。
S%Q8H:BX0三、 运行预准备51Testing软件测试网z:nM)_ aA.OD
我们现在要对子猴博客来进行一番压力测试,压力测试对象为随机的几个网页链接,这几个链接是写在一个文本文件中的,在压力测试的时候会随机读取。
uY6rrD01、 建立一个线程组,如下图
2AAw,cOzn051Testing软件测试网fV?4]1|cA
为什么要建立线程组?原因很简单,因为我们要模拟多个线程(用户)来访问网站。
+D[@ ^^n0线程组创建界面如下图:
ON,c-yhYU
U1g051Testing软件测试网7U/y.Pb*N8FF
名称可以随意填写,默认选中“继续”即可。51Testing软件测试网V9u7r+AW4I
线程属性部分中,线程数是启动多少个线程,我这里填写的是60,Ramp-Up Period (in seconds)表示线程之间间隔多少时间允许,单位是秒,比如如果填写120,那么120/60=2表示60个线程间每隔2秒钟请求网站。
.}3[&KFI6k$r9t0循环次数:60个线程运行完毕算是一次,循环次数就是这样的一个请求过程运行多少次,我这里填写的是1000.51Testing软件测试网 X,AB&FiBb
每次修改一个设置后,别忘记了保存一下。51Testing软件测试网hp7n$s~iu/f7pl
2、 设置请求服务器、压力链接等信息51Testing软件测试网}[/y'kg U9E8k
接下来很自然的是,我们要测试的网站地址是什么?链接是什么?所以现在我们就来设置这些信息。
2I#G*i(~ y,jV0右键点击我们刚创建的线程组,在弹出的菜单中,选择添加->Sampler->Http请求,弹出如下图界面:51Testing软件测试网A_`3Yd2G^.v&u*?Q
51Testing软件测试网&R#TS"A(n._4k7H
名称:随意填写51Testing软件测试网1xv/cD ?*A,~
注释:可有可无51Testing软件测试网d2DR:C:`#G
U,yo!P
服务器名称或IP:我这里填写 zihou.me
z"Q({6~8O+\0端口号:我这里填写80
+VG
x
gCxd1]] [0Timesout部分可以不填
(uZm_pOp0HTTP请求部分的协议:http,方法我选择的是GET,Content encoding我填的是UTF-8.51Testing软件测试网[/?z K#z
x.o(XUOJ
路径:
eY2z(fq1Vi/v0这里值得一提的就是这个路径,假如你只是对一个链接进行压力测试,那么这里就非常简单了,你就直接填写一个链接就够了,比如http://www.zihou.me,但很多情况下都不是这样的,我们这里需要多个链接,就如同刚开始讲到的那样,我们要将多个链接保存到一个文本文件中,然后随机读取进行压力测试。我们可以这么干,如图:51Testing软件测试网|#Z"Ih
rb4WK|
W6hDb T~i4d,sw0打开界面如下图:
h;}(O!n"[g&vm S0
b3|xyH$zE3T0在选择一个功能下拉列表中选择_StringFromFile,然后在本机新建一个测试文件text.txt,在第一行(你也可以不在第一行)的值中填写测试文件的路径,如下图:51Testing软件测试网dXk,w,CuP
51Testing软件测试网(V@ak iM
然后点击“生成”按钮,在生成按钮的左边文本框中将生成一个字符串如:51Testing软件测试网_YU R;T"X?;R+h!d
${__StringFromFile(E:\test\test.txt,,,)}51Testing软件测试网)qu8K,`L
在测试文件中,我们每行写一个URL链接,如下格式:51Testing软件测试网)Q5NS8H)F;l
2011/03/26/3054
(yy/`"P
V W8nDE;X02011/03/26/305251Testing软件测试网!]H2F0C5~
2011/03/26/304251Testing软件测试网&t2}veh~!x5Ba
2011/03/25/304051Testing软件测试网yn0Sm~
2011/03/25/303451Testing软件测试网,lY7M'];Q3q6k"r7V
2011/03/24/3027
#uW6[Y6v0注意,每行前面并没有http://www.zihou.me这样的信息,因为我们在前面已经填写了服务器地址为zihou.me,这里就没必要再为每个url填写这个相同前缀了;另外,上面的url格式也只是个例子,表示域名后的部分,但很多时候url后面跟的都是各参数,比如http://www.zihou.me/p?a=1&b=3,如果是这种情况,则上面的链接可以写为:51Testing软件测试网pfkZ]
a=1&b=3这样的形式。
#Q`v7Yp8a-y0现在我们可以来填写前面所说的路径了,如下:
!Xu$`T-U0/ ${__StringFromFile(E:\test\test.txt,,,)}51Testing软件测试网\vj4M"s` d
这样一来,当我们并非请求的时候,就会从test.txt中随机选择url来进行压力测试。51Testing软件测试网;u.]4L'p1?
hIP4P$J
另外值得注意的一个地方是,如果参数中有中文的情况,运行的时候可能会出现乱码,这个时候就需要注意你在Jmeter中的编码设置与你要请求的网页编码是一致的。
"dh$TD%I0路径文本框下面的选项,可以按默认的就成,Use multipart/form-data for HTTP POST是当请求中有附件的情况,一般情况下都不用选中的。51Testing软件测试网n$D5I*LW5u7b
同请求一起发送参数部分:51Testing软件测试网#n!o0|@3I%IV$d
如果你仅仅是对某一个固定的页面进行压力测试,那你就可以不用进行上面所说的在文本文件中设置URL的过程了,直接在这里设置就行了,这里的名称就是参数名,值就是参数值,在这里添加就OK了,但你如果是压力多个链接,那这里你可以不用填。
k0\\c.h5i+BOI03、查看运行结果51Testing软件测试网O9P7At+\z7xi"]^9y
上面设置好后,接下来很自然的想到如何查看运行结果呢?Jmeter在这方面提供了好些个查看方式,有表格形式,有曲线形式等等,我个人认为查看表格形式就足够了!51Testing软件测试网[H]'w`Y ]
鼠标右键点击线程组,在弹出的菜单中选择添加->监听器->用表格查询结果,如下图:51Testing软件测试网7T B"KHe1p2[X'L
EQ3S`.C;\,I9s0弹出界面如下图:
'@)[![:V-qo7[
RN{0