Webサービスのパフォーマンス測定とか、簡単なベンチマークは ab で済ましちゃうし、大規模なプロジェクトでは有償のんとか使うし、今まで存在は認識しつつも、使ってなかったJMeterを使ってみたのでメモします。
Jakartaプロジェクトじゃなくて、いまはApacheプロジェクトに昇格したそうな。じゃAmeterじゃん、とは言わない。
インストールと実行
インストールといっても、java (jre)さえ有ればダウンロードして実行するだけです。
公式サイトからダウンロードし、
任意のディレクトリに解凍し、実行権限を付与して、起動するだけ。
cd ~/apache-jmeter-2.9
chmod ugo+x bin/*.sh
bin/jmeter.sh
画面はこんなんです。
操作方法は参考サイトが詳しいんで、一度作ってみれば覚えます。1〜2時間もあれば簡単なテストはできます。
ざっくり説明すると、テスト計画にスレッドグループを作成し、その中にサンプラーを作成して、必要に応じて設定エレメントも作成し、実行します。結果を見るにはリスナーも作りましょうね。ワークベンチならブラウザ操作を受け取るプロキシとなって自動でサンプラー作れますよ、です。
設定エレメントを使えば、BASIC認証とかもできますし、POSTのパラメータとかも作ったりできますから、動的なWEBサービスも頑張ったら測定できます。
ドキュメントを見る限りでは、分散環境での大規模な負荷テストにも使えそうです。負荷テストは負荷かける側の台数がキモですからね。AWSとか使ってガシガシできそうな予感。コレはいいですぞ。
一応、戻り値というか画面をチェックするアサーションな機能もあるようです。そこまではまだ弄ってませんけど。
ロジックコントローラという機能で、サンプラーの頻度や動きもある程度は定義できるようです。ただぱっと見た感じでは、ループやランダムなどの一定のシナリオは作れても、アサーションと連動してサンプラーのフローを制御する、とかまでは出来なさそう。手抜き回帰テストに使えないかと思ったんですが、残念。