このセクションの内容:

はじめに

リクエスト/レスポンス ファイル入力モードは、リクエスト/レスポンス ペアのディレクトリを使用し、受信したリクエストをディレクトリ内のファイルと照合て、一致が見つかった場合は、ペアのレスポンスを返信として使用します。このモードは、受信メッセージをリクエスト ファイルと照合し、ペアになったレスポンスを返します。これにより、ツールの設定に基づいて新しいリクエスト ファイルの相関関係が自動的に設定されるため、新しいデータの追加が容易になります。

指定されたディレクトリ内のペアは、ファイル名で識別されます。ペアとして識別されるためには、リクエスト ファイルのファイル名の末尾が _request、レスポンス ファイルのファイル名の末尾が _response であることを除いて、同一のファイル名でなければなりません。たとえば、次のファイルはペアとして識別されます。

  • getAssets_request
  • getAssets_response
  • createAccount_request.txt

  • createAccount_response.txt

リクエストまたはレスポンスのボディがバイナリの場合は、ボディとヘッダーを別のファイルに保存できます。たとえば、ヘッダーを getAssets_respons ファイルに格納し、 ボディを getAssets_response.bin という名前のファイルに格納できます。付随するバイナリ ファイルの名前は、ファイル拡張子を含め、リクエスト ファイルまたはレスポンス ファイルの名前に .bin を加えたものでなければなりません。たとえば、ヘッダーが getAssets_response.txt というファイルにある場合、bin ファイルは getAssets_response.txt.bin という名前でなければなりません。

HTTP、MQ、JMS、およびカスタム プロトコルがサポートされています。異なるプロトコルのファイルは別のディレクトリに保存することを強く推奨します。

リクエスト/レスポンス ファイルのオプション

リクエスト/レスポンス ファイル入力モードを使用する場合、リクエスト/レスポンスのペアを見つけるために使用するディレクトリを指定するだけで済みます。パスを手動で入力するか、またはファイル システムあるいはワークスペースを参照できます。

ファイルへのパスを完全な絶対パスではなく現在のコンフィギュレーション ファイルからの相対パスとして保存したい場合、[相対パスで保存] を有効にします。相対パスを使用すると、複数のマシン間でレスポンダーを共有するのが容易になります。

学習モードのデータ保持オプション

リクエスト/レスポンス ファイルのレスポンダーは、ライブ エンドポイントをエミュレートする方法を学習できます。学習モードのプロセスが機能するには、このレスポンダーをエンドポイントとして含むアセットを使用してプロキシが構成され、[レスポンスの学習] が有効になっている必要があります (詳細については、HTTP フォワード プロキシ または HTTP リバース プロキシ を参照してください)。

メッセージ プロキシで学習モードが有効になっている場合、監視されたトラフィックは、上記のリクエスト/レスポンス ファイル オプション で指定された場所に自動的に作成される data_learning フォルダーにリクエスト/レスポンスのペアを書き込むために使用されます。これらのリクエスト/レスポンスのペアは、レスポンダーによって親ディレクトリ内の他のペアとともに使用されるようになります。学習プロセスは、親ディレクトリ内のリクエスト/レスポンスのペアには影響しません。学習モードが有効になっている間、data_learning サブディレクトリ内のリクエストは、新しいレスポンスが受信されると、保証されているとして自動的に更新されます。

親ディレクトリ (つまり、上記のリクエスト/レスポンス ファイル オプションで指定された場所) 内のリクエスト/レスポンス ペアは、data_learning サブディレクトリ内のリクエスト/レスポンス ペアよりも優先されます。学習されたリクエスト / レスポンス ペアの 1 つを data_learning サブディレクトリから親ディレクトリに移動すると、data_learning サブディ レクトリで行われた更新に関係なく、親ディレクトリ内のリクエスト / レスポンス ペアが使用されるため、そのリクエストの学習は事実上無効になります。

保持される学習データの量は制限することができます。これを行うには、学習データを保持する日数を有効にし、保持したいデータの日数を入力します。それよりも古い、data_learning サブディレクトリ内の学習済みリクエスト/レスポンス ペアはすべて自動的に削除されます。

