前回は、GatlingのシナリオをIDE(IntelliJ IDEA)で作成して、実行する環境のセットアップを解説しました。
今回は、より実践的な「Gatlingを使って負荷テストを行うときのTis」をご紹介します。
Recorderを使って、新しいシナリオを作る方法-その① HTTP Proxy
GatlingにはRecorderというツールがあり、ブラウザでの一連の動きを記録して、スクリプトに変換することができます。
どのように記録して、変換を行うかは2つの方法がありますが、最初に「HTTP Proxy」を使った方法の解説です。
まずは、GatlingRecorderを起動します。
MavenProjectsのPlugins->gatling->gatling:recorderを右クリックして、「Run Maven Build」を起動すると、下記のようにRecorderが起動します。
gatling:recorderをキック
GatlingRecorderが起動
Recorderが起動しましたが、開始前に少し設定を確認してみましょう。
Recorder mode・・・右上にあるモードではHTTP Proxyを選択します。
Network・・・これが、Gatlingのプロキシー・サーバのポートです。このポート番号でサーバが起動し、ブラウザのproxy設定をこのサーバ(localhost:指定しているポート番号)にすることで、このサーバを通ったリクエストが記録されます。
Simulation Information・・・記録した後、Scalaのクラスを生成しますが、そのパッケージとクラス名を設定します。デフォルトでは、「io.gatling」というパッケージになっていますので、Package&ClassNameの部分を、自分の好きなパッケージ名とクラス名に変更した方が良いです。(パッケージがio.gatlingのままだと、クラス生成時にsymbolが見つからないエラーになってしまいます。)
設定を確認したら、右下の「Start!」ボタンを押すと、プロキシー・サーバが起動し、待ち受けを開始します。
後は、お好みのブラウザで、URLにアクセスしたり、サイトを閲覧するなどの回遊を行えば、記録されますが、ブラウザの設定は、待ち受けているプロキシー・サーバを経由するように、設定を変更しておかなければいけません。
Windowsだと、インターネット・オプションで、プロキシー・サーバ(localhost:8000)を使用するように設定しておきます。
Recorderを使って、新しいシナリオを作る方法-その② HAR Converter
シナリオを生成するもうひとつの方法は、「HAR Converter」を使います。
HARファイル形式というのをご存知ですか?HTTP Archive形式とも呼ばれ、一連のHttpセッションを保存しておくことが出来ます。
GatlingRecorderは、このHARファイルを読み込んで、スクリプトに変換し、Scalaクラスを生成することが出来ます。
Basic認証のあるページなど、その①で紹介したHTTP Proxy形式だとうまくいかないケースもありますし、ブラウザのプロキシー設定を変更する手間も必要ないことから、私はもっぱらこの方法を使っています。
HARファイルは、ほとんどの一般的なブラウザで保存することができます。
ここでは、Chromeを例に、解説したいと思います。
Chromeで、その他のツール->ディベロッパーツール を開くと、以下のようなツール画面が開きます。
この画面の「Network」タブに行くと、Httpセッションを確認することができます。
通常は、画面遷移するたびに画面の履歴がクリアされますが、画面上部の「Preserve log」にチェックを入れておくと、チェックを入れてから後のシーケンスはそのままになっています。
一通り画面遷移が終わったら、画面中央で右クリックして「Save as HAR with content」を選択すると、HAR形式のファイルとして保存できます。
保存したHARファイルをGatling Recorderで読み込んでクラスを生成してみましょう。
その①と同様にRecorderを起動したら、右上のモードを「HAR COnverter」に設定します。
すると、HARファイルを指定できるようになりますので「Browse」ボタンを押してHARファイルを指定します。
それが終わったら、右下の「Start!」ボタンを押すと、HARファイルの解析とScalaクラスの生成が行われます。
パッケージ名とクラス名のところは、その①でも記載したように、io.gatlingから変更しておくことをお勧めします。