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

时间:2016-08-15 00:02:26

标签: post jmeter load benchmarking apachebench

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

对于能够为POST请求使用不同参数的JMeter for Linux有替代方法吗?

更新

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

更新2

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

2 个答案:

答案 0 :(得分:2)

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

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

见:

最后的好报告:

如果您不想使用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 modeAnt task或{{3}中运行JMeter }。还有一些更“极客”的选择,即:

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

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

  • JMeter API - 您可以在Grinder
  • 中编写脚本
  • Jython - 您可以在基于Gatling的DSL
  • 中编写脚本
  • Scala - 这个人仅适用于基于Linux和Unix的平台,基于Erlang。脚本是XML文件。
  • Tsung - 自动化框架,支持所有上述工具(以及更多),基于Python,配置文件具有简单的Taurus语法。

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