JMeter的简单使用

搭建好一个网站后,在推出之前一般要做一些测试,比如测试网站能承受的并发访问数,请求响应时间等。在测试时,既可以自己写一些脚本模拟客户端进行访问,但更多的是利用已有的测试工具。

最近学着搞网站的分布式的部署,部署好之后为了获得一些运行数据,于是找了一个叫JMeter 的工具对网站进行压力测试,这里把JMeter 的一些简单的使用方法记录下来。

JMeter的介绍可以看百科或者官网的介绍,简单的说,它是一个Java桌面应用程序,用于对软件或者Web应用做压力测试。现在最新的版本是2.4,下载地址为 http://jakarta.apache.org/jmeter/ 。下载后直接解压缩就能用,运行方式有GUI和命令行两种,下面的图片都是GUI运行方式的截图,界面语言为中文,如果你的界面不是中文,可以通过【选项】-> 【选择语言】更换之。

1 简单访问

最简单的使用是模拟浏览器客户端直接访问被测网站了。

当使用GUI 模式时,显示的界面中只有测试计划和工作台两个导航。如果有已有的测试计划,可以通过【文件】菜单打开之。如果是从头开始,那就一步步来吧。首先在测试计划中右键,选择【添加】-> 【线程组】,添加线程设置如下图所示。线程数表示同时启动的用于模拟客户端的个数,Ramp-Up Period 则表示每个多久启动一个线程,设置为0 则表示同时启动,那么就是并发的测试了。循环次数表示单个线程的行为反复执行的次数。下图中的数据表示,同时启动50 个线程,每个线程重复10 次,如果行为是HTTP 请求,则表示50 个并发,总计500 个请求

 

 

然后就要开始定义线程组的行为了。

线程组右键选择【添加】->sample->HTTP 请求】,则添加一个线程组的子节点如下图所示

在此请求中需要填充的属性有 服务器名,端口号 协议 方法 和路径

如上图中则是访问http://166.111.8.238/admin /

配置好了之后,选择【运行】-> 启动就可以跑这个测试例了,当然最好还是需要保存一下测试计划以便下次使用。

为了看到测试的结果,还必须增加一些监听器。右键线程组,选择【添加】-> 【监听器】, 加入合适的监听器。用的较多的有:

1 )聚合报告:

一些测试的统计信息,如响应时间,请求失败率等,具体数值的含义如下:

Label :每个 JMeter element (例如 HTTP Request )都有一个 Name 属性,这里显示的就是 Name 属性的值

#Samples :表示你这次测试中一共发出了多少个请求,如果模拟10 个用户,每个用户迭代10 次,那么这里显示100

Average :平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间

Median :中位数,也就是 50 %用户的响应时间

90% Line90 % 用户的响应时间

Note :关于 50 % 和 90 % 并发用户数的含义,请参考下文

http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html

Min :最小响应时间

Max :最大响应时间

Error% :本次测试中出现错误的请求的数量/ 请求的总数

Throughput :吞吐量——默认情况下表示每秒完成的请求数(Request per Second ),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner Transaction per Second

KB/Sec :每秒从服务器端接收到的数据量,相当于LoadRunner 中的Throughput/Sec

 

2 )图形结果

以图形的方式表现出测试结果曲线

 

 

3 )查看结果树

这个可以将测试过程中的请求和响应数据都列出来,便于分析请求是否成功,返回的数据是否正确。可用于在启动正式测试之前,测试本测试计划是否正确,如果请求数较多可以不用它。

 

 

 

这些测试结果都可以根据需求保存下来。

2 复杂用户行为

上面讲到的是模拟简单的行为,而对于复杂的用户行为,如一连串的动作,登录之后再发表评论上传下载甚至做购物流程的话,要这样一个个添加HTTP 请求就比较困难了。JMeter 提供一个记录用户行为的功能,即记录一段时间内的浏览器请求过程,这是通过它内置的Proxy 来实现的:首先在JMeter 中能启动一个代理,然后将浏览器的代理设置为该代理,这样浏览器的所有请求就要经过这个代理出口,JMeter 捕捉到这些流量并记录用户的行为。具体实现过程如下 :
首先启动一个代理,工作台右键【添加】-> 【非测试元件】->HTTP 代理服务器】,并填写适合的未占用端口,下图中是43221

然后设置浏览器的代理:

然后【启动】HTTP 代理服务器,用浏览器进行需要测试的用户行为,可以看到导航栏中列出了一系列的操作过程。操作完毕,就【停止】HTTP 代理服务器。

 

 

 

这样记录的行为基本是可用的,但现在也发现一个bug ,上传文件时文件的路径只是记录了文件名而没有完整的本地路径,会导致上传找不到文件,这时候要手动修改表单中的值。

如果觉得这一列行为过于复杂,可以进行删减保留必要的行为,也可以加入循环控制器,定时器等元件在此基础上模拟更复杂的用户行为。

3 命令行模式

JMeter 的命令行模式很简单,首先可以通过GUI 或手工编写测试计划,然后使用命令行执行。具体命令行参数如下:
-n
这是在无界面模式运行JMeter

-t [ 包含测试计划的JMX 文件的名字]

-l [ 记录取样结果的JTL 文件的名字]

-r 运行在JMeter property 文件里所有的”远程服务器”的测试

-R [ 远程服务器的名单] 运行制定的远程服务器的测试

这个脚本也允许你指定可选的防火墙/ 代理服务器信息:

-H [ 代理服务器主机名或者ip 地址]

-P [ 代理服务器端口]

例子 : JMeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000

测试中得到的log 文档记录了所有请求的详细情况,具体显示的数据可以再GUI 界面进行设置,而且在测试完成之后,如果要得到统计数据如聚合报告,只需要在监听器(如聚合报告)的界面中点击【浏览】,将保存的数据导入即可看到统计表格。

JMeter 的组件还是比较丰富的,若要进一步使用,请看官方的文档。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值