Comments
Description
Transcript
Rational Performance Tester 活用ガイド 2
Rational Performance Tester 活用ガイド 第 2 回 テストスクリプトの編集 Hints&Tips 編 © Copyright 2011 IBM Corporation Rational Performance Tester 活用ガイド 目次 0. Rational Performance Tester活用ガイドの位置づけ ...........................................................- 2 1. テスト・スクリプトの編集.................................................................................................- 3 1.1. データプール ..............................................................................................................- 3 1.1.1. CSVファイルからインポート .............................................................................- 3 1.1.2. アクセス・モード...............................................................................................- 7 1.1.3. オープン・モード...............................................................................................- 9 1.2. ページ検査ポイント .................................................................................................- 13 1.3. データ相関................................................................................................................- 15 1.4. カスタム・コード .....................................................................................................- 19 1.4.1. ログにメッセージを出力するサンプル・コード..............................................- 19 1.4.2. ループを抜けるサンプル・コード ...................................................................- 20 1.4.3. その他のカスタム・コード ..............................................................................- 21 1.5. テスト・エレメント .................................................................................................- 21 1.5.1. ページの分割 ....................................................................................................- 21 1.5.2. 「トランザクション」の挿入...........................................................................- 21 1.5.3. 「ループ」(反復率の設定)の挿入..................................................................- 22 1.5.4. 「条件(IF)」の挿入........................................................................................- 22 1.6. Tips ............................................................................................................................- 27 1.6.1. 不要になったページやリクエストの扱い方 .....................................................- 27 1.6.2. 「テスト変数」を活用する ..............................................................................- 27 - © 2011 IBM Corporation - 1 - Rational Performance Tester 活用ガイド 0. Rational Performance Tester活用ガイドの位置づけ 当ガイドは、Rational Performance Tester(以降、RPT と記述)のユーザー向けに、RPT を使用 したパフォーマンス・テストを効果的に実施できるような Hints & Tips をまとめた資料です。 全 4 回で構成されていますので、他の章も参考にしてください。 第1回 事前準備とテスト記録・生成 Hints&Tips編 第2回 テストスクリプトの編集 Hints&Tips編 第3回 スケジュールの作成と実行 Hints&Tips編 第4回 テスト結果(レポート)の確認 Hints&Tips編+FAQ 当ガイドは 2011 年 1 月時点の最新バージョンである RPT v8.2 を前提に記述しております。 利用する環境やバージョンによっては、提供される機能や画面構成が異なる可能性がありますの でご注意ください。 © 2011 IBM Corporation - 2 - Rational Performance Tester 活用ガイド 1. テスト・スクリプトの編集 テスト・スクリプトを記録しテスト生成が完了したら、テストの内容を確認します。また、必 要に応じてスクリプトを編集します。具体的には、以下のような作業を行っていきます。 ・ ページ・タイトルを精査し、ページの分割・統合、またページ・タイトルを見直します。 ・ データプールを作成し、スクリプトに関連付けます。 ・ 検査ポイントを設定します。 ・ データ相関のチェックをします。 ・ カスタム・コード、ループ、IF-THEN 条件などを追加しスクリプトを編集します。 ・ 考慮時間や遅延時間を設定します。 ・ 最後に、確認のためテストを実行し、スクリプトが正しく実行されることを確認します。 以下の節では、テストの「編集」において活用される主要な機能を説明します。 1.1. データプール データプールを使用すると、テスト内の値を変数とし、データプール側に値を持たせる事がで きるようになります。データプールは、テスト・スクリプトの編集時に作成しますが、確認は(複 数ユーザーで行うため)テスト・スケジュールを作成して行います。 1.1.1. CSVファイルからインポート 大量のレコードを持つデータプールを作成する場合には、CSV ファイルを作成しデータプー ルへインポートすることで時間を短縮することができます。 (管理や編集の利便性のため、CSV ファイルを活用することがお勧めです) CSV ファイルの作成 1行目に変数名とデータ型を記述することができます。 (※データ型とは、データのタイプを表すコメント情報であり、特に型の制約を定義 するものではありません) 【記述形式】 変数名::データ型 【記述例とインポート後のデータプール】 インポート © 2011 IBM Corporation - 3 - Rational Performance Tester 活用ガイド CSV ファイルをデータプールにインポートする方法 ① 「ファイル」 → 「インポート」をクリックします。 ② 「インポート」のウィザードにて、 「テスト」配下の「データプールを含む CSV ファイ ル」を選択して、「次へ」をクリックします。 © 2011 IBM Corporation - 4 - Rational Performance Tester 活用ガイド ③ 「CSV ファイルをデータプールとしてインポート」画面にて、インポートする CSV フ ァイルを指定し、インポートするファイルのオプションを選択します。 - エンコード: ローカル PC とインポートするファイルのエンコードが異なる場合にファイル のエンコードを指定 - 「CSV ファイルの 1 行目は変数名およびオプションの推定される型を含む」: 前述の例のように、1行目に「変数名とデータ型」を記述した場合には、この 欄にチェックをつける。 - 「CSV ファイルの 1 列目は等価クラス名およびオプションのレコード番号を含 む」 通常、この欄にはチェックは不要。 等価クラスは、機能テストで使用されるものであるため、機能テストと同じデ ータプールを使用する際にチェックを付ける。 ゆえに、CSV ファイル作成時には1列目にレコード番号を記入しないこと。 ④ オプションを選択したら「次へ」をクリックします。 © 2011 IBM Corporation - 5 - Rational Performance Tester 活用ガイド ⑤ 既存のデータプールへインポートする際は、インポートしたいデータプールを選択 して「終了」をクリックします。 ⑥ 新規のデータプールとしてインポートする際は、何も指定せず「次へ」をクリック し、次画面にてデータプール名を指定して「終了」をクリックします。 © 2011 IBM Corporation - 6 - Rational Performance Tester 活用ガイド 1.1.2. アクセス・モード テストに関連付けられているデータプール情報は、テスト・コンテンツでテスト名を選択し、 右側のテスト・エレメントの詳細にて確認する事が出来ます。 ダブルクリック テスト・エレメントの詳細⇒データプール にて、オプションを変更したいデータプール名を ダブルクリックすると、「データプールの編集」ウィザードが表示されます。 © 2011 IBM Corporation - 7 - Rational Performance Tester 活用ガイド 「アクセス・モード」は、データプールのデータをどの順番でアクセスしていくかを設定する オプションです。 ① アクセス・モード:順次 データプール・ファイルに物理的に保管された順序で最初の行から最後の行まで順番に アクセスされます。 ② アクセス・モード:ランダム 任意の順序でアクセスされます。そのため、複数回アクセスされる行があったり、まっ たくアクセスされない行があったりすることがあります。 このモードでは、アクセスする度に行をランダムに選択するため「最後の行に達する」 ということはありえないため、「最後の行に達した場合は最初に戻る」というオプション は使用しません。 ③ アクセス・モード:シャッフル データプールへのアクセスをする前に、データプール内の行の順序が変わり(シャッフ ルされ)ます。シャッフルされた順序で最初の行からアクセスしていき、すべての行が一 度ずつ選択され、最後の行に達すると、同じアクセス順でまた最初から選択するか、テス トを終了するか、になります。 © 2011 IBM Corporation - 8 - Rational Performance Tester 活用ガイド 1.1.3. オープン・モード (データプール・オプションを編集する画面の開き方は、「3.1.2 アクセス・モード」の 項をご参照ください。) オープン・モードは、スケジュール内で使用される各エージェント・マシンへ、どのようにデ ータプールを割り当てるかを指定するための設定項目です。 モードには3種類あります。それぞれについて、ユーザーID をデータプール化した場合を例 にして説明します。 ① オープン・モード:共有(マシンごと) カーソルはエージェント内で共有します。データプールは同じものを各エージェントが それぞれ保持します。 例) エージェント1とエージェント2で、同時にユーザーID(同じ行)を参照します。 ② オープン・モード:専用 カーソルもデータプールもユーザー毎に保持します。全ユーザーが自分専用のデータプ ールとカーソルを持ちます。 例) 全ユーザーが、同時に同じユーザーID(同じ行)を参照します。 エージェント内でも同時に同じユーザーID(同じ行)を参照します。 ③ オープン・モード:セグメント化(マシンごと) カーソルはエージェント内で共有します。 データプールは、1つのデータプールを各エージェントに対して必要な分のみを切り取 って割り当てます。 © 2011 IBM Corporation - 9 - Rational Performance Tester 活用ガイド 例) データプールはエージェント毎に内容が異なるので、エージェント1とエージェント2 で同じユーザーID(同じ行)は参照されません。 複数のユーザー(仮想ユーザー)が同じユーザーID を使用しないようにするには、オープン・ モードを「セグメント化(マシンごと) 」に設定します。ただし、オープン・モードを「セグメ ント化(マシンごと)」に設定にした場合、次のことに注意してください。 © 2011 IBM Corporation - 10 - Rational Performance Tester 活用ガイド ※オープン・モード:「セグメント化(マシンごと) 」でのテスト時の注意点 1つのユーザー・グループが複数のエージェントで実行される場合、オープン・モードを「セ グメント化(マシンごと) 」に設定すると、当該スケジュールが持つ全ロケーションに対してユ ーザー数の割合に応じてデータプールが分割されます。 そのため、ユーザー・グループに割り当てられていないロケーションに対しても、データプー ルは割り当てられます。 以下の例を用いて説明します。 【前提】 テスト・スクリプト 更新系1 参照系1 使用するデータプール 更新系DP 参照系DP データプール内の行数 200 800 ロケーション Agent-1 Agent-2 これらの要素で以下のようなテスト・スケジュールを作成します。 ユーザー グループ 更新系グループ 参照系グループ 仮想ユーザー数 200 ユーザー (全体の 20%) 800 ユーザー (全体の 80%) 実行する テスト・スクリプト 更新系1 実行する ロケーション Agent-1 参照系1 Agent-2 この場合、オープン・モードを「セグメント化(マシンごと)」に設定されたデータプールは、 以下のように各ロケーション(エージェント)に割り振られます。 スケジュール内の ロケーション Agent-1 Agent-2 実行するテスト・ スクリプト 更新系1 参照系1 実行する ユーザー数 200 ユーザー 800 ユーザー 割り振られる データプール 更新系DP 参照系DP 割り振られる 行数 200 行 800 行 このようには割 り振られない スケジュール内の ロケーション Agent-1 Agent-2 実行するテスト・ 実行する スクリプト ユーザー数 更新系1 200 ユーザー - 0 - 参照系1 © 2011 IBM Corporation 割り振られる データプール 更新系DP 参照系DP 0 更新系DP 800 ユーザー 参照系DP 割り振られる 行数 40 行 (全行数の 20%) 160 行 (全行数の 20%) 160 行 (全行数の 80%) 640 行 (全行数の 80%) - 11 - Rational Performance Tester 活用ガイド このように、使用されないデータプールも各ロケーションに割り振られてしまうため、未使用 のデータ(網掛けされている行)が発生します。また、割当てられたデータプールではデータが 足りなくなります。 そこで、使用されないデータが発生しないように、全てのユーザー・グループで、全ロケーシ ョンを割当てるようにします。 上記の例をとると、以下のようにテスト・スケジュールを作成します。 ユーザー グループ 更新系グループ 仮想ユーザー数 200 ユーザー 実行する テスト・スクリプト 更新系1 参照系グループ 800 ユーザー 参照系1 実行する ロケーション Agent-1 Agent-2 Agent-1 Agent-2 すると、データプールは以下のように割り振られることになり、未使用のデータは発生しなく なります。 スケジュール内の ロケーション Agent-1 Agent-2 実行するテスト・ スクリプト 更新系1 参照系1 更新系1 参照系1 実行する ユーザー数 100 ユーザー 400 ユーザー 100 ユーザー 400 ユーザー 割り振られる データプール 更新系DP 参照系DP 更新系DP 参照系DP 割り振られる 行数 100 行 400 行 100 行 400 行 但し、この場合にも以下のような問題があります。 ・ ユーザー数がエージェントの台数で割り切れない場合 エージェントに割当てられるデータプールの行数とユーザー数が一致しない可能性が あります。 対策: 「最後の行に達した場合は最初に戻る」をオンにする 一部のデータが重複して使用されますが、データが足りなくなることはありません。 ・ ユーザー・グループのユーザー数がエージェントの台数より少ない場合 データプールが割当てられるエージェントと、ユーザーが割当てられるデータプールが 一致しない可能性があります。 対策としては2通りあります。 対策 1:「最後の行に達した場合は最初に戻る」をオンにする 一部のデータが重複して使用されますが、データが足りなくなることはありま せん。 対策2:カーソルを「共用」に、ユーザー・グループを1台のロケーションに割当てる そのグループではデータプールは上から順に使用されます。 が、他のグループのデータプール分割率に影響を及ぼす可能性があります。 © 2011 IBM Corporation - 12 - Rational Performance Tester 活用ガイド 1.2. ページ検査ポイント ページ検査ポイントを使用すると、受信したページ・タイトルがテストに指定されている内容 (予期されるページ・タイトル)と異なる場合に、テストの判断を「失敗」とします。 検査対象とするページを選択し、ページ・タイトル検査ポイントにて、「検査ポイントを使用 可能にする」にチェックをつけます。 「プロパティの編集」をクリックし、想定しているページ・タイトルを設定します。 テスト実施時に、想定外のページを受信した場合、テストは失敗します。 © 2011 IBM Corporation - 13 - Rational Performance Tester 活用ガイド テスト・ログには、失敗の内容が表示されます。 © 2011 IBM Corporation - 14 - Rational Performance Tester 活用ガイド 1.3. データ相関 データ相関に関連したエレメントのみを表示すると、置換の追加や除去が簡単に行えます。 データ相関に関連したエレメントのみの表示方法は、 対象のテストを開き、 「テスト・コンテンツ」エリアで「オプション」→「データ相関の表示」 を選択します。 「テスト・コンテンツ」に、データ相関に関連したエレメントが表示されます。 複数のエレメントを選択すると、 「テスト・エレメントの詳細」には、表形式で表示されます。 © 2011 IBM Corporation - 15 - Rational Performance Tester 活用ガイド 現在のデータ・ソースを表示し、置換を除去/変更するには、単一のエレメントを選択します。 「置換」→「データ・ソースの選択」をクリックすると「データ・ソースの選択」ウィンドウ が開き、ここで置換の設定ができます。 © 2011 IBM Corporation - 16 - Rational Performance Tester 活用ガイド 「一致する参照のみ」:チェックを外すと、リストには出現する参照が全て表示されます。 「潜在的な一致を含む」:チェックを付けると、一致する可能性のあるロケーションのリスト が表示されます。 リストをフィルターにかけるには「フィルター入力」にキーワードを入力します。 © 2011 IBM Corporation - 17 - Rational Performance Tester 活用ガイド 「テスト・データ・ソース」ビューでも、同様のことが行えます。 メニューの「ウィンドウ」→「ビューの表示」→「テスト・データ・ソース」を選択します。 © 2011 IBM Corporation - 18 - Rational Performance Tester 活用ガイド 1.4. カスタム・コード カスタム・コードの挿入によって、記録済みの RPT テスト・スクリプトに対し、Java コード を追加してカスタマイズを行う事が出来ます。 この節では、よく使われるカスタム・コードのサンプルを紹介します。 1.4.1. ログにメッセージを出力するサンプル・コード テスト・シナリオの任意の箇所において、ログ・メッセージを出力させます。メッセージは、テ スト・ログで確認する事が出来ます。 【テスト・スクリプト】 テスト・スクリプトに、カスタム・コードを追加します。 【サンプル・コード】 ログにメッセージを出力するカスタム・コードを作成します。 package test; import com.ibm.rational.test.lt.kernel.services.ITestExecutionServices; public class LogMessage implements com.ibm.rational.test.lt.kernel.custom.ICustomCode2 { public LogMessage() { } public String exec(ITestExecutionServices tes, String[] args) { tes.getTestLogManager().reportMessage ("メッセージ1"); return null; } } 【テスト・ログ】 ログはテストログのイベント・タブで、テキストとして確認することがでます。 © 2011 IBM Corporation - 19 - Rational Performance Tester 活用ガイド 1.4.2. ループを抜けるサンプル・コード GUI で指定したループの反復回数に至る前に、カスタム・コードによって強制的にループを抜 けるサンプルです。 【テスト・スクリプト】 ループの中にループを抜けるカスタム・コードを追加します。 【サンプルコード】 package test; import com.ibm.rational.test.lt.kernel.services.ITestExecutionServices; public class StopLoop implements com.ibm.rational.test.lt.kernel.custom.ICustomCode2 { public StopLoop() { } public String exec(ITestExecutionServices tes, String[] args) { tes.getLoopControl().breakLoop(); return null; } } © 2011 IBM Corporation - 20 - Rational Performance Tester 活用ガイド 【テスト・ログ】 3回繰り返すループが、1回で終わっています。 1.4.3. その他のカスタム・コード その他、カスタム・コードの例は、ヘルプにも掲載されています。必要に応じてご一読くださ い。 ヘルプトピック「カスタムコードの例」 http://publib.boulder.ibm.com/infocenter/rpthelp/v8r2m0/topic/com.ibm.rational.test.lt.doc/topics/ ccustomcodeex.html 1.5. テスト・エレメント テスト・スクリプトの編集で追加可能なテスト・エレメントを使用する際のヒントです。 1.5.1. ページの分割 要求メッセージには、送信順序が決められているものもあります。 1ページ内にある要求は、テスト実行時に、必ず記録時と同じ順序で送信されるとは限りませ ん。しかし、送信順序が狂うと要求はエラーとなりテストが失敗してしまいます。 そこで、送信順序を守りたい要求が存在する場合には、ページを分割します。 1.5.2. 「トランザクション」の挿入 複数のページをまとめるトランザクションを作成し、論理的なまとまりを作成すると、テスト が見やすくなります。 1画面(1操作の結果)を表示するのに複数のページにまたがったりする場合に、トランザク ションを作成するとテストが分かりやすくなります。 また、要求メッセージには送信順序が決められているものもあるため、ページの結合ではなく、 トランザクションを利用します。 © 2011 IBM Corporation - 21 - Rational Performance Tester 活用ガイド 1.5.3. 「ループ」(反復率の設定)の挿入 ループのオプションにて「反復の頻度の制御」を設定して、負荷をかけることができます。 「ループ」の「テスト・エレメントの詳細」にて「反復の頻度の制御」にチェックを付け、オ プションにて反復率を指定します。 反復率の指定によって、ループのタイミングや頻度を制御する事が出来ます。例えば、反復率 を「4(単位:分) 」と指定した場合は、1 分間に 4 回ループ内のシナリオが実行されます(すな わち、15 秒に 1 回のタイミングで反復します)。 注意点として、反復率の設定を、反復 1 回にかかる時間よりも短い頻度にした場合は、設定 どおりの反復率は実現されません。反復率は、 「ループに含まれるシナリオ 1 反復の実行にかか る時間」よりも長い頻度で設定すべきです 具体的な例で説明すると、ループに含まれるシナリオ 1 反復の実行に 30 秒かかるケースにお いて、反復率を「4(単位:分) 」と設定しても、1 分間に 2 回しか反復実行できません。 このケースで「1(単位:分) 」と設定すれば、1 分間にループ 1 反復を実行する頻度となりま すので、ループ 1 反復の実行に 30 秒かかって完了したら、残りの 30 秒は待機し、次の 1 分間 でまたループ 1 反復が実行されるように動作が制御されます。 1.5.4. 「条件(IF) 」の挿入 テストでは、 「条件(IF)」の機能にて条件分岐を実現できます。例えば、 「参照」もしくは「フ ィールド参照」の値を条件に、テスト・エレメントの実行を制御できます。この場合「参照」も しくは「フィールド参照」は、IF 条件の前に存在しなければなりません。 ページ、もしくは要求を選択し、オプションの「挿入」→「条件(IF)」を選択します。 このとき、ELSE ブロックを作成した場合に実行したいページや要求も選択し、IF ブロックに 含めておきます。 © 2011 IBM Corporation - 22 - Rational Performance Tester 活用ガイド 「選択したオブジェクトを新規 IF に移動しますか ?」というプロンプトが表示されたら、 「は い」を選択します。選択したページや要求が IF ブロックの配下に入ります。 © 2011 IBM Corporation - 23 - Rational Performance Tester 活用ガイド 「IF」を選択し、テスト・エレメントの詳細で条件を指定します。 「第1オペランド」の横にある「データ・ソース」をクリックし、 「データ・ソースの選択」 ウィンドウにて、条件とする「参照」もしくは「フィールド参照」を選択します。 © 2011 IBM Corporation - 24 - Rational Performance Tester 活用ガイド 「演算子」と「第 2 オペランド」を指定し、条件を完成させます。 下記の例では、 「第 1 オペランド」に指定した「応答コンテンツ」内に「日本アイ・ビー・エ ム」という文字が含まれていた場合に、 「Home」と「IBM」というページが実行されます。 「IBM」というページを Else の場合に実行するには、「テスト・コンテンツ」にて「IBM」を 選択し、「オプション」→「条件(If) –Else ブロック」を選択します。 © 2011 IBM Corporation - 25 - Rational Performance Tester 活用ガイド ページ「IBM」が Else ブロック配下に入ります。 IF のテスト・エレメント詳細で確認すると、条件が Else であった時に「IBM」を実行する指 定になっています。 © 2011 IBM Corporation - 26 - Rational Performance Tester 活用ガイド 1.6. Tips 1.6.1. 不要になったページやリクエストの扱い方 スクリプトの編集で不要となったページやリクエストは削除をせず、 「使用不可」にして おくようにします。 一旦削除してしまったページやリクエストは、同じテスト内へ再度戻す事が出来ません。 (RecSession ファイルからテストの再生成をすることで、記録直後の状態へ戻すことは出 来ますが、もしテストを編集している場合などは、同じ状態を自動的に復元することは出 来ません。) 不要だと思っても安易に削除をせず、残しておくことをお勧めします。 1.6.2. 「テスト変数」を活用する テスト変数で定義された値は、テスト全体で有効になります。 記録したホストとは別のホストでテストを実施する場合(ホスト名が異なる場合)には、テス ト変数の定義を変更するだけで、テスト全体で変更されるので便利です。 また、データプール化を指定することも可能です。 複数のテスト間でも、同一ユーザー・グループに属したテスト間では、変数を共有することが できます。以下の設定にて、同じユーザーである場合にテスト変数が共有されます。 を行います。 ① 共有したいテスト間で、同じ名前のテスト変数を定義する ② 「可視化の対象」は「このユーザーのすべてのテスト」を選択する © 2011 IBM Corporation - 27 - Rational Performance Tester 活用ガイド 「可視化の対象」が「このテストのみ」の場合には、同じテスト変数名であっても値は共有さ れません。 © 2011 IBM Corporation - 28 -