目前对Web Service项目进行性能瓶颈判断并进行调优,准备使用Jmeter进行压力测试。
使用Jmeter的介绍资源一大把,在此不作累赘叙述。主要记录一下使用Jmeter添加测试Web Service。
主要步骤:
1. 添加取样:WebService(SOAP) 要求
2. 添加WebService的WSDL,载入方法
3. 设定Soap/XML-RPC
在该步骤,一直不知道要测试的WebService对应的Soap/XML-RPC内容,发送的测试请求错误,找网也没有发现获取Soap/XML-RPC的详细说明。SOAP 是在去中心化(Decentralized)分布式(Distributed)环境中用来信息交换的一个轻量级协议。SOAP 本身并不定义像程序模型或实施声明等形式的语法,而只定义了一种简单机制:通过提供模块化的包装模型编码机制来传输应用信息。
SOAP 基本结构:
1) 信封 Envelope Envelope 元素是 SOAP 中的根元素,并且定义为在 SOAP 消息中必须出现。Envelope 元素中可以包含多可选的 Header 元素,但同时必须要包含一个 Body 元素。
2) 消息头 Header Header 可能出现在 SOAP 消息中,是一个可选元素。如果出现在消息中,那么 Header 一定要是 SOAP 中的第一个元素。SOAP Header 在 Web Services 中的应用越来越广泛,例如在应用程序的安全性事物中使用标准的消息头文件,因而成为扩展 SOAP 协议的一个非常有效的方法。
3)消息体 Body Body 元素是 SOAP 中必须出现的一个元素,它要包含应用程序中的传输数据或者反馈消息。 应用程序中的传输数据可以是任意形式的 XML 数据。SOAP 消息接收者最终来处理 SOAP Body 体。因此,Jmeter要求的Soap/XML-RPC是一个完整的SOAP请求,可以通过TcpTrace或者TcpMon监听工具获取。监听工具在本地的监听端口发现请求后最终转给指定服务器。
tcpTrace就一个.exe文件,执行后设定:a.本地端口 b.服务器地址 c.服务器端口
最后到tcpTrace.log中查看到soap请求。
当需要传递一个对象请求给WebService时,WebService的方法参数是以接收一个xml字符串的方式来处理,在我们使用Jmeter或者SoapUI发送请求测试该方法的时候,请求的参数要把对象XML标注为一个字符串。如下:
参考:
http://www.oschina.net/bbs/thread/8040