WEB性能测试之JMeter

1. JMeter中的一些性能指标

  •     Throughput::吞吐率
  •     Transactions per Second:每秒事务数
  •     Avg Rps: 平均每秒的Request数量 = 总request数量/秒数
  •     Successful Hits Per Second:每秒成功点击数
  •     Failed Hits Per Second: 每秒失败点击数
  •     Successful Rounds: 成功的请求
  •     Failed Rounds: 失败的请求
  •     User Connections: 用户连接数,也就是数据库连接数量
  •     Number of Deadlocks: 数据库死锁
  •     Butter Cache Hit:数据库Cache的命中情况
     当然在性能测试过程中,服务器的CPU使用率,内存使用率,磁盘I/O和Network I/O等等一些服务器的性能指标也是很重要的。

2.      JMeter的下载和安装

(1)下载并安装JAVA开发环境(JDK的安装,以及环境变量的添加)

(2)下载:http://jmeter.apache.org/download_jmeter.cgi

解压缩后,在apache-jmeter的bin文件中点击ApacheJMeter.jar或者jmeter.bat来运行JMeter。

 

3.      一个简单的例子

(1)添加一个”Thread Group”,并设置并发线程数。


(2)在”Thread Group”添加一个”HTTP Request”。

(3)添加一个”View Results Tree”, 以便观察request的返回结果。

(4)通过不停的增加并发用户数,来分析被测网站的”Throughput”(吞吐率)。

 

4.      HTTP Cookie Manager

这个管理器可以自动管理Cookie, 比如你请求一个站点,然后他的Response设置了Cookie,Cookie Manager就会自动地保存这些Cookie并在所有后来发送到该站点的请求中使用这些Cookie的值。此外,该管理器也支持用户手动添加Cookie。

但如果想要正常使用该功能,用户必须编辑bin文件夹下的jmeter.properties文件,向其中添加/修改:CookieManager.save.cookies=true

编辑完成后,最好可以重新启动JMeter。

 


5.      JMeter的Webdriver插件

(1)      下载JMeterPlugins-WebDriverhttp://jmeter-plugins.org/downloads/all/

(2)      解压缩,将bin文件夹copy到JMeter文件夹内(和JMeter的bin文件夹合并)。

(3)      重新启动JMeter。

(4)      添加jp@gc - Firefox Driver Config和jp@gc- Web Driver Sampler。

(5)      在jp@gc - Web Driver Sampler添加Webdriver脚本。

下面贴段Webdriver脚本,毕竟Jmeter中webdriver脚本和标准的还是有区别的:

var r = newjava.util.Random()
var pkg =JavaImporter(org.openqa.selenium, org.openqa.selenium.support.ui)
 
var wait = newpkg.WebDriverWait(WDS.browser, 10)
WDS.browser.get('http://www.portal2016.ef.com.br/riovolunteer/login/test/')
wait.until(pkg.ExpectedConditions.presenceOfElementLocated(pkg.By.xpath("//input[@name='userName']")))
 
