ほわいとぼーど

ぷろぐらまのメモ帳

JMeterでハマッた話

JMeterでショボい理由で無駄にハマッたので自戒をこめて書く。
普段はWindows上からJMeter使ってたのだけど
テスト対象の都合でLinuxから実施したかったので
Windows上でテスト計画を作成し動作確認後、
保存したJMXファイルをLinux上にもっていって実行する。

vagrant@jmeter:~/work$ /usr/local/apache-jmeter/bin/jmeter -n -t postdata.jmx 
Creating summariser <summary>
Created the tree successfully using postdata.jmx
Error in NonGUIDriver java.lang.RuntimeException: Could not find the TestPlan class!

エラーメッセージでググるも決定打は見つからず半日浪費・・・。

結論から言うと親要素が無い不完全なJMXファイルを作成していたから。
回避するには、別名を付けてテスト計画を保存したい場合には、
・ファイルメニューの「テスト計画に名前を付けて保存」を使う。
・テスト計画を選択した状態で「別名で保存...」ボタンを押す。

どうしてハマッたか一応説明言い訳。

f:id:a3no:20140505050759j:plain

JMeterGUIの左上の画像。
初期状態では「テスト計画」と「ワークベンチ」が並んでいて、
「テスト計画」の下に画像のようにツリー上にコンポーネントを配置します。
そして出来たら実行したり保存したりします。

画像を見るとおり保存ボタンぽいのが2つあって、
左が「テスト計画を保存」、右が「別名で保存...」です。
一番最初や動作確認がとれるまでは「テスト計画を保存」を利用して、
ちょっと条件を変えたので別名で保存したい時に「別名で保存...」を使いそうですね。

しかしココに実は罠が合って、「別名で保存...」は私が思っているのと違ったという話。
ボタンと同じコマンドはファイルメニューからも実行できて、見ると、

f:id:a3no:20140505050802j:plain

新たに「テスト計画に名前を付けて保存」が見つかりました。
では、「別名で保存...」は何を保存するのか。
答えは英語表記にしてみるとわかりました。

f:id:a3no:20140505050804j:plain

「Save Selection As...」

選択したものを別名で保存する、なので
最初の画像のように子要素を選択した状態で「別名で保存...」すると
部分的な保存になってしまうというオチでした。