2013年5月1日星期三

JMeter_001:压力测试指南之一:基本功能

开发运行环境:JMeter 2.9 + Weblogic 12.1.1 开发版

JMeter 是一款开源免费的压力测试工具, 下载地址:http://jmeter.apache.org/。
解压后,直接运行bin\jmeter.bat。

1. 创建一个新的Test Plan:ShoppingCartTestPlan


2. 增加一个Thread Group
线程组:测试里每个任务都要线程组去处理,可以在“测试计划->添加->线程组”来创建线程组。
创建好线程组后,我们就可以在线程组中添加各种各样的任务了。

(1)Number of Threads(users):线程数或用户数。
(2)Ramp-Up Period(in seconds):表示在多长时间内创建完所有的线程。
     如果有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒。
     如果有8个线程,Ramp-Up = 0秒,表示8个线程并发。

3. 增加一个HTTP Request
你可以手工增加一个HTTP Request,不过对于很多个网页来说,这样手工增加比较麻烦,因此在这里就不做了。
后面我会通过设置HTTP Proxy Server来监听发送到特定端口的HTTP Request,JMeter会自动记录所有发送到该端口的HTTP Request。

4. 增加一个Summary Report,以表格的方式查看测试结果。


 5. 增加一个Graph Results,以图形的方式查看测试结果

  6. 增加一个HTTP Proxy Server,用于监听特定端口的HTTP Request
  (1)设置监听端口:8888。
  (2)设置Target Controller:ShoppingCartTestPlan
  (3)设置Content-type filter: Include:.*
7. 打开Firefox,配置Proxy
(1)HTTP Proxy: localhost
(2)Port: 8888
(3)No Proxy for:(保持空白,即去掉原有的localhost|localhost.localdomain|127.0.0.1|::1|PMMA-CN.cn.oracle.com|PMMA-CN)
 8. 首次运行
(1)点击HTTP Proxy Server中的Start按钮,启动监听。
(2)用Firefox访问shoppingcart应用。
 访问过的请求会被记录下来。
 查看Summary Report,其中
(1)Samples:表明该请求被访问了多少次。
(2)Average:p%:平均响应时间,是个非常重要的参数指标。
我发现平均响应时间比我预想的慢得多,有1秒多。
(3)Std.Deviation:标准方差,样本中各数据与样本平均值的差的平方的平均数叫样本方差。样本方差用来衡量一个样本波动大小,样本方差越大,样本数据的波动就越大,表明测试样本不理想。
(4)Error %:是否有错误,比如404之类的。
我发现有个请求有50%的错误。
(5)Throughput:吞吐量,每秒钟完成的请求数量。

 9. 添加View Results Tree,查看每个请求的详细信息。
Summary Report报告有错误,但是Summary Report看不到具体错误信息,因此我再添加View Results Tree。

 10. 改正错误后,再次运行,这次没有报告错误,并且平均响应时间也快多了。


接下来,你可以修改线程数量,模拟并发用户数,进行真正的压力测试了。
假设你设置了5个线程,运行时,JMeter右上角会提示你当前有多少个线程在运行,比如5/5; 运行结束后,会提示0/5。

Project 下载:shoppingcart.war ShoppingCart.jmx

参考文献:
 1. http://one-size-doesnt-fit-all.blogspot.jp/2009/06/stress-load-testing-web-applications.html
 2. http://www.ltesting.net/ceshi/open/kyxncsgj/jmeter/2012/0801/205347.html
 3. http://jmeterresults.blogspot.jp/2012/07/jmeterunderstanding-summary-report.html
 4. http://www.ibm.com/developerworks/cn/opensource/os-pressiontest/
 5. http://www.ibm.com/developerworks/cn/java/j-ap04088/
 6. http://www.ibm.com/developerworks/cn/java/l-jmeter/

没有评论: