JMeter 和 Badboy: 功能和性能测试工具
JMeter
=======================================================
JMeter基础之一一个简单的性能测试http://www.cnblogs.com/fnng/archive/2012/12/22/2829479.html,看完这个就学到很多东西。
jmeter入门教程-Jmeter教程及技巧汇总http://www.jmeter.cf/jmeter-summary.html
JMeter试用手记http://gq913.iteye.com/blog/157280
JMeter入门教程http://blog.csdn.net/w565911788/article/details/7629787
使用jmeter测试web应用遇到的几个问题及解决http://chen4w.iteye.com/blog/945298,录制问题。
jmeter学习系列--脚本参数化和断言设置http://www.blogjava.net/qileilove/archive/2012/05/02/377159.html,利用Jmeter的CSVDataSetConfig来实现参数化功能
用jmeter进行多用户并发压力测试http://www.bubuko.com/infodetail-836134.html
Jmeter逻辑控制器功能说明http://my.oschina.net/u/2391658/blog/701485
综合:模仿用多用户做压力测试的大致步骤
1.录制脚本
2.配置session,注意session跟httpcookiemanager的配置关系。
3.配置用户列表的CSVDataSetConfig初始化数据
4.线程组并发和测试
录制:
可录制JMETER脚本的CHROME扩展插件BlazeMeterhttp://www.iquicktest.com/chrome-extension-jmeter.html
JMeter基础之—录制脚本http://www.cnblogs.com/fnng/archive/2011/08/20/2147082.html
Jmeter快速入门教程(四)--录制复杂web测试脚本http://www.jmeter.cf/index.php/tutorials/154-jmeter-web.html
代理录制IE无法录制到请求的问题解决http://www.cnblogs.com/nocturneg/archive/2012/08/06/2624674.html
录制配置:
chromeSwitchySharp选项:
手动设定:localhost,端口:8081(jmeter代理的端口),本地服务器的话,清空"不代理的地址"。
jmeter:
http代理:
端口:8081,httpsdomian:localhost:8080(非https服务器不需要配置这里)这里就是让通过端口8081转发到8080端口(实际站点端口)
插件:
官方插件:http://jmeter-plugins.org/downloads/all/
WebDriverhttp://jmeter-plugins.org/wiki/WebDriverTutorial/
WebSocketTestingWithApacheJMeterhttp://blazemeter.com/blog/websocket-testing-apache-jmeter
JMeter常用测试元件http://book.51cto.com/art/201204/327306.htm
jmeter之配置元件http://www.blogjava.net/qileilove/archive/2014/02/28/410451.html
JMeter文章收集http://www.ltesting.net/ceshi/open/kyxncsgj/jmeter/,里面的文章不是很完整。
实战:使用JMeter的JavaSampler轻松定制自己的benchmarkhttp://itstarting.iteye.com/blog/1513335
一些说明:
Session要使jmeter能够保持住session,必须使其能够维持cookie中的jsessionid,因此增加“httpcookiemanager”.
同时,注意这文章说明:jmeter性能测试,关于session保持的问题解决http://blog.csdn.net/catoop/article/details/8055264
需要了解如何配置支持cookieJMeter——HTTPCOOKIEManager(cookie管理器)http://wangsheng14591.blog.163.com/blog/static/327797102012829101351887/
自己配置可以解决[nocookies]问题
1.配置jmeter.properties
CookieManager.save.cookies=true
CookieManager.check.cookies=false
2.在cookie管理中,增加的参数比如
名称:paramter1,值:pandy,域:localhost,路径:/mywebapp/weburl(这里的路径就是http请求的路径:http://localhost:8080//mywebapp/weburl),尤其注意路径,否则无法解决nocookies问题的。(好像不一定要设定路径的)
我自己的成功配置:
A:新建一个httpcookiemanager”,不需要增加JSESSIONID变量,当录制完成以后,运行的时候,jmeter自动产生和管理,把给个请求都加上sessionId;
B:然后创建一个代理,目标:计划(自己定义的计划名称)-->线程组(自己创建的线程组);分组:每个组放入一个新的控制器;跟随重定向;
C:创建一个线程组
以上配置就可以了。
其他方式参考:
问题是如何得到这个jsessionId?可以看http://lixf5409.iteye.com/blog/2064303的两种方法:
1,第一次访问应用服务器的时候,应用服务器会产生一个sessionid用于维护客户端的信息,tomcat的sessionid的key是jsessionid。jsessionid可以通过chrome浏览器的Resources->Cookies获取到。单个请求还可以,多个请求的话会重复配置很多请求的jsessionid。,其实把cookie管理升级到http请求为兄弟节点,就能被共享到所有http请求了。
2.新建2个循环控制器:
登录-循环控制器和启动-循环控制器。登录-循环控制器的循环次数设置为1,启动-循环控制器的次数视性能测试情况设置。并在需要用到session的HTTP请求的上一级目录建立HTTPCookie管理器。这样启动的时候就可以获取到session中的用户Id了。自动产生和管理?
设置QPS限制
通过设置定时器来控制QPS,一旦取样器的响应时间发生改变(网络环境发生改变),就需要重新调整定时器的等待时间。
Jmeter提供了一个非常有用的定时器,称为ConstantThroughputTimer(常数吞吐量定时器),该定时器可以方便地控制给定的取样器发送请求的吞吐量。
右键点击线程组下面的请求,弹出菜单(添加--->定时器--->ConstantThroughputTimer)选择ConstantThroughputTimer
ConstantThroughputTimer的主要属性介绍:
名称:定时器的名称
Targetthroughput(insamplesperminute):目标吞吐量。注意这里是每分钟发送的请求数,因此,对应测试需求中所要求的20QPS,这里的值应该是1200。
CalculateThroughputbasedon:有5个选项,分别是:
Thisthreadonly:控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的targetThroughput乘以矣线程的数量。
Allactivethreads:设置的targetThroughput将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。
Allactivethreadsincurrentthreadgroup:设置的targetThroughput将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和Allactivethreads选项的效果完全相同。
Allactivethreads(shared):与Allactivethreads的选项基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。
Allcativethreadsincurrentthreadgroup(shared):与Allactivethreadsincurrentthreadgroup基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。
聚合报告分析
图形报表
图表底部参数的含义如下:
样本数目是总共发送到服务器的请求数。
最新样本是代表时间的数字,是服务器响应最后一个请求的时间。
吞吐量是服务器每分钟处理的请求数。
平均值是总运行时间除以发送到服务器的请求数。
中间值是代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。
偏离表示服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。
Badboy,只支持ie浏览器,很没意思。
=========================================================
使用Badboy录制Web性能测试脚本http://book.51cto.com/art/201204/327317.htm
综合
==========================================
badboy+jmeter并发性能测试http://www.cnblogs.com/java-koma/archive/2010/07/10/1774685.html
注意:
1.安装文档中的说法,ext目录存放对JMeter的扩展,用户的扩展所依赖的包则要直接放在lib下