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

Alternatives to JMeter for POST requests with different parameters (must work without GUI)

据我所知,JMeter 允许您使用不同的参数发送多个 POST 请求(例如 { "value": "value1"}, {"value": "value2"}, ...)但是,我更习惯使用基于终端的类似于ab或siege的界面。基本上,我需要对服务器进行负载测试,以模拟先前未缓存某些请求的情况。

是否有针对 Linux 的 JMeter 替代方案,它们能够为 POST 请求使用不同的参数?

更新

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

更新 2

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

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

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

参见:

最后的好报告:

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

它允许您从 DSL 文件生成 JMX。

此处示例:

此处为 DSL:

$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")

保存文件到ruby-jmeter-csv.rb 然后您可以生成计划:

ruby ruby-jmeter-csv.rb

并且运行它在非gui模式下。

事实上,JMeter GUI 应该只用于测试开发和调试,当涉及到 运行 负载测试时 - 建议在 command line mode, via Ant task or Maven plugin 中使用 运行 JMeter。还有几个 "geek" 替代方案,即:

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

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

  • Grinder - you can write scripts in Jython
  • Gatling - you can write scripts in Scala 基于 DSL
  • Tsung - 这个家伙只存在于 Linux 和基于 Unix 的平台,基于 Erlang。脚本是 XML 文件。
  • Taurus - automation framework which supports all aforementioned tools (and some more), Python based, configuration files have simple YAML 语法。

有关上述工具的更多信息以及它们与 JMeter 的比较,请参阅 Open Source Load Testing Tools: Which One Should You Use?