如何使用JMeter进行SOAP测试?

JMeter可以通过SOAP/XML-RPC请求取样器(SOAP/XML-RPC Request)来进行SOAP Web服务的测试。具体步骤如下:

  1. 添加SOAP/XML-RPC请求取样器,选择SOAP协议,并设置Web服务地址(WSDL URL)。
    例如:http://www.testwebservicex.net/testglobalweather.asmx?WSDL
  2. 设置SOAP操作名称,这对应WSDL文件中定义的操作。例如GetWeather。
  3. 设置SOAP消息请求内容。可以输入XML内容,也可以从文件中获取。必须与WSDL文件中操作的请求消息匹配。
    例如:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"  
xmlns:web="http://www.webservicex.net/">
<soapenv:Header/>  
<soapenv:Body> 
<web:GetWeather>
<web:CityName>London</web:CityName>  
<web:CountryName>UK</web:CountryName>
</web:GetWeather>
</soapenv:Body> 
</soapenv:Envelope>
  1. JMeter会发送SOAP请求至Web服务,并显示响应内容,可以添加断言来判断响应结果。
  2. 可以使用测试片段(Test Fragment)来包含多个SOAP请求,并添加逻辑控制器来控制执行流程。
  3. 运行测试计划,JMeter会发送SOAP请求至Web服务并显示响应结果。可以根据添加的断言判断测试结果。

一个简单的示例:

线程组:  
线程数:1  

测试片段:
SOAP/XML-RPC请求:
地址:http://www.webservicex.net/globalweather.asmx?WSDL
操作名称:GetWeather

SOAP消息请求:  
<soap:Envelope> 
......
</soap:Envelope>

响应断言:
响应包含:London

逻辑控制器(If Controller):  
如果响应包含London则执行:

SOAP/XML-RPC请求:
地址:http://www.webservicex.net/globalweather.asmx?WSDL
操作名称:GetWeather

SOAP消息请求:
<soap:Envelope>
......
</soap:Envelope>    

运行测试计划,会先发送一个GetWeather请求,判断响应包含London,然后继续发送一个GetWeather请求。

JMeter的SOAP/XML-RPC请求取样器实现了对SOAP Web服务的功能测试和压力测试。