特許第6024560号(P6024560)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許6024560情報処理装置、情報処理システム、検証制御方法およびプログラム
<>
  • 特許6024560-情報処理装置、情報処理システム、検証制御方法およびプログラム 図000002
  • 特許6024560-情報処理装置、情報処理システム、検証制御方法およびプログラム 図000003
  • 特許6024560-情報処理装置、情報処理システム、検証制御方法およびプログラム 図000004
  • 特許6024560-情報処理装置、情報処理システム、検証制御方法およびプログラム 図000005
  • 特許6024560-情報処理装置、情報処理システム、検証制御方法およびプログラム 図000006
  • 特許6024560-情報処理装置、情報処理システム、検証制御方法およびプログラム 図000007
  • 特許6024560-情報処理装置、情報処理システム、検証制御方法およびプログラム 図000008
  • 特許6024560-情報処理装置、情報処理システム、検証制御方法およびプログラム 図000009
  • 特許6024560-情報処理装置、情報処理システム、検証制御方法およびプログラム 図000010
  • 特許6024560-情報処理装置、情報処理システム、検証制御方法およびプログラム 図000011
  • 特許6024560-情報処理装置、情報処理システム、検証制御方法およびプログラム 図000012
  • 特許6024560-情報処理装置、情報処理システム、検証制御方法およびプログラム 図000013
  • 特許6024560-情報処理装置、情報処理システム、検証制御方法およびプログラム 図000014
  • 特許6024560-情報処理装置、情報処理システム、検証制御方法およびプログラム 図000015
  • 特許6024560-情報処理装置、情報処理システム、検証制御方法およびプログラム 図000016
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6024560
(24)【登録日】2016年10月21日
(45)【発行日】2016年11月16日
(54)【発明の名称】情報処理装置、情報処理システム、検証制御方法およびプログラム
(51)【国際特許分類】
   G06F 11/36 20060101AFI20161107BHJP
   G06F 13/00 20060101ALI20161107BHJP
【FI】
   G06F11/36 184
   G06F13/00 301T
