はい、今回の10回目はTruClient インストールの後編として、前回まで設定したスクリプトを使っていきます。前回から通して見てる方はそのまま、今手元のマシンでTruClient が起動している状態ですね。
もし一度、FireFoxごと終了している方は、FireFox を起動してください。なにも操作していなければ、そのままTruClient が左に表示されていますよね?もし消えてしまって下図のような表示になっている方は右上にある「TC」(↓赤枠箇所)をクリックして見て下さい。表示されましたね?
そして、左のTruClientツールバーにある「File」をクリックしてください。プルダウン表示されますので、そこから「Open」をクリックしてみましょう。
すると、スクリプトを選択する画面になりますので、そこで、前回作成した「TruClientSampleScript-01」を選択して「開く」をクリックしましょう。もし開いた画面で保存先のフォルダではなければ、フォルダの操作も適宜、みなさんの環境にあわせてしてください。
はい、無事、以前作成したスクリプトが開きましたね?こんな画面になってれば大丈夫です(↓)。では、先に進みましょう。
さっそく、トランザクションを設定します。といっても、トランザクションって何って方も多いでしょうね。今皆さんがお使いの性能テストツールでは応答時間を計測する際に、どの単位で計測していますでしょうか?現在使われてる性能テストツールの制約でできないという場合もありますね。
Webのページ単位ですか?Webページもフレーム構成だったり、ページを構成するHTML、JSP、CSSやPNGなどの画像もHTTPでリクエストしていますよね?
TruClientでは、記録したステップ(左に番号が振られてますよね?)単位で応答時間を計測する事ができますが、今回は、いくつかのまとまったステップの単位をユーザの処理操作として操作全体が終了するまでの時間を計測する方法としてトランザクションを設定します。
今回の例で言うと、Mercury Tours サイトの「HOME画面表示」、「REGISTER操作」「HOME画面に戻る」
という大きく3つありますね。この単位で計測をするためにトランザクションを設定していきます。
と言ってもこれまでトランザクションの概念で計測した事がないとなんでそんなレベルで計測するの?となるかもしれませんので、ここでトランザクションで計測する意味を説明します。
昔の7秒ルールとかがあった時代のWeb画面は表示されるけど、コンテンツが「砂時計マーク」が回転してるとか「ロード中」ですと表示されて、裏でリロード処理を表示されるまで繰り返すなんてWebページがありました。こんなやつです(↓)。
また、今時のSPAで作成したWebページだといくつかの表示コンテンツはサーバーからの「レスポンス待ち」状態で、仮のコンテンツを表示させているという事がありますよね。
そうなると、ユーザーとしては、期待する情報が表示されるまでが操作の応答時間になります。
つまり、サーバーへのhttp リクエスト単位で応答時間を計測するのと、人の操作の単位で応答時間を計測するトランザクションは違うという事です。
では、トランザクションを設定しましょう。まず、最初のトップ画面を表示する最初のステップ1を選択してみてください。
分かりづらいですが、選択したステップ1の所が青い線で囲まれたのが分かりますね?(↓赤矢印で青線を示してます)
ここで、ツールバーにある、「Start a Transaction」ボタン (↓参照) をクリックしてみましょう。
するとトランザクション名を聞いてきますので、「HOME 画面表示」操作という事で次のように「Home 画面表示」と入力してみてください。終わったら「OK」をクリックしましょう。(注:日本語入力でEnterを入れるとOK処理がされてしまうため、編集が手間がかかりますので最初にメモ帳などでトランザクション名を書いてからコピペするといいでしょう)
このようになっているはずです(↓)。では、今度はこのトランザクション計測をどこで終わりにするかを入れていきます。
HOME 画面表示の最後は、ステップ1が終わるまでの操作なので、ステップ1が選択されているそのままの状態で今度はトランザクションの終了ボタンをクリックします(↓)。
すると次のように、ステップ1の前後を挟むようにトランザクション「Home 画面表示」が設定できましたね。いいですね。次にいきましょう。今度は「REGISTER 操作」を設定していきます。
どこのステップを選択するかというと、REGISTERのリンクをクリックするステップ(私の場合は、ステップ3)から、登録画面でEメールアドレスを入力するステップ(私の場合は、ステップ10)までにします。ステップ3 からステップ10までマウスの左クリックしたままドラッグしてみてください。こんな感じで該当ステップすべてが選択されているのが分かりますね?(↓選択した各ステップがすべて青い線で囲まれてます)
あとは先ほどと同様にトランザクションを設定してください。今回は「REGISTER 操作」というトランザクション名にしましょう。ついでに最後のステップ(私はステップ13) も同じ操作でトランザクション名を「Home 画面に戻る」で設定してみましょう。設定後はこんな感じです (↓)。
パラメータについては性能テストの経験をされていれば大抵は実施されている作業ですが、一応、軽く触れておきます。
今回のスクリプトでは、「REGISTER 画面」で「名前」や「メールアドレス」を入力する部分がありましたよね。毎回、もしくはある割合で違う値を入力したいと言う場合ありますよね。理由は、サーバー側にキャッシュ機能があるとすると、同じデータでリクエストすると、サーバーのキャッシュデータからレスポンスされますので、サーバー負荷が正しく発生しない事になるからです。システムアーキテクチャー設計で流量設計をされる際にどのくらいの割合でどこのキャッシュを利用するユーザーがいるのか考慮しているはずですので、キャッシュヒット率にあわせたテストデータを作成して実際にパラメータ化をしていきます。
今回は、入力はしているもののサーバーへの送信はしてませんので、サーバー側へは通信しません。それでも、スクリプト作成練習として「Last Name」、「First Name」、「Email」をパラメータ化していきましょう。ツールバーから、「パラメータ編集」をクリックしましょう(↓もし表示枠の関係で見えてない場合は、スライドバーを移動させて見て下さい)。
すると、次の画面 (Parameter Diaglog) が開きますね?ここで、「Add Parameter」をクリックしてみましょう (↓)。
すると、Add Parameter の下に新規パラメータが作成されるので名前をつけて管理しましょう。ここは日本語入力はできませんのでアルファベット入力でお願いします。今回は「REGISTER」としてみました。
すると右側にパラメータ値を編集できるようになりましたので、ここで「Last Name」、「First Name」、「Email」の1回の操作時にパラメータ駆動できるようにカラムを最初に1つしかないので2つ追加してみましょう。「Add Column」を2回クリックして下さい(↓)。
すると、このようにカラムが追加されているのが分かると思います。このままでは分かりづらいカラム名なので、編集してみましょう。「New Col 1」の所をダブルクリックしてください。
編集できるようになりますので、ここで、「Last_Name」とカラム名を変えてみましょう (↓)。「New Col 2」、「 New Col 3」も同様に「First_Name」、「Email」に変えてみましょう。注意として、この画面からはスペースありの名前が作れてしまうのですが、実際に使う時にはスペースが入っているとエラーになるため、スペースの代わりに「_(アンダライン)」を入れています(結構、ここで私はハマった経験あり、なのでみなさんは注意してください)。
下図のように表示されていればOKです。先に進みましょう。実際にこのパラメータにデータを投入していきます。
入力するセル部分でダブルクリックすると編集できるようになりますので、そこで直接値をいれていきます。性能テストでスクリプトが再生されるたびに必要なデータ量を「Add Row」で追加して同様に設定してきます。私の環境ではこんな感じで入力してみました (↓)。ああ、こんな手で入力するの手間だな・・・と思う方は、CSV で準備したデータからインポートする事ができます。「Import」で準備したCSV を取り込む事ができますので、実際のテストデータ量を考えると、実テストデータを設定する場合はImport の方が便利でしょう。
次にどのように作成したパラメータを仮想ユーザ(負荷生成時にスクリプトが操作をシュミレートするユーザ)に割り当てていくかを設定します。「Policy」の所で設定していきます。まずは、「Update value on」値が更新されるタイミングです。
「Once」 は一回だけです。つまり最初にある仮想ユーザーが生成される時に一度だけパラメータが割り当てられ、反復再生時は同じ値が適用されます。
「Each Iteration」 は仮想ユーザーがスクリプトを反復する度に別のパラメータを設定すると言う意味です。これが一般的に性能テストではよく使われる方法で、SRLでもデフォルトでこれが選択されています。
「Every time the parameter is retrieved」 はパラメータを取得する毎に別のパラメータを設定すると言う意味です。今回のスクリプトでは想定していませんが、例えば、同じスクリプト内で何度かLoop処理があり、毎回変わる値を入力すると言う場合には、これを選択します。
最後の「On calling AdvanceParam()」 はこの関数を使って呼び出す度に別のパラメータを設定すると言う意味です。ここからシリーズでは扱いません。
ここでは、デフォルトの「Each Iteration」を選択したままでOKです。
次はパラメータの行(ROW)からどのように割り当てるかを設定する「Select next row」です。最初の「Sequential」 は上のROW から順番に使っていきますよ。最終行まで達したら最初の行に戻って適用しますよという操作です。通常はこれで設定する事が多いです。次の「Random」は、ROWからランダムに抽出して割り当てる方法になります。最後の「Unique」は一度設定したら、その値は2度と使わない設定になります。これを設定する時は、十分な量のパラメータ用テストデータを準備して下さい。そうしないと最終行までパラメータを使い終わったら、割り当てるパラメータがなくなるため性能テスト自体に影響が出てしまいます。ここでは、デフォルトの「Sequential」を選択したままでOKです。
パラメータ設定が終わりましたので、「Parameter Diaglog 」の下にある「OK」をクリックして設定終了しましょう。
次は実際にパラメータをスクリプト記録時の「First Name」、「Last Name」、「Email」 の値 へ割り当てしていきます。
まず最初は、「First Name」に値(例ではTaro)を入力しているステップをダブルクリックしてください。するとプロパティが表示されますので、そこから「Arguments」をクリックしてください。「Value」に記録時入力した「Taro」が表示されていますね(みなさんの環境で別の値を入れていたら適宜読み替えて理解してください)?その一番右にデフォルトだと「Plain」と表示されている箇所をクリックし、「JavaScript」を選択クリックしてください(↓赤枠箇所)。
TruClient ではパラメータ化するためにJavaScript のコードを利用しているため、この操作が必要になります。
その次に、「Value」の値(ここではTaroが入力されている箇所)で、右クリックして下さい。すると、次のようなメニューが表示(↓)されますので、一番下の「Replace selection with parameter」にマウスオーバーさせてください。
すると、パラメータとして作成した「REGISTER」が表示されますので、それを選択クリックしましょう (↓赤枠箇所)。
自動で、TC.getParam("REGISTER") っていうのが入力されましたね??はい、こうなっていればOKです (↓)。
でも、このままだと、パラメータリストのREGISTER っていうのは選択したのですが、どのカラムの値を使うか設定されていないですよね?デフォルトだと最初のカラムが適用されてしますので、今回は、私のパラメータリスト例で言うと2番目に設定した「First_Name」を使いたいので、ちょっと手を入れます。 こんな感じに修正してください (↓)。要は、2番目の引数として、パラメータリストを作成した際に設定したカラム名を入れると言う事です。
ここまできたら、デバッグしてみましょう。便利な機能として、直前のステップまでで停止させる事ができます。直前の手順(ここではステップ5)の左にマウスでクリックします(↓)。
赤丸に変化しましたね(↓赤枠箇所)?はい、これでこのステップまででいったん停止するように設定できましたので、再生ボタンを押して実行してみましょう。この赤丸を入れるステップ行を「ブレークポイント」と呼びます。
こんな感じ(↓)でブレークポイントのステップで一時停止状態ですよね?赤くハイライト表示になっているはずです(↓赤枠箇所)。では、ここでいったん停止しましょう。「Stop」ボタンをクリックして下さい(↓赤枠箇所)。ちょうど名前を登録する画面が表示されていますよね。
ここまできたら、先ほどパラメータ割り当てを設定したステップ内に表示されている再生ボタンがあるので(ステップ単位で再生することができます)クリックしてみましょう。
ちゃんと、2番目のカラムで設定した「First Name」の「Taro」が入力できましたね (↓)!
残りの2つのパラメータも同様に設定してステップ単位で再生してみましょう。こんな具合 (↓) にうまくそれぞれのカラムデータが入力できていれば編集完了です!ブレークポイントを入れた箇所を再度クリックしてブレークポイントを削除して、ここまでのスクリプトを保存しておきましょう。
最後に検証ポイントを入れていきます。単純にサーバーから応答があってもその内容が正しいものでなければ、操作としては未完成ですよね?それに冒頭のトランザクション設定でも説明した「ロード中です」というようなページであれば、何をもって完了なのかチェックしないと次に進んじゃいけない訳です。要は、サーバー側からレスポンスがあったとしてもそれが正しい内容なのかチェックしないと意味ないよねって事です。
さっそく入れていきましょう、まず、一番左にある「Toolbox」をクリックするとToolbox メニューが表示 (↓) されますので、まず期待値が表示されるまで待機するために「Wait for Object」を使いたいと思います。
ここで、仮にメールアドレスが表示されるまで待つようにしてみましょう。Ajaxサイトであればもっといい例が示せたと思いますが、我慢してください。
「Wait for Object」を Emailを入力したステップの直後にドラッグアンドドロップしてください。ちょうど下図のように「矢印ではさまれた青線箇所」が挿入箇所になります(↓赤枠箇所)。
トランザクション直前に挿入した場合は、トランザクション内に含まれないため、トランザクションを編集します。ツールから「トランザクション編集」をクリックします(↓)。
するとトランザクション編集画面が表示されるので、編集するトランザクション名「REGISTER 操作」を選択し、トランザクション終了ステップ「End Point」から、今追加した「Wait for Object」のステップ(ここではステップ11)を選択してクリックします(↓)。これでトランザクション「REGISTER 操作」内に追加したステップを含める事ができました。
で、今度は「Wait for Object」を編集していきます。まず、ステップに表示されている「Click to choose an object」をクリックして下さい (↓)。
すると、次のような画面になりますので、Emailアドレスが表示されるまで待機するということで、Emailのフォーム部分をマウスでクリックしてください。マウスオーバーしている部分がライトグリーン色で表示されます。クリックした箇所が対象になります。具体的には下図の赤枠箇所になります。
このままだと、単純にフォームの部分が表示されるのを待つだけになるので、ステップのプロパティから「Step」を開いて、「Action」から「Wait for Property」を選択してみましょう (↓)。
次に「Arguments」を開いてください。ここで、待機する対象の何をもって待機するかを設定します。
まず、メールアドレスが表示されるかどうかなので、「Value」にはアドレスを、そして、「Property」は右側のプルダウンをクリックして「Visibile Text」を選択して下さい。
ここで、メールアドレスが表示されてる状態で、「Wait for Object」を単体再生してデバッグしてみましょう。
下のコンソール部分に「Replay succeeded」と表示されてればOKです。
わざと、今度は、メールアドレスを変えて試してみましょう。例えば、「taro.suzuki@test」にして単体再生してみて下さい。すると、ステップのステータスバーが途中まで進んでとまってますね?そう、期待値が出てきてないので待機してます!って事です。
すると、しばらくすると(デフォルトのタイムアウトが180秒)、こんな感じでコンソール部分にエラーが表示されますね。はい、正しい動作です。
今度は、同じように「taro.suzuki@test」とした状態で単体再生して、ステータスバーが待機状態になったら、手入力でアドレスの最後を補完して、「taro.suzuki@test」としてください。成功しましたね!!はい、編集成功です。
おっと、今回は、毎回入力メールアドレスを変えていましたので、ここもパラメータにしないといけません。先ほどのパラメータ化と同じ手順でメールアドレス部分にパラメータを割り当てましょう。こんな感じになってればOKです(↓)。
いったん、ここまでの編集を保存しておきましょう。
次に、期待値チェックをする検証(Verify)機能を使って編集を追加していきます。今回、同じREGISTER の画面で「Country」が「UNITED STATES」となっていればOKという検証をステップに追加していきます。
では、先ほどの「Wait for Object」と同様に「Toolbox」から、「Verify」をトランザクション「REGISTER 操作」ステップ内にドラッグアンドドロップしてみましょう。こんな感じです (↓)。
先ほどと同様に、「Click to choose an object」をクリックして、Countryフィールドをライトグリーンにハイライト状態でクリックして下さい(↓)。
そのままだと、すべての国名をチェックしてしまいます(↓)ので、右にある「Plain」という部分をクリックして編集をかけます。
「Arguments Editor」が開くので、そこで、「UNITED STATES」だけにして「OK」をクリックしましょう。この状態で単体再生して問題なくチェックかかっている事を検証してください。先ほどと同じようにコンソール部分に「Replay Succeeded」と表示されていれば検証がうまく挿入されています。はい、ここでまたスクリプトを保存しておきましょう。
では、いま設定したパラメータリスト3行(ROW)が反復(Iteration)毎に値がちゃんと動的に変わるのか確認していきましょう。TruClientのツールバーから地球のアイコン「General Setting」をクリックして下さい (↓)。
「TruClient General Setting」ウィンドウが開くので、上のタブが「Local」になっていることを確認し、なってなければ、クリックして選択してください。これはTruClientの実行方法をローカル(いま実際にみなさんがFireFoxを入れて触っているマシン)の設定を意味しています、「Cloud」であればHP SaaS上のSRLでのTruClientの動作設定になります。
「Local」の「Replay」から「Number of Iterations」がデフォルトでは1になっているので、今回3回分のパラメータ用データがあるので3に変更してみましょう。ここももしみなさんの環境ではもっとデータを作成していたらそれにあわせて適宜修正してください。次に期待する値が待つまで待機する時間としてデフォルトで180秒待つといいましたが、もしこれをデバッグ中はもっと短くしたいという方は、「Timing」の「Step Timeout」をデフォルトの180から適宜変更して下さい。
設定を終えたら、「Done」をクリックして、実際に再生してみてください。3回実行してそれぞれ別の値を投入しているのが分かりますね??
以上でTruClientのスクリプト作成&編集を終えました。結構今回はやることが多く長かったですね。お疲れ様でした。
では、最後に作成したスクリプトをSRLにアップロードしましょう。前々回(8回目)に紹介した方法で、HP SaaSにアクセスしてSRLを起動(Launch)してみてください。表示は解像度によって変わりますが、こんな感じで表示されてますね?はい、ここで、上のメニューから「アセット」をクリックしてみましょう (↓)。
アセットページが表示されたら、左上にある「アップロード」をクリックしましょう(↓赤枠箇所)。
「ファイルのアップロード」ウィンドウが開くので、ここで保存したTruClientスクリプト(ZIP)を選択して「開く」をクリックしましょう(↓)。
アップロード中のステータスがブラウザの上に次のように表示されます。みなさんのインターネット回線の帯域によって対象時間がかかるかもしれませんがアップロードが完了すると、ステータスバーが右まですべて振り切って自動でこのステータスが消えますのでそれまでお待ちください。
アップロードが完了すると、アセットのスクリプトとして追加されたのが分かります(↓左の赤枠箇所)。そして、スクリプトのスナップショット画面がそのまま右側に表示されているのも分かります(↓右の赤枠箇所)。
はい、結構な作業量だったと思いますが、性能テストに欠かせない編集ポイントなどを踏まえて説明してきましたのでお役に立てるかと思います。お疲れ様でした。
SRLについてもっと直接聞いてみたいとか、購入したいけどHP SaaSのサイトは英語で購入方法がよくわからないというお問い合わせはこちらまでお願いします!
次回からは、SRLを使って今回アップロードしたスクリプトで負荷を生成していきます。お楽しみに !