具有不同参数的POST请求的JMeter替代方案(必须在没有GUI的情况下工作)

具有不同参数的POST请求的JMeter替代方案(必须在没有GUI的情况下工作),post,jmeter,load,benchmarking,apachebench,Post,Jmeter,Load,Benchmarking,Apachebench,据我所知,JMeter允许您使用不同的参数(例如,{“value”:“value1”},{“value”:“value2”},…)发送多个POST请求。但是,我更喜欢使用类似于ab或Wrage的基于终端的接口。基本上,我需要对服务器进行负载测试,模拟一些请求以前没有缓存的情况 对于JMeter for Linux,是否有能够对POST请求使用不同参数的替代方案 更新 据我所知,JMeter需要创建一个测试计划(jmx文件),以便通过命令行运行。不幸的是,这个测试计划需要使用GUI构建,这正是我想

据我所知,JMeter允许您使用不同的参数(例如,
{“value”:“value1”},{“value”:“value2”}
,…)发送多个POST请求。但是,我更喜欢使用类似于ab或Wrage的基于终端的接口。基本上,我需要对服务器进行负载测试,模拟一些请求以前没有缓存的情况

对于JMeter for Linux,是否有能够对POST请求使用不同参数的替代方案

更新

据我所知,JMeter需要创建一个测试计划(jmx文件),以便通过命令行运行。不幸的是,这个测试计划需要使用GUI构建,这正是我想要避免的

更新2


我将使用JMeter,因为它为POST请求提供了动态参数,并且大多数替代方案都依赖于JMeter。但是,如果有人知道一个独立的库专门从终端工作(类似于ab),请告诉我。

您可以在终端模式下使用JMeter,它被称为非GUI模式

要实现变量化,只需使用CsV数据集为每个线程加载变量(例如varName),然后使用${varName}

见:

最后的精彩报道:

如果您甚至不想使用GUI构建测试,请查看:

它允许您从DSL文件生成JMX

示例如下:

DSL在此:

将文件保存到ruby jmeter csv.rb 然后,您可以使用以下内容生成计划:

ruby-jmeter-csv.rb


在非gui模式下运行它。

事实上,当涉及到运行负载测试时,JMeter gui应该仅用于测试开发和调试-建议在、通过或运行JMeter。此外,还有两个更“极客”的选择,即:

  • JMeter.jmx脚本基本上都是XML文件,所以您可以使用自己喜欢的文本编辑器来创建或修改它们
  • 您可以使用来创建和启动使用Java语言的JMeter测试

如果您仍在寻找替代方案,这里有一些免费的开源负载测试工具

  • -您可以在中编写脚本
  • -您可以使用基于DSL的语言编写脚本
  • -这家伙只存在于基于Linux和Unix的平台上,基于Erlang。脚本是XML文件
  • -支持上述所有工具(以及更多工具)的自动化框架,基于Python的配置文件具有简单的语法

有关上述工具的更多信息以及它们与JMeter的比较,请参见

是的,我想这就是我要做的,但我无法确定需要使用哪些命令行参数来提供csv数据集并设置给定变量${varName}。你有一个例子说明如何使用它吗?按照任何教程说明如何在gui模式下使用它,它将在非gui模式下正常运行。只需确保cdv文件的路径为OK,这不会发生在命令行中。CSV数据集将在线程组的每次迭代中从CSV文件(另一个字段)中填充变量(它是其中一个字段)。Gui或非Gui工作原理相同问题是,如果没有以前由Gui生成的jmx文件,我不知道如何运行任务。在Gui中,单击绿色三角形运行计划,看看它是否工作,就是这样。使用查看结果树查看是否发送和获取所需内容,将其作为测试计划元素的子元素谢谢。我喜欢金牛座,但我认为它使用JMeter作为后端。如果是这样,我更喜欢使用JMeter,但我仍然不确定如何在POST请求中使用csv文件作为动态参数。大多数教程都展示了如何使用GUI进行此操作。
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
  require 'ruby-jmeter'
  test do
    csv_data_set_config name:'MyCsv', filename: '/path to file', variableNames: 'myParam'
    threads count: 10 do
      visit name: 'Qwant Search', url: 'https://lite.qwant.com/?q=flood.io&t=web&p=${myParam}'
    end
  end.jmx(file: "path to your output plan")