【請求項の数】9
【全頁数】24
(21)【出願番号】特願2013-67791(P2013-67791)
(22)【出願日】2013年3月28日
(65)【公開番号】特開2014-191673(P2014-191673A)
(43)【公開日】2014年10月6日
【審査請求日】2015年12月4日
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100092152
【弁理士】
【氏名又は名称】服部 毅巖
(72)【発明者】
【氏名】安家 武
(72)【発明者】
【氏名】杉山 太一
【審査官】 多胡 滋
(56)【参考文献】
【文献】 特開2014−123198(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G06F 13/00
(57)【特許請求の範囲】
【請求項1】
クライアントと1または2以上のサーバの間で送信された、それぞれ複数のパラメータの少なくとも1つと当該パラメータの値とを含む複数のメッセージを記憶する記憶部と、
前記複数のパラメータのうち異なるメッセージにおいて異なる値が設定されたパラメータを検出し、検出結果に応じて、前記複数のパラメータのうち前記複数のメッセージを他のサーバの検証に用いるときに値を書き換える書換パラメータを決定する決定部と、
を有する情報処理装置。
【請求項2】
前記決定部は、前記複数のメッセージを送信順序に応じて複数のブロックに分割し、時間的に離れたブロック間のメッセージの比較を、時間的に隣接するブロック間のメッセージの比較よりも優先的に行うことで、前記異なる値が設定されたパラメータを検出する、
請求項1記載の情報処理装置。
【請求項3】
前記決定部は、前記クライアントが送信または受信した異なるメッセージにおいて前記異なる値が設定されたパラメータを、前記書換パラメータと決定する、
請求項1または2記載の情報処理装置。
【請求項4】
前記記憶部は、他のクライアントと前記1または2以上のサーバの間で送信された1または2以上の他のメッセージを更に記憶し、
前記決定部は、前記複数のパラメータのうち一のメッセージと一の他のメッセージとにおいて同じ値が設定されたパラメータを、前記複数のメッセージを前記他のサーバの検証に用いるときに値を書き換えない非書換パラメータと決定する、
請求項1乃至3の何れか一項に記載の情報処理装置。
【請求項5】
前記複数のメッセージには、前記クライアントが送信した複数の要求メッセージと前記1または2以上のサーバが送信した複数の応答メッセージとが含まれ、
前記決定部は、前記複数の要求メッセージの間の比較を優先的に行うことで、前記異なる値が設定されたパラメータを検出する、
請求項1乃至4の何れか一項に記載の情報処理装置。
【請求項6】
前記決定部は、前記書換パラメータを含む要求メッセージより前に前記クライアントに送信された応答メッセージに基づいて、前記書換パラメータの値の書換方法を決定する、
請求項5記載の情報処理装置。
【請求項7】
クライアントとの間で、それぞれ複数のパラメータの少なくとも1つと当該パラメータの値とを含む複数のメッセージを送信または受信する1または2以上のサーバと、
他のサーバと、
前記複数のメッセージを取得し、取得した前記複数のメッセージを用いて前記他のサーバを検証する検証装置と、を有し、
前記検証装置は、前記複数のパラメータのうち異なるメッセージにおいて異なる値が設定されたパラメータを検出し、検出結果に応じて、前記複数のパラメータのうち前記他のサーバを検証するときに値を書き換える書換パラメータを決定する、
情報処理システム。
【請求項8】
コンピュータが実行する検証制御方法であって、
クライアントと1または2以上のサーバの間で送信された、それぞれ複数のパラメータの少なくとも1つと当該パラメータの値とを含む複数のメッセージを取得し、
前記複数のパラメータの中から、取得した前記複数のメッセージのうち異なるメッセージにおいて異なる値が設定されたパラメータを検出し、
検出結果に応じて、前記複数のパラメータのうち前記複数のメッセージを他のサーバの検証に用いるときに値を書き換える書換パラメータを決定する、
検証制御方法。
【請求項9】
コンピュータに、
クライアントと1または2以上のサーバの間で送信された、それぞれ複数のパラメータの少なくとも1つと当該パラメータの値とを含む複数のメッセージを取得し、
前記複数のパラメータの中から、取得した前記複数のメッセージのうち異なるメッセージにおいて異なる値が設定されたパラメータを検出し、
検出結果に応じて、前記複数のパラメータのうち前記複数のメッセージを他のサーバの検証に用いるときに値を書き換える書換パラメータを決定する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は情報処理装置、情報処理システム、検証制御方法およびプログラムに関する。
【背景技術】
【0002】
情報処理システムを運用・保守する過程で、あるコンピュータと他のコンピュータとが同等の機能を有するか検証したいことがある。例えば、現在使用しているコンピュータを新たなコンピュータに交換する前に、元のコンピュータの機能が新たなコンピュータでも実現されているか検証することがある。また、例えば、あるコンピュータのソフトウェアをアップデートする前に、テスト用のコンピュータ上で試験的にアップデートを行い、アップデートの影響によって他のソフトウェアの動作が変化しないか確認する退行テストを行うことがある。また、例えば、業務用のコンピュータで障害が発生したとき、デバッグ用のコンピュータ上で障害を再現して障害原因を分析することがある。
【0003】
検証するコンピュータとしては、クライアントから要求メッセージを受信し、要求メッセージに応じて応答メッセージをクライアントに送信するサーバが考えられる。クライアントやサーバは、物理的なコンピュータ(物理マシンと言うことがある)でもよいし、仮想的なコンピュータ(仮想マシンと言うことがある)でもよい。この場合、検証方法として、あるサーバとクライアントとの間で過去に送信されたメッセージを用いて他のサーバを検証するブラックボックス方式の検証方法を採用することができる。
【0004】
例えば、検証装置は、過去にクライアントからサーバに送信された要求メッセージと、過去に当該サーバからクライアントに送信された応答メッセージとを取得する。検証装置は、取得した過去の要求メッセージを他のサーバに送信し、その要求メッセージに対する応答メッセージを当該他のサーバから受信する。そして、検証装置は、他のサーバから受信した応答メッセージと取得した過去の応答メッセージとを比較することで、他のサーバにおいて元のサーバと同等の機能が実現されているか判定する。
【0005】
なお、現用系サーバとの間で送信されたパケットをキャプチャし、キャプチャしたパケットを予備系サーバに転送することで、現用系サーバに対する予備系サーバの相対的な性能を評価する試験装置が提案されている。また、クライアントに提供するWebページ内のパラメータ名が、クライアントからのアクセス毎に変化するようなWebアプリケーションをテストするためのテスト基盤装置が提案されている。テスト基盤装置は、名前が変化するパラメータを定義したパラメータ定義ルールを予め保持しておく。テスト基盤装置は、Webページの中からパラメータ定義ルールに適合するパラメータを抽出し、抽出したパラメータの名前および値を所定の名前および所定の値に置換して、クライアント上で動作する自動テストツールがWebページを処理できるようにする。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2011−199680号公報
【特許文献2】特開2010−113380号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところで、あるサーバおよび他のサーバが要求メッセージに含まれるパラメータの値に応じた動作をするものである場合、過去にクライアントとサーバとの間で送信された要求メッセージをそのまま使用すると他のサーバを正しく検証できないことがある。
【0008】
例えば、クライアントがサーバに、セッションIDや認証情報などセッションに依存するパラメータの値を含む要求メッセージを送信することがある。その場合、過去の要求メッセージをそのまま他のサーバに送信すると、他のサーバはパラメータの値が実在しないセッションに関する異常な値であると判断してクライアントにエラーを返すことがある。また、例えば、クライアントがサーバに、サーバのMAC(Media Access Control)アドレスなどサーバの物理状態に依存するパラメータの値を含む要求メッセージを送信することがある。その場合も、過去の要求メッセージをそのまま他のサーバに送信すると、他のサーバはパラメータの値が不適切と判断してクライアントにエラーを返すことがある。
【0009】
そこで、あるサーバとクライアントとの間で過去に送信されたメッセージを利用するにあたって、メッセージに含まれるパラメータの値の少なくとも一部を書き換えることが考えられる。しかし、メッセージに含まれ得るパラメータのうち値を書き換えるべきパラメータを、検証を指示するユーザが予め定義しておくことは、ユーザの負担が大きいという問題がある。これは、値を書き換えるべきパラメータを正確に定義しておくには、メッセージ処理を行うソフトウェアの詳細をユーザが知らないと難しいためである。
【0010】
1つの側面では、本発明は、あるサーバに関するメッセージを利用した他のサーバの検証を容易にする情報処理装置、情報処理システム、検証制御方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0011】
1つの態様では、記憶部と決定部とを有する情報処理装置が提供される。記憶部は、クライアントと1または2以上のサーバの間で送信された、それぞれ複数のパラメータの少なくとも1つと当該パラメータの値とを含む複数のメッセージを記憶する。決定部は、複数のパラメータのうち異なるメッセージにおいて異なる値が設定されたパラメータを検出し、検出結果に応じて、複数のパラメータのうち複数のメッセージを他のサーバの検証に用いるときに値を書き換える書換パラメータを決定する。
【0012】
また、1つの態様では、1または2以上のサーバと他のサーバと検証装置とを有する情報処理システムが提供される。1または2以上のサーバは、クライアントとの間で、それぞれ複数のパラメータの少なくとも1つと当該パラメータの値とを含む複数のメッセージを送信または受信する。検証装置は、複数のメッセージを取得し、取得した複数のメッセージを用いて他のサーバを検証する。検証装置は、複数のパラメータのうち異なるメッセージにおいて異なる値が設定されたパラメータを検出し、検出結果に応じて、複数のパラメータのうち他のサーバを検証するときに値を書き換える書換パラメータを決定する。
【0013】
また、1つの態様では、コンピュータが実行する検証制御方法が提供される。クライアントと1または2以上のサーバの間で送信された、それぞれ複数のパラメータの少なくとも1つと当該パラメータの値とを含む複数のメッセージを取得する。複数のパラメータの中から、取得した複数のメッセージのうち異なるメッセージにおいて異なる値が設定されたパラメータを検出する。検出結果に応じて、複数のパラメータのうち複数のメッセージを他のサーバの検証に用いるときに値を書き換える書換パラメータを決定する。
【0014】
また、1つの態様では、コンピュータに実行させるプログラムが提供される。
【発明の効果】
【0015】
1つの側面では、あるサーバに関するメッセージを利用した他のサーバの検証が容易になる。
【図面の簡単な説明】
【0016】
図1】第1の実施の形態の情報処理システムを示す図である。
図2】第2の実施の形態の情報処理システムを示す図である。
図3】メッセージに含まれるパラメータの例を示す図である。
図4】検証装置のハードウェア例を示すブロック図である。
図5】検証装置の機能例を示すブロック図である。
図6】メッセージテーブルの例を示す図である。
図7】パラメータ検出テーブルの例を示す図である。
図8】解析結果テーブルの例を示す図である。
図9】パラメータ静的解析の手順例を示すフローチャートである。
図10】サーバ検証の手順例を示すフローチャートである。
図11】検証メッセージの例を示す図である。
図12】メッセージの選択方法の第1の例を示す図である。
図13】パラメータ静的解析の他の手順例を示すフローチャートである。
図14】メッセージの選択方法の第2の例を示す図である。
図15】サーバ装置の他の機能例を示すブロック図である。
【発明を実施するための形態】
【0017】
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理システムを示す図である。
【0018】
第1の実施の形態の情報処理システムは、情報処理装置10、クライアント21およびサーバ22,23を含む。この情報処理システムは、クライアント21とサーバ22(または、サーバ22を含む2以上のサーバ)との間で送信されたメッセージを利用して、サーバ23(または、サーバ23を含む2以上のサーバ)の動作を検証する。サーバ23としては、例えば、サーバ22と交換予定の新たなサーバ、サーバ22のソフトウェアをアップデートする前にアップデート後の動作をテストするサーバ、サーバ22で発生した障害を再現して原因を分析するためのデバッグ用サーバなどが考えられる。
【0019】
クライアント21およびサーバ22,23は、物理マシンでもよいし仮想マシンでもよい。前者の場合、例えば、情報処理装置10、クライアント21およびサーバ22,23が、スイッチなどの通信装置を有するネットワークに接続される。後者の場合、クライアント21およびサーバ22,23のうちの2つ以上が同一の物理マシン上で動作していてもよい。仮想マシンが動作する物理マシンは、情報処理装置10であってもよい。
【0020】
情報処理装置10は、記憶部11および決定部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性の記憶装置でもよいし、HDD(Hard Disk Drive)などの不揮発性の記憶装置でもよい。決定部12は、例えば、プロセッサを用いて実現される。決定部12は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)などを含んでもよい。プロセッサを用いる場合、例えば、当該プロセッサが以下に説明する処理を行うためのプログラムを実行する。
【0021】
記憶部11は、クライアント21とサーバ22(または、サーバ22を含む2以上のサーバ)との間で送信された複数のメッセージを記憶する。各メッセージは、複数のパラメータの少なくとも1つと当該パラメータの値とを含む。記憶部11に記憶されるメッセージは、例えば、情報処理装置10がクライアント21とサーバ22との間で送信されたパケットをキャプチャすることで収集される。収集するメッセージは、HTTP(Hypertext Transfer Protocol)など所定のプロトコルに関するメッセージに限定されてもよい。
【0022】
一例として、記憶部11に記憶される複数のメッセージに、クライアント21からサーバ22に送信されたメッセージ1〜3が含まれる。パラメータ名とパラメータの値の組として、メッセージ1がpara1=a0を含み、メッセージ2がpara1=a0とpara2=b0を含み、メッセージ3がpara2=b1とpara3=c0を含む。すなわち、para1はメッセージ1,2に含まれ、その値はメッセージ1とメッセージ2で同じである。para2はメッセージ2,3に含まるが、その値はメッセージ2とメッセージ3で異なる。なお、パラメータは、例えば、HTTPヘッダやHTTPボディに記載されたものなど、アプリケーションレイヤのパラメータである。
【0023】
決定部12は、記憶部11に記憶されたメッセージから、メッセージに含まれ得る複数のパラメータのうち異なるメッセージにおいて異なる値が設定されたパラメータを検出する。そして、決定部12は、検出結果に応じて、記憶部11に記憶されたメッセージをサーバ23(または、サーバ23を含む複数のサーバ)の検証に用いるときに値を書き換える書換パラメータを決定する。例えば、決定部12は、同じクライアント(クライアント21)が送信または受信した異なるメッセージにおいて異なる値が設定されたパラメータを、書換パラメータと決定する。上記の例の場合、決定部12は、para1,para2,para3のうちpara2を、書換パラメータと決定する。
【0024】
なお、決定部12は、上記の条件を満たすパラメータを、クライアント21が送信した要求メッセージとサーバ22が送信した応答メッセージのうち、要求メッセージのみを参照して(または、要求メッセージを優先的に参照して)検索してもよい。また、決定部12は、記憶部11に記憶された複数のメッセージを、送信順序とは異なる順序で参照することで、上記の条件を満たすパラメータを検索してもよい。例えば、決定部12は、送信タイミングが近いメッセージに含まれるパラメータの比較よりも、送信タイミングが離れたメッセージに含まれるパラメータの比較を優先的に行ってもよい。
【0025】
その後、サーバ23(または、サーバ23を含む複数のサーバ)を検証するにあたっては、決定された書換パラメータの値が書き換えられる。一例として、para2が書換パラメータと決定され、para1,para3が値を書き換えない非書換パラメータと決定される。すると、例えば、para1=a0を含むメッセージ1がサーバ23に送信され、para1=a0とpara2=b2を含むメッセージ2がサーバ23に送信され、para2=b3とpara3=c0を含むメッセージ3がサーバ23に送信される。
【0026】
書換パラメータの値(例えば、上記のb2やb3)は、サーバ23を検証する過程で自動的に算出し得る。決定部12は、記憶部11に記憶されたメッセージのうち、書換パラメータが含まれていた要求メッセージより前に送信された応答メッセージ(例えば、その要求メッセージの直前の応答メッセージ)に基づいて、値の書換方法を決定してもよい。その場合、検証の過程でサーバ23が送信する応答メッセージに基づいて、その後にサーバ23に送信される要求メッセージのパラメータの値が書き換えられる。なお、サーバ23の検証は、情報処理装置10が行ってもよいし他の情報処理装置が行ってもよい。
【0027】
第1の実施の形態の情報処理システムによれば、メッセージに含まれ得るパラメータの中から、セッションに依存するパラメータやサーバの物理状態に依存するパラメータなど、値を書き換えるべきパラメータを判定することができる。よって、クライアント21とサーバ22との間で送信されたメッセージを利用してサーバ23を検証するときに、パラメータ異常によって検証が正しく行えなくなることを抑制できる。また、値を書き換えるべきパラメータをユーザが事前に定義しておかなくてもよいため、ユーザはサーバ23で実行されるソフトウェアの詳細を知らなくてもよく、ユーザの負担が軽減される。
【0028】
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。
第2の実施の形態の情報処理システムは、スイッチ30、検証装置100、クライアント装置211,212、サーバ装置221,222,231,232を有する。
【0029】
スイッチ30は、パケットを転送する通信装置である。スイッチ30は、特定の通常ポートまたは全ての通常ポートを通過するパケットを複製し、複製したパケットを通常ポートとは異なるミラーポートから出力するポートミラーリング機能を備える。ミラーポートには、検証装置100が接続されている。スイッチ30は、クライアント装置211,212とサーバ装置221,222との間で送信されたパケットを複製し、検証装置100に送信する。なお、検証装置100がパケットをキャプチャする方法として、スイッチ30に代えて、伝送媒体上の信号を複製するタップを利用してもよい。
【0030】
クライアント装置211,212は、ユーザが操作する端末装置としてのクライアントコンピュータである。サーバ装置221,222,231,232は、要求メッセージを受信し、要求メッセージに応じた処理を行って応答メッセージを返信するサーバコンピュータである。第2の実施の形態では、主に、サーバ装置221,222,231,232としてHTTP通信を行うWebサーバを想定する。ただし、サーバ装置221,222,231,232は、他の種類のサーバコンピュータであってもよい。
【0031】
上記のサーバ装置のうちサーバ装置221,222は、現在業務に使用している現用系のサーバ装置である。サーバ装置221,222は、クライアント装置211,212から要求メッセージ(例えば、HTTPリクエスト)を受信し、クライアント装置211,212に応答メッセージ(例えば、HTTPレスポンス)を送信する。
【0032】
一方、サーバ装置231,232は、現在業務に使用していない検証系のサーバ装置である。例えば、サーバ装置231,232として、サーバ装置221,222と交換予定の(システム移行後に業務に使用する予定の)サーバ装置が考えられる。また、例えば、サーバ装置231,232として、サーバ装置221,222のソフトウェアをアップデートする前にアップデート後の動作を確認するテスト用のサーバ装置が考えられる。また、例えば、サーバ装置231,232として、サーバ装置221,222で発生した障害を分析するデバッグ用のサーバ装置が考えられる。サーバ装置231,232は、検証装置100から要求メッセージを受信し、検証装置100に応答メッセージを送信する。
【0033】
検証装置100は、クライアント装置211,212とサーバ装置221,222との間で送信されたメッセージを用いて、サーバ装置231,232をブラックボックス方式で検証するコンピュータである。検証装置100は、ユーザが操作する端末装置であってもよいし、端末装置からアクセスされるサーバ装置であってもよい。
【0034】
サーバ装置231,232を検証するにあたり、検証装置100は、スイッチ30から受信するパケットをキャプチャし、キャプチャしたパケットから、サーバ装置221,222が送信または受信した過去のメッセージ(例えば、HTTPメッセージ)抽出する。検証装置100は、抽出された過去の要求メッセージをサーバ装置231,232に送信し、応答メッセージをサーバ装置231,232から受信する。そして、検証装置100は、サーバ装置231,232から受信された応答メッセージと過去の応答メッセージとを比較することで、クライアント装置211,212から見たサーバ装置231,232の動作がサーバ装置221,222と同等になるか検証する。
【0035】
ただし、クライアント装置211,212とサーバ装置221,222の間で送信されたメッセージには、セッション依存のパラメータやサーバ装置依存のパラメータなど、通信状況に依存するパラメータが含まれ得る。通信状況に依存するパラメータを含む過去の要求メッセージをそのままサーバ装置231,232に送信すると、パラメータの値が示すセッションやサーバ装置が不適切であるとして、サーバ装置231,232が要求メッセージを拒否する可能性がある。そこで、検証装置100は、メッセージに含まれ得るパラメータの中から状況依存パラメータを判定し、サーバ装置231,232との通信状況に応じて、要求メッセージに含まれる状況依存パラメータの値を適宜書き換える。
【0036】
図3は、メッセージに含まれるパラメータの例を示す図である。
ここでは、クライアント装置211とサーバ装置221との間で、HTTPメッセージが送信される場合を考える。検証装置100は、HTTPメッセージのヘッダやボディに含まれるパラメータの中から状況依存パラメータを判定することになる。
【0037】
パラメータ名とその値は、HTTPリクエストのヘッダに記載されるURL(Uniform Resource Locator)に付加されることがある。例えば、URLとして/service?para1=111と記載されている場合、para1がパラメータ名であり111がその値である。また、パラメータ名とその値は、HTTPリクエストのヘッダにCookieとして記載されることがある。例えば、Cookieとしてpara3=“333”と記載されている場合、para3がパラメータ名であり333がその値である。
【0038】
また、パラメータ名とその値は、HTTPリクエストのボディにPOSTメソッドの入力データとして記載されることがある。例えば、入力データとしてpara2=222と記載されている場合、para2がパラメータ名であり222がその値である。また、パラメータ名とその値は、HTTPレスポンスのボディに記載されるHTML(Hypertext Markup Language)タグの中に含まれることがある。例えば、HTMLタグとして<input type=“hidden” name=“para2” value=“222”>と記載されている場合、para2がパラメータ名であり222がその値である。
【0039】
クライアント装置211が送信するHTTPリクエストに含まれるパラメータの値としては、そのHTTPリクエストより前にクライアント装置211が受信したHTTPレスポンスに含まれるパラメータの値が用いられることがある。例えば、サーバ装置221からクライアント装置211にpara2=222を含むHTTPレスポンスが送信されたとする。その場合、その直後にクライアント装置211からサーバ装置221に送信されるHTTPリクエストにpara2=222が含まれることがある。
【0040】
前述したように、パラメータの中には、セッション依存のパラメータやサーバ装置依存のパラメータなどの状況依存パラメータが含まれていることがある。セッション依存のパラメータの例としては、セッションIDや認証情報を示すパラメータが挙げられる。
【0041】
セッションIDは原則としてセッション毎に変わり、認証情報は原則としてサーバ装置221が認証を行う毎に変わる。例えば、サーバ装置221がクライアント装置211にセッションIDを含むHTTPレスポンスを送信し、クライアント装置211がそのセッションIDを含むHTTPリクエストをサーバ装置221に送信することで、サーバ装置221がHTTPリクエストの属するセッションを特定できるようにする。サーバ装置依存のパラメータの例としては、MACアドレスなどの物理アドレスが挙げられる。サーバ装置依存のパラメータの値は、アクセス先のサーバ装置に応じて変わる。
【0042】
図4は、検証装置のハードウェア例を示すブロック図である。
検証装置100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。CPU101は、第1の実施の形態の決定部12の一例であり、RAM102またはHDD103は、第1の実施の形態の記憶部11の一例である。
【0043】
CPU101は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU101は、HDD103に記憶されているプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを備えてもよく、検証装置100は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
【0044】
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性メモリである。なお、検証装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0045】
HDD103は、OS(Operating System)やアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、検証装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0046】
画像信号処理部104は、CPU101からの命令に従って、検証装置100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OELD:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
【0047】
入力信号処理部105は、検証装置100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、検証装置100に、複数の種類の入力デバイスが接続されてもよい。
【0048】
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る駆動装置である。記録媒体113として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
【0049】
通信インタフェース107は、スイッチ30に接続され、パケットを送信および受信するインタフェースである。通信インタフェース107は、クライアント装置211,212とサーバ装置221,222との間で送信されたパケットの複製をスイッチ30から受信する。また、通信インタフェース107は、サーバ装置231,232にパケットを送信し、サーバ装置231,232からパケットを受信する。なお、検証装置100は、パケットをキャプチャするための通信インタフェースと、サーバ装置231,232と通信するための通信インタフェースとを、別個に備えていてもよい。
【0050】
ただし、検証装置100は、媒体リーダ106を備えていなくてもよい。また、端末装置からネットワーク経由で検証装置100を制御できる場合には、検証装置100は、画像信号処理部104や入力信号処理部105を備えなくてもよい。
【0051】
図5は、検証装置の機能例を示すブロック図である。
検証装置100は、メッセージ記憶部121、パラメータ情報記憶部122、検証メッセージ記憶部123、学習部130、検証部140および表示制御部150を有する。メッセージ記憶部121、パラメータ情報記憶部122および検証メッセージ記憶部123は、例えば、RAM102またはHDD103に確保した記憶領域として実現することができる。学習部130、検証部140および表示制御部150は、例えば、CPU101が実行するソフトウェアのモジュールとして実現することができる。
【0052】
メッセージ記憶部121は、クライアント装置211,212とサーバ装置221,222との間で送信されたメッセージ、または、メッセージに含まれる一部の情報を記憶する。パラメータ情報記憶部122は、メッセージに含まれるパラメータの解析結果と、解析の途中経過の情報とを記憶する。解析結果には、状況依存パラメータを示す情報、状況非依存パラメータを示す情報、および、検証時に状況依存パラメータの値を書き換える方法を示す情報が含まれる。検証メッセージ記憶部123は、サーバ装置231,232を検証するときに検証装置100とサーバ装置231,232との間で送信されたメッセージ、または、メッセージに含まれる一部の情報を記憶する。
【0053】
学習部130は、クライアント装置211,212とサーバ装置221,222との間で送信されたメッセージを解析して、サーバ装置231,232を検証する方法を学習する。学習部130は、キャプチャ部131およびパラメータ解析部132を有する。
【0054】
キャプチャ部131は、スイッチ30から受信されるパケット(例えば、IP(Internet Protocol)パケット)をキャプチャする。スイッチ30が複製するパケットに、クライアント装置211,212やサーバ装置221,222以外のコンピュータによって送信されたものが含まれる場合、キャプチャ部131は、キャプチャするパケットを限定してもよい。そして、キャプチャ部131は、キャプチャしたパケットの集合からメッセージを抽出し、メッセージまたは当該メッセージに含まれる一部の情報をメッセージ記憶部121に格納する。このとき、キャプチャ部131は、抽出するメッセージを所定のアプリケーションレイヤのプロトコル(例えば、HTTP)に関するものに限定してもよい。
【0055】
パラメータ解析部132は、メッセージ記憶部121を参照して、メッセージに含まれるパラメータを、サーバ装置231,232の検証が開始される前に解析する(静的解析)。後述するように、パラメータ解析部132は、メッセージを送信または受信したクライアント装置とメッセージに含まれるパラメータとパラメータの値の3つの事項を特定する。そして、パラメータ解析部132は、異なるメッセージ間における上記の3つの事項の一致不一致に基づいて、状況依存パラメータおよび状況非依存パラメータを判定する。パラメータ解析部132は、解析結果をパラメータ情報記憶部122に格納する。
【0056】
検証部140は、学習部130の学習結果に基づいて、サーバ装置231,232の動作がサーバ装置221,222と同等であるか検証する。検証部140は、通信再現部141、応答比較部142およびパラメータ解析部143を有する。
【0057】
通信再現部141は、メッセージ記憶部121を参照して、クライアント装置211,212からサーバ装置221,222に対して行われたアクセスを、サーバ装置231,232を対象として再現する。すなわち、通信再現部141は、過去にクライアント装置211,212からサーバ装置221,222に送信された要求メッセージを、送信順序を維持してサーバ装置231,232に送信する。このとき、通信再現部141は、パラメータ情報記憶部122に記憶されたパラメータの解析結果に基づいて、過去に送信された要求メッセージに含まれるパラメータの値を適宜書き換える。
【0058】
検証の過程で、通信再現部141は、サーバ装置231,232に送信した要求メッセージ、または、要求メッセージに含まれる一部の情報を、検証メッセージ記憶部123に格納する。また、通信再現部141は、要求メッセージに対してサーバ装置231,232から受信した応答メッセージ、または、応答メッセージに含まれる一部の情報を、検証メッセージ記憶部123に格納する。ただし、要求メッセージまたは要求メッセージに含まれる一部の情報を、検証メッセージ記憶部123に格納しないようにしてもよい。
【0059】
応答比較部142は、メッセージ記憶部121と検証メッセージ記憶部123を参照して、過去にサーバ装置221,222が送信した応答メッセージとサーバ装置231,232が送信した応答メッセージとを比較し、両者の同等性を判断する。2つの応答メッセージが同等でない場合、応答比較部142は、パラメータ解析部143を呼び出す。
【0060】
このとき、応答メッセージにはセッション依存の情報やサーバ装置依存の情報が含まれ得るため、応答比較部142は、2つの応答メッセージの内容が完全に一致していなくても「同等」と判断することがある。例えば、応答比較部142は、HTTPステータスコードが同じ応答メッセージを同等であると判断する。HTTPステータスコードは、HTTPリクエストの成功を示す200番や、HTTPリクエストの処理中にサーバ内部で予期しないエラーが発生したことを示す500番など、サーバの状態を示すコードである。また、例えば、応答比較部142は、HTTPレスポンスのボディに含まれる文字列の類似度が所定の閾値以上である応答メッセージを同等であると判断する。
【0061】
パラメータ解析部143は、検証メッセージ記憶部123を参照して、検証装置100とサーバ装置231,232との間で送信されたメッセージに含まれるパラメータを、検証の過程で解析する(動的解析)。これは、パラメータ解析部132の静的解析において全ての状況依存パラメータを特定できなかった可能性を考慮して行われる。
【0062】
すなわち、サーバ装置231,232から受信された一の応答メッセージが、これに対応する過去の応答メッセージと同等でないと判断されると、パラメータ解析部143は、要求メッセージに含まれるパラメータの値の書換漏れがその原因であると仮定する。この仮定のもと、パラメータ解析部143は、上記の一の応答メッセージの前に送信された要求メッセージに含まれるパラメータを状況依存パラメータと推定し(状況依存パラメータを追加し)、パラメータ情報記憶部122に記憶された解析結果を更新する。
【0063】
状況依存パラメータが追加された後は、通信再現部141によるサーバ装置231,232へのアクセスが再度行われる。状況依存パラメータを追加してもなお、サーバ装置231,232から受信された応答メッセージが過去の応答メッセージと同等にならない場合、例えば、パラメータ解析部143は、サーバ装置231,232に異常があると判断する。すなわち、クライアント装置211,212から見たサーバ装置231,232の動作が、サーバ装置221,222と同等にならないと判断される。
【0064】
ただし、検証部140は、サーバ装置221,222の動作とサーバ装置231,232の動作の同等性を評価する前に、状況依存パラメータを先に確定させることもできる。例えば、検証部140は、サーバ装置221,222と同一のソフトウェアを実行させた状態のサーバ装置231,232に要求メッセージを送信する。検証部140は、このとき受信される全ての応答メッセージが過去にサーバ装置221,222から送信されたものと同等になるまで、状況依存パラメータと推定されるパラメータを追加していく。その後、検証部140は、サーバ装置221,222と異なるソフトウェアを実行させた状態のサーバ装置231,232に要求メッセージを送信して、動作の同等性を評価する。
【0065】
表示制御部150は、検証部140の検証結果をディスプレイ111に表示させる。
なお、第2の実施の形態では、検証装置100が学習部130と検証部140の両方を備えているとした。すなわち、同一の物理マシンが、状況依存パラメータの静的解析とサーバ装置231,232の検証の両方を行うこととした。しかし、状況依存パラメータの静的解析とサーバ装置231,232の検証を、異なる物理マシンが行ってもよい。その場合、例えば、一方の物理マシンが行ったパラメータの静的解析の結果を、サーバ装置231,232を検証する他方の物理マシンに通知するようにする。
【0066】
図6は、メッセージテーブルの例を示す図である。
メッセージテーブル124は、現用系のサーバ装置221,222が送信または受信したメッセージについての情報を登録したテーブルであり、メッセージ記憶部121に記憶される。メッセージテーブル124は、メッセージ番号、時刻、送信元アドレス、宛先アドレス、メソッドまたはコード、パスおよび複数のパラメータの項目を含む。なお、検証系のサーバ装置231,232が送信または受信したメッセージについて、検証メッセージ記憶部123にメッセージテーブル124と同様の構造のテーブルが記憶される。
【0067】
メッセージ番号は、メッセージを識別する識別子である。メッセージ番号は、例えば、送信タイミングの古い順にキャプチャ部131によって付与される。時刻の項目には、メッセージを含むパケットが検証装置100においてキャプチャされた時刻が登録される。送信元アドレスの項目には、メッセージの送信元の識別子、例えば、メッセージを含むパケットの送信元IPアドレスが登録される。宛先アドレスの項目には、メッセージの宛先の識別子、例えば、メッセージを含むパケットの宛先IPアドレスが登録される。
【0068】
メソッドは、HTTPリクエストのヘッダで指定されるGETやPOSTなど、要求メッセージの種類を示す。POSTメソッドは、主にユーザからフォームに入力されたデータを送信するときに用いられ、GETメソッドは、主にそのような入力されたデータが存在しないときに用いられる。コードは、HTTPステータスコードなど、応答メッセージの種類を示す。応答メッセージに含まれるコードを見ることで、要求メッセージがサーバ装置221,222によって正常に処理されたか確認することができる。
【0069】
パスの項目には、HTTPリクエストのヘッダに記載されたURLなど、サーバ装置221,222に要求されたWebリソース(例えば、Webページ)の識別子が登録される。各パラメータの項目には、メッセージに含まれる一のパラメータのパラメータ名とその値の組が登録される。メッセージの中には、パラメータを含まないものや、パラメータを1つのみ含むものや、2以上のパラメータを含むものが存在し得る。
【0070】
図7は、パラメータ検出テーブルの例を示す図である。
パラメータ検出テーブル125は、パラメータ解析部132がパラメータの静的解析を行う過程で生成され、パラメータ情報記憶部122に記憶される。パラメータ検出テーブル125は、クライアントアドレス、パラメータ名および値の項目を含む。
【0071】
クライアントアドレスは、要求メッセージを送信したクライアント装置、または、応答メッセージの宛先となるクライアント装置のアドレス(例えば、IPアドレス)である。このクライアントアドレスは、要求メッセージについてはメッセージテーブル124の送信元アドレスに相当し、応答メッセージについてはメッセージテーブル124の宛先アドレスに相当する。パラメータ名の項目には、メッセージに記載されたパラメータの識別子が登録される。値の項目には、メッセージに記載されたパラメータの値が登録される。
【0072】
図8は、解析結果テーブルの例を示す図である。
解析結果テーブル126は、パラメータ情報記憶部122に記憶される。解析結果テーブル126は、判定結果、パラメータ名および書換方法の項目を含む。
【0073】
判定結果の項目には、「依存」または「非依存」が記載される。「依存」は、パラメータが、サーバ装置231,232を検証する際に値を書き換えるべき状況依存パラメータであることを示す。「非依存」は、パラメータが、サーバ装置231,232を検証する際に値を書き換えなくてよい状況非依存パラメータであることを示す。
【0074】
パラメータ名は、パラメータ検出テーブル125に登録されるものと同様である。書換方法の項目には、検証時に状況依存パラメータの値を求める方法が記載される。状況非依存パラメータについては、書換方法は記載されない。書換方法としては、例えば、状況依存パラメータを含む要求メッセージの直前にサーバ装置231,232から受信された応答メッセージの中から、特定のタグを探し、そのタグに記載された値を状況依存パラメータの値として用いる方法が考えられる。これにより、検証装置100とサーバ装置231,232との間の通信の文脈に応じた適切な値が状況依存パラメータに設定される。
【0075】
なお、解析結果テーブル126には、メッセージテーブル124に現れる全てのパラメータが登録されるとは限らない。パラメータ解析部132は、静的解析において状況依存パラメータとも状況非依存パラメータとも断定できないパラメータについては、解析結果テーブル126に登録しない。その場合、通信再現部141は、状況依存パラメータか状況非依存パラメータか確定していないパラメータを、最初は状況非依存パラメータとして取り扱う。ただし、パラメータ解析部143の動的解析によって、そのようなパラメータの一部または全部が状況依存パラメータであると推定されることがある。
【0076】
次に、学習部130および検証部140の処理手順を説明する。
図9は、パラメータ静的解析の手順例を示すフローチャートである。
(S10)パラメータ解析部132は、メッセージテーブル124からメッセージを1つ選択する。原則として、メッセージはメッセージ番号の小さい順に選択される。
【0077】
(S11)パラメータ解析部132は、選択したメッセージに少なくとも1つのパラメータが含まれているか判断する。メッセージに少なくとも1つのパラメータが含まれている場合、パラメータ毎に以下のステップS12〜S18の処理が行われる。1つのパラメータも含まれていない場合、ステップS19の処理に進む。
【0078】
(S12)パラメータ解析部132は、選択したメッセージのクライアントアドレス(対象クライアントアドレス)と当該メッセージに含まれるパラメータのパラメータ名(対象パラメータ名)との組が、パラメータ検出テーブル125に既に登録されているか判断する。当該組がパラメータ検出テーブル125に既に登録されている場合、ステップS14の処理に進み、未だ登録されていない場合、ステップS13の処理に進む。
【0079】
(S13)パラメータ解析部132は、パラメータ検出テーブル125に、対象クライアントアドレスと、対象パラメータ名と、選択したメッセージにおいて設定されたパラメータの値(対象パラメータ値)とを対応付けて登録する。
【0080】
(S14)パラメータ解析部132は、パラメータ検出テーブル125から、クライアントアドレスとパラメータ名の組が、対象クライアントアドレスと対象パラメータ名の組と一致し、値が対象パラメータ値と異なるエントリを検索する。該当するエントリがある場合はステップS15の処理に進み、ない場合はステップS17の処理に進む。
【0081】
(S15)パラメータ解析部132は、対象パラメータ名が示すパラメータを、状況依存パラメータと判定し、判定結果と対応付けて解析結果テーブル126に登録する。
(S16)パラメータ解析部132は、選択したメッセージの1つ前の応答メッセージから、対象パラメータ名を指定して値を設定する文(例えば、HTMLのタグ)を検索する。そして、パラメータ解析部132は、検索された文の中で値を設定している箇所を特定し、当該箇所から値を抽出する方法を書換方法として解析結果テーブル126に登録する。その後、ステップS19の処理に進む。
【0082】
(S17)パラメータ解析部132は、パラメータ検出テーブル125から、パラメータ名と値の組が、対象パラメータ名と対象パラメータ値の組と一致し、クライアントアドレスが対象クライアントアドレスと異なるエントリを検索する。該当するエントリがある場合はステップS18の処理に進み、ない場合はステップS19の処理に進む。
【0083】
(S18)パラメータ解析部132は、対象パラメータ名が示すパラメータを、状況非依存パラメータと判定し、判定結果と対応付けて解析結果テーブル126に登録する。
(S19)パラメータ解析部132は、メッセージテーブル124に未選択のメッセージが残っているか判断する。未選択のメッセージがある場合はステップS10の処理に進み、次のメッセージ(例えば、1つ大きい番号のメッセージ)を処理する。全てのメッセージを選択した場合はパラメータの静的解析を終了する。
【0084】
このように、パラメータ解析部132は、同一のクライアント装置が送信または受信した異なるメッセージにおいて、異なる値が設定されていたパラメータを、状況依存パラメータと判定する。同一のクライアント装置が同じパラメータに対して異なる値を設定した場合、当該パラメータはセッションなどの通信状況に依存する可能性が高いためである。また、パラメータ解析部132は、異なるクライアント装置が送信または受信した異なるメッセージにおいて、同じ値が設定されていたパラメータを、状況非依存パラメータと判定する。異なるクライアント装置が一のパラメータに対して同じ値を設定した場合、当該パラメータはセッションなどの通信状況に依存しない可能性が高いためである。
【0085】
ただし、パラメータ解析部132は、状況依存パラメータや状況非依存パラメータを判定するにあたり、パラメータ名の同一性に加えて、メソッドまたはコードの同一性やパスの同一性を要求してもよい。これにより、例えば、パスの異なるWebページの間では意味の異なるパラメータに対して同一のパラメータ名が使用される可能性があっても、このような意味の異なるパラメータを明確に区別することができる。その場合、パラメータ検出テーブル125に、メソッドまたはコードの項目やパスの項目を追加すればよい。
【0086】
図10は、サーバ検証の手順例を示すフローチャートである。
(S20)通信再現部141は、メッセージ記憶部121から、送信元アドレスと宛先アドレスが同一のメッセージ(あるクライアント装置とあるサーバ装置との間で送信されたメッセージ)のリストを抽出する。リスト内では、複数のメッセージが送信タイミングの古い順に(例えば、メッセージ番号の小さい順に)並べられる。
【0087】
(S21)通信再現部141は、検証系のサーバ装置を1つ選択する。そして、通信再現部141は、リストから送信タイミングの古い順に要求メッセージを1つずつ選択し、その検証系のサーバ装置に送信していく。次の要求メッセージは、前の要求メッセージに対する応答メッセージを受信してから送信する。通信再現部141は、検証系のサーバ装置に送信した要求メッセージおよび検証系のサーバ装置から受信した応答メッセージ(または、各メッセージの一部の情報)を、検証メッセージ記憶部123に格納する。
【0088】
要求メッセージを送信するにあたり、通信再現部141は、解析結果テーブル126を参照して、送信する要求メッセージに状況依存パラメータが含まれているか判断する。状況依存パラメータが含まれている場合、通信再現部141は、解析結果テーブル126に登録された書換方法に従ってその状況依存パラメータの値を書き換え、パラメータ書換後の要求メッセージを検証系のサーバ装置に送信する。例えば、通信再現部141は、直前に検証系のサーバ装置から受信した応答メッセージの中から状況依存パラメータの値を抽出し、送信しようとする要求メッセージの状況依存パラメータにその値を設定する。
【0089】
(S22)応答比較部142は、検証系のサーバ装置から受信された応答メッセージを1つ選択する。応答メッセージは受信タイミングの古い順に選択される。
(S23)応答比較部142は、ステップS20のリストの中から、選択した検証系の応答メッセージに対応する現用系の応答メッセージを特定し、検証系と現用系の応答メッセージを比較する。そして、応答比較部142は、2つの応答メッセージが同等であるか判断する。例えば、応答比較部142は、HTTPステータスコードが同じであれば同等と判断し、異なれば同等でないと判断する。2つの応答メッセージが同等の場合はステップS24の処理に進み、同等でない場合はステップS25の処理に進む。
【0090】
(S24)応答比較部142は、検証系のサーバ装置から受信された応答メッセージのうち、ステップS22で未選択のものが残っているか判断する。未選択のものがある場合はステップS22の処理に進み、全て選択した場合はサーバ検証を終了する。後者の場合、例えば、表示制御部150が、検証系のサーバ装置の動作が現用系のサーバ装置221,222と同等である旨の検証結果をディスプレイ111に表示させる。
【0091】
(S25)パラメータ解析部143は、検証メッセージ記憶部123から、ステップS22で選択した応答メッセージを受信する直前に検証系のサーバ装置に対して送信された要求メッセージを検索する。そして、パラメータ解析部143は、検索された要求メッセージに含まれるパラメータを確認する。この要求メッセージは、パラメータを1つも含まないこともあるし、2以上のパラメータを含むこともある。
【0092】
(S26)パラメータ解析部143は、ステップS25で確認したパラメータの集合の中に、状況依存か状況非依存か判定されていないパラメータ(解析結果テーブル126に登録されていないもの)があるか判断する。未判定のものがある場合はステップS27の処理に進み、未判定のものがない場合はステップS29の処理に進む。
【0093】
(S27)パラメータ解析部143は、未判定のパラメータを状況依存パラメータと推定し、解析結果テーブル126に判定結果と対応付けて登録する。未判定のパラメータが2つ以上ある場合、パラメータ解析部143は、全ての未判定のパラメータを状況依存パラメータと推定してもよいし、任意の1つのみ状況依存パラメータと推定してもよい。
【0094】
(S28)パラメータ解析部143は、ステップS25で検索された要求メッセージの直前に検証系のサーバ装置から受信された応答メッセージを検索する。そして、パラメータ解析部143は、検索された応答メッセージから、状況依存パラメータと推定したパラメータの値を設定する文を探して値の書換方法を決定し、解析結果テーブル126に登録する。その後、ステップS21の処理に進み、通信再現部141が、更新された解析結果テーブル126に基づいて検証系のサーバ装置との通信を再度行う。
【0095】
(S29)表示制御部150は、検証系のサーバ装置の動作が現用系のサーバ装置221,222と異なる旨の検証結果(エラー)をディスプレイ111に表示させる。
なお、検証系と現用系の応答メッセージの比較(S23)は、検証装置100と検証系のサーバ装置との間の通信(S21)が完了してから開始してもよいし、完了する前に開始してもよい。後者の場合、ある検証系と応答メッセージが現用系と同等でないと判断されると、その時点で検証装置100と検証系のサーバ装置との通信を打ち切ってもよい。
【0096】
図11は、検証メッセージの例を示す図である。
ここでは、クライアント装置211とサーバ装置221との間でメッセージ#1〜#6が送信されたとする。メッセージ#1は、要求メッセージである。メッセージ#2は、コードが200番(正常)の応答メッセージである。メッセージ#3は、要求メッセージであり、para1=aaaを含む。メッセージ#4は、コードが200番の応答メッセージであり、para2=bbbを含む。メッセージ#5は、要求メッセージであり、para1=aaaとpara2=bbbを含む。メッセージ#6は、コードが200番の応答メッセージである。また、パラメータ解析部132の静的解析によって、para1が状況非依存パラメータと判定され、para2が未判定であるとする。
【0097】
メッセージ#1〜#6を利用してサーバ装置231を検証する場合、通信再現部141は、1回目ではパラメータの値を変換せずに要求メッセージをサーバ装置231に送信することになる。一例として、通信再現部141は、メッセージ#1をサーバ装置231に送信し、コードが200番のメッセージ#2を受信する。また、通信再現部141は、para1=aaaを含むメッセージ#3をサーバ装置231に送信し、para2=cccを含みコードが200番のメッセージ#4aを受信する。また、通信再現部141は、para1=aaaとpara2=bbbを含むメッセージ#5をサーバ装置231に送信し、コードが500番(エラー)のメッセージ#6aを受信する。
【0098】
メッセージ#1に対する応答メッセージは、コードが現用系と検証系とで同じであり同等と評価し得る。メッセージ#3に対する応答メッセージも、コードが現用系と検証系とで同じであり同等と評価し得る。一方、メッセージ#5に対する応答メッセージは、コードが現用系と検証系とで異なり同等とは言えない(正常とエラー)。
【0099】
そこで、パラメータ解析部143は、エラーとなったメッセージ#6aの直前にサーバ装置231に送信されたメッセージ#5から未判定のpara2を抽出し、para2を状況依存パラメータであると推定する。また、パラメータ解析部143は、メッセージ#5の直前にサーバ装置231から受信されたメッセージ#4aから、状況依存パラメータの値の書換方法を決定する。ここでは、パラメータ解析部143は、メッセージ#4aに含まれるpara2の値を、メッセージ#5で使用すべきであったと判断する。
【0100】
すると、通信再現部141は、2回目ではpara2の値を変換しつつ要求メッセージをサーバ装置231に送信することになる。一例として、通信再現部141は、メッセージ#1をサーバ装置231に送信し、コードが200番のメッセージ#2を受信する。また、通信再現部141は、para1=aaaを含むメッセージ#3をサーバ装置231に送信し、para2=dddを含みコードが200番のメッセージ#4bを受信する。また、通信再現部141は、para1=aaaとpara2=dddを含むメッセージ#5bをサーバ装置231に送信し、コードが200番のメッセージ#6aを受信する。
【0101】
2回目の検証系の応答メッセージであるメッセージ#2,#4b,#6は、現用系のメッセージ#2,#4,#6とコードが同じであり同等と評価し得る。このように、パラメータ解析部132の静的解析において未判定となったpara2が、パラメータ解析部143の動的解析によって状況依存パラメータと推定される。これにより、セッション依存やサーバ装置依存のパラメータの値が適切に書き換えられていないために生じる応答メッセージの不一致を、検証系のサーバ装置との通信の過程で除去することができる。
【0102】
次に、パラメータ解析部132が行う静的解析の変形例を説明する。上記では、メッセージ間でパラメータ名とその値を比較するとき、メッセージ番号の小さいものから優先的に比較を行った。以下に説明する変形例では、上記と異なる優先順位で比較を行う。
【0103】
図12は、メッセージの選択方法の第1の例を示す図である。
パラメータ解析部132は、メッセージテーブル124に登録されたメッセージの中から、応答メッセージよりも要求メッセージを優先的に選択して、クライアントアドレスとパラメータ名と値の組を抽出してもよい。また、パラメータ解析部132は、要求メッセージのみから、クライアントアドレスとパラメータ名と値の組を抽出してもよい。
【0104】
例えば、パラメータ解析部132は、番号=1の要求メッセージからversion=1.0を抽出してパラメータ検出テーブル125に登録する。次に、パラメータ解析部132は、番号=2の応答メッセージをスキップし、番号=3の要求メッセージからauth_token=0fa5とuser=Taroを抽出してパラメータ検出テーブル125に登録する。次に、パラメータ解析部132は、番号=4の応答メッセージをスキップし、番号=5の要求メッセージからversion=1.0を抽出する。クライアントアドレスとパラメータ名と値が既出のものと同じため、パラメータ解析部132は、ここではversionを状況依存パラメータとも状況非依存パラメータとも判定しない。
【0105】
次に、パラメータ解析部132は、番号=6の応答メッセージをスキップし、番号=7の要求メッセージからauth_token=3b2cとuser=Taroを抽出する。auth_tokenについては、クライアントアドレスとパラメータ名が既出のものと同じ一方、値が既出のものと異なる。よって、パラメータ解析部132は、auth_tokenを状況依存パラメータと判定する。userについては、パラメータ解析部132は、ここでは状況依存パラメータとも状況非依存パラメータとも判定しない。
【0106】
次に、パラメータ解析部132は、番号=8の応答メッセージをスキップし、番号=9の要求メッセージからversion=1.0を抽出する。パラメータ名と値が既出のものと同じ一方、クライアントアドレスが既出のものと異なるため、パラメータ解析部132はversionを状況非依存パラメータと判定する。次に、パラメータ解析部132は、番号=10の応答メッセージをスキップし、番号=11の要求メッセージからauth_token=d97eとuser=Jiroを抽出する。userについては、パラメータ解析部132は、状況依存パラメータとも状況非依存パラメータとも判定しない。
【0107】
このように、応答メッセージをスキップすることで、処理するメッセージの数を減らすことができる。また、要求メッセージに含まれるパラメータの数は、応答メッセージに含まれるパラメータの数よりも少ないことが多いため、パラメータ同士の比較回数を減らすことができる。一方で、サーバ装置231,232に要求メッセージを送信するときに値を書き換えるべきパラメータを検出するという観点からは、応答メッセージよりも要求メッセージに含まれるパラメータの方が重要となる。そのため、要求メッセージを優先的に選択することで、パラメータの静的解析を効率的に行うことができる。
【0108】
なお、パラメータ解析部132は、要求メッセージを優先的に処理した後、更に応答メッセージを処理してもよい。このとき、パラメータ解析部132は、要求メッセージを処理し終えた時点でユーザに静的解析を継続するか否か選択させ、ユーザが静的解析を継続することを選択した場合、更に応答メッセージを処理するようにしてもよい。また、パラメータ解析部132は、静的解析を開始してから要求メッセージの処理が完了するまでの経過時間が閾値以下であるとき、続けて応答メッセージを処理するようにしてもよい。また、パラメータ解析部132は、静的解析を開始してからの経過時間が閾値に達するまでメッセージを選択し続けるようにしてもよい。これにより、処理時間が長くなり過ぎない範囲で、状況依存パラメータの判定精度を向上させることができる。
【0109】
次に、更に他のメッセージの選択方法を説明する。
図13は、パラメータ静的解析の他の手順例を示すフローチャートである。
(S30)パラメータ解析部132は、メッセージテーブル124に登録されたメッセージの集合を、時間順序を維持して複数のブロックに分割する。例えば、パラメータ解析部132は、1ブロック当たりのメッセージ数(所定数)を予め決めておき、送信タイミングの古い方から順に所定数ずつメッセージを区切っていく。
【0110】
(S31)パラメータ解析部132は、ブロック番号Nを1に初期化する。
(S32)パラメータ解析部132は、時間順序を維持したブロック列の中から、上からN番目(送信タイミングの古い方からN番目)のブロックを選択する。
【0111】
(S33)パラメータ解析部132は、ステップS32で選択したブロック内で、図9に示したパラメータ静的解析を行う。例えば、パラメータ解析部132は、選択したブロック内で送信タイミングの古い方から順にメッセージを選択し、抽出したクライアントアドレスとパラメータ名と値をパラメータ検出テーブル125に登録する。
【0112】
(S34)パラメータ解析部132は、ステップS32または後述するステップS35で未だ選択していないブロックが残っているか判断する。未選択のブロックがある場合はステップS35の処理に進み、ない場合はパラメータ静的解析を終了する。
【0113】
(S35)パラメータ解析部132は、時間順序を維持したブロック列の中から、下からN番目(送信タイミングの新しい方からN番目)のブロックを選択する。
(S36)パラメータ解析部132は、ステップS35で選択したブロック内で、図9に示したパラメータ静的解析を行う。例えば、パラメータ解析部132は、選択したブロック内で送信タイミングの古い方から順にメッセージを選択し、抽出したクライアントアドレスとパラメータ名と値をパラメータ検出テーブル125に登録する。
【0114】
(S37)パラメータ解析部132は、ステップS32またはステップS35で未だ選択していないブロックが残っているか判断する。未選択のブロックがある場合はステップS38の処理に進み、ない場合はパラメータ静的解析を終了する。
【0115】
(S38)パラメータ解析部132は、ブロック番号Nをインクリメントして(値を1だけ加算して)ステップS32の処理に進む。なお、ステップS33,S36のパラメータ解析を繰り返し行う間、パラメータ検出テーブル125は初期化せずに使い続ける。すなわち、あるブロックにおいて抽出されたクライアントアドレスとパラメータ名と値の組は、他のブロックにおいて抽出されたものと比較されることになる。
【0116】
図14は、メッセージの選択方法の第2の例を示す図である。
ここでは、10000個のメッセージがメッセージテーブル124に登録されており、それぞれ5個のメッセージを含む2000個のブロックに分割されている。まず、パラメータ解析部132は、上から1番目のブロックに属するメッセージ#1〜#5を処理する。次に、パラメータ解析部132は、下から1番目のブロックに属するメッセージ#9996〜#10000を処理する。次に、パラメータ解析部132は、上から2番目のブロックに属するメッセージ#6〜#10を処理する。次に、パラメータ解析部132は、下から2番目のブロックに属するメッセージ#9991〜#9995を処理する。
【0117】
このように、パラメータ解析部132は、時間的に近いメッセージの間でのパラメータの比較よりも、時間的に離れたメッセージの間でのパラメータの比較を優先的に行うようにしてもよい。ここで、セッション依存のパラメータの値は、同じセッションに属するメッセージの間では原則として同じになる。また、同じクライアント装置が送信した送信タイミングの近いメッセージは、同じセッションに属する可能性が高い。そこで、パラメータ解析部132は、上記のような順序でメッセージを選択することで、異なるセッションに属するメッセージの間でのパラメータの比較を早い段階で行うことができ、セッション依存のパラメータを効率的に検出することができるようになる。
【0118】
第2の実施の形態の情報処理システムによれば、メッセージに含まれ得るパラメータの中から、セッション依存のパラメータやサーバ装置依存のパラメータなどの状況依存パラメータを自動的に判定することができる。よって、クライアント装置211,212と現用系のサーバ装置221,222との間で送信されたメッセージを利用して、検証系のサーバ装置231,232を検証するときに、パラメータの値の不備が原因で検証が正しく行えなくなることを抑制できる。また、値を書き換えるべき状況依存パラメータをユーザが事前に定義しておかなくてもよいため、ユーザはサーバ装置221,222,231,232で実行されるソフトウェアの詳細を知らなくてもよく、ユーザの負担が軽減される。
【0119】
[第3の実施の形態]
第3の実施の形態を説明する。前述の第2の実施の形態との違いを中心に説明し、第2の実施の形態と同様の事項については説明を省略する。
【0120】
第2の実施の形態では、検証装置100、クライアント装置212,212およびサーバ装置221,222,231,232は、それぞれネットワークに接続された別個の物理マシンであった。しかし、上記のコンピュータのうちの2つ以上を仮想化し、その2つ以上の仮想マシンを同一の物理マシン上で動作させることも可能である。第3の実施の形態では、検証装置100とサーバ装置221(現用系)とサーバ装置231(検証系)に相当する仮想マシンを、同一の物理マシン上で動作させる例を説明する。
【0121】
図15は、サーバ装置の他の機能例を示すブロック図である。
サーバ装置300は、仮想マシン310,320,330およびハイパーバイザ340を有する。仮想マシン310,320,330およびハイパーバイザ340は、例えば、CPUおよびRAMを利用して動作する。仮想マシン310は第2の実施の形態のサーバ装置221に対応し、仮想マシン320は第2の実施の形態のサーバ装置231に対応する。仮想マシン330は、第2の実施の形態の検証装置100に対応する。
【0122】
仮想マシン310上では、OSおよびサーバソフトウェア311が実行される。サーバソフトウェア311は、サーバ装置221で実行されていたものと同じでもよい。仮想マシン320上では、OSおよびサーバソフトウェア321が実行される。サーバソフトウェア321は、サーバ装置231で実行されていたものと同じでもよい。仮想マシン330上では、OSおよび検証ソフトウェア331が実行される。検証ソフトウェア331は、例えば、学習部130および検証部140に相当するモジュールを含む。
【0123】
ハイパーバイザ340は、複数の仮想マシンが並行に動作するよう制御する。ハイパーバイザ340は、サーバ装置300が備えるCPUクロック数やRAM領域などのリソースを仮想マシン310,320,330に割り振る。各仮想マシン上で動作するOSは、ハイパーバイザ340から割り振られたリソースの範囲内で、当該仮想マシン上のアプリケーションソフトウェアが実行されるよう制御することになる。
【0124】
ハイパーバイザ340は、仮想スイッチ341を有する。仮想スイッチ341は、サーバ装置300が備える通信インタフェースの帯域リソースを管理する。また、仮想スイッチ341は、仮想マシン310,320,330の間や、サーバ装置300の外部の通信装置と仮想マシン310,320,330との間で、メッセージを中継する。例えば、仮想スイッチ341は、クライアント装置211,212と仮想マシン310との間でメッセージを中継し、当該メッセージの複製を仮想マシン330に出力する。また、仮想スイッチ341は、仮想マシン320と仮想マシン330の間でメッセージを中継する。
【0125】
第3の実施の形態の情報処理システムによれば、第2の実施の形態と同様の効果が得られる。更に、第3の実施の形態では、コンピュータの仮想化技術を用いて、機能の異なる複数のコンピュータを同一の物理マシンに集約することができ、情報処理システムの管理コストを抑制できる。また、仮想マシンを利用して、サーバソフトウェアが送信または受信したメッセージの収集やサーバソフトウェアの検証を効率的に実行できる。
【0126】
なお、前述のように、第1の実施の形態の情報処理は、情報処理装置10にプログラムを実行させることで実現することができる。また、第2の実施の形態の情報処理は、検証装置100にプログラムを実行させることで実現することができ、第3の実施の形態の情報処理は、サーバ装置300にプログラムを実行させることで実現することができる。
【0127】
プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体113)に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からHDDなどの他の記録媒体(例えば、HDD103)にプログラムを複製して(インストールして)実行してもよい。
【符号の説明】
【0128】
10 情報処理装置
11 記憶部
12 決定部
21 クライアント
22,23 サーバ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15