UML软件工程组织

 

 

如何使用 Rational Performance Tester For SOA Extension 进行 Web Service 的性能测试
 
作者:李剑波 来源: IBM
 
本文内容包括:

随着企业应用的不断发展和 SOA(Service Oriented Architecture)技术的日渐成熟,SOA 的架构已经逐步走入了当前的企业软件开发中。如何保证 SOA 环境下的系统性能,特别是企业级 Web Service 的性能,成为目前 SOA 能否在企业中成功实施的重要条件。因此,对 SOA 环境下的 Web Service 进行有效的性能测试是SOA应用中的必要工作。IBM Rational Performance Tester 作为业界领先的自动化性能测试工具,提供了 Rational Performance Tester For SOA Extension(RPT4SOA Extension)插件,来辅助Web Service 的性能测试。

本文针对一个在 Tomcat 下运行的 Web Service 实例,描述了如何在 IBM Rational Performance Tester 中使用 RPT4SOA Extension 进行 Web Service 的性能测试。

1. RPT 以及 RPT4SOA 简介

IBM Rational Performance Tester(RPT)是提供给测试团队,面向复杂的电子商务应用,进行性能测试构建、执行和分析的一个工具。RPT 具有很多显著的优点。首先,RPT 全面、低干扰的记录技术能够捕获在 HTTP/HTTPS 或者基于 SQL 协议中客户端和服务器之间的通讯。其次,它的嵌入式数据相关性过滤器能够检查可变数据,并根据数据驱动加载测试需求进行测试。更显著的是 RPT 还具有强大的扩展功能,可以根据用户测试的特殊情况通过插件进行扩展。RPT4SOA Extension 就是为了支持 RPT 进行 SOA 环境下的性能测试而扩展的一个强大插件,它可以支持对 Web Service(包括基于HTTP/HTTPS/JMS 等协议的 Web Service 实现)进行性能测试和功能测试,也可以对采用了 BPEL4WS 进行了 Web Service 编排的应用系统进行组合性能测试。本文主要集中描述采用 RPT4SOA Extension 进行 Web Service 的性能测试的方法和过程。

2. 安装 RPT4SOA Extension

2.1 升级 RPT 到 7.0.0.1

RPT4SOA Extension 需要基于 RPT 的 7.0.0.1 版本进行安装。如果 RPT 版本低于 7.0.0.1,请按照如下步骤进行升级;否则可跳至 2.2 节开始安装插件。

在正常安装了 Rational Performance Tester 7.0 后,请下载 RPT 7.0.0.1,解压后,通过“开始->所有程序->IBM Install Manager”启动IBM安装管理器,通过“文件->首选项”设置 IBM Install Manager 升级路径到 RPT7.0.0.1 解压缩路径(如图一),再通过 IBM Install Manager“更新软件包”升级 RPT 到 7.0.0.1。

图一、设置 RPT4SOA Extension 插件库位置
图一、设置 RPT4SOA Extension 插件库位置

2.2 安装 RPT4SOA Extension

下载 RPT4SOA Extension 后,直接选择进行安装,其中在安装路径(如图二),选择 RPT 7.0 安装路径(如图二),其他选择下一步直接安装即可。

图二、设置 RPT 安装路径
图二、设置 RPT 安装路径

2.3 验证 RPT4SOA Extension 安装成功

打开 RPT7.0,选择“文件->新建->根据记录进行测试”,出现(如图三)“使用 Web Service Explorer 进行 Web Service 记录、使用现有客户机 HTTP 代理进行 Web Service 记录、使用现有客户机 Java 检测进行 Web Service 记录”,表明插件安装成功。

图三、安装 RPT4SOA Extension 后,性能测试记录选择
图三、安装 RPT4SOA Extension 后,性能测试记录选择

3. 本文被测场景简介

