1.5.10 フレームワーク機能を使用した場合のHTTP要求電文の識別子書き換え
概要
Webサーバ上で割当てた識別子(HTTPクッキー)をHTTP応答電文のヘッダで通知し、以降のHTTP要求電文のヘッダに設定することがあります。この識別子はユニーク値であり、既存システムのWebサーバと、テスト対象システムのWebサーバでは、識別子の値が異なります。そのため、既存システム宛てのHTTP要求電文をキャプチャし、そのままテスト対象システムへ転送すると、テスト対象システムで識別子不正となります。
フレームワーク機能では、既存システムとテスト対象システムのHTTP応答電文のヘッダを解析し、システム間の識別子のマッピング情報を作成します。HTTP要求電文の転送時は、このマッピング情報を使用し、HTTP要求電文のヘッダに設定されている既存システムの識別子を、テスト対象システムの識別子へ書き換え、テスト対象システムへ転送します。マッピング情報が存在しない場合は、書き換え無しでテスト対象システムへ転送します。
システム検証支援基盤の正常終了時、識別子の数や書き換え回数などの統計情報を、KFSE84004-Iメッセージとして出力します。
書き換え対象
書き換え対象の識別子、および書き換えに使用するHTTP電文ヘッダを以下に示します。
書き換え対象の識別子 |
書き換え先ヘッダ (HTTP要求電文) |
書き換え元ヘッダ (HTTP応答電文) |
---|---|---|
HTTPクッキー |
Cookie |
Set-Cookie |
Cookie2 |
Set-Cookie2 |
- HTTPクッキー
-
HTTPクッキーは、WebクライアントとWebサーバ間において、セッション等の状態管理を行うメカニズムです。Webサーバは、任意の値をHTTP応答電文のset-cookieヘッダに設定して送信します。Webクライアントは、HTTP応答電文のset-cookieヘッダに設定されている値を、以降のHTTP要求電文のcookieヘッダに設定して送信します。
HTTPクッキーは、「名前=値」の形式で記述されます。「名前=値」が複数ある場合は、セミコロン(;)で区切られます。
- (例)
-
cookie: "aaa=111 ; bbb=222 "
フレームワーク機能では、「名前=値」を識別子としてマッピング情報を管理します。名前または値が異なる場合は、別識別子としてマッピング情報を管理します。HTTP応答電文受信時、set-cookieヘッダを基に「既存システム識別子=テスト対象識別子」でマッピング情報を作成します。HTTP要求電文受信時、cookieヘッダに既存システム識別子があれば、テスト対象識別子に書き換えます。次に、書き換えイメージを示します。
図1‒35 HTTPクッキー書き換え
マッピング情報管理
マッピング情報は、既存システムのWebサーバ単位に作成します。マッピング情報増加によるメモリリソース枯渇を回避するため、Webサーバ単位に、マッピング情報の上限数管理、および有効期限管理を行います。
- マッピング情報の上限数
-
マッピング情報の登録数を、マッピング種別(HTTPクッキー)ごとに上限管理します。登録数がframework_definition定義の-mオプションのmaxcntフラグメンバ値(デフォルト:10000)で指定した上限を超過した場合、KFSE44002-Wメッセージ出力後、書き換えに使用してから最も時間が経過したマッピング情報を削除します。なお、KFSE44002-Wメッセージを出力するのは、初回の上限超過時だけです。
- マッピング情報の有効期限
-
最後に使用してから、framework_definition定義の-mオプションのexpiredateフラグメンバ値(デフォルト:3600秒)で指定した時間を経過したマッピング情報を削除します。
テスト開始タイミングについて
マッピング情報は、HTTP電文を基に作成します。外部システムと既存システム間のWebシステムで業務開始したあとに電文取得を開始すると、マッピング情報の基となるHTTP電文が取得できないために識別子変換が行われず、テスト対象システムで識別子不正となる可能性があります。そのため、業務開始前に、電文取得を開始することを推奨します。