...

CloudTest XHR テスト SOASTA CloudTest XHR Testing

by user

on
Category: Documents
5

views

Report

Comments

Transcript

CloudTest XHR テスト SOASTA CloudTest XHR Testing
SOASTA CloudTest XHR Testing
CloudTest XHR テスト
2015/9/7 Page 1
SOASTA Proprietary and Confidential
Table of Contents
はじめに ............................................................................................................................. 3 テスト資源の保管場所 ..................................................................................................... 3 レコーディング ................................................................................................................. 4 Chrome 上 で の レ コ ー デ ィ ン グ .......................................................................................... 5 API の 手 入 力 ........................................................................................................................ 6 動的パラメータの指定 ..................................................................................................... 8 カ ス タ ム プ ロ パ テ ィ の 定 義 ................................................................................................ 8 API レ ス ポ ン ス か ら の カ ス タ ム プ ロ パ テ ィ へ の 値 設 定 .................................................. 9 カ ス タ ム プ ロ パ テ ィ か ら API リ ク エ ス ト へ の 値 設 定 ................................................... 10 シ ー ド デ ー タ ...................................................................................................................... 12 シ ー ド デ ー タ の プ ロ パ テ ィ へ の 割 り 当 て ....................................................................... 13 トランザクション ........................................................................................................... 14 コンポジション ............................................................................................................... 14 コ ン ポ ジ シ ョ ン プ ロ パ テ ィ .............................................................................................. 16 テ ス ト 実 行 ......................................................................................................................... 16 その他 ............................................................................................................................... 17 About SOASTA, Inc. ........................................................................................................ 17 Page 2
SOASTA Proprietary and Confidential
はじめに
当ドキュメントでは、CloudTest を使って XHR ベースの API テストを作成する手順
について説明します。
テスト資源の保管場所
CloudTest ではテスト資源の保管場所としてテナント内のライブラリを使用します。
一般的には、テスト対象システム、アプリケーションごとにディレクトリを作成し、
その下にテスト資源を保管します。
テスト資源用のディレクトリ内には、更に以下のサブディレクトリを作成し、テスト
資源をコンポーネントごとに分類して整理します。
以下、各コンポーネントを簡単に説明します。
•
クリップ
API1 を実行後、そのリターン値を受けて API2 を実行するといったテストシナリ
オを構成するものがクリップです。テストシナリオの作成の大部分はクリップ作
成作業になります。
•
コンポジション
クリップをどのロケーションからどれだけの負荷で実行するかを定義するのがコ
ンポジションになります。クリップがテストシナリオの最小単位であるのに対し
て、コンポジションはそのテストシナリオの実行計画書と考えることができます。
•
•
ダッシュボード
ダッシュボードを使ってテストの実行結果をリアルタイムで参照することができ
ます。ダッシュボードはシステムに用意されているウィジェットを使って簡単に
カスタマイズすることができます。
グリッド
コンポジションから負荷を生成するロケーションに対して負荷サーバーの割り当
てを行い、サーバーの起動停止を行うインタフェースをグリッドといいます。
•
•
•
•
•
モニター
負荷テストの実行中、テスト対象アプリケーションサーバーの CPU やメモリの
使用率をモニターすることができます。これらのモニターを行うためには、モニ
ター対象のサーバーのモニター方法を指定するために、モニターサーバーを定義
する必要があります。
レコーディング
クリップの作成に当たって、実際のネットワークトラッフィクを捕捉してレコー
ディングすることができます。レコーディングされた内容は、クリップとは別に
レコーディングコンポーネントとして保存されます。
スクリプト
クリップ内で使用する複雑なリクエストデータを JavaScript を使ったロジックで
生成することができます。
シードデータ
クリップ内で使用するログイン ID など、テスト実行時に動的に変更する必要が
あるデータをあらかじめシードデータに定義しておくことで、テスト実行時にテ
ストデータを変化させながらテストを行うことができます。
ターゲット
クリップで定義されたテストシナリオを送信するテスト対象のアプリケーション
サーバーや Web サーバーを定義します。
レコーディング
実際のネットワークトラッフィクを捕捉することが可能であれば、それが API 向けの
テストシナリオを作成する一番簡単なアプローチになります。
ネットワークトラフィックのレコーディングは以下のいずれかの環境で可能です。
•
•
ブラウザー上から API を投入できるケース
一般的に、API の呼び出しはクライアントアプリケーションから実行されること
を想定しており、ブラウザーから直接呼び出すようには設計されていません。し
かし、Chrome の DHC プラグイン
(https://chrome.google.com/webstore/detail/dhc-resthttp-apiclient/aejoelaoggembcahagimdiliamlcdmfm) などを使うことでブラウザーから、
API の呼び出しをシミュレートすることができます。
SOASTA では API 向けのテストシナリオを作成する方法として、このようなアプ
ローチを推奨しています。
トラッフィクを経由するマシン上のパケットデータとして捕捉できるケース
ネットワークトラフィックを経由するマシン上でパケットデータとしてレコーデ
ィングすることも可能です。ただし、この場合には HTTPS トラフィックデータ
はレコーディングできないなど、制約が発生します。ブラウザーから API 呼び出
しができず、かつプロトコルが HTTP の場合にはこの方法を検討します。
Page 4
SOASTA Proprietary and Confidential
上記以外のケースではレコーディングは不可能です。直接クリップに API リクエスト
データを手入力してシナリオの作成を行います。
Chrome 上でのレコーディング ここでは、Chrome ブラウザーからレコーディングを行う手順について説明します。
ブラウザーからレコーディングを行うには、ブラウザーがインストールされているマ
シンにコンダクターをインストールする必要があります。
コンダクターのリソースページから OS 環境に適したコンダクターをダウンロードし
てインストールします。(Windows 環境ではサービスとしてインストールしないよう
注意してください)
コンダクターのインストールが環境したら、コンダクターを起動します。
次に、CloudTest で「新規テストクリップの作成」を選択します。
これにより、新規テストクリップエディターが起動しますので、レコーディングボタ
ンをクリックし、「HTTP をレコーディング」を選択します。
Page 5
SOASTA Proprietary and Confidential
レコーディングオプション画面が表示されるので、起動しているコンダクターを選択
し、[レコーディング] ボタンをクリックします。
これでレコーディングが開始されます。Chrome の DHC プラグインを使って対象の
API を投入することにより、クリップエディター上に対象 API がレコーディングされ
ていきます。
一連の必要な API リクエストのレコーディングが完了するまで、Chrome の DHC プ
ラグインからデータ投入を行います。
API の手入力 ここでは、API を手入力で編集する方法を説明します。
API の手入力ではコンダクターは不要なので、コンダクターのインストールや起動の
必要はありません。
CloudTest で「新規テストクリップの作成」を選択します。
これにより、新規テストクリップエディターが起動しますので、レコーディングボタ
ンをクリックし、「テストクリップビルダー」をクリックし、ターゲットからテスト
対象の Web サーバーもしくはアプリケーションサーバーをダブルクリックします。
テスト対象のサーバーが見つからない場合には、別途新規にターゲットの作成を行い
ます。
Page 6
SOASTA Proprietary and Confidential
ターゲットをダブルクリックすると、対象ターゲットに該当ターゲットが追加され、
メッセージ種別を選択することができるようになります。
テスト API のメッセージ種別を選択し、クリップエディター中の「メッセージ/アク
ションをここにドラッグ」と表示されている部分にドラッグ&ドロップします。
ドラッグ&ドロップしたメッセージをダブルクリックすると入力データ用のダイアロ
グが開くので、API 電文仕様にしたがって URL、クエリー文字列、POST データを入
力します。また、必要に応じて HTTP ヘッダーの入力も行います。
手入力した電文については、クリップエディターの「結果」タブの横にある緑の矢印
アイコンをクリックすることでテストすることができます。
Page 7
SOASTA Proprietary and Confidential
動的パラメータの指定
通常、API の呼び出しを連続して行うテストクリップにおいては、前の API 呼び出し
の戻り値を次の API 呼び出しのリクエストデータとして使うことが普通です。
CloudTest では、カスタムプロパティを使って、このような動的パラメータの実装を
ビジュアルに行うことができます。
カスタムプロパティの定義 プログラミング的な考え方に基づけば、カスタムプロパティは、クリップ内で使用す
ることができる変数とかんがえることができます。したがって、クリップ内でカスタ
ムプロパティを利用するには、まずそのプロパティを定義しなければなりません。
カスタムプロパティの定義は、クリップエディター下部にある「プロパティ」タブを
開くことで行います。
•
プロパティ名
プログラミング的には変数名とみなすことができます。Java の変数名定義と同
じ制約にしたがって名前をつけてください。
•
値の種類
定数、生成値、シードデータから選択することができます。
Ø 定数
指定した値で初期化されたプロパティを定義します。API レスポンスから値
を抽出して別な API に引き渡す目的で使用する場合、通常はこのタイプのプ
ロパティを使用します。初期値を指定しない場合、値は不定になるので、別
途説明するプロパティセットを使って API レスポンスから値を設定します。
Page 8
SOASTA Proprietary and Confidential
Ø
•
生成値
日付、数字、文字列を指定したルールに基づき生成した値で初期化されるプ
ロパティを定義します。このタイプのプロパティは、テストシナリオに置い
て、必ず今日の日付データを渡さなければならないような場合、API の入力
データとして使用する目的で使われます。
Ø シードデータ
シードデータから読み込んだデータで初期化されるプロパティを定義します。
ログイン ID やパスワードなど、テスト時に複数のデータが存在し、それを
順番に読み込んで処理するような用途に使用します。
アナリティクス用に値を保存
テスト実行後、プロパティに設定された値を外部データとして抽出したい場合に
設定します。例えば、ログイン用のトークンを作成するような API があり、その
API の出力結果を外部データとして抽出し、別なテストクリップのシードデータ
として利用したいような場合に使用します。
•
プロパティの値を仮想ユーザーに紐付ける
同じ仮想ユーザーに対しては常に同じ値を使用する場合に設定します。通常使用
することはありません。
API レスポンスからのカスタムプロパティへの値設定 カスタムプロパティを定義したら、次は API レスポンスデータから値を抽出してプロ
パティの値にセットする処理が必要です。
レスポンスデータから値を抽出するメッセージをタブルクリックし、プロパティセッ
トを選択し、緑のプラスアイコンをクリックして新規のプロパティセットを追加しま
す。プログラミング的には、プロパティセットは、変数値であるプロパティに対して
値を設定する操作になります。
•
抽出するフィールド値
Page 9
SOASTA Proprietary and Confidential
•
•
•
•
•
レスポンスデータのどこから値を抽出するかを指定します。HTTP ヘッダーから
値を抽出する場合は、[ヘッダー] を選択し、右側のフィールドにヘッダー名を指
定します。HTTP ヘッダー以外から抽出する場合には [フィールド] を選択し、[取
得方法] でその抽出方法を指定します。
取得方法
XPath、JSONPath、正規表現、Glob、サブストリングのいずれかの方法を指定
します。HXR API の場合、レスポンスデータは XML ないし、JSON である場合
が通常なので、XPath もしくは JSONPath を指定する機会が多くなると思います。
XPath や JSONPath を取得可能なサードパーティーのアプリケーションを使うと、
レスポンスデータ中から任意のデータを抽出する XPath や JSONPath を簡単に
習得できるので便利です。
レコーディング内容でテスト
レコーディングによりクリップを作成している場合、取得方法で設定した内容を、
レコーディング結果を使って検証することができます。
再生結果でテスト
レコーディングによりクリップを作成していない場合、手入力後テスト実行した
結果に対して、取得方法で設定した内容を検証することができます。
設定先のプロパティ
抽出した値を設定するプロパティを指定します。種類には「カスタム」、開始要
素には「現在のクリップ」を指定し、プロパティパスには作成したカスタムプロ
パティの名前を入力します。該当する名前のカスタムプロパティがない場合に、
カスタムプロパティを自動的に生成させる場合には [自動作成] に「作成する」を
指定しますが、通常は事前に定義することを前提にクリップを作るため、デフォ
ルトの「作成しない」を指定します。
一致オプション
抽出方法に指定した条件で値を抽出したとき、該当する値が複数あった場合、ま
た、該当する値が 1 つもなかった場合の処理を指定します。
カスタムプロパティから API リクエストへの値設定 カスタムプロパティへの値設定が完了したら、次はプロパティの値を API リクエスト
データにセットします。
該当メッセージの入力ノードを開き、カスタムプロパティから値を設定したい電文を
マウスでハイライトします。
Page 10
SOASTA Proprietary and Confidential
次に、プロパティ選択ツールアイコンをクリックします。
置き換え可能なカスタムプロパティの一覧が表示されるので、対象のプロパティを選
択し、[OK] をクリックします。
これで、指定した電文が以下のような ISSE パラメータに置き換わります。
{%% prop : parent-clip : /downloadKey %%}
このパラメータはテスト時に動的にプロパティの値によって変換されます。
Page 11
SOASTA Proprietary and Confidential
シードデータ ログイン ID のように、テスト時にあらかじめ一定数のデータが用意されていて、そ
れをテストに使用するような場合にはシードデータを作成します。
「新規シードデータ」を選択します。
シードデータウィザードが表示されるので、シードデータの名前、およびその生成方
法を指定します。
件数が少なければ手動入力でも問題ありませんが、大量にデータが用意されているよ
うな場合には CSV ファイルからインポートするようにします。また、シードデータ
を第三者が参照できないようにしたい場合には [データを暗号化] オプションをチェッ
クします。
Page 12
SOASTA Proprietary and Confidential
シードデータのプロパティへの割り当て 作成したシードデータはクリップのカスタムプロパティに割り当てることができます。
•
•
•
•
•
•
•
サーバーへの割り当て
シードデータ全体を個別のスライスデータとして負荷を生成するサーバーに配布
するか、全部の負荷サーバーで同じシードデータを使用するかを指定します。例
えば、1 万件のシードデータが存在し、負荷サーバーが 5 台用意されているテス
トの場合、「シード データを個別のスライスにして各サーバーに送信する」を選
択すると、1 万件を 5 台に分割した 2000 件のデータが各サーバーに配布されま
す。
サーバーごとの最大行数
シードデータから各負荷サーバーに配布するデータの最大数を指定します。デフ
ォルト 2000 なので、例えば、10 万件のデータを 5 台のサーバーで分割するよう
な場合など、2000 件以上のデータをサーバーに配布したい場合には値を増やし
ておく必要があります。
シードデータのサブセットの使用
配布されたデータの一部を使用する場合、開始行と終了行を指定します。ここに
値を指定した場合、サーバーへの配布は指定された行以降のデータを対象として
行われます。
列の使用
シードデータが複数の列を含む場合に、限定的な列のみを使用する場合に指定し
ます。行データ形式として構造体を使用する場合には意味がないため、通常はデ
フォルトの「全て」を指定します。
行読み込みの種類
EOF アクション
各サーバーが入るされたシードデータを読み終わった場合のアクションを、繰り
返し、NULL 値、エラー、トラックを停止して除却、コンポジションの停止のい
ずれから選択します。
行データ形式
シードデータの形式を構造体、配列のどちらからか選択します。構造体を選択し
た場合、シードデータの各列は列名によって識別される必要があります。
Page 13
SOASTA Proprietary and Confidential
トランザクション
テストクリップ中の任意のメッセージに対してトランザクションを定義できます。
テスト実行時、任意のトランザクションに対してパフォーマンスを確認することがで
きます。
トランザクションにまとめるメッセージを選択し、右クリックしたメニューから「ト
ランザクションの作成」を選択します。
コンポジション
作成したテストクリップの実行にはコンポジションの作成が必要です。
コンポジションを使えば、複数のテストクリップを異なるロケーションから指定した
負荷で実行することができます。
「新規テストコンポジション」を選択します。
新規のテストコンポジションエディターが開くので、「コンポジションビルダ
ー」から実行したいクリップを選択し、コンポジションにドラッグ&ドロップ
します。
Page 14
SOASTA Proprietary and Confidential
クリップをドラッグ&ドロップするとトラック上にクリップが貼り付けられま
す。
複数のトラックを同時実行したい場合には、異なるトラックに別なクリップを
ドラッグ&ドロップします。現在のクリップの終了後に、新たなトラックを実
行したい場合には、該当トラックの現在のクリップの後ろに新たなトラックを
ドラッグ&ドロップします。
該当のトラックを選択し、「プロパティ」タブを開くと、トラックに対する負
荷、および実行ロケーションを設定できます。
•
•
場所
負荷を生成するロケーションを指定します。
リピートを有効にする
Page 15
SOASTA Proprietary and Confidential
•
•
•
該当トラックに対して負荷を設定する場合、リピートを有効にします。
これにより同時実行ユーザー数をリピート数として指定することができる
ようになります。
リピートの種類
通常のコンポジションではパラレルリピートのみ指定可能です。パラレル
リピートの数は、同時実行ユーザー数を示します。パラレルリピートの繰
り返しをチェックすると、一人のユーザーが終了すると、別な新たなユー
ザーが取って代わることを意味します。
リピートメソッド
ランプアップやテスト時間の設定を行います。
詳細オプション
リピートを行う場合、各リピートのインターバルをペース、もしくはリピ
ート内遅延のいずれかで指定できます。ペース指定を行った場合、前回の
リピート開始から指定した時間が経過した時点で新しいリピートを開始す
るので、例えば、定期的に 100ms でリピートするようなトラックを設定す
ることができます。リピート内遅延を指定した場合、前回のリピートが終
わってから次のリピートを開始するまでの遅延時間を設定することができ
ます。
コンポジションプロパティ トラックの設定が整ったら、コンポジションの設定を行います。
特に重要な設定として「エラーの場合」があります。
ここでは、「エラー発生時にクリップレベル以上を停止しない」を設定します。
これにより、クリップないでエラーが発生してもテスト全体が停止することを
回避することができます。
テスト実行 コンポジションの準備が整ったら、テストを実行します。
テストの実行は緑の△アイコンをクリックすることで開始されます。
Page 16
SOASTA Proprietary and Confidential
その他
テスト実行結果の分析、ダッシュボードのカスタマイズ、クリップの部品化などのテ
ーマについては、一般的な CloudTest の利用と同じため、別途ご説明します。
About SOASTA, Inc.
SOASTA is the leader in cloud testing. Its web and mobile test automation and
monitoring solutions, CloudTest, TouchTest and mPulse, enable developers, QA
professionals and IT operations teams to test and monitor users with unprecedented
speed, scale, precision and visibility. The innovative product set streamlines test
creation, automates provisioning and execution, and analyzes real user behavior in
real-time to deliver actionable intelligence, faster. With SOASTA, companies have
confidence that their applications will perform as designed, delivering quality user
experiences every time. SOASTA’s customers are many of today’s most successful
brands including Avaya, American Girl, Bonobos, Backcountry.com, Chegg, Experian,
Gilt Groupe, Hallmark, Intuit, Microsoft and Netflix. SOASTA is privately held and
headquartered in Mountain View, Calif. For more information about SOASTA, please
visit www.soasta.com.
Page 17
SOASTA Proprietary and Confidential
Fly UP