我使用JMeter的负载测试中的web服务的SOAP。 web服务存在于一堆的地方,比如我的本地主机,一个开发中,集成箱,产箱等。

我使用一个WebService(SOAP)请求采样,并设置“IP的服务器名称”,“路径”和“SOAP操作” PARAMATERS像这样:

Server Name of IP: ${SERVER}
Path: ${PATH}/service
SOAPAction: http://${SERVER}${PATH}service#action

此使用的“用户定义的变量” config元素时工作正常。我只是改变服务器和路径到任何特定于我试图打的位置。但是,这是在屁股更痛苦的话,我想处理。我希望这样做(和尝试)是在我的线程组中添加多个如果逻辑控制器和检查$ {} MODE(另一UDV),并采取相应的行动,建立我的服务器和路径。所以,我有这样的事情

"${MODE}" == "dev"
"${MODE}" == "local"
"${MODE}" == "production"

一个上的每个如果控制器,然后我有一个孩子UDV元件设置适当的服务器和路径。总是被用来从最后UDV(在外观上我的线程组的顺序)的值,尽管我的假设,如果控制器返回false将保持UDV被评估。然而,我的文档看到,所有UDVs而不管位置评估任何线程启动之前。所以,我尝试使用用户PARAMATERS代替,但$ {SERVER}在我的SOAP取样$ {PATH}值不被替换,我发出请求到http:// $ {SERVER} $ {PATH}这是也不好。

据有任何优雅的方式来处理呢?目前,我只是复制粘贴一个用于服务器和路径每次我需要改变我打了服务器的时间值。我知道我也可以有多个测试计划,一个是我要负载测试每一台服务器,但我做的频繁更新的结构,包括增加新的测试,禁用现有的测试和不断变化的SOAP请求的一些部分,有一堆它们似乎并不像一个很好的解决方案。

任何帮助?

有帮助吗?

解决方案

我们解决了一个BeanShell的采样和变量这个问题在测试计划本身定义的。

除了使用元件的“用户定义的变量”可以定义为整个测试计划变量。只需点击树的根元素,并添加一个所谓的“模式”与内容“dev的”变量,“本地”或“生产”。

在测试用例添加进样“豆壳采样”,并添加以下代码:

if ("dev".equals(vars.get("mode"))) {
 vars.put("server","x.y.z");
}
if ("local".equals(vars.get("mode"))) {
 vars.put("server","127.0.0.1");
}
if ("production".equals(vars.get("mode"))) {
 vars.put("server","10.0.0.10");
}

您可以再定义你需要的所有变量和也,如果需要添加其他的环境。

但你也可以走得更远了一步: 创建一个简单的控制器,并把你的豆壳采样那里。在所有的线程组,您现在可以访问与模块控制器,这个简单的控制器。在这种情况下,你必须只是一次整个测试计划定义您的环境选择。

其他提示

我个人发现有几个UDV模块容易得多,所有在顶层

我把他们全部,除了一个我想使用禁用。

我看到有做同样的事情这么多的方式; - )

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top