ここからはじめようシリーズの4回目はHPE LoadRunner 12 (以後 HPE LR12)をはじめて使う方向けの基本的な使い方を説明していきます。一通りとはいえ、負荷テストのスクリプト作成から、実施、レポート作成まではかなりのボリュームがあるため、4回目は前編とし、次回に後編という形で2回に分けて説明していきます。
準備として、HPE LR12がインストールされている事ですので、まだの方は、3回目を見ていただきインストールを完了してください。
では、さっそくサンプルアプリケーションである、Web Toursを起動するところからはじめてみましょう。
HP LR12をインストールしたマシンで、「すべてのプログラム」から「HP Software」-「HP LoadRunner」-「Samples」-「Web」-「Start HP Web Tours Server」 をクリックしてください。
すると、次のようなファイアウォールに対してこのサンプルアプリケーションが使うためのにブロックを解除していいか許可を確認するための警告がでてくると思いますので、問題なければ「アクセスを許可する」をクリックしてください。
すると、次のウィンドウが新規に起動し、Web Toursのサービスが起動します。くれぐれも、このウィンドウはクローズしないようにお願いします。クローズするとWeb Toursのサービスが終了してしまいますので注意しましょう。
では、どのようなWebアプリケーションなのかみてみましょう。ブラウザからページのURLを入力してもいいですが、今回は次のように確認してみます。
サービスを起動したのと同様な方法で「すべてのプログラム」から「HP Software」-「HP LoadRunner」-「Samples」-「Web」-「HP Web Tours Application」 をクリックしてください。
はい、次の「Web Tours」アプリケーションのトップ画面が無事表示されましたでしょうか。
このWeb Toursというアプリケーションは、ユーザーが航空チケットを自分で購入するためのサイトを想定しています。ユーザーが登録したUsernameとPasswordでログインし、希望日、出発地、到着地を選択すると該当する航空会社と便が出力され、それを購入することができます。
といっても架空の航空会社ですので、実際の購入はしませんので、ご安心ください。
また、デフォルトでは、多重ログインを許可しています。設定を変えて、多重ログインを禁止することも可能ですが、今回は、このままデフォルト設定で実施します。
では、実際にご自身のUsernameとPasswordを登録しましょう。画面中央にある「sign up now」をクリックしてみてください。
次のような画面が表示されると思いますので、ここで、ログインに利用するUsername、Passwordと個人情報を適当に入力して最後に「Continue」をクリックしてみてください。
これで無事、ログインに必要なUsernameとPasswordが登録完了しました。
これで、対象アプリケーションのWebTours側の事前作業は終わりましたので、いよいよHP LR12を使ってスクリプトを作っていきましょう。皆さんがHP LR12をインストールしたマシンのデスクトップをみてみてください。
前回の手順に従ってインストールが無事終了しているなら、次の3つのアイコンが表示されているはずです。
簡単にそれぞれ説明してみます。
まず、「Virtual User Generator(以後、VUGen)」は、負荷テストに実施に必要な人の操作を実施したときに発生するトランザクションをシミュレートするためのスクリプトを作成&編集する機能モジュールを実装したツールです。
「Controller」は前回の説明でチラっとでてきましたが、実行時に負荷テスト全体の指示やサーバー側のモニタリングをする機能モジュールを実装しています。
例えば、仮想ユーザー(以後、VU)をどのくらい(何ユーザーずつ)でどのくらいかけて限界まであげていくか(30秒ごとに増加していく)というランプアップや、その逆でどのくらいかけて減らしていくかというランプダウンを設定できます。
また、チケット購入サイトや、通販サイトであるような今日の10時から販売セールしますというような場合に、ユーザーが開始時間にあわせて増加し、購入ボタンを一気に同時にクリックするような設定(ランデブーといいます)も設定できます。
それに、なんと言ってもHP LR12の強みは、負荷テスト実施中のサーバー側のリソース情報を収集するという機能です。これにより、初期のボトルネック切り分けを支援してくれます。
「Analysis」は負荷テストのレポートを作成する機能モジュールを実装しています。テストは一回で終わることはなく、ボトルネック検出>修正>再テストの繰り返しですから、何度も実施するのが通常です。
その場合、前回とどの程度改善したのか相関が必要ですし、リソースとHPS(Hit Per Sec)、TPS(Transaction Per Sec)と言った情報も相関したいはずです。Analysisはこれらの相関レポートも簡単な操作で表示させることができます。
このほかに、前回の説明でチラっと説明した「Load Generator(以後、Load Gen)」があります。これは、Controllerからの指示に基づき、VU Genで作成したスクリプトを使って、VUを生成する機能モジュールを実装しているツールです。
では、最初は VU Gen を使って負荷テスト用のスクリプトを作成していきましょう。
デスクトップの「Virtual User Generator」をクリックして起動してください。
起動時にロゴが表示され、その後に VU Gen の初期起動画面が表示されます。
どうでしょうか、次の画面が無事表示されましたでしょうか?
では、新規スクリプトをつくために「ファイル」-「新規スクリプトおよびソリューション」をクリックしてみましょう。
すると、次の「新規スクリプトの作成」ウィンドウが開くので、今回は対象アプリケーションはWebですので、「Web - HTTP/HTML」を選択して、「スクリプト名」にこのスクリプトにつける名前を入力し、「場所」には、スクリプトを保存する先を設定し「作成」をクリックしてみましょう。
すると、VU Gen の画面に戻るので、左の「ソリューションエクスプローラ」に下図のように、Actionsなどが表示されているのを確認してください。このActionsに実際のスクリプトを記録し、編集していきます。
さっそく操作を記録していきましょう。ツールバーにある赤い丸の形をした「記録」をクリックしてみましょう。
「URLアドレス」部分を、みなさんのサンプルアプリケーションのトップ画面のURLを入力してください。
他の項目はデフォルトのままでかまいません。いよいよ記録していきます。「記録」をクリックしてください。
対象のアプリケーションが開くと同時に、下記のやや右上に表示されている「記録中」ツールバーが表示されましたでしょうか。
いま、記録がはじまっています。実際にはまだなにも操作していませんが、ツールバーにある(88)という数字をみてみてください。実は、対象のWebサーバーとやり取りしている通信が88回発生していた事を示しています。
登録したみなさんの Username と Password でログインしてみましょう。入力したら、「Login」をクリックします。
登録されていれば、無事にログインされるはずですので、もしログインできないエラーが出た場合は上の手順を再度読み直してもらい、 User Name と Password を登録しておいてください。ログインしたら、左メニューから「Flights」を選択しクリックして下さい。
「Find Flight」という新ページが開くはずです、これは、ユーザーがフライト希望日と、座席グレード、出発地、到着地を条件として該当する航空便が空いているかどうか検索するためのページです。
今回は、下記のように入力して「 Continue 」をクリックしましょふ。
該当する航空便の候補がリストアップされて表示されます。ここでは、特にこだわりなく、デフォルトのトップにある便を選択して「Continue」をクリックしましょう。
次に、支払い情報を入力する「Payment Details」というページが開きますので、ここで必要な情報を入力してください。Credit Card番号は実在しないもので動作しますので、下図のように10桁で、将来のExpiration Dateを記入したものであれば問題ありません。
入力したら「Continue」をクリックしましょう。
すると、請求明細を表示する「Invoice」ページが開きます。ここで、左のメニューの「Itinerary」をクリックしてみましょう。
今回は、購入せず、キャンセルしてしまいましょう。「Itinerary」ページの右下に表示される「Cancell All」をクリックしてみましょう。
キャンセルが問題なく終了すると、次のように「No flights have been reserved」と表示されますので、これでログアウトします。左のメニューから「Sign Off」をクリックしてみてください。
元のログイン前の画面にもどりました。これで、サンプルアプリケーションWeb Toursへの操作は終了します。右上のクローズボタンをクリックして閉じてしまってかまいません。
「記録中」ツールバーの四角いマーク「記録を停止」をクリックして、スクリプトの記録を停止します。
すると、VU Gen の画面に戻りますが、自動で解析中という表示がでて、終了すると「デザインスタジオ」というポップアップウィンドウが開きます。今回は、この「デザインスタジオ」の中で下記図にあるように「相関」ボタンをクリックしてみます。
相関についてちょっとだけ説明します。
今回、一番ベーシックなWebプロトコルの記録方法で記録しました。ここからはじめるシリーズの1回目、2回目で紹介したUFTは実際のWebブラウザなどを操作する一番人の操作に近いレベルでスクリプトを記録します。ただし、Webブラウザをシュミレーションするユーザー数分起動すると、メモリーを消費しますので、できるだけVU数を多く1台のマシンで生成したいという負荷テストの目的とはずれてしまいます。
そこで、HP LRでは、サーバーとクライアント間の通信トランザクションをキャプチャしてスクリプトを生成し、VUを生成する時は、Webブラウザを複数起動させるのではなく、トランザクションを複数シュミレートするという方法を使います。
これにより、少ないメモリーでより多くの操作をシュミレーションできるのです。
と前置きが長くなりましたが、そのため、トランザクションを解析すると、送信するHTTPリクエストには、その前に受信したレスポンス情報からデータを引き継いで送信する必要があります。
例えば、Session IDが一番イメージしやすいと思います。記録したときのSession IDと再生実行した時は異なるSession IDになるはずですから、これをパラメータ化しておかないといけません。
前に受信したレスポンス情報から、次のページのリクエストに必要なデータ(Session IDなど)をパラメータ化することを「相関」といいます。
HP LRでは、記録したトランザクションのレスポンスとリクエスト情報を全チェックして自動で相関箇所と思われるところを「デザインスタジオ」に表示してくれます。
下図は、今回は相関箇所が1つ見つけたという事を示しています。
仮に、HP LR の自動相関で検出できない場合は、手動で相関処理をしていきますが、今回はそこは説明は省きます。
相関を適用したら、右下の「閉じる」をクリックして「デザインスタジオ」を終了させます。
はい、これでスクリプトをとりあえず実行できる所まできました。多重ログイン禁止のサイトであれば、UsernameとPasswordのパラメータ化というのをする必要がありますが、今回は多重ログインOKですので、パラメータ化も省きます。パラメータ化についてどうしてもすぐ知りたいという方は、HP LR12のヘルプやユーザーガイドを参照してみてください。
次のようにVU Gen上に記録されたスクリプトが表示されましたか?
では、試しに一度、記録したスクリプトを1ユーザーでデバッグとして再生してみましょう。
ツールバーの三角マーク「再生」をクリックしてみてください。
自動で再生がはじまります。上述したように、UFTのようにWebブラウザは起動して実行しません。HP LRはあくまでもトランザクションをシュミレーションしますので、VU Genの「出力」のところにトランザクションの状況をリアルタイムで表示します。また、現在スクリプトのどこを再生しているかは、黄色でハイライトされます(下図参照)。
エラーがでた場合は、出力のところにERRORとでます。
面倒なのが、ERRORはでてないのに、実際のレスポンスが予期しないものになっている場合です。
その場合は、レスポンス内容をみながら、チェックしていきます。その方法を説明しましょう。
今回は下記図のように「成功」となっていますが、果たしてどうなのでしょうか・・・。
詳細の参照先にある「テスト結果」をクリックしてみましょう。
すると、次の「テスト結果」画面が表示されるはずです。左には、スクリプトの送信リクエスト単位で表示されおり、それぞれ選択すると、そのリクエストに対するレスポンスが右の画面に表示されます。今回利用したWeb HTTP/HTMLプロトコルで記録した場合は、図のようにWeb画面がレンダリングされて表示されます。
これをみながら、問題なく遷移したか確認します。他にも、強制的にエラー出力させるために「テキストチェックポイント」などチェックポイントを入れることもできますが、その方法は今回は省きます。
「再生ログ」もみてみましょう。VU Gen の出力にでていたものと同様の内容が表示されます。
どうですか?下図のように表示されましたか?
では、ひとまず、記録したスクリプトを再生し、問題ないことと確認しましたので、保存しましょう。
同じ名前で問題なければ、ツールバーにあるフロッピマークの「保存」をクリックします。別名で保存する場合は、プルダウンして別名保存を実行します。
今回は、ここまでとします。次回は、もう少し記録したスクリプトを編集してから、実際にControllerを利用して負荷テストを実施し、リソースをモニタリングしたり、レポートを作成するというところまで説明する予定です。
お疲れ様でした。また次回!