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}
参见:
http://jmeter.apache.org/usermanual/get-started.html#non_gui
http://jmeter.apache.org/usermanual/component_reference.html#CSV_Data_Set_Config
最后的好报告:
如果您甚至不想使用 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?
据我所知,JMeter 允许您使用不同的参数发送多个 POST 请求(例如 { "value": "value1"}, {"value": "value2"}
, ...)但是,我更习惯使用基于终端的类似于ab或siege的界面。基本上,我需要对服务器进行负载测试,以模拟先前未缓存某些请求的情况。
是否有针对 Linux 的 JMeter 替代方案,它们能够为 POST 请求使用不同的参数?
更新
据我所知,JMeter 需要创建测试计划(jmx 文件)才能通过命令行 运行。不幸的是,这个测试计划需要使用 GUI 来构建,这正是我想要避免的。
更新 2
我将使用 JMeter,因为它为 POST 请求提供动态参数,而且大多数替代方案都依赖于 JMeter。但是,如果有人知道专门从终端运行的独立库(类似于 ab),请告诉我。
您可以在终端模式下使用 JMeter,这称为非 GUI 模式。
要可变化,只需使用 CsV 数据集为每个线程加载变量(例如 varName),然后使用 ${varName}
参见:
http://jmeter.apache.org/usermanual/get-started.html#non_gui
http://jmeter.apache.org/usermanual/component_reference.html#CSV_Data_Set_Config
最后的好报告:
如果您甚至不想使用 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?