読者です 読者をやめる 読者になる 読者になる

ぺーぺーSEのブログ

備忘録・メモ用サイト。

JMeterで電文をキャプチャする

JMeterにはプロキシサーバという機能があり、クライアントからのリクエスト送信をこのプロキシサーバを経由させることで電文をキャプチャできる。
ここではJMeter2.12を使用。


HTTPプロキシサーバの設定

JMeterGUIで起動して、「ワークベンチ」を右クリックして「追加」→「Non-Testエレメント」→「HTTPプロキシサーバ」を選択する。
「HTTPプロキシサーバ」の「Global Settings」の項目を設定する。

項目 設定例 備考
ポート 8080 プロキシサーバのポート番号
HTTPS Domains *.yahoo.co.jp. なぜか最後にドット

「テスト計画」の配下に「スレッドグループ」を作成しておくと、「Test plan content」の「対象となるコントローラ」で「テスト計画 > スレッドグループ」を選択でき、キャプチャの結果はスレッドグループ配下に記録される。
デフォルトでは、「記録コントローラの使用」となっていて、「ロジックコントローラ」の「記録コントローラ」を好きなところに作っておけば、その配下に記録されていく。

「HTTPプロキシサーバ」を右クリックして「追加」→「リスナー」→「結果をツリーで表示」を作成しておくとレスポンスも記録できて便利。

最下部の「開始」を押すと

Root CA certificate: ApacheJMeterTemporaryRootCA created in JMeter bin directory
You can install it following instructions in Component Reference document (see Installing the JMeter CA certificate for HTTPS recording paragraph)
Please check the details below when installing the certificate in the brower

CN=_DO NOT INSTALL unless this is your certificate (JMeter root CA), OU=Username:[xxxxxx],C=JP
Fingerprint(SHA1): xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
Created: Xxx Xxx xx xx:xx:xx XXX xxxx

と表示され、「OK」を押すとプロキシサーバが起動する。
また、上記の案内の通り、bin配下にセキュリティ証明書(ApacheJMeterTemporaryRootCA.crt)とUSRファイル(ApacheJMeterTemporaryRootCA.usr)が作成される。
HTTPSの場合は、クライアントにセキュリティ証明書を設定しないとキャプチャできない。


クライアントの設定

電文を送信するクライアントにプロキシサーバの設定を行う。
ブラウザやスマホタブレットにプロキシサーバのIPとポート、HTTPS通信の場合は上記で作成されたセキュリティ証明書を設定する。

iPhoneで設定してみた

プロキシサーバの設定

「設定」→「Wi-Fi」→「プロキシサーバと同じネットワークのWiFi」を選択すると、下の方に「HTTPプロキシ」があり、「手動」にして「サーバ」にプロキシサーバのIPと「ポート」にプロキシサーバのポート番号を入力する。

セキュリティ証明書の設定

Gmailでセキュリティ証明書(ApacheJMeterTemporaryRootCA.crt)を添付でiPhoneに送付して開いたらインストールできた。
消したいときは、「設定」→「一般」→「プロファイル」に「_DO NOT INSTALL unless this is your certificate (JMeter root CA)」という証明書があるので削除する。

PCブラウザの設定とかはぐぐって。


その他

JMeterのシナリオを作成する際には、上記で紹介したHTTPプロキシサーバ経由でキャプチャする方法の他に「Badboy」というソフトを使う方法がある。
http://www.badboy.com.au/
これはブラウザでの操作を記録してjmxファイルを出力してくれるソフトで、PCブラウザ対象のシステムでしか使用できないものの、最初のjmxファイル作成等には便利。
記録した操作を簡易に再生してくれる機能もあるが、Seleniumほど機能やテスト対象が拡充したものではない。