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

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

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

如果我的理解是正确的,我需要向JMeter提供一个SOAP信封,其中包含要调用的方法和要传递的参数的详细信息。 我见过很多类似下面的例子:

 ;   ${1} ${1} ${1}    

但是,通过查看我的WSDL文档,我没有看到它引用传递给方法所需的任何参数。 我还使用Fiddler检查客户端的SOAP消息到服务。 同样,我没有看到它传递参数的位置。 因此,我不知道如何创建一个简单的SOAP信封,我可以使用它与JMeter一起测试这项服务。

任何人都可以建议为什么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所需的所有信息,包括参数,用户代理,端点等。

使用JMeter的“HTTP代理服务器”用您的普通testclient记录WCF调用,然后在测试时再播放它们。 这是我经历过的最快速,并提供最佳测试用例(因为您使用普通客户端或选择的测试客户端进行记录)。

按照说明设置JMeters HTTP代理服务器。 然后,确保WCF(或任何SOAP)客户端使用该代理。 WCF客户端配置的重要部分是(用普通配置替换我的…):

   ...   ...     

如果WCF客户端与JMeter在同一台机器上运行,则proxyServerName是localhost(创建测试用例时正常)。

此外,如果我没有关闭安全性,如上所示,我收到了使用HTTP代理的错误消息。 同样的安全设置也必须位于WCF服务服务器上。

快乐的测试! 🙂