Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java小服务程序、CGI脚本、Java 对象、数据库, FTP服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。多的不说了:直接上操作:由于JMeter是使用java开发的,所以运行需要java的运行环境。接触过java的人都知道,java环境的搭建,不是我们现在讨论的东西,所以不会的,自己度娘哈。
1. 下载JMeter
官方网站下载最新版本: http://jmeter.apache.org/download_jmeter.cgi ,英文的,你懂的。
英文不好的朋友: http://www.quzhuanpan.com/home/sourceList.jsp?type=6,中文下载地址
2. 启动JMeter
话不多说,直接上图:首先解压apache-jmeter-2.9,进入bin目录:点击jmeter.bat。启动软件
![1ecd3f0d3a8c2234c339e1cb9fe4e7fc.png](https://i-blog.csdnimg.cn/blog_migrate/7f3d039cdbfb8e2960082a217f5ad4b4.jpeg)
开始界面:
![ebcb8c94924f12db863e6177e834100d.png](https://i-blog.csdnimg.cn/blog_migrate/361d3d78197cffb90b75cd55c1b50c4c.jpeg)
1) 建立线程。模拟多用户访问:步骤如下
![5e33532ea974f2ca49f611348f90a319.png](https://i-blog.csdnimg.cn/blog_migrate/c064c39e3487a4953d5c7fbe75302b89.jpeg)
![ba796247534f34054727c162ba30e5dd.png](https://i-blog.csdnimg.cn/blog_migrate/0f8651608798222f561dfa8742de4a60.jpeg)
为什么要建立线程组?原因很简单,因为我们要模拟多个线程(用户)来访问web网站。线程属性部分中,线程数是启动多少个线程,比如:我这里填写的是10,Ramp-Up Period (in seconds)表示线程之间间隔多少时间允许,单位是秒,比如如果填写10,那么10/10=1表示10个线程间每隔1秒钟请求网站。循环次数:60个线程运行完毕算是一次,循环次数就是这样的一个请求过程运行多少次,我这里测试就填写的是2。每次修改一个设置后,别忘记了保存一下。
2) 设置请求服务器、压力链接等信息
接下来很自然的是,我们要测试的网站地址是什么?链接是什么?所以现在我们就来设置这些信息。右键点击我们刚创建的线程组,在弹出的菜单中,选择添加->Sampler->Http请求,弹出如下图界面:
![4b0ada0e1e5403fb435b80ef258b1191.png](https://i-blog.csdnimg.cn/blog_migrate/9e680660cfba0018027f801832a0e773.jpeg)
![3557b76ddaa085b4d84187c98e5d7ae3.png](https://i-blog.csdnimg.cn/blog_migrate/f54ed1ae85117e3b3b80e7c6e4c75a1f.jpeg)
路径:
假如你只是对一个链接进行压力测试,直接填写一个链接就ok,比如 http://www.baidu.com,但是大多数情况下都不是这样的,我们这里需要多个链接,就如同刚开始讲到的那样,我们要将多个链接保存到一个文本文件中,然后随机读取进行压力测试。我们可以这么做,如图:
![f7dacae142c457841ccbc10c450b0ead.png](https://i-blog.csdnimg.cn/blog_migrate/beb1c4e7520f5449cfc2cc86aa5a4134.jpeg)
在选择一个功能下拉列表中选择_StringFromFile,然后在本机新建一个测试文件C:UsersrootDesktopapache-jmeter-2.9test.txt,在第一行(你也可以不在第一行)的值中填写测试文件的路径,如下图:
![3ff1ad65719f6d1a264d219288fdd2dc.png](https://i-blog.csdnimg.cn/blog_migrate/d3f4bf53f93f1cfcfa5310955171dd6b.jpeg)
然后点击“生成”按钮,在生成按钮的左边文本框中将生成一个字符串如:
${__StringFromFile(C:UserswukongDesktoptest.txt,,,)}
在test.txt测试文件中,我们每行写一个URL链接,如下格式:
如果地址是:www.quzhuanpan.com.那么。在test.txt中的内容,就是相对地址;如
![bd59a8f2c39f43be2f07b33a65860f9f.png](https://i-blog.csdnimg.cn/blog_migrate/0cbf8069bb032c78cea92b4c42918fd5.jpeg)
这样一来,当我们并非请求的时候,就会从test.txt中随机选择url来进行压力测试。
另外值得注意的一个地方是,如果参数中有中文的情况,运行的时候可能会出现乱码,这个时候就需要注意你在Jmeter中的编码设置与你要请求的网页编码是一致的。
路径文本框下面的选项,可以按默认的就成,Use multipart/form-data for HTTP POST是当请求中有附件的情况,一般情况下都不用选中的
3) 查看运行结果
鼠标右键点击线程组,在弹出的菜单中选择添加->监听器->用表格查询结果,如下图:
![2b9eae7d97df208131db8c5fa491ea99.png](https://i-blog.csdnimg.cn/blog_migrate/d9969962c9f866ef44e1aedb7d41d22b.jpeg)
![d682dff112e8c925df34b4d2636f7697.png](https://i-blog.csdnimg.cn/blog_migrate/4844298363bc902b38207ce8e34e6901.jpeg)
各属性如下:
- Sample:每个请求的序号
- Start Time:每个请求开始时间
- Thread Name:每个线程的名称
- Label:Http请求名称
- Sample Time:每个请求所花时间,单位毫秒
- Status:请求状态,如果为勾则表示成功,如果为叉表示失败。
- Bytes:请求的字节数
在下面还有几个参数:
- 样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数
- 平均:每个线程请求的平均时间
- 最新样本:表示服务器响应最后一个请求的时间
- 偏离:服务器响应时间变化、离散程度测量值的大小。
到这里,我们已经做了一个简单的网站并发性测试。还有其他功能,就自己捉摸吧,嘿嘿。