一切福田,不離方寸,從心而覓,感無不通。

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的CSV Data Set Config来实现参数化功能
用jmeter进行多用户并发压力测试 http://www.bubuko.com/infodetail-836134.html
Jmeter逻辑控制器功能说明  http://my.oschina.net/u/2391658/blog/701485

综合: 模仿用多用户做压力测试的大致步骤
1. 录制脚本
2. 配置session,注意session跟http cookie manager的配置关系。
3. 配置用户列表的CSV Data Set Config初始化数据
4. 线程组并发和测试

录制:
可录制JMETER脚本的CHROME扩展插件BlazeMeter http://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
录制配置:
chrome SwitchySharp 选项:
手动设定:localhost, 端口: 8081 (jmeter代理的端口),本地服务器的话,清空"不代理的地址"。
jmeter:
http 代理:
端口:8081, https domian: localhost:8080(非https服务器不需要配置这里)  这里就是让通过端口8081转发到8080端口(实际站点端口)

插件:
官方插件: http://jmeter-plugins.org/downloads/all/
Web Driver http://jmeter-plugins.org/wiki/WebDriverTutorial/
WebSocket Testing With Apache JMeter http://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的Java Sampler轻松定制自己的benchmark http://itstarting.iteye.com/blog/1513335

一些说明:
Session 要使jmeter能够保持住session,必须使其能够维持cookie中的jsessionid,因此增加“http cookie manager”.
同时,注意这文章说明:jmeter 性能测试,关于session保持的问题解决 http://blog.csdn.net/catoop/article/details/8055264
需要了解如何配置支持cookie JMeter——HTTP COOKIE Manager(cookie管理器)  http://wangsheng14591.blog.163.com/blog/static/327797102012829101351887/
自己配置可以解决[no cookies]问题
1.配置jmeter.properties
CookieManager.save.cookies=true
CookieManager.check.cookies=false
2.在cookie管理中,增加的参数比如
名称:paramter1,值:pandy,域:localhost,路径:/mywebapp/weburl(这里的路径就是http请求的路径:http://localhost:8080//mywebapp/weburl),尤其注意路径,否则无法解决no cookies问题的。(好像不一定要设定路径的)
我自己的成功配置:
A: 新建一个http cookie manager”,不需要增加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请求的上一级目录建立HTTP Cookie 管理器。 这样启动的时候就可以获取到session中的用户Id了。自动产生和管理?

设置QPS限制
通过设置定时器来控制QPS,一旦取样器的响应时间发生改变(网络环境发生改变),就需要重新调整定时器的等待时间。
Jmeter提供了一个非常有用的定时器,称为Constant Throughput Timer (常数吞吐量定时器),该定时器可以方便地控制给定的取样器发送请求的吞吐量。
右键点击线程组下面的请求 ,弹出菜单(添加—>定时器—>Constant Throughput Timer)选择Constant Throughput Timer

Constant Throughput Timer 的主要属性介绍:
名称 :定时器的名称
Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数,因此,对应测试需求中所要求的20 QPS ,这里的值应该是1200 。
Calculate Throughput based on :有5个选项,分别是:
This thread only :控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的 target Throughput 乘以矣线程的数量。
All active threads : 设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。
All active threads in current thread group :设置的target Throughput将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和All active threads选项的效果完全相同。
All active threads (shared ):与All active threads 的选项基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。
All cative threads in current thread group (shared ):与All active threads in current thread group 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。

聚合报告分析

图形报表

图表底部参数的含义如下:
样本数目是总共发送到服务器的请求数。
最新样本是代表时间的数字,是服务器响应最后一个请求的时间。
吞吐量是服务器每分钟处理的请求数。
平均值是总运行时间除以发送到服务器的请求数。
中间值是代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。
偏离表示服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。

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下

 

from:http://panyongzheng.iteye.com/blog/2107998