ファイル構造のオプション

リクエスト ファイルとレスポンス ファイルにヘッダーとボディの両方が含まれる場合、[Files start with a message headers section] を有効にします。このオプションはデフォルトでオンです。ファイルにボディのみが含まれている場合は、このオプションを無効にします。その場合、レスポンスは [オプション] > [リターン ステータス] タブで設定したデフォルトの HTTP コードとメッセージを取得します。

ファイル要件については、「リクエスト/レスポンス ファイルの要件」を参照してください。

応答条件に使用されるものの詳細については、「応答条件で考慮されるリクエスト項目」を参照してください。

リクエストメッセージ応答条件の除外パターン

[リクエスト メッセージ応答条件の除外パターン] テーブルを使用して、URL クエリー パラメータとペイロード要素の両方に対して除外されるパターンを定義できます。 除外パターンに一致する URL クエリー パラメーターとペイロード要素は無視されます。要素名は、完全一致で指定するか、すべてに一致するようワイルドカード (*) を使用できます。値のパターンは正規表現として指定します。たとえば、次の表は、タイムスタンプを無視する除外パターンを示しています。

要素名値のパターン (正規表現を使用)
*[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}([.][0-9]{1,3})?(([+-][0-9]{2}:[0-9]{2})|Z)?

新しいレスポンダーを作成すると、設定 ( [Parasoft] > [環境設定] > [Parasoft] > [トラフィック ファイル処理]) のグローバルな除外パターンがここに自動的にコピーされます。[追加] をクリックして、開いたダイアログに要素名と値のパターン (正規表現として入力) を入力し、新しい除外パターンを作成します。既存の除外パターンを編集または削除するには、除外パターンを選択し、[変更] または [削除] をクリックします。

リクエスト/レスポンス ファイルの要件

[Files start with a message headers section] が有効になっている場合 (メッセージ ヘッダー オプション を参照)、リクエスト ファイルとレスポンスファイルのヘッダーとボディは 1 つの空行で区切られている必要があります。さらに:

  • HTTP の場合、リクエスト ファイルの最初の行で HTTP メソッド、パス、およびプロトコルを指定する必要があり、レスポンス ファイルの最初の行で HTTP ステータス コードを指定する必要があります。
  • MQ の場合、messageId ヘッダーが存在するレスポンス ファイルには、その値がレスポンス メッセージ ID として使用されます。ご使用の環境内の MQ クライアントが動的に生成されたレスポンス メッセージ ID に依存してリクエストと関連付けている場合は、MQ レスポンス ファイルに messageId ヘッダーを含めないでください。

応答条件の対象となるリクエスト項目

HTTP ヘッダーを含むリクエスト ファイルの場合、HTTP メソッド、URL パス、URL クエリー パラメーター、およびリクエスト ボディが応答条件の対象として考慮されます。HTTP ではないヘッダー (MQ、JMS など) は応答条件には使用されません。ファイルにヘッダーが含まれている場合は、[Files start with a message headers section] を必ず有効にしてください。

たとえば、ヘッダーを含むリクエスト ファイルに次のペイロードがあるとします。

