技术开发 频道

如何使用JMeter测试Java项目

【IT168技术文档】
一、 Apache JMeter工具

1)简介
JMeter——一个100%的纯Java桌面应用,它是 Apache组织的开放源代码项目,它是功能和性能测试的工具。JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、Java对象、数据库和查询、ftp服务器或者其他资源)。

3)Jmeter的下载地址:http://jakarta.apache.org/jmeter/usermanual/index.html

2)Apache JMeter 的特性:
a) 能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。
b) 完全的可移植性和100% 纯Java。
c) 完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。
d) 完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。
e) 精心的GUI设计允许快速操作和更精确的计时。
f) 缓存和离线分析/回放测试结果。
g) 高可扩展性:
h) 可链接的取样器允许无限制的测试能力。
i) 各种负载统计表和可链接的计时器可供选择。
j) 数据分析和可视化插件提供了很好的可扩展性以及 以及个性化。
k) 具有提供动态输入到测试的功能(包括Javascrīpt)。
l) 支持脚本变成的取样器(在1.9.2及以上版本支持BeanShell)。

二、 JMeter可以做哪些方面的测试
原先Jemer是为Web/HTTP测试而设计的,但是它已经扩展以支持各种各样的测试模块。它和用于HTTP和SQL数据库(使用JDBC)的模块一起运送。它可以用来测试静止资料库或者活动资料库中的服务器的运行情况,可以用来模拟对服务器或者网络系统加以重负荷以测试它的抵抗力,或者用来分析不同负荷类型下的所有运行情况。它也提供了一个可替换的界面用来定制数据显示,测试同步及测试的创建和执行。

三、具体事例

1)测试环境:
 
硬件配置
软件环境
测试时间
2004525
服务器
P4 512M 内存
Oracle 10g+Tomcat5.5
客户端
P4 512M 内存
Jmeter
测试内容
khxx_xg.jsp接受用户参数、调用javabean、输出相关信息。


2)安装启动JMeter
请将下载的.zip文件解压缩到C:/JMeter目录下。现在,请使用C:/JMeter/bin下面的jmeter.bat批处理文件来启动JMeter的可视化界面,下面的工作都将在这个可视化界面界面上进行操作。图1就是Jmeter的可视化界面。 
 
                                                             图 1

3)建立测试计划

以下为我的测试计划的内容:
1、右键单击测试计划,选择添加-〉线程组

在线程组里设置负载信息,即线程属性。我向测试计划中增加相关负载设置是Jmeter需要模拟十个请求者,每个请求者在测试过程中并发请求,并且连续请求10次。

线程数:
10
Ramp-up periodinseconds):
0
循环次数:
10

说明:线程数代表发送请求的用户数目,Ramp-up period(inseconds)代表每个请求发生的总时间间隔,单位是秒。假如我的请求数目是5,而这个参数是10,那么每个请求之间的间隔就是10/5,也就是2秒。如果设置为0就代表并发请求。Loop Count代表请求发生的重复次数,如果选择后面的forever(默认),那么 请求将一直继续,如果不选择forever,而在输入框中输入数字,那么请求将重复 指定的次数,如果输入0,那么请求将执行一次。

设置后界面的如图2所示

                                                                                          图2

2、添加HTTP默认请求值
右键单击线程组,选择添加-〉配置元件-〉HTTP默认请求值,以下是我设置的信息:

 
 
说明
名称:
HTTP默认请求值
该元素的名称
服务器名称或IP
localhost
被测试服务器的IP或者名字
端口号:
8080
服务器提供服务的端口号,我用的服务器是Tomcat,所以端口号是8080
协议:
http
发送测试请求时使用的协议
路径:
/hrbin/hg_admin/khxx_xg.jsp
默认的起始位置。

设置后的页面如图3所示


                                                                                       图3

3、添加HTTP请求
右键单击线程组,选择添加-〉Sampler-〉HTTP请求,以下是我设置的信息

 
 
说明
名称:
HTTP默认请求值
该元素的名称
服务器名称或IP
localhost
被测试服务器的IP或者名字
端口号:
8080
服务器提供服务的端口号,我用的服务器是Tomcat,所以端口号是8080
协议:
http
发送测试请求时使用的协议
路径:
/hrbin/hg_admin/khxx_xg.jsp
默认的起始位置。

因为我测试的是查询,故添加了一个同请求一起发送的参数(in_id=dsgds)设置后的页面如图4所示:

                                                                                     图 4

4、添加监听器,存放测试结果。
右键单击测试计划,选择测试计划-〉添加-〉监听器-〉聚合报告
你也可以选择用表格查看结果、图形结果、查看结果树等。

4)运行测试
单击运行,选择启动。测试结果如图5所示。

                                                                                     图5

四、 测试结果的分析说明
说明:
Label:
每个 JMeter element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
#Samples:
表示你这次测试中一共发出了多少个请求,我的测试计划模拟10个用户,每个用户迭代10次,因此这里显示100
Average:
平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
Median:
中位数,也就是 50%用户的响应时间
90% Line:
90%用户的响应时间
Min:
最小响应时间
Max:
最大响应时间
Error%:
本次测试中出现错误的请求的数量/请求的总数
Throughput:
吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner Transaction per Second
KB/Sec:
每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec

我分别模拟10、25、50、75和100个用户并发访问该页面,根据报告所得测试结果作出如下统计。注:时间单位是ms

用户数
#Samples
Average
Median
90%Line
Min
Max
Error%
Throughput
KB/Sec
10
642
672
688
125
125
719
00.0
14.8/sec
221.15
25
250
1620
1687
1750
250
1781
00.0
14.5/sec
217.14
50
500
3319
3438
3578
281
3657
00.0
14.2/sec
212.02
75
750
4887
5109
5584
328
7094
00.0
14.5/sec
216.67
100
1000
6244
6485
6672
250
6844
00.0
15.1/sec
225.43

 

 

 

一般情况下,当用户能够在2秒以内得到响应时,会感觉系统的响应很快;当用户在2-5秒之间得到响应时,会感觉系统的响应速度还可以;当用户在5-10秒以内得到响应时,会感觉系统的响应速度很慢,但是还可以接受;而当用户在超过10秒后仍然无法得到响应时,会感觉系统糟透了,或者认为系统已经失去响应,而选择离开这个Web站点,或者发起第二次请求。故该系统的用户信息查询信息页面的在10到25人并发访问时,系统响应速度很快,25人到50人并发访问时速度还可以,50人到100人并发访问就比较慢了。

0
相关文章