据我所知,JMeter允许您发送带有不同参数的多个POST请求(例如{ "value": "value1"}, {"value": "value2"}
,...)但是,我更习惯使用类似于ab或siege的基于终端的界面。基本上,我需要加载测试服务器,模拟以前没有缓存某些请求的情况。
对于能够为POST请求使用不同参数的JMeter for Linux有替代方法吗?
更新
据我所知,JMeter需要创建一个测试计划(jmx文件)才能通过命令行运行。不幸的是,这个测试计划需要使用GUI构建,这正是我想要避免的。
更新2
我将使用JMeter,因为它为POST请求提供动态参数,而大多数替代方案依赖于JMeter。但是,如果有人知道一个专门从终端工作的独立库(类似于ab),请告诉我。
答案 0 :(得分:2)
您可以在终端模式下使用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:[Activity(Label = "App4", MainLauncher = true, Icon = "@drawable/icon")] public class MainActivity : Activity { int count = 1; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); // Get our button from the layout resource, // and attach an event to it Button button = FindViewById<Button>(Resource.Id.MyButton); button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); }; MyAdapter myAdapter = new MyAdapter(this, 0) ; myAdapter.RegisterDataSetObserver(new MyDataSetObserver()); } } public class MyAdapter : ArrayAdapter { public MyAdapter(Context context, int layout) : base (context, layout) { } } public class MyDataSetObserver : DataSetObserver { public override void OnChanged() { base.OnChanged(); } }
将文件保存到 ruby-jmeter-csv.rb 然后,您可以使用以下方式生成计划:
ruby ruby-jmeter-csv.rb
以非gui模式运行。
答案 1 :(得分:1)
实际上JMeter GUI应仅用于测试开发和调试,当涉及到运行负载测试时 - 建议在command line mode,Ant task或{{3}中运行JMeter }。还有一些更“极客”的选择,即:
如果您仍在寻找替代方案,那么这里有一些免费和开源的负载测试工具
有关上述工具的更多信息以及它们与JMeter的比较,请参阅YAML