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

发布于 2024-11-04 05:52:20 字数 910 浏览 1 评论 0原文

我有一个托管在 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 检查客户端发送给服务的 SOAP 消息。同样,我看不到它在哪里传递参数。因此,我不知道如何创建一个简单的 SOAP 信封,以便与 JMeter 一起使用来测试此服务。

谁能告诉我为什么 WSDL 文档没有提供方法参数的任何详细信息,或者解释一下如何创建与 JMeter 一起使用所需的 SOAP 信封?

我使用 VS 2010、JMeter 2.4、IIS v6、wsHttpBinding 进行 C# 编码。

I have a WCF Webservice hosted on IIS which exposes a single method that takes three integer parameters. I have a simple, console based client which can call this method.

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

If my understanding is correct, I need to provide JMeter a SOAP envelope with the details of the method to be called and parameters to be passed. I have seen many examples similar to below:

<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>

However, from looking at my WSDL doc, I don't see where it refers to any of the parameters needed to pass to the method. I've also used Fiddler to examine the client's soap messages to the service. Again, I don't see where it's passing the parameters. As a result, I don't know how to create a simple SOAP envelope I can use with JMeter to test this service.

Can anyone advise as to why the WSDL doc does not provide any details of the method parameters, or explain how I can create the necessary SOAP envelope for use with JMeter?

I am coding in C# using VS 2010, JMeter 2.4, IIS v6, wsHttpBinding.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

往事风中埋 2024-11-11 05:52:20

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

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

步骤

  1. 将 WSDL 导入到soap
  2. 为方法创建默认请求
  3. 将请求视图设置为 RAW,然后复制到 JMeter

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

Disclaimer: I'm not a WSDL expert, so i can't tell you why the doc doesn't provide detail.

To generate the SOAP envelope for JMeter, I've used the free version of 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

This provides me all the information I need for jmeter, including parameters, user-agent, endpoint, etc.

小嗷兮 2024-11-11 05:52:20

使用 JMeter 的“HTTP 代理服务器”记录与普通测试客户端的 WCF 调用,然后在测试时回放它们。这是我所经历的最快的,并提供了最好的测试用例(因为您使用普通客户端或选择的测试客户端记录它们)。

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

<system.serviceModel>
    <bindings>
    ...
    <wsHttpBinding>
    <binding ...  proxyAddress="http://proxyServerName:8080" useDefaultWebProxy="false" ...>
    ...
        <security mode="None">
            <message establishSecurityContext="false"/>
            <transport clientCredentialType="None"/>
        </security>

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

另外,如果我没有关闭安全性(如上所示),我会收到一条使用 HTTP 代理的错误消息。 WCF 服务服务器上也必须有相同的安全设置。

测试愉快! :-)

Use JMeter's "HTTP Proxy Server" to record the WCF calls with your normal testclient, and then play them back later when testing. This is what I have experienced to be fastest, and gives the best test-cases (because you record them with your normal client, or test client of choice).

Set up JMeters HTTP Proxy Server as per instructions. Then, make sure the WCF (or any SOAP) client use that proxy. The important part of the WCF client configuation is (replace my ... with normal config):

<system.serviceModel>
    <bindings>
    ...
    <wsHttpBinding>
    <binding ...  proxyAddress="http://proxyServerName:8080" useDefaultWebProxy="false" ...>
    ...
        <security mode="None">
            <message establishSecurityContext="false"/>
            <transport clientCredentialType="None"/>
        </security>

proxyServerName is localhost, if the WCF client runs on the same machine as JMeter (normal when creating the test cases).

Also, I got an error message using HTTP Proxy, if I did not turn off security as shown above. The same security settings must also be at the WCF service server.

Happy testing! :-)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文