JMeter可以通过SOAP/XML-RPC请求取样器(SOAP/XML-RPC Request)来进行SOAP Web服务的测试。具体步骤如下:
- 添加SOAP/XML-RPC请求取样器,选择SOAP协议,并设置Web服务地址(WSDL URL)。
例如:http://www.testwebservicex.net/testglobalweather.asmx?WSDL - 设置SOAP操作名称,这对应WSDL文件中定义的操作。例如GetWeather。
- 设置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>
- JMeter会发送SOAP请求至Web服务,并显示响应内容,可以添加断言来判断响应结果。
- 可以使用测试片段(Test Fragment)来包含多个SOAP请求,并添加逻辑控制器来控制执行流程。
- 运行测试计划,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服务的功能测试和压力测试。