测试用例
初始化数据:
Customer对象具有idname两个属性,初始化13个对象的map,以idkey
测试输入输出:
对服务提交get请求,去Customer对象列表。
测试注意:
除各实现要求的必须差别外,开发中保证代码对Customer的操作是完全一致的。减少因操作不一致造成的性能差异。
测试步骤:
1.      针对不同实现,分别搭建独立的Tomcat服务器,保证服务器的资源配置相同。
2.      针对每个实现,通过客户端多线程访问服务器,测试多线程同时访问服务器且全部返回正确的极限值。
3.      使用得出的极限值进行3次测试,每次要求重新启动Tomcat服务,记录测试结果,其中服务器内存使用记录要求包括:启动Tomcat但未访问服务前、服务访问后以及在访问服务的过程中3次随机截取的内存使用情况。
4.      使用较小的并发数量,长时间对每个实现分别进行测试,测试服务的稳定性。要求时间大于3小时,并发量大于30线程。
测试环境:
Servlet容器信息:
Tomcat
版本
6.0.29
内存分配
初始内存
webservice实现
Tenured        10.69Mb
Perm          12Mb
Total          49.66Mb
最大内存
Tenured        170.69Mb
Perm          64Mb
Total          365.5Mb
项目版本:
Apache CXF
2.3.1
Jersey
1.5
RESTEasy
2.1
Restlet
Java EE 2.0.4
测试工具:
JMeter
2.4
(客户端压力)
Probe
1.7b
(Tomcat内存监控)
线程
线程间隔
循环次数
平均值
最小值
最大值
吞吐量/秒
流量(KB/秒)
说明
index测试
500
0
100
线程循环中断,大压力下,tomcat仍然能够返回,证明瓶颈不发生在tomcat端
cxf get 测试
cxf运行瓶颈测试
130
0
100
线程循环中等情况下,最大线程压力
cxf第一次资源消耗测试
100
0
300
449
4
8438
197.9
64.6
cxf第二次资源消耗测试
100
0
300
425
4
10519
204.3
66.6
cxf第三次资源消耗测试
100
0
300
451
5
9082
196.3
64
jersey get 测试
jersey运行瓶颈测试
250
0
100
速度快于cxf,资源消耗小于cxf
jersey第一次资源消耗测试
100
0
300
76
1
6359
877.3
619.4
吞吐量未达到极限
jersey第二次资源消耗测试
100
0
300
112
1
8298
712
502
jersey第三次资源消耗测试
100
0
300
129
1
6281
623.2
440
Resteasy get 测试
Resteasy运行瓶颈测试
无法测试,800线程,300次循环无错误
效率高于Jersey,内存消耗也大于Jersey
Resteasy第一次资源消耗测
100
0
300
67
1
7870
713.3
505
并未达到极限,与更多线程的吞吐量极限差距较大,最大到1400
Resteasy第二次资源消耗测
100
0
300
97
1
9288
804.9
569.9
Resteasy第三次资源消耗测
100
0
300
96
1
11398
808.2
572.2
Restlet get 测试
Restlet运行瓶颈测试
100
0
100
性能最差的实现
Restlet第一次资源消耗测
80
0
100
488
6
8619
148.3
221.7
Restlet第二次资源消耗测
80
0
100
557
6
7815
131.2
196.2
Restlet第三次资源消耗测
80
0
100
558
6
9562
130.7
195.4
稳定性测试
cxf稳定性测试
50
1小时以上
239
1
8482
207.8
67.8
jersey 稳定性测试
50
0
1小时以上
37
1
10536
1052.5
743.1
Resteasy稳定性测试
50
0
1小时以上
41
1
10381
1170.8
829
Restlet稳定性测试
50
0
1小时以上
342
6
13967
145.6
217.7