0

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

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

现在,我正在使用 testCase 的设置脚本功能在 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 测试用例的独立副本,但实际上与运行属于同一soapUI 项目的soapUI 测试用例的所有其他VU 共享soapUI 项目的其余部分。这意味着您应该避免写入 TestSuite 或项目属性,因为它们在所有 VU 之间共享,如果不同步,可能会导致 ConcurrentModificationException。”

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

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

任何帮助或澄清将不胜感激。

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

4

1 回答 1

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))
于 2012-06-06T14:06:24.783 回答