第1章 测试需求分析
1.1 测试目的
web service 分别采用HTTP1.1和HTTP1.0作为传输协议的性能差异。
1.2 测试准备
1. 操作域模拟器一套。
2. HTTP1.1和HTTP1.0测试脚本各一套。
第2章 测试场景设计
2.1 Web Service采用HTTP 1.0测试
2.1.1 测试目的
监控使用HTTP1.0作为传输协议时, 操作域模拟器的TPS, 响应时间。
2.1.2 测试步骤
LOADRUNNER并发用户数设定为20。
2.1.3 测试结果输出
性能参数 | 最小值 | 平均值 | 最大值 |
TPS | 107.538 | 285.307 | 311.563 |
响应时间 (s) | 0.027 | 0.067 | 0.078 |
![](http://dl.iteye.com/upload/attachment/159309/d22c032d-5c61-3eac-b08a-cecef96da503.png)
|
图 2.1(Web Service Http 1.0) 红色:响应时间 蓝色:TPS |
2.2 Web Service 采用 HTTP 1.1测试
2.2.1 测试目的
监控在使用HTTP1.1作为传输协议后,操作域模拟器的响应时间,TPS。
2.2.2 测试步骤
LOADRUNNER并发用户数设定为20。
2.2.3 测试结果输出
性能参数 | 最小值 | 平均值 | 最大值 |
TPS | 95.25 | 404.722 | 451.875 |
响应时间 (s) | 0.009 | 0.040 | 0.045 |
![](http://dl.iteye.com/upload/attachment/159311/8727f421-c086-3bbd-9fb6-8d78de9e3c46.png)
|
图 2.2(Web Service Http 1.1) 红色:响应时间 蓝色:TPS |
2.3 Web Service 采用 HTTP 1.1/HTTP 1.0混合测试
2.3.1 测试目的
监控在使用HTTP1.1作为传输协议后,操作域模拟器的响应时间,TPS。
2.3.2 测试步骤
LOADRUNNER并发用户数设定为20。
2.3.3 测试结果输出
性能参数 | 最小值 | 平均值 | 最大值 |
TPS | 77.00 | 330.324 | 365.563 |
响应时间 (s) | 0.010 | 0.045 | 0.055 |
![](http://dl.iteye.com/upload/attachment/159313/181adfe7-9772-356f-9af9-ff524829e390.png)
|
图 2.3(Web Service Http 1.1/Http 1.0混合测试) 红色:响应时间 蓝色:TPS |
第3章 测试总结
Web Service 客户端如果采用HTTP1.1长连接作为连接方式,能明显减少创建SOCKET连接所需要的时间,显著提交了TPS和响应时间。
第4章 附录
4.1 AXIS客户端如何设置使用HTTP1.1
AXIS引擎通过使用CommonHTTPSender代替默认的HTTPSender。ServiceLocator必须只实例化一次. 然后在所有stub中共用. 之所以如此是因为ServiceLocator管理着http connection的连接池, 它通过CommonsHTTPSender的引用管理着MultiThreadedHttpConnectionManager,实例程序代码片段请参照:
static {
private static SyncRoamingUser_ServiceLocator serviceLocator;
EngineConfiguration defaultConfig = EngineConfigurationFactoryFinder
.newFactory().getClientEngineConfig();
SimpleProvider config = new SimpleProvider(defaultConfig);
config.deployTransport(HTTPTransport.DEFAULT_TRANSPORT_NAME,
new CommonsHTTPSender());
serviceLocator = new SyncRoamingUser_ServiceLocator(config);//Only once.
}
4.2 AXIS客户端如何配置HTTP连接池参数
AXIS引擎通过设置AxisProperties的属性,来定义HTTP连接池的参数。HTTP连接池可配置参数见如下程序代码和注释:
// "Total Connections" Pool size
AxisProperties.setProperty(
DefaultCommonsHTTPClientProperties.MAXIMUM_TOTAL_CONNECTIONS_PROPERTY_KEY,
maxTotalConnections);
// "Connections per host" pool size
AxisProperties.setProperty(
DefaultCommonsHTTPClientProperties.MAXIMUM_CONNECTIONS_PER_HOST_PROPERTY_KEY,
maxConnectionsPerHost);
// max duration to wait for a connection from the pool
AxisProperties.setProperty(
DefaultCommonsHTTPClientProperties.CONNECTION_POOL_TIMEOUT_KEY, connectionPoolTimeout);
// Timeout to establish connection in millis
AxisProperties.setProperty(
DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_CONNECTION_TIMEOUT_KEY, connectionTimeout);
// Timeout "waiting for data" (read timeout)
AxisProperties.setProperty(
DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_SO_TIMEOUT_KEY, soTimeout);