与Virtual User生成器一起使用的soapUI运行器是否仅在loadUI中运行指定的testCase的安装脚本一次?

时间:2012-06-05 20:51:56

标签: soapui amf loadui

我正在尝试对使用loadUI在soapUI中创建的testCase运行负载测试。

我的soapUI testCase中有一个AMF请求,它创建了一个数据库对象,我们称之为“someList”。在testCase选项菜单中,我选中了“启用AMF会话”,并使用粘贴的正确端点。

现在,我正在使用testCase的Setup Script功能在testCase AMF选项中动态设置随机登录名和密码,如下所示:

def loginCreds = String.format("%04d", new Random().nextInt(999999999))

testCase.setAmfLogin( loginCreds )

testCase.setAmfPassword( loginCreds )

当我在soapUI中运行此testCase时,AMF会话登录名和密码被正确随机化,并在我的数据库中创建一个新用户,AMF请求正确创建“someList”并将所有权分配给新创建的随机用户(通过AMF会话登录和密码选项。)

我重新运行测试,新用户,新的“someList”。就像我想要的那样工作。

现在,当我在LoadUI中将其作为具有固定速率虚拟用户生成器的soapUI Runner运行时,只创建了一个新用户,并且每个后续的新“someList”都分配给该用户。似乎安装脚本只运行一次!

这是预期的功能吗??

以下是http://www.loadui.org/Runners/soapui-runner-component.html

的摘录

“重要的是要注意,传递soapUI Runner的每个虚拟用户都会获得自己的soapUI TestCase的隔离副本,但实际上与运行属于同一soapUI项目的soapUI TestCase的所有其他VU共享soapUI项目的其余部分。这意味着您应该避免写入TestSuite或Project Properties,因为它们在所有VU之间共享,如果不同步,可能会导致ConcurrentModificationException。“

我读错了吗?每个虚拟用户不应该获得它自己的testCase版本,因此设置脚本和它是随机生成的AMF会话登录名和密码吗?

这似乎完全否定了模拟单独虚拟用户的可能性,每个虚拟用户都有自己的AMF会话凭证,因为没有人会同时制作数百个“someList”对象。

非常感谢任何帮助或澄清。

我对我的假设进行了一些测试,每次都会运行安装脚本,但AMF会话凭据由生成的所有虚拟用户共享。

1 个答案:

答案 0 :(得分:0)

我在SoapUI中遇到了与内置负载测试功能类似的问题(我从没有太多运气将我的项目移动到LoadUI)。我终于通过提供随时间变化的随机种子,常量和线程索引(可能是线程索引是最重要的部分)找到了修复。

def ti = context.ThreadIndex
def cal = Calendar.instance
cal.timeZone = TimeZone.getTimeZone("America/Denver")
cal.set(Calendar.MONTH, Calendar.DECEMBER)
long time = cal.time.time / 1000
def seed = time.toInteger()
Random random = new Random(123445*ti + 544321 + seed)               
def loginCreds = String.format("%04d", random.nextInt( 999999999))