本文选取的被测场景是一个实现 request/response 简单功能的 Web Service。由于 Web Service 在实际运行环境中的性能取决于所选的架构和服务器,我们期望利用 RPT4SOA Extension 得到的性能测试结果对架构和服务器的选择提供参考,架构和服务器的组合有多种,例如基于 JWSDP(Java Web Service Development Package)架构并运行在 Tomcat 上,或基于 Axis 架构运行在 Tomcat上等等。


图四、本文选取的被测场景
图四、本文选取的被测场景

如上图所示,本文实例对 JWSDP+Tomcat 组合进行性能测试。其中 JWSDP 作为一系列服务部署在 tomcat 上,而 Hello World 作为通过一个 JavaBean 注册到 JWSDP 上,并通过修改 JWSDP 部署文件,暴露为 Web Service。Hello World 代码如下所示,此段程序只是将输入字符串简单修饰(字符串前加入 Hello 后面,加入!)后输出给调用的客户端,中间没有任何逻辑操作。

package endpoint;
import javax.jws.WebService;
import javax.jws.WebMethod;
@WebService()  
public class HelloWorld{
    //the implementation class must have a default public constructor
    public HelloWorld() {};
    @WebMethod(operationName="sayHello", action="urn:SayHello")
    public String sayHello(String name){
              return "Hello "+ name + "!";
    }
}

通过这个简单实例的压力测试,可以获取此架构(Tomcat + JWSDP)下,Web Service 并行访问达到满足反应时间要求时所支持的最大并发用户数量。在本次测试中,按照一般 Http 请求的标准,设定 Web Service 反应时间不超过 1.5 秒,即可以满足实际系统运行的需要。

4. 采用RPT4SOA Extension录制Web Service性能测试脚本

选择“使用 Web Service Explorer 进行 Web Service 记录”建立性能测试项目,设置好性能测试项目名称,性能测试项目存储路径(如图五)。

图五、设置性能测试项目路径
图五、设置性能测试项目路径

选择“使用 Web Service Explorer 进行 Web Service 记录”(如图六)。

图六、选择 Web Service 浏览器进行测试记录
图六、选择 Web Service 浏览器进行测试记录

选择脚本存放路径(如图七)。

图七、设置记录脚本存储路径
图七、设置记录脚本存储路径

选择需要录制的 WSDL(如图八)。在 RPT 中进行 Web Service 测试,需要将被测 WSDL 导入到 RPT 当前工作空间中,为进行测试作准备。

图八、选择进行测试的 WSDL
图八、选择进行测试的 WSDL

生成记录测试界面。RPT4SOA Extension 根据 WSDL 进行解析,生成相应的 Web Service 调用的模拟界面,进行录制(如图九)。

图九、在 Web Service Explorer 中浏览 Web Service
图九、在 Web Service Explorer 中浏览 Web Service

RPT4SOA Extension 根据 WSDL 进行语法解析,生成参数输入界面。测试人员可输入测试数据,RPT Recorder 会捕获到进行 Web Service 通信的协议内容,并记录到脚本中(如图十)。

图十、RPT4SOA Extension 记录 Web Service 通信内容
图十、RPT4SOA Extension 记录 Web Service 通信内容

停止脚本记录器,RPT4SOA Extesion 会根据记录的通信协议内容生成 Web Service 的测试脚本(如图十一)。

图十一、RPT4SOA Extension 记录 Web Service 生成测试脚本
图十一、RPT4SOA Extension 记录 Web Service 生成测试脚本

5. 设置 Web Service 性能调度,分配压力任务

根据录制过程生成Web Service压力测试脚本后,需要根据用户的压力测试模型建立测试调度,模拟需要加压的场景,完成测试。

选择建立的压力测试项目,选择“新建->性能调度”。

在性能调度的向导中,输入性能调度的名称,单击“完成”(见图十二)。

图十二、RPT4SOA Extension 设置性能测试调度
图十二、RPT4SOA Extension 设置性能测试调度

RPT 根据向导生成相应的性能调度,并分配缺省用户组(见图十三)。

