我有一个Jmeter脚本,用于命中两个IP地址/服务器名称。目前我使用两个Jmeter实例来命中两个服务器名称。有没有办法在单个Jmeter实例中执行此操作,例如HTTP请求默认值中的服务器名称/ IP地址的参数化?
答案 0 :(得分:3)
有趣。我之前从未尝试过,但似乎动态值,您在请求默认值中定义的值始终会重新评估。
因此,您可以将其定义为随机javascript和两个字符串,具体取决于随机值:
${__javaScript((Math.random()<0.5)?'ALMA':'KORTE')}
计划和结果的屏幕截图:
通常,将名称放入csv文件并使用CSV配置元素,并说CSV具有翻转功能仍然更好。引自best practices:
16.5用户变量某些测试计划需要为不同的用户/线程使用不同的值。例如,您可能想要测试一个 需要为每个用户进行唯一登录的序列。这很容易 通过JMeter提供的设施实现。
例如:
创建一个包含用户名和密码的文本文件,分隔开来 用逗号。将它放在与测试计划相同的目录中。添加CSV DataSet配置元素到测试计划。命名变量 用户和通行证。用$ {USER}和密码替换登录名 在适当的采样器上使用$ {PASS} CSV数据集元素将 为每个线程读取一个新行。
答案 1 :(得分:3)
虽然我喜欢GáborLipták的回答,但我会提供另类的乐趣。
假设您要在DEV
和PROD
环境(虚拟环境)上执行测试。 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`
以下是截图(测试计划):
结果(为了清楚起见,添加了一些样品):
所以你切换环境或运行没有gui并通过命令行注入。您也可以为其他属性执行此操作,例如端口/端点等。