如何使用JMeter测试WCF Web服务?


问题内容

我在IIS上托管了WCF Web服务,该服务公开了一个采用三个整数参数的方法。我有一个简单的基于控制台的客户端,可以调用此方法。

int InsertNewOrder(short quantity, int custID, int productID);

如果我的理解是正确的,那么我需要为JMeter提供一个SOAP信封,其中包含要调用的方法和要传递的参数的详细信息。我看到了许多类似于以下内容的示例:

<soapenv:Envelope xmlns:soapenv="schemas.xmlsoap.org/soap/envelope/">; 
<soapenv:Body>
<ns2:InsertNewOrder xmlns:ns2="?????"> 
<ns2:Param1>${1}</ns2:Param1> 
<ns2:Param1>${1}</ns2:Param1> 
<ns2:Param1>${1}</ns2:Param1> 
</ns2:InsertNewOrder>  
</soapenv:Body>
</soapenv:Envelope>

但是,从查看我的WSDL文档来看,我看不到它在哪里指向传递给该方法所需的任何参数。我还使用了Fiddler来检查客户端对服务的肥皂消息。同样,我看不到参数传递的位置。结果,我不知道如何创建可与JMeter一起使用以测试该服务的简单SOAP信封。

谁能建议为什么WSDL文档没有提供方法参数的任何细节,或者解释我如何创建必要的SOAP信封以用于JMeter?

我正在使用VS 2010,JMeter 2.4,IIS v6,wsHttpBinding在C#中进行编码。


问题答案:

免责声明:我不是WSDL专家,所以我不能告诉您为什么该文档未提供详细信息。

为了生成JMeter的SOAP信封,我使用了soapUI的免费版本。

Steps:
1. Import WSDL into soap
2. Create a default request for the method
3. Set the request view to RAW, and copy into JMeter

这为我提供了jmeter所需的所有信息,包括参数,用户代理,端点等。