图十三、RPT4SOA Extension 设置测试调度中的用户组
图十三、RPT4SOA Extension 设置测试调度中的用户组

如本文第 3 部分所述,本次性能测试的目的是期望测出 JWSDP+Tomcat 组合在满足响应时间 1.5 秒的情况下所支持的最大并行用户数。我们可以通过设置图十三中的“用户数量”来测量并判断指定用户数量下的 Web Service 响应时间是否满足要求。由于 Tomcat 确省支持的最大并发用户数是 150,故我们设定 150 开始测试。

在RPT中也可以通过设置用户组,完成不同脚本场景的组合,例如用户组1进行操作1,所占比例30%,用户组2进行操作2,所占比例70%, 则可以模拟3:7的混杂操作场景的压力情况;并且可以在用户组上分配进行工作的代理机IP,将压力按照机器情况分配到不同机器进行加压

右击用户组,选择“添加->测试”,选择测试脚本设置到相应用户组(见图十四)。

图十四、RPT4SOA Extension 设置测试调度中的脚本
图十四、RPT4SOA Extension 设置测试调度中的脚本

选择对应测试,单击完成,选择的测试脚本出现在对应用户组中(见图十五)。

图十五、RPT4SOA Extension 设置好测试调度
图十五、RPT4SOA Extension 设置好测试调度

设置好对应脚本执行的思考时间(即脚本运行中,协议请求的间隔时间):选择测试调度,思考时间选项页,填写思考时间(本文模拟协议请求时间间隔为 1 秒)(见图十六)。

图十六、RPT4SOA Extension 设置思考时间
图十六、RPT4SOA Extension 设置思考时间

以上完成了测试调度的设置,可以准备运行 Web Service 测试了。

6. 运行性能调度,察看分析 Web Service 性能

选择上文建立好的性能调度,选择“运行方式->性能调度”。

这将启动性能测试,测试运行后将产生性能测试报告,系统缺省生成6种测试报告,据此进行对该Web Service的性能分析。本文针对概要分析、相应时间结果两种报告简要介绍。

概要报告主要分析了性能运行中整体的性能情况,包括调用次数、成功次数、平均响应时间、最短响应时间,可以针对此获取 Web Service 调用的性能参数(见图十七)。

图十七、Web Service 性能测试运行后的概要分析报表
图十七、Web Service 性能测试运行后的概要分析报表

响应时间结果显示反应最慢的 10 次 Web Service 调用的情况,包括每次调用的最小时间、平均时间、最慢时间,以及时间偏差。通过这些数据,可以评估 Web Service 调用的性能(见图十八)。

图十八、Web Service 性能测试运行后的响应时间报表
图十八、Web Service 性能测试运行后的响应时间报表

在本文的分析中,我们根据 Tomcat 缺省接收并行访问数(150)而将第一次测试的“用户数量”也设定为 150。本次测试包含三组数据。

图十九、并发数为 150 时 Web Service 性能测试运行后的响应时间报表
图十九、并发数为 150 时 Web Service 性能测试运行后的响应时间报表

从图十九中可见,系统的反应时间超过了 1.5 秒(如图中第二行第三列所示),不满足需求。我们将并发用户数量通过 10 并发/次 进行递减继续测试,最后获得在用户并发数达到 100 时,可以满足 1.5 秒的性能要求(如图二十),亟 100 并发为本次性能测试的最终结果。

图二十、并发数为 100 时 Web Service 性能测试运行后的响应时间报表
图二十、并发数为 100 时 Web Service 性能测试运行后的响应时间报表

7. 总结

本文描述了在 Rational Performance Tester 中,安装了 RPT4SOA Extension 后,对于一个特定性能要求的 Web Service 进行性能测试的过程。正如文中所示的,采用 RPT4SOA Extension 进行 Web Service 的性能测试,将 Web Service 的测试从传统的手工编写程序的方法,转化为自动化的实现,从而对 SOA 的质量保证提供了一种性能评测的有效手段。

参考资料

 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号