JMeter httpsリクエストを記憶する
更新:2017-02-10
ブラウザで操作した内容を記憶して、シナリオを登録させる方法は、JMeter ブラウザの動きを記憶させるにて紹介しました。
ところが、同じやり方ではhttpsのプロトコルを利用したページを記憶することができません。
2015/6/6 JMeterのVersionが2.12 JAVAのVersion 8 Update 45 (ビルド1.8.0_45-b15)では、通常通りシナリオを登録すれば動作するようになりました。
今後バージョンによって使えなくなることもあるかもしれないので、Badboyを使ったSSLページのシナリオ登録方法を残しておきます。
「じゃあ一個つづ手動で対応するしかないか、、、」となるのところですが、ご安心ください。
Badboyというツールを利用すればSSL通信のページもシナリオ登録できるのです!
本日は、SSL通信であるhttpsのページを記憶させる方法について説明したいと思います。
なぜSSLはダメなのか
まずこの疑問を解決させましょう。
論より証拠ってことで、実際にやってみました。
まず、画面遷移の確認です。
今回は、SSLが使えるサイトが必要なので、いつものpenguinweb.netではなくhttps://lolipop-dp25166794.ssl-lolipop.jp/ec/を用意しました。
そちらで説明していきます。
(URLの通りlolipopの共有SSLを使ってます。ちなみにlolipopと契約をしていれば追加料金なしで利用できるのでお得です)
説明用にログイン処理で確認してみます。
https://lolipop-dp25166794.ssl-lolipop.jp/ec/にアクセスし、画面右上のメールアドレス・パスワードを入力すればログイン後画面へ遷移するというシンプルなものです。
なお、ログインに失敗すると以下の画面へ遷移し、赤字でエラーメッセージが表示されます。
では、JMeter ブラウザの動きを記憶させると同じやり方でシナリオを記憶してみます。
結果、ログイン処理のページは以下のとおり3つの値をPOSTしていました。
このまま「リスナー」→「結果をツリーで表示」を追加し、負荷テストを実行したところ、以下の画面のとおりエラーが表示されました。
もちろん、メールアドレス・パスワードに誤りはありません。
これで「ホントにダメなのね」ってことが確認できたので原因を説明したいと思います。
実はJMeter ブラウザの動きを記憶させるで利用した「HTTPプロキシサーバ」は、JMeterにプロキシサーバの役割をさせることでそのプロキシサーバ経由で発生した通信内容を記憶するという機能です。
ところが、https(SSL)の通信はプロキシサーバを経由した時点で暗号化されるのですが、JMeter側でその内容を復元できないからなのです。
つまり、メールアドレス・パスワードが暗号化されたままで複合化されていないため、正しい値として認識されていないのが原因なのです。
実現方法
簡単なシナリオであれば、「HTTPプロキシサーバ」の機能を使わず、「HTTPリクエスト」を使って一個づつシナリオを登録するという方法があります。
ところが、複雑なシナリオの場合は、ミスが起きやすいのであまりおすすめできません。
そこで、Badboyというツールを利用することでシナリオを記憶させ、その記憶したファイルをJMeter に取り込むことで負荷テストを実行することが可能になります。
名前からして悪そうなツールですが、登録したシナリオをひたすら実行するのに特化されたツールのようです。
たぶん、楽天スーパーセールですぐ売り切れてしまう商品を購入するときに使ったりするのではないでしょうか(あくまでも推測です。。。)
実施手順
それでは説明していきます。
なお、前提条件になりますがBadboyはWindows専用のためWindowsを用意してください。
(これはInternet Explorerのコンポーネントを利用しているためです。macの方はごめんなさい。。。macでも出来るようになったらこちらで紹介します)
Badboyの取得
http://www.badboy.com.au/にアクセスし、ツールをダウンロードします。
ダウンロードするのに、個人情報を入れる欄がありますが、適当に入力すればOKです。
バージョンがいくつかありますので、最新版をダウンロードします。
以下の画面が表示されたらダウンロードが開始されます。
Badboyのインストール
ダウンロードが完了したら、「BadboyInstaller-2.2.exe」というファイルが保存されるので、実行します。
すると、Badboyのインストーラーが起動するので画面にしたがって進めます。
途中、スタートメニューに入れるかどうか聞かれますがどちらでOKです。
ちなみに、スタートメニューに追加すると、名前の割にはあんまり悪くなさそうな少年のアイコンが表示されます。
Badboyの起動・シナリオ登録
インストールが完了したら、Badboyを起動します。
起動時からレコーディングが開始されているので、赤丸をクリックしてストップします。
アドレスバーに「https://lolipop-dp25166794.ssl-lolipop.jp/ec/」と入力してエンターを押下すると、右下のエリアにサイトが表示されます。
画面が表示されたら、赤丸ボタンを押して記録を開始します。
ここでは、先に説明したログインの処理を記憶してみます。
メールアドレスとパスワードを入力して、ログインボタンをクリックします。
ログインが成功し、ログイン後の画面(マイページ)が表示されたらレコーディングを停止します。
動作が保存されているかを確認するために、画面左上のエリアにあるURL名をクリックして処理を確認します。
保存されている動作に問題がないことを確認したらJMeterが取り込める形でファイルを保存します。
メニューバー「File」 → 「Export to JMeter」をクリックすればjmxファイルとして保存されます。
(jmxファイルは、JMeterで取り込め専用のファイルです)
JMeterでシナリオ実行
ではJMeterで取り込んで見ましょう。
JMeter起動し、メニューバー「ファイル」→「開く」で、先ほど保存したjmxファイルを指定します。
すると、HTTPリクエストとして以下のとおりログイン処理の情報が保持されていることが確認できます。
最後に保存されている動作がJMeter上で正しく実行されるか確認します。
リスナー「結果をツリーで表示」を作って、実行してみます。
このとおり、ログイン後ページ(マイページ) が正しく表示されていることが確認できました。
最後に
個人情報を入力するページは、SSLが当たり前の時代である現在、SSL通信を前提としたサイトの負荷テストを求められることになります。
また、2015年2月にCloudFlareが無料でSSLの証明書を発行してくれるようになったので、金銭的な理由で導入できないということはなくなるかと思います。
JMeterを使う人は、SSLページでも対処できるようにしておきましょう。
コメント一覧
コメントはありません