WDS.sampleResult.sampleStart()
var username =WDS.browser.findElement(pkg.By.xpath("//input[@name='userName']"))
username.sendKeys("#########")
var password =WDS.browser.findElement(pkg.By.xpath("//input[@name='password']"))
password.sendKeys("#########")
var login =WDS.browser.findElement(pkg.By.xpath("//button[@type='submit']"))
login.click()wait.until(pkg.ExpectedConditions.presenceOfElementLocated(pkg.By.xpath("//a[@class='et’]”)
WDS.sampleResult.sampleEnd()


6.      JMeter的ServerAgent插件

(1)      下载ServerAgent插件:http://jmeter-plugins.org/downloads/all/

(2)      在服务器上解压缩该插件,并在服务器上执行: startAgent.bat --udp-port 0 --tcp-port 3450

(3)   编辑jmeter.properties文件,添加:jmeter.save.saveservice.thread_counts=true

(4)      下载JMeterPlugins-Standard:http://jmeter-plugins.org/downloads/all/

(5)      在本机解压缩后,将lib文件夹copy到JMeter文件夹中,并重启JMeter。

(6)      添加Listenal / jp@gc - PerfMon Metrics Collector,并添加Metricparameter。

(7)      运行JMeter脚本,这样就可以监控服务器的性能状况了。

 


7.      Assertion and Timer

Assertion是用来判断response的数据是否满足一定的条件,比如size要大于50K之类的。而Timer可以让线程delay一定的时间。

 

8.      参数化

(1)      添加”CSV Data Set Config”

               其中Recycle on EOF表示是否循环读入多行数据;Variable Names表示每一列的用户定义的列名。

               

     (2) 这样,在JMeter中就可以通过${host}和${path}来获取数据了。

 

9. JMeter录制

第一种方法:

下载badboy进行录制:http://www.badboy.com.au/download/send?svId=118

 

第二种方法:

(1)      添加“线程组”,然后在线程组下添加“录制控制器”

(2)      添加“HTTP代理服务器”

                目标控制器:“测试计划>线程组”

               分组:每个组放入一个新的控制器

               端口:9999(必须确保该端口没有被占用)

               排除模式:.*\.(bmp|css|gif|ico|jpe?g|png|swf|woff|js)

(3)      在“HTTP代理服务器”中点击“启动”按钮

(4)      打开浏览器,并设置代理:(必须确保端口号和“HTTP代理服务器”的端口号一致)

             

(5)      输入网址,进行想要的操作。

(6)      点击“HTTP代理服务器”中的“停止”按钮,录制完成。

 

10.  JMeter 分布式测试

单台电脑处理线程的能力有限,如果需要并发大量的线程(有人认为,一个JMeter客户端线程数不应超过100),那就不得不用到JMeter的分布式测试。使用多台机器产生负载的操作步骤如下:

(1)在所有期望运行jmeter作为 负载生成器的机器上安装jmeter, 并确定其中一台机器作为 controller ,其他的的机器作为agent 。然后运行所有 agent 机器上的jmeter-server 文件(假定使用两台机器192.168.0.100 192.168.0.101 作为agent

(2)在controller机器的jmeterbin目录下,找到jmeter.properties 文件,编辑该文件:

查找:remote_hosts=127.0.0.1

修改为:remote_hosts=192.168.0.100:1099,192.168.0.101:1099

  此外, 端口号要确保没有被占用,并关闭防火墙

(3)启动controller 机子上的jmeter应用,选择菜单“运行”--->“远程启动”,来分别启动agent ,也可以直接选择“远程全部启动”来将所有的agent启动。

        


11.  JMeter的SQL测试

(1)      下载sqljdbc4.jar,并copy到JMeter的lib文件夹中

(2)      重启JMeter

(3)      添加JDBC Connection Configuration,并设置:

               Database URL: jdbc:sqlserver://jzf2013:1433;DatabaseName=MyTest

              JDBC Driver class: com.microsoft.sqlserver.jdbc.SQLServerDriver

              Username: sa

              Password: #####

     

(4)      添加JDBC Request,并输入具备代表性的SQL语句。

(5)      运行并查看结果。


其它类型数据库的设置如下:

Datebase

Driver class

Database URL

MySQL

   com.mysql.jdbc.Driver

jdbc:mysql://host:port/{dbname}

PostgreSQL

org.postgresql.Driver

jdbc:postgresql:{dbname}

Oracle

oracle.jdbc.driver.OracleDriver

jdbc:oracle:thin:user/pass@//host:port/service

MSSQL

com.microsoft.sqlserver.jdbc.SQLServerDriver

or

net.sourceforge.jtds.jdbc.Driver

jdbc:sqlserver://IP:1433;databaseName=DBname

or

jdbc:jtds:sqlserver://localhost:1433/"+"library"

 

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lemon2050

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值