今回は、StormRunner Load(以後SRL)用スクリプト作成ツールであるTruClientを実際に使って対象Webアプリケーションの操作をスクリプト化していく方法を紹介します。
と、その前にここで何故、FireFoxのアドインで提供しているのかについてちょっと説明しておきます。あわせてなぜVUGenのスクリプト方法と違う方法でスクリプト作成するのかという理由も説明してみます。
まず、下図を見てみてください。左側の箱がローカルマシン、そう今回みなさんがFireFoxにTruClientをインストールしたマシンです。そして右側が対象となるWebサーバーマシンです。
図を見て分かるように、スクリプト記録方法が違うのは記録する「レイヤーの違い」なんです。「ここからシリーズ」でご紹介した機能テストツールHP Unified Functional Testing(UFT)の記録方法と比較できるように一緒に描いてみました。HP Unified Functional Testing(UFT)であれば、一番人に近いレイヤーで人の操作をUIの操作レベルで記録してきます。次にLoadRunner (以後LR)のVUGenでは一番下のレイヤーのTCPのレベルでhttpプロトコルで記録します。
残るTruClientはその中間レイヤーとして、つまりFireFoxのAPIを利用して操作を記録する事でスクリプト化をします。
じゃあ、なんでわざわざレイヤーを変えてまで記録する方法を変える必要があるのか?という解説をしていきましょう。
このスクリプトの目的はなんでしたっけ?そう、負荷テストですね。そうなると、負荷として仮想ユーザ(人の代わりにマシンがユーザを仮想するという意味)を複数シュミレーションする必要がある訳です。
以前(15年~10年ほど前は特に)は負荷テスト用のマシンを準備するのも費用が高価だったため、できるだけ少ないマシンリソースで多くの仮想ユーザをシュミレートする必要があった訳です。それにそのマシン環境を構築する工数も考慮しないといけません。
という事で、負荷テスト用スクリプトに求められる要件としてユーザー操作をシュミレートできる事の次に重要な要素として 「限られたリソースでできるだけ多くの負荷がかけられる事」がある訳です。
以上の観点で次の図を見てください。ここでも比較参考のために機能テストツールHP Unified Functional Testing(UFT)も載せています。まず言えるのはレイヤーが低いレベルで記録したスクリプトほど仮想ユーザー数を多くシュミレーションできるというこ事です。その理由は隣のカラムにある1仮想ユーザで消費されるマシンのメモリ量に関係します。レイヤーがあがるほどシュミレーションするために必要となるメモリーは増えるためです。つまり、メモリ消費量と同じマシンで生成できる最大仮想ユーザ数は関係がある訳です。
じゃあ、なんでわざわざメモリを消費するTruClientなのか??って疑問がでますよね。はい、正しい反応です。
一言で言えば、世の中のトレンドがそれを求めている結果となります。理解するために次のワードをみせればピンとくるでしょう。
1. Agile開発
2. クラウド
3. Ajax
まず、図にも一番右のカラムにスクリプト作成方法を書きましたがVUGenを使ったスクリプト作成は基本コードベースです。それに比べ、TruClientはGUI操作で簡単にスクリプトが記録できます。VUGenで一番時間を費やすのは編集作業で中でもセッションIDなどの動的に変化する部分をパラメータ化する作業が必要になります。もちろん、VUGenにも自動相関機能やスクリプト比較機能などパラメータ化のために必要な相関機能がありますが、TruClientの記録方法に比べると工数が発生します。
そのため、開発期間が短期間でしかも次のイテレーションには機能に大きな変更が入ったり、機能追加の影響で画面が大きく変わる可能性のあるアジャイル開発では、いかに簡単にスクリプトが作成できるかがツール選定の重要な要素だと言えます。
とはいえ、1台のマシンでシュミレーションできる仮想ユーザがそれほど多くないなら、シュミレーションするために相当数のマシンを準備しないといけないないじゃないか・・・そう、なのでクラウド環境が利用できる今だからこそTruClientはぴったりなのです。
そして、Ajaxのような非同期処理は今では当たり前に使われてますけど、この非同期通信部分もhttpレベルで編集(どこまでが1つの処理としてみなすかとか)するのは工数がかかりますよね。TruClientではこの作業が必要ありません。人の操作に近いレイヤーレベルで記録するためです。
どうです?TruClientっていいじゃないか!って思ってもらえましたよね。
はい、ではここからは実際に記録方法に移っていきましょう。前回のFireFoxにTruClientアドオンをインストールして再起動した所から開始です。
最初に、左下で「Actions」が選択状態になっているか確認してください。そうしたら、早速対象となるテストサイト
http://newtours.demoaut.com/
を入力してクリックもしくはEnterキーを押してみましょう。ちゃんと表示されましたね。
このサイトはエンドユーザー向けの航空チケット購入Webサイトを想定したテストサイトです。
今回記録するシナリオ(ユーザーの操作)は、ユーザー登録の最初まで実施するという5操作程度の単純なものにしていますが、もし皆さんが長い操作シナリオを希望される場合は、自由に進めてもらえればと思います。
いよいよ、記録開始です。左の赤い丸ボタンをクリックしてみましょう(↓)。
記録が開始されて、左のパネル部分に最初のスクリプトが自動で1行追加されましたね(↓左側アクションペインの赤枠箇所)?いいですね、その調子です。どんどん記録を進めていきましょう。次はWeb画面の上にある「REGISTER」をクリックしてみましょう(↓右赤枠箇所)。
REGISTERページが表示されましたね(↓)?ここはユーザー登録をする画面です。今回のスクリプト作成では全入力はせずに「First Name」「Last Name」「Email」の3つを入力しています。スクリプトは自動で追加されているのも確認できますね(↓左側赤枠箇所)?入力内容は皆さんの自由に入力してもらってかまいません。
私の場合は、順に Taro、Suzuki、taro.suzuki@test.com を入力しました(↓右側赤枠箇所)。
最後に「Home」画面まで戻ります。メニューから「Home」(↓赤枠箇所)をクリックしてみましょう。
はい、下図のようになってますよね?ここまででとりあえず今回のスクリプト作成は終わりです。
左のTruClientで記録を開始した時にクリックした赤い丸ボタンの2つ右隣にある四角ボタンが記録停止のボタンになります(↓赤枠箇所)ので、ここをクリックして停止しましょう。
では、ここまで記録したTruClientスクリプトをいったん保存してみましょう。四角ボタンのさらに右に「フロッピーアイコン」をクリックしましょう。
「Save As」ウィンドウが開いて、保存先とファイル名をきいてきますので、みなさんの環境にあわせて保存してください。
私の場合は、先ほどFireFoxなどをダウンロードした「ダウンロード」フォルダに「TruClientSampleScript-01」として保存しました。保存形式はZIPになります。
保存できましたね、じゃあ、今度はちゃんと記録したスクリプトが実行できるか実際に再生してみてみましょう。
赤い丸ボタンの隣にある三角ボタンが再生ボタンになりますので、こちらをクリックしてみましょう。
どうです?記録した操作をそのままTruClientが再現してますよね?再生中は記録した操作(これをステップを言います)のどこを今TruClietが実行してるかは、一番左にステップの番号にチェック(レ点)がつきます(↓左の縦赤枠箇所)。そして、各ステップの操作がどこまで進んだかをみるのには、各ステップの一番上に青いステータスバー(↓横赤枠箇所)が示してくれます。
どうですか、一通り再生が終わりましたね?おめでとうございます。
っと、ここでいくつかTruClientで作成したスクリプトについて追加説明をしていきます。まず、具体的に操作した手順よりもステップ数が多いのでは?と思った方いらっしゃいませんか?具体的には、今回のスクリプトでいうと次の部分です。
そう、メニューからREGISTERをクリックするステップ直前の箇所(↓図)と最後のステップ直前でHomeをクリックする箇所でMouse Overというステップが入ってますよね?
じゃあ、最初のREGISTERの直前ステップのMouse Overの「+」をクリックしましょう。そうするとドリルダウンされて、このMouse Overステップがいくつかの操作で構成されている事が分かります。つまりマウスの操作もTruClietnではきちんと記録されている訳なんです。試しにWebブラウザ上でREGISTERの箇所にマウスのカーソルでMouse Overさせてみてください。するとREGISTERのリンクがあるセル表示が部分の色が若干変化しますよね?それをキチンと記録してるんですね。
実は、この機能は、最初に、Ajaxの非同期操作の入る場合でも簡単に記録ができると説明した部分に関係してきます。もっと低いレイヤー(Httpレベル)でスクリプトを記録する場合、非同期処理があるとクライアントとサーバ間でいくつもの通信のやり取りがあり、どこからどこまでのやり取りが1操作なのかと判別するのが開発したメンバーと一緒でないと難しいケースがあります。そうしないと、この操作で応答時間どのくらい?という性能目標があるとすると、無駄なやり取りを計測してしまっているかもしれないし、その反対に漏れてしまっているかもしれないとなります。
TruClientを利用すると、操作そのものを記録しているため、
● マウスオーバするとサーバーとやり取りして追加情報や図を表示する
● 入力フォームに文字を入力するとその文字を含む情報をサーバーから予測してコールバックする
といったスクリプトも編集をほとんどする事なくスクリプト作成できます。
ところが、Mouse Overに反応する箇所をすべてスクリプトにしてしまったら、ステップが非常に増えてしまいますね。特にサーバー間の処理も発生しないし、次のステップに進むために必要な操作でもないとしたら、今度は無駄に増えたステップをどう減らすかという別の問題が発生してしまいます。
そこで、TruClientは自動でここを判別する機能が実装されています(特許により仕組みは開示されていません)。必要ないと判断したものは下のレベルに保存されており、全部で3レベルあります。今、皆さんが表示しているのは一番必要と思われる「レベル1」のものになります。
ちょっと試しに、もっとも細かい操作まで記録した「レベル3」がどんなものか見てみましょう。TruClient の記録、停止のボタンがある箇所のもっと右にスライダーバーが表示されていて、そこの「1,2,3」という数字が見えますね?それが今表示しているレベルを表しています。現在「1 (レベル1のこと、一番左になっている状態)」と思いますので、これをマウスでドラッグして「3 (レベル3)」にして見てください。
私の環境では、次のようにリンクをクリックした後に、マウスのカーソルがリンクのセル部分から外れた事を示す「Move Mouse Over」が記録されていました。
今回作成したスクリプトではこのステップはレベル1にする必要はないので、このままにしておきましょう。先ほどのレベル1で表示されていたMouse Overの処理も今回のスクリプトとしては必要がないので、レベル2に設定してみましょう。
スライドバーを2に表示させて「Mouse Over」のステップをダブルクリックしてみましょう。すると次のようにステップの詳細が表示され、上に先ほどと同じ表示のスライドバーが見えますね?そして、今このステップはレベル1として設定されている事を示す「1」になってますね?では、ここをマウスでドラッグして「2」にしてみましょう。
こんな感じになってればOKです。もうひとつあったMouse Over も同様にLevel2にしておいてください。
そして、TruClient のレベルを再度「レベル1」にして表示してみましょう。すると、Mouse Overの箇所はLevel 2に移動したので、表示されていないのが確認できますね?こんな感じになっていれば正しくレベルの処理ができた事になります(↓)。
これで問題なく再生できるか、再生ボタンをクリックして確認してみておいてください。
また、編集時にこのステップはどんな画面だったか確認したい時がありますよね?その場合には、記録時に画面のスナップショットを取得するようにデフォルトで設定されているので記録後に確認する事ができます。
ステップレベル変更のスライドバーのさらにもっと右を表示してみてください。見えない場合は、バーのスライドを右まで移動させて見てください(↓表示2箇所ありますのでみなさんのFireFox環境にあわせて必要であれば操作をしてください)。
右にカメラアイコンが見えてきましたね (↓)?はい、これがスナップショット表示です。これをクリックしてみましょう。
すると、左のステップでフォーカスがあたってる記録時の画面のスナップショットが表示されていて、操作する対象がピンク色でハイライトされているのが分かるかと思います(↓)。これによって、スクリプトのステップとその記録時の画面を確認する事ができ、編集作業が発生した場合やスクリプト内容を確認したい時に有効に活用する事ができます。
はい、では今回はここまでという事でこれまでのレベルを変えた編集後のスクリプトを保存しておきましょう。
同じ名前で保存するのであれば、そのまま先ほどの保存ボタン(フロッピーアイコン)をクリックして見てください。
下のコンソール部分に、「Save succeeded」と表示されたらOKです。
作業お疲れ様でした。
次回は、TruClientの後編として、負荷テスト時に操作の応答時間を計測するために必要なトランザクションの設定と、今回入力した 名前やメールアドレスをパラメータ値として、別途準備するテストデータを動的に割り当てられるように編集する作業を入れて保存する所までを説明しようと思います。
SRLについてもっと直接聞いてみたいとか、購入したいけどHP SaaSのサイトは英語で購入方法がよくわからないというお問い合わせはこちらまでお願いします!
では、また!