ヘッダー付きのリクエスト ファイルの例
POST /parabank/services/bank/billpay?accountId=54321&amount=100 HTTP/1.1
Host: parabank.parasoft.com
Connection: keep-alive
Content-Length: 160
Accept: application/json, text/plain, */*
Content-Type: application/json;charset=UTF-8
Origin: https://parabank.parasoft.com
Referer: https://parabank.parasoft.com/parabank/billpay.htm
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: JSESSIONID=C86B598044C4F61C21A0DCFE019AC19B

{
	"address": {
		"street": "West 57th Street",
		"city": "New New York",
		"state": "NY",
		"zipCode": "10019"
	},
	"name": "Hubert J. Farnsworth",
	"phoneNumber": "212-123-4567",
	"accountNumber": "56789"
}

最初の行の HTTP メソッド、URL パス、および URL クエリー パラメーターが応答条件の対象となります。ヘッダーの後に指定されたリクエスト ボディも考慮されます。ファイル内で指定されたヘッダーは応答条件には使用されません。

パスの一致では、受信リクエストの先頭に追加の URL パス セグメントをいくつでも追加できますが、最後のパス セグメントはリクエスト ファイルで指定されたものと一致する必要があります。複数の一致が見つかった場合は、最も多く一致するセグメントが選択されます。同じ数の一致するセグメントを持つ複数のファイルが見つかった場合は、ファイル名のアルファベット順で最初にあるファイルが使用されます。

リクエスト照合プロセスから特定のトラフィック パターンを除外する場合は、[リクエスト メッセージ応答条件の除外パターン] テーブルを使用できます。たとえば、リクエストの照合時に URL クエリー パラメータ amount と phoneNumber 要素を無視する場合は、次のように入力します。

要素名値のパターン (正規表現を使用)
amount.*
phoneNumber.*

ヘッダーのないリクエスト ファイルには、応答条件を考慮する HTTP メソッド、URL パス、または URL クエリー パラメーターがありません。リクエスト ボディのみが使用されます。ファイルにヘッダーが含まれていない場合は、[Files start with a message headers section] を必ず無効にしてください。

たとえば、ヘッダーのないリクエスト ファイルに次のペイロードがあるとします。

ヘッダーのないリクエスト ファイルの例
{
	"address": {
		"street": "West 57th Street",
		"city": "New New York",
		"state": "NY",
		"zipCode": "10019"
	},
	"name": "Hubert J. Farnsworth",
	"phoneNumber": "212-123-4567",
	"accountNumber": "56789"
}

[リクエスト メッセージ応答条件の除外パターン] テーブルを使用して、リクエスト照合プロセスから特定のトラフィック パターンを除外できます。たとえば、リクエストを照合するときに phoneNumber 要素を無視する場合は、次のように入力します。

要素名値のパターン (正規表現を使用)
phoneNumber.*

HTTP トラフィック ファイルからのリクエスト メッセージとレスポンス メッセージのコピー

Virtualize メッセージ プロキシによって生成された HTTP トラフィック ファイルからリクエスト メッセージとレスポンス メッセージをコピーして、リクエスト ファイルとレスポンス ファイルを作成することができます。その際、特にボディが Base64 でエンコードされている場合 (以下の例のように)、またはメッセージの文字セットが UTF-8 ではなく、メッセージボディに非 ASCII 文字が含まれている場合は、MIME 部分全体をコピーします。メッセージの最後の境界マーカーではなく、先頭の境界マーカーを必ず含めてください。

トラフィック ファイルの MIME 部分を含むリクエスト ファイルの例
--Q29udGVudC1Cb3VuZGFyeQo
Content-Type: text/plain; charset=UTF-8
Serialization-Encoding: base64
Secure: true
Timestamp: 1565995246000
 
POST /parabank/services/bank/billpay?accountId=54321&amount=100 HTTP/1.1
Host: parabank.parasoft.com
Connection: keep-alive
Content-Length: 160
Accept: application/json, text/plain, */*
Content-Type: application/json;charset=UTF-8
Origin: https://parabank.parasoft.com
Referer: https://parabank.parasoft.com/parabank/billpay.htm
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: JSESSIONID=C86B598044C4F61C21A0DCFE019AC19B
 
ewogICAgImFkZHJlc3MiOiB7CiAgICAgICAgInN0cmVldCI6ICJXZXN0IDU3dGggU3RyZWV0IiwKICAgICAgICAiY2l0eSI6ICJOZXcgTmV3IFlvcmsiLAogICAgICAgICJzdGF0ZSI6ICJOWSIsCiAgICAgICAgInppcENvZGUiOiAiMTAwMTkiCiAgICB9LAogICAgIm5hbWUiOiAiSHViZXJ0IEouIEZhcm5zd29ydGgiLAogICAgInBob25lTnVtYmVyIjogIjIxMi0xMjMtNDU2NyIsCiAgICAiYWNjb3VudE51bWJlciI6ICI1Njc4OSIKfQ==
  • No labels