プロトコル レベルでの非同期通信のテスト

プロトコル レベルの非同期テスト機能の記録/再生は、ポーリング、ロング ポーリング、プッシュなどの非同期通信パターンを使用する Web アプリケーションに対して設計されています。このようなアプリケーションは、ユーザーとのやり取りなしに、定期的に、またはエベントに基づき、またはサーバーがトリガとなってコンテンツを更新するという特徴があります。プロトコル レベルでの非同期 Web アプリケーションのテストは、リソースをそれほど消費しませんが、BDLT アプローチと比べてスクリプト化するのがより困難です。BDLT はリソースを消費しますが、記録中にプロセス全体のスクリプト化が自動化されています。

非同期通信の記録

Silk Performer は、非同期通信パターンを使用する Web アプリケーションの記録を手助けする専用のプロジェクトの種類 (Web (Async)) を提供します。ユーザーとのやりとりを記録する際に、Silk Performer Recorder は、記録したセッションのトラフィック全体を含む Silk Performer キャプチャ ファイルというファイルを作成します。保存後に、キャプチャ ファイルは Workbench で開かれ、続いて分分析および処理を行うことができます。キャプチャしたトラフィックからスクリプトを生成する前に、記録ルールや他の設定を変更して、スクリプト生成処理に適用させることができます。同じキャプチャ ファイルからいくつかのスクリプトを生成することができます (オプションを変えて)。

非同期 Web 関数

前に述べた非同期通信パターンのそれぞれに対して、Silk Performer は、Web API 関数を提供しており、Web サーバーへの非同期通信チャネルを作成できます。

  • WebAsyncPreparePush
  • WebAsyncPreparePoll
  • WebAsyncPrepareLongPoll

WebAsyncPrepare... 関数呼び出しは、その後の Web 関数呼び出しを使って専用の非同期通信チャネルを開始します。

WebAsyncPrepare... 関数は、オプションで BDL コールバック関数をパラメータにとります。コールバック関数は、あるイベントを仮想ユーザーに通知するために呼び出されます。イベントの詳細な説明については、BDL リファレンスを参照してください。

非同期通信チャネルは、通常の仮想ユーザー アクティビティに並列にアクティブになっていますが、コールバック関数は、スクリプト実行中に特定の場面で Web 再生エンジンによって同時に呼び出されます。

コールバックによる仮想ユーザー アクティビティの同期化

仮想ユーザー アクティビティは、コールバック関数を実行して同期化する必要がある場合があります。典型的な例は、非同期通信チャネルによって配信されるサーバーからの情報を仮想ユーザーが待機する必要がある状況です。

情報が必要なときに、仮想ユーザーは関数 UserWaitFor を呼び出します。データが到着すると、関連するコールバック関数が呼び出されます。この関数は、必要な情報を取り出し保管します。この段階で、コールバック関数は、関数 UserSignal を呼び出すことによって、仮想ユーザーにイベントのシグナルを発行します。その後、仮想ユーザーは、コールバック関数によって保管された情報に安全にアクセスできます。