【问题标题】:Load testing with SOAP UI使用 SOAP UI 进行负载测试
【发布时间】:2012-10-24 10:44:24
【问题描述】:

我有一个SOAP UI 4.5.1,我进行了负载测试,它工作正常。我的问题是我每次都运行相同的请求,我需要更改我发送的soap请求的值。

例如我有一个我的肥皂请求块:

 <ns:Assessment>
    <ns:Project>
       <ns:ProviderId>SHL</ns:ProviderId>
       <ns:ProjectId>SampleAssessment</ns:ProjectId>
    </ns:Project>
 </ns:Assessment>

提供者 ID:SHL 项目 ID:SampleAssessment

有没有办法让这些值从某种间隔发生变化? 例如:提供商 ID [SHL, SLH, LHS] 项目 ID [SampleAssessment, TestAssessment, AnotherAssessment]

通过负载测试,我发出三个请求,因此第一个请求值如下所示:

 <ns:Assessment>
    <ns:Project>
       <ns:ProviderId>SHL</ns:ProviderId>
       <ns:ProjectId>SampleAssessment</ns:ProjectId>
    </ns:Project>
 </ns:Assessment>

第二个这样的:

 <ns:Assessment>
    <ns:Project>
       <ns:ProviderId>SLH</ns:ProviderId>
       <ns:ProjectId>TestAssessment</ns:ProjectId>
    </ns:Project>
 </ns:Assessment>

等等……

有没有办法通过 SOAP UI 实现这一点?

【问题讨论】:

    标签: web-services soap soapui load-testing


    【解决方案1】:

    根据我的经验,您需要使用 Groovy 脚本步骤。

    例如,如果您的请求之前有一个步骤是脚本,您可以使用类似的内容:

    context.setProperty("ProviderId", "SHL")
    

    然后在您的请求中,使用:

    <ns:ProviderId>${ProviderId}</ns:ProviderId>
    

    当然,这本身并不能为您带来太多收益。有几种方法可以改变 context.setProperty("ProviderId", "SHL") 行的设置。您可以使用以下方法创建一个集合并对其进行迭代:

     def providers = ['ABC', 'DEF', 'GHI', 'JKL']
    
     providers.each() {
         context.setProperty("ProviderId", it)
         testRunner.runTestStepByName( "nameofteststep" )
     }
    

    其中“nameofteststep”是 Soap 请求测试步骤的名称。这听起来可能很奇怪,但是如果您右键单击测试步骤并禁用它,groovy 脚本仍然能够执行它,但它不会按顺序运行。我的意思是 groovy 脚本将运行它 4 次,但是当脚本完成时它不会运行第五次,因为它在脚本之后。然后你只需要记住每个负载测试线程都会发出四个请求,但我很确定 SoapUI 统计信息会为你考虑到这一点......不过,可能需要留意它。

    或者,您可以检查“threadIndex”并在此基础上设置上下文变量。有点像这里:Log ThreadCount.

    您还可以使用没有循环的集合并增加您保存为测试用例属性的索引并发送与索引对应的字符串。

    就个人而言,我认为第一种方法是最直接的,但如果您愿意,我可以提供其他方法的示例。

    【讨论】:

      【解决方案2】:

      有一种简单的方法可以做到这一点,而无需编写 groovy 脚本。

      创建测试用例后,您应该包括以下测试步骤:

      1-数据来源

      2-请求

      三环

      数据源将读取一个 excel 文件(或其他数据源方法,如 XML、groovy、JDBC、gird .. 但是 excel 是最简单的一种)。 您应该包含数据(您需要在请求中更改)

      在测试请求中,您需要右键单击并选择“获取数据”。请注意,您的测试请求应如下所示

      <ns:ProviderId>${ProviderId}</ns:ProviderId>
      

      那么最后一步就是“循环”了。这用于返回第一步,直到数据结束。

      我希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2017-02-08
        • 2019-03-10
        • 2012-07-03
        • 1970-01-01
        • 1970-01-01
        • 2019-07-19
        • 1970-01-01
        • 2019-12-27
        • 1970-01-01
        相关资源
        最近更新 更多