Web サイトまたは API のパフォーマンスを確認するように HTTP(S) 監視またはロード テストを構成するときに、動的に変化するペイロードを使用して HTTP 要求を送信する必要がある場合があります。 たとえば、一意の製品 ID を持つ JSON を送信して、新しい製品を電子商取引アプリケーションのデータベースに追加したり、実際の日時を Web サーバーなどに追加したりする必要がある場合があります。 または、API をロード テストするためにペイロードをパラメータ化する必要があるとします。

Dotcom-Monitor は、Razor 構文とデータ マスクをサポートしており、ユーザーは Web 監視とロード テストの目的で動的に変更およびパラメータ化された HTTP 要求を構成できます。

一般に、動的ペイロード構成には、次の 2 つの基本的な手順が含まれます。

  • [データの投稿(パッチ、プット)] フィールドで、動的パラメータ (JSON、XML、テキスト、JavaScript、HTML) を使用して本文データを指定する。
  • [ スクリプトの準備] フィールドで解析メソッドを宣言する。 解析方法が指定されていない場合、システムは本文データをテキストとして処理します。

HTTP 要求の本文データをパラメーター化する必要がある場合は、対応するコンテキスト パラメーターを [スクリプトの準備] フィールドまたは [
コンテキスト パラメーターの管理]
オプションで宣言できます。

カミソリエンジンの使用

HTTP 要求の本文で渡される JSON データまたはスクリプトコンテンツは、Razor エンジン構文を使用して動的に変更できます。 [データの投稿] フィールドで Razor 構文を使用する場合は、@ プレフィックスを使用して、次のテキストを C# コード要素 (インライン式、単一ステートメント ブロック、または複数ステートメント ブロック) としてマークします。 Razor 構文の詳細については、 https://www.w3schools.com/asp/razor_syntax.aspを参照してください。

要求本文の解析中に Razor 構文でエラーが検出された場合は、エラーが生成され、テスト実行レポートに追加されます。

ドットコムモニターは、次のプロパティを持つ Razor モデル (Razor 入力メッセージの構造を定義) をサポートしています。

  • @Model.DeviceID – 現在の監視デバイスの一意の識別子を返す変数。
  • @Model.TaskID – 現在の監視タスクの一意の識別子を返す変数です。
  • @Model.SessionID – 現在の監視セッションの一意の識別子を返す変数です。

Razor 式でコンテキスト パラメーターを使用できます。 Razor 式でコンテキスト パラメーターを参照するには、コンテキスト パラメーターへの参照を角かっこ[ ]で囲み、その名前を二重引用符で囲みます ” ” :

@Model["ContextParameterName"]

要求本文のデータが Razor エンジンによって解析される必要があることをシステムに通知するには、[スクリプトの準備] フィールドに ProcessPostDataByRazor(現在のタスク) メソッドを追加します。 それ以外の場合、Post Data のコード要素はテキストとして解析されます。

たとえば、HTTPリクエスト本文でデバイスIDとテストマーカーを送信する場合は、[ Post Data ]フィールドを次のように構成する必要があります。

{ "Device": "@Model.DeviceID", "ContextTest": "@Model["Test"]" }

次に、[ スクリプトの準備 ] フィールドでコンテキスト パラメータの値と解析メソッドを設定する必要があります。

context.Test = "Website Availability Monitoring";
ProcessPostDataByRazor(currentTask);

currentTask パラメーターがタスク名に依存せず、現在処理されているタスクの種類を持つ場合。

HTTP リクエストでのデータマスクの使用

POST ボディのコンテキスト パラメーターを参照するには、パラメーター名の参照をいずれかの側のマーカー記号にラップします。 コンテキスト パラメーター “GUID” への参照は次のように入力されます。

{"ContextGuid": "%%%Guid%%%"}

ここでは、パーセント記号は、これがコンテキスト パラメータ参照であり、文字列の一部ではないことをシステムに示します。

要求本文のデータを指定したマスクで解析する必要があることをシステムに通知するには、[ スクリプトの準備] フィールドに ProcessPostDataByMask(現在のタスク、”マーカー記号”)を追加します。 それ以外の場合、コンテキスト パラメーターは無視され、テキストとして渡されます。 上記の例では、[スクリプトの準備] フィールドには次の文字列が含まれます。

ProcessPostDataByMask(currentTask, "%%%");

currentTask パラメーターがタスク名に依存せず、現在処理されているタスクの種類を持つ場合。