JMeter 使って Webアプリに同じ操作を何度もしてみよう #2 実際の繰り返し処理

以下のような操作を JMeter で自動的にどんどんやっていくという処理例をひとつ。

・外部ファイルからパラメータを取得して

HTTPS(SSL)な Webアプリに対して

・繰り返し入力する

 

■ループコントローラを設置

 

繰り返し処理を行いたいので、ループコントローラを設置します。

「スレッドグループ」を右クリックして「追加」→「ロジックコントローラ」→「ループコントローラ」

ループ回数が決まっているなら、ループ回数を入力します。今回は、外部から入力したファイルが終端になるまでとしたいので、無限、と設定します。

 

CSV Data Set Config で読み込みファイルの設定

 

外部ファイルを読み込む設定を行います。

「ループコントローラ」を右クリックして「追加」→「設定エレメント」→「CSV Data Set Config」

CSV Data Set Config は、上位の場所に置いた場合、「スレッドグループ」に設定されたループ回数に従い次々とデータを取り出します。「ループコントローラ」の中に設置することにより、この「ループコントローラ」のループ回数に従い次々とデータを取り出します。

Filename 欄にデータの入ったファイル名を指定します。テキストファイルでレコード区切りは改行です。

File encoding 欄に必要であればファイルエンコードを記入。今回はUTF-8のファイルを用意したのでUTF-8としました。

Variable Names(comma-delimited) 欄に、読み込み先変数名を指定します。例えば3つのフィールドからなるCSVだったら、 col1,col2,col3 といったようにカンマ区切りで指定します。変数名は何でも良いです。あとで ${col1} といった書式で参照できます。

Delimiter 欄に、CSVのフィールド区切り文字を記入します。

Allow quoted data? 欄に、データのクオートについて指定します。

Recycle on EOF? 欄に、ファイルの終端に達したときまた1行目から繰り返すかを指定します。今回は、ファイルの終端に達したときに終わりにしたいので、False とします。

Stop thread on EOF? 欄に、ファイルの終端に達したときにスレッドグループ自体を終了するかどうかを指定します。今回は、ファイルの終端に達したときに終わりにしたいので、True とします。

Sharing mode は、CSVの行を読み進めるカウンタを他のスレッドと共有するかこのスレッドだけで独自に管理するかを指定します。今回は他にスレッドがないので初期値のまま。

読み込む CSV ファイルは、今回はフィールド 1つだけのシンプルなヤツです。

 

■HTTP リクエスト本体

 

「ループコントローラ」を右クリックして「追加」→「サンプラー」→「HTTPリクエスト」

Web サーバ項目のサーバ名またはIPアドレス欄に、接続先サーバ名とポート番号を指定します。80番の時はポート番号が省略できますが、それ以外の時はポート番号を記入します。今回は一般的なHTTPS接続をしたいので、 443と記入します。

HTTPリクエスト項目の Implementation 欄にはとりあえず HttpClient4 を選んでおきます。

プロトコル欄には、今回は https 接続をしたいため https を入力します。http の場合は省略できます。

メソッド欄には、GET や POST など HTTP のメソッドを選びます。今回は GET としました。

Content encoding 欄には、この通信での文字コードを記入します。特になければ空欄でも良いですが、今回はUTF-8とわかっているのUTF-8と記入します。

パス欄には、URL パスを入力します。

もしリダイレクトされた先も一緒に辿って欲しいなら「リダイレクトに対応」にチェックを入れておきます。IDパスワード入力してログインしてからログイン後ページにリダイレクトで遷移する、なんて場合はこちらをチェックしておきます。

Parameters タブのリクエストで送るパラメータのところに、名前と値を記入します。今回は、外部ファイル(CSV)から読み込んだデータを使いたいので、CSV設定のところで設定した変数名を指定します。 ${col1} と設定しました。

Encode? はURLエンコードして置いた方が良いなーって時にチェックしておきます。

 

■リクエスト毎に休憩をはさむ

 

負荷試験目的ならリクエストを休みなくガンガン送りつけても良いのですが、単純に処理を自動化したいだけなら、サーバに迷惑をかけないように操作毎にウェイトを入れます。

「ループコントローラ」右クリック「追加」→「タイマ」→「定数タイマ」

スレッド遅延時間欄にミリ秒単位で待ち時間を記入します。今回は余裕持ちまくって 3000 と入力しました。人間の世界で3秒といえば短いですが、コンピュータの世界では3秒はかなり長いので充分余裕を持ったウェイトだと思います。

以上、このくらいの設定をしてから、緑の三角アイコンをクリックすると自動的に処理がはじまります。CSVの終端に達すると処理を終了します。

どんどん自動運転できます。便利です。