设置SoapUI负载测试时的请求比例(免费版)

时间:2014-12-15 15:27:51

标签: soapui

我正在尝试加载测试包含多个Web方法的Web服务。一些Web服务方法被调用得比其他方法更多,所以我试图模拟一个真实的负载(尽可能多)。

示例:

1对web方法x的请求

对web方法y的5个请求

对web方法z的24个请求

理想情况下,我希望从这样开始,然后根据上述比率增加请求的数量。

他们无论如何都要在免费版的SoapUI中这样做吗?

我考虑过为每个请求添加一个延迟,但提供的延迟功能会延迟整个测试用例,而不仅仅是那个请求。

似乎SoapUI只是推出尽可能多的每个Web服务方法的请求,这些请求根本没用,因为一些请求几乎没有被调用,导致在服务器上进行大量处理。

感谢。

1 个答案:

答案 0 :(得分:1)

所以,你可以通过一些groovy脚本来做到这一点。 例如,你可以放置一个groovy脚本,它将运行你第n次请求。 要从test_suite运行测试步骤,请检查以下代码:

 import com.eviware.soapui.model.testsuite.TestRunner.Status
    def tc = testRunner.testCase.testSuite.project.testSuites["TestSuite_Name"].testCases["Test_Case_Name"]
    tc.setPropertyValue("Property_Name", value)
    def runner = tc.run( null, false )
    log.info "Status: $runner.status, time taken for TestCase was: $runner.timeTaken ms"
    // assert that it didn't fail
    assert runner.status != Status.FAILED : runner.reason

在您的情况下,您可以添加此类代码和applyloop以运行测试步骤。 最后,对于延迟你可以这样说:

random = new Random()
randomNum = random.nextInt(100)+1
log.info(randomNum)
if ( randomNum > 70 )  {
     testRunner.testCase.getTestStepByName( "Test_Step_Name" ).disabled = true
}
else {
     testRunner.testCase.getTestStepByName( "Test_Step_Name" ).disabled = false
}

即。请求转了一段时间