私は現在、作成した RESTful サービスのベンチマークに取り組んでおり、その一環として、大量のパラメーター配列に対して妥当な時間内にサービスが実行されることを確認しています。たとえば、フォームの RESTful API があるとしますsome_site.com/item?item_id=y
。その場合、自分のサービスが期待通りの速さで動作していることを確認するには、y の多くの値を、できればテキスト ファイルから取得して、1 つずつ試してみたいと思います。ab または httperf でこれを行う方法がわかりません。私は別のベンチマーク プログラムを使用することにオープンですが、シンプルで軽量なものを好みます。私がやりたいことはかなり標準的なことのように思えるので、それを実行させるプログラムがすでにあるに違いないと思いますが、1時間ほどグーグルで検索しても答えが得られません. アイデア?
2 に答える
回答:Jmeter(これは明らかに素晴らしいです)。このFAQはそれを行う方法を説明しています。これを理解するのに1日のように検索したので、これが他の誰かに役立つことを願っています。
私は、JMeter で (BSF/Rhino 経由で) JavaScript を使用する良い経験をしました。
テスト計画に 1 つのスレッド グループを配置し、その下に 2 つの要素 (「HTTP 要求」サンプラーと「BSF プリプロセッサ」) を持つ「単純なコントローラー」を貼り付けました。
BSF 言語を「javascript」に設定し、コードをテキスト ボックスに入力するか、ファイルを指定します (フル パスを使用するか、JMeter プロセスの CWD からの相対パスを使用します)。
/* Since `Math.random()` gives us float, we use `java.util.Random()`
* see: http://docs.oracle.com/javase/7/docs/api/java/util/Random.html */
var Random = new Packages.java.util.Random();
var min = 10-1;
var max = 2;
var maxLines = (min)+Random.nextInt(max-min);
var s = '';
for (var d = 0; d <= maxLines; d++) {
s += d.toString()+','+Random.nextInt(1000).toString()+'\n';
}
// s => '0,312\n1,104\n2,608\n'
vars.put('PAYLOAD', s);
${PAYLOAD}
HTTPリクエストで参照できるようになりました!
JSON を生成できますがjakarta-jmeter-2.5.1/lib/js-1.6R5.jar
、最新バージョンのRhinoにアップグレードしJSON.stringify
てJSON.parse
. ここに簡単な例を挙げたいと思いましたが、それは私にとっても完璧に機能しました。
URL パラメータにも BSF プリプロセッサを使用できます。別の変数を設定して、リクエスト パラメータにvars.put('X', 'some value')
渡すだけです。${X}
ちなみに、このブログ投稿はかなり役に立ちました。