ruby-jmeterを使ってJMeterのテストシナリオをrubyで書く

投稿者: | 2015年6月19日

高橋です。
JMeterは負荷試験を行うときの定番ツールですが、GUIで設定していくにしてもXML編集するにしてもどうも取っ付きづらい。もう少し書きやすくできないものかと思い調べてみたらruby-jmeterというrubyのDSLでテストシナリオを書けるgemがあったので使ってみました。

インストール

グローバルにインストールする場合は gem install ruby-jmeter と叩いてインストールしてしまえばOK。
作業領域を指定して使う場合は、以下の様なGemfileを用意して bundle install を実行。

source "https://rubygems.org"

gem 'ruby-jmeter'

次に、テストシナリオファイルを定義します。ファイル名は自由ですがtest.jmx.rbとします。

require 'ruby-jmeter'

base_url = 'https://localhost:3000'

test name: 'Test JMX' do
  threads count: 360, rampup: 180, loops: 200 do
    visit name: 'Page View', url: "#{base_url}/items/${__Random(1,100)}"
  end
  view_results_in_table
  graph_results
  aggregate_graph
end.jmx(file: 'test.jmx')

上記のテストシナリオファイルを実行すると、JMXファイルが出力されます。最後の.jmx()を.runに置き換えることで、直接起動することも出来るようです。

bundle exec ruby test.jmx.rb

上記で出力されたファイルを読み込んでJMeterを起動すると、以下の様な設定になっています。

スクリーンショット 2015-06-18 13.48.37

スクリーンショット 2015-06-18 13.48.29

JMeterはそもそもいい感じに負荷をかけるための設定が難しかったりはしますが、設定の作成の煩雑さはかなり軽減されるのではないかと思います。