在Jmeter中提供动态IP地址

时间:2012-07-05 06:51:51

标签: jmeter load-testing

我有一个Jmeter脚本,用于命中两个IP地址/服务器名称。目前我使用两个Jmeter实例来命中两个服务器名称。有没有办法在单个Jmeter实例中执行此操作,例如HTTP请求默认值中的服务器名称/ IP地址的参数化?

2 个答案:

答案 0 :(得分:3)

有趣。我之前从未尝试过,但似乎动态值,您在请求默认值中定义的值始终会重新评估

因此,您可以将其定义为随机javascript和两个字符串,具体取决于随机值:

${__javaScript((Math.random()<0.5)?'ALMA':'KORTE')}

计划和结果的屏幕截图:

Http request defaults with JS function HTTP request sampler One "ALMA" result One "KORTE" result

通常,将名称放入csv文件并使用CSV配置元素,并说CSV具有翻转功能仍然更好。引自best practices

  

16.5用户变量某些测试计划需要为不同的用户/线程使用不同的值。例如,您可能想要测试一个   需要为每个用户进行唯一登录的序列。这很容易   通过JMeter提供的设施实现。

     

例如:

     

创建一个包含用户名和密码的文本文件,分隔开来   用逗号。将它放在与测试计划相同的目录中。添加CSV   DataSet配置元素到测试计划。命名变量   用户和通行证。用$ {USER}和密码替换登录名   在适当的采样器上使用$ {PASS} CSV数据集元素将   为每个线程读取一个新行。

答案 1 :(得分:3)

虽然我喜欢GáborLipták的回答,但我会提供另类的乐趣。

假设您要在DEVPROD环境(虚拟环境)上执行测试。 DEV连接到host1的位置,PROD连接到host2,端点相同/myserviceendpoint

首先将User Defined Variables添加到您的线程组。让我们添加两个变量:

ENVIRONMENT - &gt; ${__P(environment,host1)}ENDPOINT_PATH - &gt; /myserviceendpoint

添加Http Request sampler并在Server Name or IP内将其值设置为${ENVIRONMENT},其他端口等也会相应更改。

现在您的默认环境为DEV。如果您想将环境更改为PROD添加BSF Preprocessor并将ENVIRONMENT变量更改为PROD个实例。

vars.put("ENVIRONMENT", "host2");

因此,您可以在测试中停用/启用此BSF Post Processor,以便在DEV / PROD之间切换。这适用于GUI模式。

当您进行大测试并且运行没有GUI模式的jmeter时,这将非常方便。这部分很酷${__P(environment,host1)}如果您通过命令行传递没有参数DEV将使用值,否则您可以注入值来覆盖DEV环境,即(参见更多{{3} }):

jmeter -n -t yourtest.jmx -l testresults.xml -Jenvironment=host2 //running  `PROD`
jmeter -n -t yourtest.jmx -l testresults.xml //running  `DEV`

以下是截图(测试计划):

enter image description here

结果(为了清楚起见,添加了一些样品):

enter image description here

所以你切换环境或运行没有gui并通过命令行注入。您也可以为其他属性执行此操作,例如端口/端点等。