LoadRunner(穴掘るほうじゃないよ!) | すえぞうのブログ

すえぞうのブログ

すえぞうくんの日常と趣味のことをツラツラと書いたりするのです

って、それは『Lode Runner』ですね、すいません。
と、ボケはこのぐらいにして負荷テストに使用するHP製Load Runnerの使い方について、メモです。

まず、基本的な使い方から

<<基本的な使い方>>

1.Virtual User Generator(VuGen)を使って、仮想ユーザの操作を記録し、操作スクリプトを作成する。

2.Controllerに操作スクリプトを組み込んで、性能計測を実施する。

LoadRunnerの最も簡単な使い方としては、上記の2ステップになります。
しかし、この方法だと複数のユーザで同時だったり、操作対象をユーザごと操作ごとに変更したいといった場合、操作スクリプトをそのパターンごとに生成する必要があって、面倒ですよね。
あと、負荷の発生パターンを入力値を変えて増やすときにも面倒です。

まぁ、一度きりの力技としてはありかもしれませんけど。
ここはスマートに都度変更したい値について、パラメータ化する方法、加えて途中に反復処理を混ぜ込む方法を説明します。

まず、パラメータ化について

<<パラメータ化>>
パラメータ化にするにあたって、気をつけておくことがあります。
それは、スクリプト化する操作内容によっては、パラメータ化することが難しい操作があるということ。

例えば、検索画面で何も指定せずに全件表示をし、「次へ」ボタンを数度クリックし、目的の物品を見つけて購入、といった操作は、パラメータ化が難しい。
どういうことかというと、仮想ユーザの操作スクリプトは、反復処理させたいアクションをブロック化し、そのブロックに対して反復回数を指定することで、反復処理を実現しているのです。
この反復回数はパラメータ化できないため、「次へ」ボタンを"数度"クリックという部分の表現が難しい。
(もしかしたらあるのかもしれないけど、今のところ知らないので、分かったら追記します)
このため、こういった処理では、物品をあらかじめ検索して選択するといった操作にしておくことで、パラメータ化を実現することができます。
なので、大事なのは、はじめにどうしたらパラメータ化しやすい操作順になるかを考えておくことですね。

次に、パラメータ化するには、
1)スクリプト画面でパラメータに置換する
2)ツリー画面で操作のプロパティからパラメータに置換する
の大きく2つの方法が取れます。

スクリプト画面で置換するには、置換したいパラメータを選択して、色反転させた状態で右クリックし、「パラメータで置換」を選択します。
すると「パラメータの選択または作成」ダイアログが表示されるので、パラメータ名とパラメータのタイプを選択して、パラメータのプロパティダイアログに遷移します。

パラメータのプロパティでは、使用するパラメータのタイプ、パラメータを格納したdatファイルのパス、次の行を選択する方法、更新するタイミングを選択。
datファイルの中身は、CSVファイルで区切り文字としてカンマ、空白文字、タブの3種類が選択可能。
ファイル等に格納されたデータの「次の行を選択」する方法には、順次(Sequential)、ランダム(Ramdon)、一意(Unique)、他のパラメータファイルの同一行(Same line as )が選択可能。
このうち、一意の場合では、仮想10ユーザで5反復させる場合、50個の値を用意していないと、一意な値が取得できなくなるので注意が必要でし。
一意な値が取得できなかった場合の処理をプロパティ上で制御することも可能。
説明が面倒なのと、マニュアルにちゃんと記載があるので、このエントリ上では省くことにします。
リクエストがあれば、次回以降に書きますけど(;´∀`)

更新するタイミングについては、反復ごと(Each iteration)、出現ごと(Each occurrence)、一度きり(Once)の3パターンが用意されてます。

このうち、
■「反復ごと」はこの後に述べる「実行環境の設定」に登場する「実行論理」の「実行」ブロックが反復されるタイミングになります。
実行論理では、「実行」に入れ子にする形式で反復を設定できるが、この反復はパラメータのインクリメントには反映されませんので、注意してください。

■「出現ごと」の場合、同じ変数名が出現するタイミングでインクリメントされます。

■「一度きり」の場合には、変数名が出現したタイミングで一度だけ更新されて、その後同じ変数名がスクリプト上に出現しても更新されません。
入れ子にしたブロック単位に値を変更したい場合、違う変数名をつけて―不細工だが「Var1」、「Var2」とかして―それを同じファイルから読み込ませて、かつ「次の行を選択」で「順次」を選択すれば、できるような気がしますが、結構面倒かも。

<<反復処理>>

反復処理を織り込む方法としては、大きく分けて以下の2つの方法があります。

1.VuGenでスクリプトを作るタイミングで「実行論理」で反復を設定する。
2.Controller側でスクリプト全体を繰り返し実行させる。

前者と後者の大きな違いは、以下のように考えてください。

■前者のVuGenレベルでの反復処理は、ログイン後の操作の一部を反復させる(繰り返し入力)場合に使用する。

■後者のControllerレベルでの反復処理は、ログインからユーザがログアウトする前での一連の処理を反復処理させる場合に使用する。

で、前者は後者の代わりができるが、後者は前者の代わりができないことに注意。
Controllerはあくまでスクリプトの連続実行なので、その一部を反復といった芸当が絶対にできないので、負荷シナリオとして、複数の商品を選択するといった反復処理は、VuGenレベルで表現することが必要となります。

なので、パラメータ化でも書きましたが、どういう画面遷移にするかが大事なポイントですね。

VuGenを使って仮想ユーザ・スクリプトを作成する部分については以上です。
トランザクションやランデブーといった部分については、次回にしたいと思います。