説明

支援システム、支援方法、及び、支援プログラム

【課題】テスト後のシステムを本番システムとして速やかに稼動させる。
【解決手段】支援システムは、端末から第1のシステムへ送信される第1のデータと、第1のシステムから端末へ送信される第2のデータとを受信し、第1のデータと第2のデータとを含む第1のシステムログを保持し、第1のデータと同じ内容を含む第3のデータを第2のシステムへ送信し、第3のデータと第2のシステムから送信される第4のデータとを含む第2のシステムログを保持し、第1のデータ及び第2のデータが示す端末及び第1のシステム間のセッションに関する情報と第3のデータ及び第4のデータが示す支援システム及び第2のシステム間のセッションに関する情報とを含むセッション情報を保持し、第1のシステムログと第2のシステムログとの差を抽出し、セッション情報に基づいて、第1のシステムを端末から切断させ、第2のシステムと端末とを接続させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、支援システムに関し、特に、計算機システムの移行を支援する支援システムに関する。
【背景技術】
【0002】
近年、PCサーバの性能向上に伴い、従来メインフレームが担ってきた基幹系システムに、PCサーバを用いるオープン化が始まっている。PCサーバのようなオープン系システムは、性能向上の進度が速く、次々と後継機種が提供されている。そして、一般的に、PCサーバの保証期間は5年程度と短い。
【0003】
これに対し、基幹系システムにおいて用いられるサービスは、基本的なサービスであるため、多くの場合内容が変わらない。また、基幹系システムにおいて用いられるサービスは、長期間、安定的に提供されることが求められる。この結果、基幹系システムの管理者は、基幹系システムにおいて稼動実績のあるサービスを更改した場合、更改に伴う障害を起こすことを許されない。
【0004】
このため、例えば、基幹系システムのようなシステムを別のシステムに移行する場合、例えば、システムに用いられるハードウェアを後継機種に交換した場合、開発者は、システムの移行前に、新しいシステムを必ずテストする。
【0005】
基幹系システムのテストには、本番系システムにおいて送受信されるデータをキャプチャし、キャプチャされたデータをテスト系システムへ転送することによって、キャプチャされたデータをテスト系システムが実行するテストがある。このテストは、本番系システムの出力結果とテスト系システムの出力結果との差を検出することによって、本番系システムとテスト系システムとの相違点を検出する方法である(例えば、特許文献1参照)。
【0006】
また、ネットワークスイッチが、本番系システムへ入力されるパケットの宛先情報を変換し、ミラーポートから転送先システムへパケットを転送する方法が提案されている(例えば、特許文献2参照)。特許文献2は、ミラーポートから転送されたパケットを転送先システムに入力し、転送先システムにおいて実際の運用データと業務アプリケーションとを用いたテストを行う方法、及び、転送先システムに実際のトランザクションの負荷をかけることよってテストを行う方法が提案されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2005−073043号公報
【特許文献2】特開2009−010454号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
オープン系システムは、ハードウェア及びソフトウェアの更改時期が一致せず、それぞれのコンポーネントがその時点で提供されるバージョンに更改される場合が多い。従って、ハードウェアのみの移行又はソフトウェアの一部分の更改等、更改する頻度があがる。そして、更改の都度、テスト系システムが構築され、テストされ、さらにはテスト終了後、新システムが構築されるため、テスト工数が膨大となる。
【0009】
特許文献1及び特許文献2記載の技術では、本番系システムに入力するデータのテスト系システムへの転送方法については記載されているが、テスト系システムをそのまま本番系システムとして稼動させることについては記載されていない。
【0010】
本発明の主な目的は、第1のシステム(例えば、本番系システム/現行システム)と、第2のシステム(例えば、テスト系システム/新システム)を有するシステムで、第1のシステムと、第2のシステムとを並行稼動させ、両者の処理結果の差分に応じて、第2のシステムを現行システムとして稼動させることである。
【課題を解決するための手段】
【0011】
本発明の代表的な一形態によると、一以上の端末、第1のシステム、及び、第2のシステムと接続される支援システムであって、前記支援システムは、プロセッサとメモリとインタフェースとを備え、前記端末から前記第1のシステムへ送信される第1のデータと、前記第1のシステムから前記端末へ送信される第2のデータとを、前記インタフェースを介して受信する第1のシステム受信部と、前記第1のデータと前記第2のデータとを含む第1のシステムログを、前記メモリに保持する第1のシステムログ取得部と、前記第1のシステムログに基づいて、前記第1のデータと同じ内容を含む第3のデータを、前記第2のシステムへ送信する第2のシステム送信部と、前記第3のデータと、前記第2のシステムから前記支援システムへ送信される第4のデータとを含む第2のシステムログを、前記メモリに保持する第2のシステムログ取得部と、前記第1のデータ及び前記第2のデータが示す前記端末及び第1のシステム間のセッションに関する情報と、前記第3のデータ及び前記第4のデータが示す前記支援システム及び前記第2のシステム間のセッションに関する情報と、を含むセッション情報を前記メモリに保持するセッション管理部と、前記第1のシステムログと、前記第2のシステムログとの差分を抽出する差分抽出部と、前記セッション情報に含まれる前記端末及び第1のシステム間のセッションに関する情報に基づいて、前記第1のシステムを前記端末から切断させ、前記第2のシステムと前記端末とを接続させる系切替部と、を有する。
【発明の効果】
【0012】
本発明の一実施形態によると、テスト後の新システムを本番システムとして稼動させることができる。
【図面の簡単な説明】
【0013】
【図1】本発明の第1の実施形態に関わるテスト支援システムの物理的構成を示すブロック図である。
【図2】本発明の第1の実施形態のテスト支援ツールの物理的な構成と処理部とを示すブロック図である。
【図3A】本発明の第1の実施形態のサービスプロファイルを示す説明図である。
【図3B】本発明の第1の実施形態のサービスプロファイル設定画面を示す説明図である。
【図4A】本発明の第1の実施形態のスイッチ管理テーブルを示す説明図である。
【図4B】本発明の第1の実施形態の接続設定画面を示す説明図である。
【図5A】本発明の第1の実施形態のセッション管理テーブルを示す説明図である。
【図5B】本発明の第1の実施形態の現行システムログ及び新システムログを示す説明図である。
【図6A】本発明の第1の実施形態の差分情報テーブルを示す説明図である。
【図6B】本発明の第1の実施形態の差分情報表示画面を示す説明図である。
【図7】本発明の第1の実施形態のテスト支援ツールの処理を示すフローチャートである。
【図8】本発明の第1の実施形態の現行システムによってWebサービスが提供される場合における、現行システムと端末との間の通信データをテスト支援ツールが受信する処理を示すフローチャートである。
【図9】本発明の第1の実施形態の現行システムによってWebサービスが提供される場合における、テスト支援ツールが新システムへデータを送信する処理を示すフローチャートである。
【図10】本発明の第1の実施形態の現行システムによってWebサービスが提供される場合における、テスト支援ツールが新システムからデータを受信する処理を示すフローチャートである。
【図11】本発明の第1の実施形態の現行システムによってFTPサービスが提供される場合における、現行システム及び端末間の通信データをテスト支援ツールが受信する処理を示すフローチャートである。
【図12】本発明の第1の実施形態の現行システムによってFTPサービスが提供される場合における、テスト支援ツールが新システムへデータを送信する処理を示すフローチャートである。
【図13】本発明の第1の実施形態の現行システムによってFTPサービスが提供される場合における、新システムがテスト支援ツールへデータを送信する処理を示すフローチャートである。
【図14】本発明の第1の実施形態の差分抽出処理を示すフローチャートである。
【図15】本発明の第1の実施形態の系切替処理を示すフローチャートである。
【図16】本発明の第2の実施形態のテスト支援システムの構成を示すブロック図である。
【図17】本発明の第2の実施形態のLBを示すブロック図である。
【図18】本発明の第2の実施形態のテスト支援ツールにおける系切替処理を示すフローチャートである。
【図19】本発明の第2の実施形態のLBにおける系切替処理を示すフローチャートである。
【発明を実施するための形態】
【0014】
本発明は、現行システムへ入力されるデータと同じ内容のデータを新システムへ入力し、現行システムへの入力データ及び現行システムからの出力データと、新システムへの入力データ及び現行システムからの出力データとを比較することによって、現行システムと新システムとの相違点を抽出する。そして、現行システムにおけるセッションに関する情報と、新システムにおけるセッションに関する情報とを保持することによって、現行システムへ入力されるデータから新システムへ入力するデータを生成し、また、現行システムから新システムへの系切替のタイミングを取得する。
【0015】
図1は、本発明の第1の実施形態に関わるテスト支援システムの物理的構成を示すブロック図である。
【0016】
第1の実施形態のテスト支援システムは、テスト支援ツール100、移行元の現行システム102、移行先の新システム104、端末103及びスイッチ101を備える。テスト支援ツール100、現行システム102、新システム104、端末103はスイッチ101を含むネットワーク経由で接続される。
【0017】
現行システム102は、本実施形態の移行処理の前において、本番系システムとして稼動する。現行システム102は、少なくとも一つの計算機を備え、端末103を用いるユーザにサービスを提供する。
【0018】
テスト支援システムは、複数の端末103を備えてもよい。各端末103は、スイッチ101のポートに接続される。
【0019】
新システム104は、本実施形態の移行処理の前において、テスト系システムである。後述する移行処理によって、現行システム102から新システム104へ、本番系システムが移行する。新システム104は、少なくとも一つの計算機を備え、端末103を用いるユーザにサービスを提供する。
【0020】
新システム104は、少なくとも二つのポートによってスイッチ101と接続される。具体的には、新システム104のポートのうち、一つのポートは、テスト支援ツール100を介してスイッチ101と接続される。
【0021】
テスト支援ツール100は、二つのポートによってスイッチ101と接続される。一つのポートは、現行システム102への入力データ及び現行システム102からの出力データを受信するためのポートであり、一つのポートは、スイッチ101の設定を変更するためのポートである。
【0022】
スイッチ101は、現行システム102に接続されるポートと、新システム104に接続されるポートとをミラーリングする。これによって、端末103から現行システム102へ入力されるデータは、後述するテスト時においてテスト支援ツール100を介して新システム104にも入力される。なお、本実施形態のスイッチ101は、ミラーリングが可能なネットワーク装置であればよく、例えば、ルータであってもよい。
【0023】
また、後述するテスト及び移行処理が終了した場合、すなわち、新システム104が本番系システムとして稼動する場合、新システム104は、スイッチ101を介して端末103から送信されるデータを受信する。
【0024】
新システム104に割り当てられるアドレス情報は、移行処理の前後において、現行システム102において割り当てられるアドレス情報と同じ値である。これによって、端末103は、移行の前後において、データを送信するための宛先を変更する必要がない。
【0025】
また、現行システム102から端末103へデータを送信するための端末103のアドレス情報と、新システム104からテスト支援ツール100へデータを送信するためのテスト支援ツール100のアドレス情報は、同じ値である。これによって、新システム104から端末103へ送信されるデータを、テスト支援ツール100が受信することができる。
【0026】
図2は、本発明の第1の実施形態のテスト支援ツール100の物理的な構成と処理部とを示すブロック図である。
【0027】
図2に示すテスト支援ツール100は、メモリ200、プロセッサ201、蓄積装置202、入力装置203、出力装置204、ネットワークインタフェース205、及び、バス206を備える計算機である。メモリ200、プロセッサ201、蓄積装置202、入力装置203、出力装置204、及び、ネットワークインタフェース205は、バス206によって接続される。
【0028】
メモリ200には、テスト支援ソフトウェア210が格納される。蓄積装置202には、プログラム又はデータ等が格納される。プロセッサ201は、蓄積装置202に格納されたプログラム及びデータを必要に応じてメモリ200に読み出すことによって、テスト支援ソフトウェア210を実行する。
【0029】
入力装置203は、キーボード又はマウス等の装置であり、ユーザがテスト支援ツール100にデータを入力するために用いる装置である。出力装置204は、ディスプレイ又はプリンタ等の装置であり、ユーザにテスト支援ツール100における処理の結果を出力するための装置である。テスト支援ツール100は、ネットワークインタフェース205を介して、スイッチ101又は新システム104と通信する。
【0030】
メモリ200に格納されるテスト支援ソフトウェア210は、通信処理部211、現行システム受信処理部212、現行システムログ取得部213、新システム送信処理部214、新システム受信処理部215、新システムログ取得部216、セッション管理部217、差分抽出処理部218、及び、系切替処理部219を有する。
【0031】
また、テスト支援ソフトウェア210は、サービスプロファイル220、現行システムログ221、新システムログ222、セッション管理テーブル223、差分情報テーブル224及びスイッチ管理テーブル225を、蓄積装置202に保持する。そして、テスト支援ソフトウェア210の各処理部の実行に伴い、適宜、蓄積装置202に保持された各テーブル等をメモリ200に読み出す。
【0032】
通信処理部211は、スイッチ101又は新システム104から、ネットワークインタフェース205を介してデータを受信する。また、新システム送信処理部214又は系切替処理部219から送信されるデータを、ネットワークインタフェース205へ送信する。
【0033】
現行システム受信処理部212は、スイッチ101がミラーリングによってテスト支援ツール100に送信した、現行システム102及び端末103間で通信されるデータを受信する。そして、受信した現行システム102及び端末103間で通信されるデータを解析する。
【0034】
現行システムログ取得部213は、現行システム受信処理部212によって受信されたデータを入力された場合、入力されたデータに基づいて、現行システム102のログを生成する。そして、生成されたログを、現行システムログ221へ格納する。
【0035】
新システム送信処理部214は、現行システムログ221から読み出されたデータを受信し、読み出されたデータが現行システム102へ送信されたデータであるか否かを判定する。読み出されたデータが現行システム102へ送信されたデータである場合、現行システムログ221から読み出されたデータを、新システム104へ送信されるデータに生成する。そして、生成されたデータを新システム104へ送信する。
【0036】
新システム受信処理部215は、新システム104からテスト支援ツール100へ送信されるデータを受信する。
【0037】
新システムログ取得部216は、新システム送信処理部214によって送信されるデータ、及び、新システム受信処理部215によって受信されるデータを入力された場合、入力されたデータに基づいて、新システム104のログを生成する。そして、生成された新システム104のログを、新システムログ222へ格納する。
【0038】
セッション管理部217は、現行システム102及び端末103間で通信されるデータから、現行システム102におけるセッションを示すセッション情報を取得する。また、新システム104及びテスト支援ツール100間で通信されるデータから、新システム104におけるセッションを示すセッション情報を取得する。
【0039】
そして、現行システム102におけるセッションを示すセッション情報と、新システムにおけるセッションを示すセッション情報とを対応付けて、セッション管理テーブル223に格納する。
【0040】
差分抽出処理部218は、現行システムログ221と新システムログ222とを比較し、差分を検出する。そして、検出された差分を、出力装置204によって表示する。
【0041】
系切替処理部219は、新システム104のテスト終了後、現行システム102をスイッチ101から切り離す。また、新システム104をスイッチ101へ接続することによって、新システム104と端末103とを接続する。また、テスト支援ツール100を切り離す。
【0042】
サービス管理部230は、サービスプロファイル220を参照し、データがいかなるサービスによって送信されたデータであるかを判定する。
【0043】
なお、テスト支援ソフトウェア210に含まれる各処理部は、プログラムによって実装されてもよいし、物理的な集積回路によって実装されてもよい。また、各処理部は、後述する各処理ごとに分割されてもよく、また、複数の処理部を統合したプログラム又は集積回路として実装されてもよい。
【0044】
また、テスト支援ソフトウェア210が蓄積装置202に保持する各データは、各データの内容がテスト支援ソフトウェア210の各処理部によって識別されれば、いかなる方法によって保持されてもよい。例えば、後述するテーブルによって保持されてもよいし、CSV等の方法によって保持されてもよい。
【0045】
図3Aは、本発明の第1の実施形態のサービスプロファイル220を示す説明図である。
【0046】
サービスプロファイル220は、サービス名1601、プロトコル1602、デフォルトポート1603、セッション識別1604、セッションキー1605、及び、モジュール名1606を有する。
【0047】
サービス名1601は、現行システム102及び新システム104が提供するサービス名を示す。プロトコル1602は、サービス名1601が示すサービスが用いる通信プロトコルを示す。デフォルトポート1603は、プロトコル1602が示すプロトコルが用いるデフォルトポート番号(例えば、Webサービスはポート番号80を用い、FTPはポート番号21を用いる)を示す。
【0048】
セッション識別1604は、サービス名1601が示すサービスにおいて、どのような識別情報を用いてセッションを識別するかを示す。例えば、サービス名1601がWebサービスを示す場合、セッション識別1604は、現行システム102が割り当てるセッションIDを示す。
【0049】
セッションキー1605は、セッションID等のセッション識別情報がデータ部に含まれる場合、セッション識別情報を検出するためのキーとなる情報を示す。例えば、サービス名1601がjavaによって作成されるWebサービスを示す場合、セッションキー1605には、”jsessionid”が格納される。
【0050】
モジュール名1606は、サービス名1601に対応したセッション管理を行うモジュール名を示す。すなわち、モジュール名1606が示すモジュールを用いることによって、テスト支援ツール100は、各データからセッション識別情報を検出することができる。
【0051】
なお、後述する差分抽出処理時、予め異なることが分かっている情報がある場合、更に差分抽出除外キーワードを、サービスプロファイル220に格納してもよい。これによって、差分比較に必要のない情報を処理せずに、提示する情報の精度を上げることができる。例えば、プロトコル1602がHTTPを示す場合、メッセージヘッダを示す値をサービスプロファイル220に格納してもよい。
【0052】
図3Bは、本発明の第1の実施形態のサービスプロファイル設定画面1610を示す説明図である。
【0053】
サービスプロファイル設定画面1610は、テスト支援ツール100を実行するユーザが、現行システム102が提供するサービスを入力するためのインタフェースである。また、ユーザが、現行システム102が提供するサービスに従った、セッション管理に関わる情報をカスタマイズするためのインタフェースである。
【0054】
サービスプロファイル設定画面1610は、テスト支援ツール100の出力装置204に、サービス管理部230によって表示される。ユーザは、サービスプロファイル設定画面1610及び入力装置203を用いて、サービスプロファイルについての情報をテスト支援ツール100に入力する。
【0055】
サービスプロファイル設定画面1610は、サービス1611、及び、カスタマイズ領域1612〜カスタマイズ領域1617を含む。また、OKボタン1618、及びキャンセルボタン1619を含む。
【0056】
サービス1611には、所定のサービスが、例えばリストによって表示される。ユーザは、サービス1611に表示されたサービスを選択する。
【0057】
また、カスタマイズ領域1612〜カスタマイズ領域1617は、現行システム102において提供されるサービスがユーザ又は管理者等によって新たに開発されたサービスである場合において、新たに開発されたサービスをユーザが登録するための領域である。
【0058】
カスタマイズ領域1612は、サービス名を示し、サービスプロファイル220のサービス名1601に対応する。カスタマイズ領域1613は、プロトコルを示し、サービスプロファイル220のプロトコル1602に対応する。
【0059】
カスタマイズ領域1614は、サービスによって用いられるポート番号を示し、サービスプロファイル220のカスタマイズ領域1614に対応する。カスタマイズ領域1615は、セッションを識別するための情報を示し、サービスプロファイル220のセッション識別1604に対応する。
【0060】
カスタマイズ領域1616は、セッション識別情報を検出するためのキーとなる情報を示し、サービスプロファイル220のセッションキー1605に対応する。カスタマイズ領域1617は、セッション管理を行うモジュール名を示し、サービスプロファイル220のモジュール名1606に対応する。
【0061】
ユーザがOKボタン1618を操作した場合、テスト支援ツール100のサービス管理部230は、サービス1611において選択されたサービス名、又は、カスタマイズ領域1612〜カスタマイズ領域1617に入力されたカスタマイズ情報を、入力装置203を介して取得する。そして、取得された情報を、サービスプロファイル220へ格納する。また、取得された情報のうちモジュール名1606に対応するモジュールを取得し、後述する処理において用いるため、取得されたモジュールをメモリ200に読み出す。
【0062】
ユーザがキャンセルボタン1619を操作した場合、出力装置204は、サービスプロファイル設定画面1610を消去する。
【0063】
図4Aは、本発明の第1の実施形態のスイッチ管理テーブル225を示す説明図である。
【0064】
スイッチ管理テーブル225は、テスト支援ツール100がスイッチ101を管理するためのテーブルである。図4Aのスイッチ管理テーブル225は、ポート番号1901、ポート名1902、有効化1903、ミラーポート1904、モード1905、及び、アドレス1906を含む。
【0065】
ポート番号1901は、スイッチ101のポート番号を示す。ポート名1902は、スイッチ101の各ポートのポート名を示す。有効化1903は、各ポートの使用可又は不可を示す。
【0066】
ミラーポート1904は、ミラーリングするポート番号、すなわち、データの送信元のポート番号を示す。モード1905は、ミラーリング時、送信元ポートのコピーするデータの向きを示す。図4Aのモード1905には、例えば、”送信”、”受信”、又は、”送受信”が格納される。
【0067】
アドレス1906は、各ポートに対応するアドレスが含まれる。本実施形態のスイッチ管理テーブル225は、IPアドレスを含んだが、各ポートを識別できれば、MACアドレス等、いかなるアドレスでもよい。
【0068】
図4Bは、本発明の第1の実施形態の接続設定画面1910を示す説明図である。
【0069】
図4Bの接続設定画面1910は、テスト支援ツール100を実行するユーザが、スイッチ101へ送信される接続情報を設定するためのインタフェースである。サービス管理部230は、出力装置204に接続設定画面1910を表示する。ユーザは、入力装置203によって接続設定画面1910に値を入力し、これによって、サービス管理部230は、ユーザが設定した接続情報を取得する。
【0070】
図4Bの接続設定画面1910は、ポート番号1911、ポート名1912、有効化1913、ミラーポート1914、モード1915、及び、アドレス1916を含む。
【0071】
ポート番号1911は、スイッチ101のポート番号を示し、スイッチ管理テーブル225のポート番号1901に対応する。ポート名1912は、スイッチ101の各ポートのポート名を示し、スイッチ管理テーブル225のポート名1902に対応する。
【0072】
有効化1913は、スイッチ101の各ポートの使用の有効又は無効を示し、スイッチ管理テーブル225の有効化1903に対応する。ミラーポート1914は、ミラーリングするポートのポート番号を示し、スイッチ管理テーブル225のミラーポート1904に対応する。
【0073】
モード1915は、ミラーリング時、送信元ポートのコピーするデータの向きを示し、スイッチ管理テーブル225のモード1905に対応する。アドレス1916は、アドレスを示し、スイッチ管理テーブル225のアドレス1906に対応する。
【0074】
例えば、図4Bに示す接続設定画面1910は、6番ポートが無効化され、7番ポートが1番ポートの送受信データをキャプチャするミラーポートであると接続設定画面1910に入力されていることを示す。また、2番ポート及び3番ポートに、各々端末103のポートが接続されることを示す。
【0075】
さらに、図4Aに示すスイッチ管理テーブル225は、図4Bに示す接続設定画面1910の入力に従って、値を格納された例である。
【0076】
図5Aは、本発明の第1の実施形態のセッション管理テーブル223を示す説明図である。
【0077】
図5Aのセッション管理テーブル223は、現行セッションID1701、送信元アドレス1702、送信元ポート番号1703、宛先アドレス1704、宛先ポート番号1705、開始時刻1706、終了時刻1707、新セッションID1708、開始時刻1709、及び、終了時刻1710等を格納する。
【0078】
現行セッションID1701、送信元アドレス1702、送信元ポート番号1703、宛先アドレス1704、宛先ポート番号1705、開始時刻1706、及び、終了時刻1707は、現行システム102と端末103と間のセッションに関する情報を示す。
【0079】
新セッションID1708、開始時刻1709、及び、終了時刻1710は、現行システム102と端末103と間のセッションを、新システム104とテスト支援ツール100との間でテストした場合の、新システム104とテスト支援ツール100との間のセッションの情報を示す。
【0080】
現行セッションID1701は、現行システム102におけるセッションの識別子を示す。例えば、現行セッションID1701は、各エントリがWebサービスによるセッションを示す場合、現行システム102に備わるWebサーバが各セッションに割り当てるセッションID等を示す。
【0081】
送信元アドレス1702は、端末103のアドレスを示す。現行セッションID1701が示すセッションは、送信元アドレス1702が示す端末103と、現行システム102との間のセッションを示す。図5Aにおけるアドレスは、IPアドレスによって表示される。
【0082】
送信元ポート番号1703は、送信元アドレス1702が示す端末103のポートのうち、現行システムと端末103とのセッションに用いられるポートを示す。
【0083】
宛先アドレス1704は、現行システム102のアドレスを示す。宛先ポート番号1705は、端末103とのセッションに用いられる現行システム102のポートを示す。
【0084】
開始時刻1706は、現行システム102と端末103との間のセッションが開始された時刻を示す。終了時刻1707は、現行システム102と端末103との間のセッションが終了した時刻を示す。
【0085】
新セッションID1708は、新システム104におけるセッションの識別子を示す。開始時刻1709は、新システム104とテスト支援ツール100との間のセッションが開始される時刻を示す。終了時刻1710は、新システム104とテスト支援ツール100との間のセッションが終了する時刻を示す。
【0086】
図5Bは、本発明の第1の実施形態の現行システムログ221及び新システムログ222を示す説明図である。
【0087】
図5Bに示すシステムログは、現行システム102の現行システムログ221又は新システム104の新システムログ222である。
【0088】
現行システムログ221は、端末103及び現行システム102間で通信される各イベントデータを示す。すなわち、端末103から現行システム102へ送信されるデータ(入力データ)、及び、現行システム102から端末103へ送信されるデータ(出力データ)を示す。
【0089】
新システムログ222は、テスト支援ツール100及び新システム104間の通信される各イベントデータを示す。すなわち、テスト支援ツール100から新システム104へ送信されるデータ(入力データ)、及び、新システム104からテスト支援ツール100へ送信されるデータ(出力データ)を示す。
【0090】
現行システムログ221及び新システムログ222は、現行システム102、端末103、新システム104へ送信されるデータに格納されるすべての値を含む。このため、後述する新システム送信処理部214は、現行システムログ221及び新システムログ222が示す内容に従って、データを送信するためのパケットを生成することが可能である。
【0091】
現行システムログ221及び新システムログ222は、時刻1721、セッションID1722、送信元アドレス1723、送信元ポート番号1724、宛先アドレス1725、宛先ポート番号1726、シーケンス番号1727、コマンド1728、及び、データ1729を含む。
【0092】
時刻1721は、各セッションにおいてイベント(送信、又は、受信)が発生した時点の時刻を示す。セッションID1722は、イベントが含まれるセッションの識別子を示す。現行システムログ221のセッションID1722は、現行セッションID1701に対応し、新システムログ222のセッションID1722は、新セッションID1708に対応する。
【0093】
送信元アドレス1723は、イベントデータを送信した装置のアドレスを示す。具体的には、現行システムログ221の送信元アドレス1723には、端末103又は現行システム102のアドレスが含まれ、新システムログ222の送信元アドレス1723には、テスト支援ツール100及び新システム104のアドレスが含まれる。
【0094】
送信元ポート番号1724は、イベントデータを送信した装置の受信ポート番号を示す。
【0095】
宛先アドレス1725は、イベントデータの送信相手の装置のアドレス情報を示す。宛先ポート番号1726は、イベントデータの送信相手の装置の受信ポート番号を示す。シーケンス番号1727は、イベントデータのシーケンス番号を示す。データ1729は、イベントデータのデータ部を示す。
【0096】
図6Aは、本発明の第1の実施形態の差分情報テーブル224を示す説明図である。
【0097】
図6Aの差分情報テーブル224は、ログステップ番号1801、現行システムログ1802、新システムログ1803、差分数1804、及び、差分データ1805(1805−1、1805−2)を含む。
【0098】
ログステップ番号1801は、差分が検出された現行システムログ221の行番号を示す。現行システムログ221及び新システムログ222には、セッション毎に少なくとも一つのイベントデータが含まれる。このため、現行システムログ221及び新システムログ222をセッション毎にソートした場合における、差分が検出された行を示す。
【0099】
現行システムログ1802は、差分を検出された現行システム102のデータを示す。現行システムログ1802は、現行システムログ221のデータ1729に対応する。
【0100】
新システムログ1803は、差分を検出された現行システム102に対応する新システム104のデータを示す。新システムログ1803は、新システムログ222のデータ1729に対応する。
【0101】
差分数1804は、イベントデータの差分が存在する行の中で、存在する差分の数を示す。差分データ1805−1、及び、差分データ1805−2は、検出された差分のデータを示す。
【0102】
図6Aに示す差分データ1805は、現行システムログ221において検出された差分のデータと、新システムログ222において検出された差分のデータを示す。なお、図6Aに示す差分データ1805は、二つのみであるが、複数の差分データ1805が差分情報テーブル224に含まれてもよい。
【0103】
図6Bは、本発明の第1の実施形態の差分情報表示画面1810を示す説明図である。
【0104】
図6Bの差分情報表示画面1810は、差分情報テーブル224に基づいて、差分抽出処理部218によって出力装置204に表示される。
【0105】
図6Bの差分情報表示画面1810は、現行システムアドレス1811、差分総数1812、ログステップ番号1813、現行システムログ1814、新システムログ1815、及び、差分データ1816を含む。現行システムアドレス1811は、現行システムの、例えばIPアドレスなどのアドレスを示す。
【0106】
差分総数1812は、検出した差分数の総数を示す。ログステップ番号1813は、差分を検出された現行システムログ221及び新システムログ222の行番号すなわちメッセージ番号を示す。ログステップ番号1813は、差分情報テーブル224のログステップ番号1801に対応する。
【0107】
現行システムログ1814は、現行システムログ221の差分を含むデータを示す。新システムログ1815は、新システムログ222の差分を含むデータを示す。
【0108】
差分データ1816は、現行システムログ1814及び新システムログ1815の差分を示す。差分データ1816は、例えば異なる文字色、又は、ハッチングする等によって示される。差分データ1816は、差分情報テーブル224の差分データ1805に対応する。
【0109】
図7〜図15にテスト支援ツール100の処理の流れの例を示す。
【0110】
図7は、本発明の第1の実施形態のテスト支援ツール100の処理を示すフローチャートである。
【0111】
図7に示す処理の開始時において、現行システムログ221、新システムログ222、及び、セッション管理テーブル223には、値が格納されていない。
【0112】
図7に示す処理は、ユーザの指示によって開始される。サービス管理部230は、ユーザの指示に従って、図3Bに示すサービスプロファイル設定画面1610を出力装置204に表示する(ステップ300)。そして、サービスプロファイル設定画面1610を介したユーザからの入力を待つ。
【0113】
サービス管理部230は、ステップ300において、現行システム102が提供するサービス(例えば、Web、ファイル転送、及び、IP電話等)のサービスプロファイル220をあらかじめ保持している場合、ユーザがサービスを選択できるように、サービスプロファイル設定画面1610のサービス1611をリストによって表示してもよい。
【0114】
ステップ300の後、サービス管理部230は、ユーザがサービスをサービス1611において選択したか否かを判定する(ステップ301)。ユーザがサービスをサービス1611において選択していない場合、サービス管理部230は、カスタマイズ領域1612〜カスタマイズ領域1617にサービスに関する情報(サービスプロファイル220に対応)が入力されたか否かを判定する(ステップ303)。
【0115】
ステップ303において、カスタマイズ領域1612〜カスタマイズ領域1617にサービスに関する情報が入力されていない場合、サービス管理部230は、ステップ301に戻り、ユーザによるサービスの入力を待つ。
【0116】
ステップ301においてユーザがサービスをサービス1611において選択したと判定された場合、サービス管理部230は、ステップ302を実行する。また、ステップ303においてカスタマイズ領域1612〜カスタマイズ領域1617にサービスに関する情報が入力されたと判定された場合、サービス管理部230は、入力されたサービスに関する情報をサービスプロファイル220に格納し、ステップ301を実行する。
【0117】
サービス管理部230は、ステップ301において選択されたサービスのサービスプロファイル220、又は、ステップ303において入力されたサービスのサービスプロファイル220のエントリを特定する。そして、特定されたサービスプロファイル220のエントリをメモリ200に読み出す(ステップ302)。
【0118】
なお、サービス管理部230は、ステップ302において、現行システム102と端末103とが送受信するデータから、いかなるサービスが提供されているかを判定し、サービスプロファイル220を特定してもよい。
【0119】
ステップ302において、サービス管理部230は、読み出されたサービスプロファイル220のエントリに基づいて、テスト支援ツール100の各処理部が、後述するステップ305及びステップ306において、図8〜図10の処理を実行するか、又は、図11〜図13の処理を実行するかを決定する。
【0120】
例えば、メモリ200に読み出されたサービスプロファイル220のセッション識別1604に”ID”が格納されている場合、セッションを識別するため、データに含まれるセッションIDを抽出する必要がある。このため、サービス管理部230は、ステップ305〜ステップ307において、図8〜図10の処理を実行することを決定する。
【0121】
また、メモリ200に読み出されたサービスプロファイル220のセッション識別1604に、データのヘッダ情報に格納されるコマンド名等が格納されている場合、又は、セッション識別1604に何も格納されていない場合、サービス管理部230は、セッションを識別するためにセッションIDを抽出する必要がない。このため、サービス管理部230は、ステップ305〜ステップ307において、図11〜図13の処理を実行することを決定する。
【0122】
なお、ステップ301、又は、ステップ303において、複数のサービスが選択又は入力された場合、サービス管理部230は、複数のサービスに対応するサービスプロファイル220のエントリを読み出す。そして、各エントリに対応する、ステップ305〜ステップ307における処理手順を決定する。
【0123】
ステップ302の後、サービス管理部230は、現行システム102及び新システム104がスイッチ101に接続するポート、並びに、現行システム102及び新システム104のアドレス(例えばIPアドレス)等を取得し、取得された各情報をスイッチ管理テーブル225に格納する。そして、スイッチ管理テーブル225に格納された接続情報に従って、スイッチ101を設定する(ステップ304)。
【0124】
ステップ304において、サービス管理部230は、例えば、図4Bに示す接続設定画面1910を出力装置204に表示し、接続設定画面1910を介して、ユーザから接続情報を取得してもよい。そして、取得された接続情報を、スイッチ管理テーブル225に格納してもよい。また、ステップ304において、ユーザがコマンドラインを用いてスイッチ管理テーブル225に接続情報を格納してもよい。
【0125】
ここで、ステップ304においてスイッチ管理テーブル225に格納される接続情報は、図4Aに示すスイッチ管理テーブル225の接続情報である。
【0126】
ステップ304の後、テスト支援ツール100の各処理部は、現行システム102と端末103との間で通信されるデータをログとして取得する(ステップ305)。ステップ305の後、テスト支援ツール100の各処理部は、現行システム102に入力されるデータと同じデータを新システム104に入力し、新システム104から出力されるデータを取得する(ステップ306)。
【0127】
ステップ305及びステップ306の処理によって、テスト支援ツール100は、現行システム102から新システム104へ切替える前のテストを実行する。また、ステップ305及びステップ306は、ステップ302において決定された処理手順に従って、ステップ305には、図8又は図11が行われ、ステップ306には、図9及び図10、又は、図12及び図13に示す処理が行われる。ステップ305とステップ306とは、並行して実行されてもよい。
【0128】
ステップ305及びステップ306の処理の後、テスト支援ツール100のセッション管理部217は、現行システム102と端末103とのセッションがすべて終了したか否かを判定する(ステップ307)。ステップ307においてセッション管理部217は、セッション管理テーブル223のすべての終了時刻1707に、値が格納されている場合、現行システム102と端末103とのセッションがすべて終了したと判定する。
【0129】
現行システム102と端末103とのセッションが終了しない場合、すなわち、現行システム102と端末103とのセッションが終了するまで、ステップ305〜ステップ307が繰り返される。
【0130】
現行システム102と端末103とのセッションが終了した場合、差分抽出処理部218は、現行システム102及び端末103間の通信に関するシステムログ(現行システムログ221)と、新システム104及びテスト支援ツール100間の通信に関するシステムログ(新システムログ222)との差分を抽出し、差分情報テーブル224を更新する(ステップ308)。
【0131】
ステップ308の後、差分抽出処理部218は、ステップ308の処理において、差分が抽出されたか否かを判定する(ステップ309)。差分が抽出されたと判定された場合、差分抽出処理部218は、差分情報テーブル224の更新結果に従って、抽出された差分の情報を出力装置204に表示する(ステップ310)。差分抽出処理部218は、例えば、図6Bに示す差分情報表示画面1810等に表示する。
【0132】
テスト支援ツール100は、ステップ308〜ステップ310に示す処理によって、ステップ305及びステップ306におけるテストの結果を検証する。
【0133】
ステップ308において差分が抽出されなかったと判定された場合、テスト結果の検証を終了し、新システム104を本番系として稼動させるため、系切替処理部219は、現行システム102及びテスト支援ツール100とを切り離し、新システム104を現行システムとして稼動させる系切替処理を行う(ステップ311)。
【0134】
図8〜図10に示す処理は、Webサービス等の、セッションIDによってセッションを識別するサービスが現行システム102によって提供される場合の、系切替え処理前のテストである。
【0135】
図8は、本発明の第1の実施形態の現行システム102によってWebサービスが提供される場合における、現行システム102と端末103との間の通信データをテスト支援ツール100が受信する処理を示すフローチャートである。
【0136】
図8に示す処理は、図7のステップ305に対応する。
【0137】
図8において、サービス管理部230は、スイッチ管理テーブル225に格納される接続情報を取得する(ステップ401)。取得される接続情報は、例えば、現行システム102のアドレス1906、及び、ポート番号1911等である。
【0138】
ステップ401の後、サービス管理部230は、ステップ401において取得された接続情報に従って、現行システム102及び端末103間で送受信されるデータを受信できるように、通信処理部211及びネットワークインタフェース205を初期化する。また、サービス管理部230は、受信するデータからセッション情報を検出するためのモジュールを、ステップ302において読み出されたサービスプロファイル220のモジュール名1606に初期化する(ステップ402)。
【0139】
図8〜図10に示す処理において、現行システム102及び新システム104はWebサービスを提供する。Webサービスによるセッションは、一般的に、TCPセッションと必ずしも一致しない。このため、テスト支援ツール100は、Webサービスによって送信されるデータを識別する場合、HTTPによって送信されるデータ(すなわち、パケット)のデータ部に格納されるセッション情報を検出する必要がある。
【0140】
また、Webサービスのセッション情報は、Webサービスが生成されたプログラム言語に従って、異なるキーによってデータ部に格納される。このため、テスト支援ツール100は、Webサービスが生成されたプログラム言語ごとに、セッション情報を検出するためのキーを保持する必要がある。
【0141】
例えば、WebサービスがPHPによって生成されている場合、セッション情報は、HTTPのパケットのデータ部に、”PHPSESSID”のキーによって格納される。このため、テスト支援ツール100は、サービスプロファイル220のモジュール名1606に、PHPによって生成されたWebサービスのセッションを識別するためのモジュールを保持する。また、サービスプロファイル220のセッションキー1605に”PHPSESSID”を保持する。
【0142】
そして、Webサービスによって送信されたデータを識別する場合、テスト支援ツール100は、サービスプロファイル220のセッション識別1604、セッションキー1605及びモジュール名1606を用いて、データからセッションID等のセッション情報を検出する。
【0143】
本実施形態のテスト支援ツール100は、データに格納されるセッション情報を検出し、検出されたセッション情報を保持することによって、現行システムへ入力するデータを、新システムへ入力するデータに変換することができる。
【0144】
ステップ402の後、現行システム受信処理部212は、現行システム102に接続されるスイッチ101のポートとミラーリングされるポート、すなわち、前述の例における7番ポートから、ネットワークインタフェース205及び通信処理部211がデータを受信するか否かを判定する(ステップ403)。7番ポートからデータを受信しない場合、現行システム受信処理部212は、7番ポートからデータを受信するのを待つ。ステップ403によって、現行システム受信処理部212は、現行システム102へ送信されるデータ、及び、現行システム102から送信されるデータを受信できる。
【0145】
7番ポートからデータを受信した場合、現行システム受信処理部212は、受信したデータがコネクションに関するデータであるか否かを判定する(ステップ404)。現行システム受信処理部212は、ステップ404において、例えば、受信したデータのヘッダにTCPのSYNフラグが含まれる場合、受信したデータがコネクションに関するデータであると判定する。
【0146】
本実施形態のコネクションに関するデータは、例えば、SYNフラグ、FINフラグ、又は、RSTフラグなどのフラグを含むデータである。また、本実施形態のコネクションに関するデータ以外のデータは、例えば、ACKフラグなどのフラグを含むデータである。
【0147】
ステップ404において、受信したデータがコネクションに関するデータであると判定された場合、セッション管理部217は、後述するステップ406の処理のため、セッション管理テーブル223を読み出す(ステップ405)。
【0148】
ステップ405の後、セッション管理部217は、ステップ403において受信したコネクションに関するデータから、端末103のアドレスを抽出する。そして、読み出されたセッション管理テーブル223の送信元アドレス1702に、抽出された端末103のアドレスが格納されているか否かを判定する(ステップ406)。
【0149】
具体的には、ステップ406においてセッション管理部217は、抽出されたアドレスがセッション管理テーブル223の送信元アドレス1702に格納されており、かつ、セッション管理テーブル223の終了時刻1707に値が格納されていない場合、抽出された端末103のアドレスがセッション管理テーブル223に格納されていると判定する。
【0150】
ステップ406において、コネクションに関するデータから抽出された端末103のアドレスが、セッション管理テーブル223の送信元アドレス1702に格納されていないと判定された場合、受信したコネクションに関するデータは、新しいセッションを確立するためのデータである。このため、セッション管理部217は、コネクションに関するデータのヘッダ情報に基づいて、セッション管理テーブル223に新たなエントリを追加する(ステップ407)。
【0151】
具体的には、セッション管理部217は、ステップ407において、セッション管理テーブル223に新たなエントリを生成する。そして、生成された新たなエントリの送信元アドレス1702、送信元ポート番号1703、宛先アドレス1704、及び、宛先ポート番号1705に、コネクションに関するデータのヘッダ情報に含まれる、送信元アドレス、送信元ポート番号、宛先アドレス、及び、宛先ポート番号を格納する。また、開始時刻1706に、ステップ403においてデータを受信した時刻を格納する。
【0152】
また、ステップ407において、現行システムログ取得部213は、現行システムログ221に、ステップ403において受信したコネクションに関するデータを示す値を格納する。
【0153】
ステップ407の後、図8に示す処理が終了し、図7に示すステップ306が実行される。これは、ステップ407の後、現行システム102において新たなセッションが確立される。このため、現行システム120において新たなセッションが確立される際に、現行システム102におけるセッションに対応するセッションを、新システム104において確立するためである。
【0154】
ステップ407の後、ステップ306を実行することによって、本実施形態のテスト支援ツール100は、現行システム102における処理と、新システム104における処理とを並行に実行することが可能である。
【0155】
ステップ406において、コネクションに関するデータから抽出された端末103のアドレスが、セッション管理テーブル223の送信元アドレス1702に格納されていると判定された場合、受信したコネクションに関するデータは、継続中のセッションにおいて送信されたコネクションに関するデータである。
【0156】
このため、セッション管理部217は、コネクションに関するデータから抽出された端末103のアドレスを送信元アドレス1702に含むセッション管理テーブル223のエントリを、コネクションに関するデータに含まれるヘッダ情報によって更新する(ステップ408)。
【0157】
具体的には、ステップ408においてセッション管理部217は、ステップ406においてコネクションに関するデータから抽出された端末103のアドレスを、送信元アドレス1702に含むエントリをセッション管理テーブル223から特定する。そして、セッション管理部217は、ステップ403において受信したデータにコネクションを確立するための値(例えば、SYNフラグ)が含まれている場合、特定されたエントリの送信元ポート番号1703を、コネクションに関するデータのヘッダ情報に含まれる、送信元のポート番号によって更新する。
【0158】
また、ステップ408においてセッション管理部217は、ステップ403において受信したデータに、コネクションを切断することを示す値(例えば、FINフラグ)が含まれている場合、ステップ403においてデータを受信した時刻を、特定されたエントリの終了時刻1707に格納する。
【0159】
ステップ408によって、セッション管理テーブル223は、最新のセッションに従って更新される。ステップ408の後、ステップ409が実行される。
【0160】
ステップ404において、受信したデータがコネクションに関するデータではないと判定された場合、セッション管理部217は、ステップ302においてメモリ200に読み出されたサービスプロファイル220のエントリのセッション識別1604、セッションキー1605、及び、モジュール名1606を用いて、受信したデータのデータ部からセッション情報を検出する。そして、セッション管理部217は、モジュール名1606によって、受信したデータからセッション情報が検出されるか否かを判定する(ステップ410)。
【0161】
ステップ410において、モジュール名1606によってセッション情報が検出されない場合、ステップ403において受信したデータによって現行システム102及び端末103間のセッションは変更されず、セッション管理部217は、セッション管理テーブル223を更新する必要がない。このため、ステップ410の後、ステップ409が実行される。
【0162】
ステップ410において、モジュール名1606によって受信したデータからセッション情報が検出された場合、受信したデータは、端末103から送信され、現行システム102から既に割り当て済みのセッション情報を含むデータか、又は、現行システム102から送信され、現行システム102によって新たなセッションに割り当てられたセッション情報を含むデータである。このため、セッション管理部217は、後述するステップ412のため、セッション管理テーブル223を読み出す(ステップ411)。
【0163】
ステップ411の後、セッション管理部217は、ステップ410において検出されたセッション情報がセッション管理テーブル223に格納されているか否かを判定する(ステップ412)。セッション管理部217は、具体的には、ステップ410において検出されたセッション情報に含まれるセッションIDを特定する。そして、特定されたセッションIDを現行セッションID1701に含み、かつ、終了時刻1707に値が格納されていないセッション管理テーブル223のエントリがある場合、ステップ410において検出されたセッション情報がセッション管理テーブル223に格納されていると判定する。
【0164】
ステップ412において、ステップ410において検出されたセッション情報がセッション管理テーブル223に格納されていると判定された場合、受信したデータは、現行システム102から既に割り当て済みのセッション情報を含むデータである。このため、セッション管理部217はセッション管理テーブル223を更新する必要がない。このため、ステップ412の後、ステップ409が実行される。
【0165】
ステップ412において、ステップ410において検出されたセッション情報がセッション管理テーブル223に格納されていないと判定された場合、受信したデータは、現行システム102から送信され、現行システム102によって割り当てられたセッションIDを端末103に送信するためのデータである。
【0166】
このため、ステップ410において検出されたセッション情報がセッション管理テーブル223に格納されていないと判定された場合、セッション管理部217は、ステップ410において検出されたセッション情報のセッションIDを、セッション管理テーブル223に格納する(ステップ413)。
【0167】
具体的には、セッション管理部217は、ステップ413において、ステップ403において受信したデータに含まれる端末103のアドレス及びポート番号を含むセッション管理テーブル223のエントリを特定する。そして、特定されたエントリの現行セッションID1701に、ステップ410において検出されたセッション情報のセッションIDを格納する。
【0168】
ステップ408、ステップ410、ステップ412、又は、ステップ413の後、現行システムログ取得部213は、ステップ403において受信したデータを示す値を現行システムログ221に追加する(ステップ409)。
【0169】
具体的には、ステップ409において現行システムログ取得部213は、ステップ403において受信したデータに基づいて、送信元アドレス1723、送信元ポート番号1724、宛先アドレス1725、及び、宛先ポート番号1726の値を、現行システムログ221の新たに生成されたエントリに格納する。また、現行システムログ取得部213は、新たに生成されたエントリの時刻1721に、ステップ403においてデータを受信した時刻を格納する。
【0170】
また、ステップ409において現行システムログ取得部213は、ステップ403においてデータを受信した時間を、現行システムログ221の新たなエントリの時刻1721に格納する。また、ステップ403において受信したデータのヘッダ情報から抽出されたシーケンス番号を、シーケンス番号1727に格納する。また、ステップ403において受信したデータのデータ部を、新たに生成されたエントリのデータ1729に格納する。
【0171】
また、ステップ412又はステップ413の後、ステップ409において現行システムログ取得部213は、ステップ410において検出されたセッション情報のセッションIDを、新たに生成されたエントリのセッションID1722に格納する。
【0172】
なお、ステップ408又はステップ410の後、ステップ409において現行システムログ取得部213は、セッションID1722に値を格納しない。これは、ステップ408又はステップ410の後において、ステップ403において受信したデータには、セッションIDが含まれていないためである。
【0173】
ステップ409の後、系切替処理部219は、ユーザから系切替を指示されたか否かを判定する(ステップ414)。系切替処理部219は、ユーザによって予め指定された条件を満たした場合、ユーザから系切替を指示されたと判定してもよい。
【0174】
ステップ414においてユーザから系切替を指示されていないと判定された場合、ステップ403が実行される。また、ステップ414において系切替が指示されたと判定された場合、図8に示す処理は終了し、図7に示すステップ306が実行される。
【0175】
図8に示す処理によって、テスト支援ツール100は、現行システム102へ送信されるデータ、及び、現行システム102から送信されるデータに関するシステムログを取得できる。
【0176】
なお、図8に示す処理によって生成される現行システムログ221は、Webサービスの現行システムログ221として生成されてもよい。これによって、図8と並行して後述する図11に示す処理が行われても、Webサービスの現行システムログ221とFTPサービスの現行システムログ221とを識別できる。
【0177】
図9及び図10は、ステップ306の新システム通信処理を示す。
【0178】
図9は、本発明の第1の実施形態の現行システム102によってWebサービスが提供される場合における、テスト支援ツール100が新システム104へデータを送信する処理を示すフローチャートである。
【0179】
図8に示す処理が終了した後、サービス管理部230は、スイッチ管理テーブル225に格納される接続情報を取得する(ステップ500)。ステップ500において取得される接続情報は、例えば、端末103のポート番号1901及びアドレス1916、並びに、新システム104のアドレス1916である。
【0180】
ステップ500の後、サービス管理部230は、ステップ500において取得された接続情報に従って、新システム104とテスト支援ツール100とによってデータを送受信できるように、通信処理部211及びネットワークインタフェース205を初期化する(ステップ501)。具体的には、新システム104が各端末103に送信したデータを、テスト支援ツール100の各ポートが受信するように初期化する。
【0181】
ステップ501の後、現行システムログ取得部213は、現行システムログ221に含まれる1エントリをメモリ200に読み出す(ステップ502)。以下、ステップ502において現行システムログ221から読み出されたエントリをエントリXと記載する。
【0182】
なお、現行システム102及び新システム104によってWebサービス及びFTPサービスが提供される場合、ステップ502において現行システムログ取得部213は、Webサービスの現行システムログ221のエントリ、すなわち、図8に示す処理によって生成された現行システムログ221のエントリを読み出す。
【0183】
ステップ502の後、現行システムログ取得部213は、送信元アドレス1723を参照することによって、エントリXが端末103から送信されたデータを示すか否かを判定する(ステップ503)。現行システムログ取得部213は、エントリXの送信元アドレス1723が、ステップ500において取得された端末103のアドレス1916と同じ値を含む場合、エントリXが端末103から送信されたデータを示すと判定する。
【0184】
エントリXが端末103から送信されたデータではなく、現行システム102から送信されたデータを示す場合、図10に示す処理が実行される。
【0185】
エントリXが端末103から送信されたデータを示す場合、現行システムログ取得部213は、エントリXがコネクションに関するデータを示すか否かを判定する(ステップ504)。現行システムログ取得部213は、例えば、エントリXのコマンド1728に、コネクションの確立を要求するフラグ(例えば、SYN)が含まれている場合、エントリXがコネクションに関するデータを示すと判定する。
【0186】
ステップ504において、エントリXがコネクションに関するデータを示すと判定された場合、セッション管理部217は、セッション管理テーブル223のエントリを読み出す(ステップ505)。具体的には、ステップ505においてセッション管理部217は、エントリXの送信元アドレス1723、送信元ポート番号1724、宛先アドレス1725及び宛先ポート番号1726と同じ値を送信元アドレス1702、送信元ポート番号1703、宛先アドレス1704及び宛先ポート番号1705に含む、セッション管理テーブル223のエントリを読み出す。
【0187】
ステップ505の後、セッション管理部217は、ステップ505において読み出されたセッション管理テーブル223のエントリの開始時刻1709に、ステップ506における時刻を、新システム104におけるセッションの開始時刻として格納する(ステップ506)。また、ステップ506において新システムログ取得部216は、後述するステップ507において送信されるコネクションに関するデータを示す値を、新システムログ222に格納する。
【0188】
ステップ506の後、通信処理部211は、エントリXが示す送信元アドレス1723、送信元ポート番号1724、宛先アドレス1725、宛先ポート番号1726、コマンド1728及びデータ1729に基づいて、新システム104とテスト支援ツール100とのコネクションを確立する(ステップ508)。具体的には、エントリXが示す値に基づいて、新システム104へコネクションに関するデータを送信する。なお、本実施形態に例において、現行システム102と新システム104とのアドレスは同じであり、端末103とテスト支援ツール100とのアドレスは同じである。
【0189】
ステップ508によって、現行システム102及び端末103間で確立されたセッションに対応する、新システム104及びテスト支援ツール100間のセッションが確立される。ステップ508の後、ステップ502が実行される。
【0190】
ステップ504において、エントリXがコネクションに関するデータを示さないと判定された場合、セッション管理部217は、エントリXにセッション情報が含まれているか否かを判定する(ステップ510)。
【0191】
ステップ510においてセッション管理部217は、ステップ302においてメモリ200に読み出されたサービスプロファイル220のエントリのセッション識別1604、セッションキー1605、及び、モジュール名1606を用いて、エントリXのデータ1729からセッション情報を検出する。そして、セッション管理部217は、セッション情報がデータ1729から検出された場合、エントリXがセッション情報を含むと判定する。
【0192】
ステップ510において、エントリXにセッション情報が含まれていないと判定された場合、エントリXが示すデータによって、新システム104及びテスト支援ツール100間のセッションは変更されず。セッション管理部217は、セッション管理テーブル223を更新する必要がない。このため、ステップ510の後、ステップ513が実行される。
【0193】
ステップ510において、エントリXにセッション情報が含まれると判定された場合、エントリXは、端末103から現行システム102へセッション情報を送信するためのデータである。このため、セッション管理部217は、エントリXのセッションID1722の値を現行セッションID1701に含む、セッション管理テーブル223のエントリを読み出す(ステップ511)。
【0194】
ステップ511の後、セッション管理部217は、ステップ511において読み出されたセッション管理テーブル223のエントリの新セッションID1708から、新システム104によって割り当てられた新セッションIDを取得する。そして、セッション管理部217は、エントリXに含まれるデータ1729のセッションID(すなわち、現行セッションID)を、取得された新セッションIDに置き換える(ステップ512)。
【0195】
なお、前述のとおり、ステップ512におけるエントリXは、現行システム102によってセッションIDが割り当て済みのセッションを用いて、端末103から現行システム102へセッション情報を送信するためのデータである。このため、エントリXが示す現行システム102におけるセッションには、後述する図10の処理によって、新システム104におけるセッションが既に対応付けられている。その結果、ステップ512において、新セッションID1708には既に値が格納されており、セッション管理部217は、新セッションID1708を取得することができる。
【0196】
ステップ510又はステップ512の後、新システム送信処理部214は、エントリXが含む値によって新システム104へ送信するデータを生成し、生成されたデータを新システム104へ送信する(ステップ513)。ステップ513の後、新システムログ取得部216は、新システム104へ送信したデータの値を、新システムログ222に格納する(ステップ514)。
【0197】
具体的には、ステップ514において新システムログ取得部216は、新システム104へ送信したデータに基づいて、送信元アドレス1723、送信元ポート番号1724、宛先アドレス1725、及び、宛先ポート番号1726の値を、新システムログ222の新たに生成されたエントリに格納する。また、新システムログ取得部216は、新たに生成されたエントリの時刻1721に、ステップ513においてデータを送信した時刻を格納する。
【0198】
ステップ514の後、系切替処理部219は、ユーザから系切替を指示されたか否かを判定する(ステップ515)。系切替処理部219は、ユーザによって予め指定された条件を満たした場合、ユーザから系切替を指示されたと判定してもよい。
【0199】
ステップ515において、系切替処理部219がユーザから系切替を指示されていないと判定された場合、現行システムログ取得部213は、現行システムログ221の1エントリを読み出す(ステップ502)。これは、新システム104へのデータの送信を継続するためである。
【0200】
ステップ515において、系切替処理部219がユーザから系切替を指示されたと判定された場合、図9に示す処理は終了する。
【0201】
図9に示す処理によって、端末103から現行システム102へ送信されたデータと同じ内容のデータが、テスト支援ツール100から新システム104へ送信される。また、セッション管理テーブル223が、現行システム102におけるセッションIDと新システム104におけるセッションIDとを対応させて保持することによって、端末103から現行システム102へ送信されたデータのうち、セッションIDのみを置き換えたデータを、新システム104へ送信できる。
【0202】
そして、これによって、現行システム102が端末103から送信されたデータによって行う処理と、新システム104がテスト支援ツール100から送信されたデータによって行う処理とを比較することができる。
【0203】
図10は、本発明の第1の実施形態の現行システム102によってWebサービスが提供される場合における、テスト支援ツール100が新システム104からデータを受信する処理を示すフローチャートである。
【0204】
図9に示すステップ503において、エントリXが端末103から送信されたデータではなく、現行システム102から送信されたデータを示す場合、図10に示す処理が開始される。
【0205】
図10の処理が開始された場合、現行システムログ取得部213は、エントリXがコネクション切断データを示すか否かを判定する(ステップ601)。現行システムログ取得部213は、ステップ504と同様に、例えば、エントリXのコマンド1728にコネクションの切断を要求するFINフラグが含まれている場合、エントリXがコネクション切断データを示すと判定する。
【0206】
エントリXがコネクション切断データを示す場合、ステップ502が実行され、現行システムログ221の新たなエントリが読み出される。これは、コネクション切断データが現行システム102から端末103に送信される場合においても、新システム104からコネクション切断データが送信されない場合があるため、現行システム102及び端末103間のコネクションの切断と、新システム104及びテスト支援ツール100間のコネクションの切断とを同期する必要がないためである。
【0207】
エントリXがコネクション切断データを示さない場合、新システム受信処理部215は、新システム104から何らかのデータを受信するか否かを判定する(ステップ602)。ステップ602によって、新システム受信処理部215は、新システム104から送信されるデータを待つ。
【0208】
ステップ602において新システム104から何らかのデータを受信した場合、新システム受信処理部215は、受信したデータがコネクション切断データであるか否かを判定する(ステップ603)。新システム受信処理部215は、例えば、受信したデータのヘッダにコネクションの切断を要求するFINフラグが含まれている場合、受信したデータがコネクション切断データを示すと判定する。
【0209】
受信したデータがコネクション切断データではない場合、ステップ604が実行される。受信したデータがコネクション切断データである場合、ステップ609が実行される。
【0210】
ステップ602において新システム104から受信したデータがコネクション切断データではない場合、セッション管理部217は、新システム104から受信したデータがセッション情報を含むか否かを判定する(ステップ604)。セッション管理部217は、図7に示すステップ302においてメモリ200に読み出されたサービスプロファイル220のエントリのセッション識別1604、セッションキー1605、及び、モジュール名1606を用いて、新システム104から受信したデータのデータ部からセッション情報を検出する。そして、セッション管理部217は、セッション情報がデータ部から検出された場合、新システム104から受信したデータがセッション情報を含むと判定する。
【0211】
ステップ604において、新システム104から受信したデータがセッション情報を含まないと判定された場合、新システム104から受信したデータは、セッションを変更するためのデータではない。そして、セッション管理部217は、セッション管理テーブル223を更新する必要がないため、ステップ607が実行される。
【0212】
ステップ604において、新システム104から受信したデータがセッション情報を含むと判定された場合、新システム104から受信したデータは、セッションIDを割り当てるためのデータである可能性が高い。このため、セッション管理部217は、セッション管理テーブル223を読み出す(ステップ605)。
【0213】
ステップ605の後、セッション管理部217は、新システム104から受信したデータに含まれるセッション情報が、セッション管理テーブル223に保持されているか否かを判定する(ステップ606)。セッション管理部217は、新システム104から受信したデータのデータ部に含まれるセッションIDの値を、新セッションID1708に含むエントリがセッション管理テーブル223にある場合、新システム104から受信したデータに含まれるセッション情報が、セッション管理テーブル223に保持されていると判定する。
【0214】
新システム104から受信したデータに含まれるセッション情報が、セッション管理テーブル223に保持されていると判定された場合、新システム104から受信したデータは、テスト支援ツール100と新システム104との間で既に確立したセッションに関するデータである。このため、セッション管理部217はセッション管理テーブル223を更新する必要がない。このため、ステップ606において新システム104から受信したデータに含まれるセッション情報がセッション管理テーブル223に保持されていると判定された場合、ステップ607が実行される。
【0215】
ステップ604又はステップ606の後、新システムログ取得部216は新システムログ222に、新システム104から受信したデータを示す値を追加する(ステップ607)。
【0216】
具体的には、ステップ607において新システムログ取得部216は、新システム104から受信したデータに基づいて、送信元アドレス1723、送信元ポート番号1724、宛先アドレス1725、及び、宛先ポート番号1726の値を、新システムログ222の新たに生成されたエントリに格納する。また、新システムログ取得部216は、新たに生成されたエントリの時刻1721に、ステップ602において新システム104からデータを受信した時刻を格納する。
【0217】
ステップ606において、新システム104から受信したデータに含まれるセッション情報はセッション管理テーブル223に保持されていないと判定された場合、新システム104から受信したデータは、新システム104によって割り当てられたセッションIDをテスト支援ツール100に送信するためのデータであり、テスト支援ツール100と新システム104とのセッションを確立するためのデータである。このため、セッション管理部217は、セッション管理テーブル223から現行システム102におけるセッションを示すエントリを抽出し、抽出されたエントリの新セッションID1708に、新システム104から受信したデータに含まれるセッションIDを格納する(ステップ608)。
【0218】
ステップ608においてセッション管理部217は、新システム104から受信したデータの宛先アドレス及び宛先ポート番号を、送信元アドレス1702及び送信元ポート番号1703に含むセッション管理テーブル223のエントリを特定する。そして、セッション管理部217は、特定されたセッション管理テーブル223のエントリの新セッションID1708に、新システム104から受信したデータに含まれるセッションIDを格納する。
【0219】
なお、新システム104から受信したデータが、テスト支援ツール100及び新システム104間のセッションを確立するためのデータである場合、新システム104から受信したデータを示す値をセッション管理テーブル223に格納することによって、現行システム102及び端末103間のセッションと新システム104及びテスト支援ツール100間のセッションとが対応付けられる。
【0220】
ステップ607又はステップ608の後、ステップ502が実行され、現行システムログ221の新たなエントリが読み出される。
【0221】
ステップ603において、新システム104から受信したデータがコネクション切断データであると判定された場合、セッション管理部217は、セッション管理テーブル223を読み出す(ステップ609)。これは、テスト支援ツール100と新システム104とのコネクションを切断するべきか否かを判定するためである。
【0222】
ステップ609の後、セッション管理部217は、読み出されたセッション管理テーブル223に基づいて、新システム104から受信したデータのセッションに対応する、現行システム102及び端末103間のセッションが既に終了しているか否かを判定する(ステップ610)。
【0223】
ステップ610においてセッション管理部217は、新システム104から受信したデータに含まれる宛先アドレス及び宛先ポート番号と同じ値を、送信元アドレス1702及び送信元ポート番号1703に含むエントリを、セッション管理テーブル223から抽出する。そして、抽出されたエントリの終了時刻1707を参照し、値が格納されている場合、現行システム102及び端末103間のセッションが既に終了していると判定する。
【0224】
ステップ610において、新システム104から受信したデータのセッションに対応する現行システム102及び端末103間のセッションが既に終了していると判定された場合、新システム104によるセッションは切断されてもよいため、通信処理部211は、新システム104にセッションの切断を許可するデータを送信する。
【0225】
なお、ステップ610において、新システム104にセッションの切断を許可するデータを送信した場合、セッション管理部217は、セッション管理テーブル223に終了時刻1710に終了時刻を格納する。終了時刻1710に格納する終了時刻には、新システム104によるセッションが切断された時刻が格納される。
【0226】
また、ステップ610において、新システム104にセッションの切断を許可するデータを送信した場合、新システムログ取得部216は、ステップ602において新システム104から受信したデータを示す値を、新システムログ222に格納する。
【0227】
ステップ610において、新システム104にセッションの切断を許可するデータを送信された後、ステップ613が実行される。
【0228】
ステップ610において、新システム104から受信したデータのセッションに対応する現行システム102及び端末103間のセッションが終了していないと判定された場合、新システム送信処理部214は、新システム104から受信したコネクション切断データの送信先アドレス(すなわち、テスト支援ツール100)と、新システム104とのコネクションを再度確立するため、新システム104にコネクションを確立するためのデータを送信する(ステップ611)。これは、現行システム102及び端末103間で確立されたセッションと、新システム104及びテスト支援ツール100間で確立されたセッションとの同期を図るためである。
【0229】
ステップ611の後、セッション管理部217は、新システム104によって確立されたコネクションの情報を、セッション管理テーブル223に格納する(ステップ612)。具体的には、ステップ612においてセッション管理部217は、ステップ611において再度確立されたコネクションに用いられるテスト支援ツール100のポート番号によって、ステップ610において抽出されたセッション管理テーブル223のエントリの、送信元ポート番号1703を更新する。
【0230】
ステップ610又はステップ612の後、系切替処理部219は、ステップ515と同じく、ユーザから系切替を指示されているか否かを判定する(ステップ613)。ユーザから系切替が指示されなかった場合、ステップ502が実行される。ユーザから系切替が指示された場合、図10に示す処理を終了する。
【0231】
図11〜図13に示す処理は、FTPサービス等の、アドレス及びポート番号によってセッションを識別するサービスが現行システム102によって提供されている場合の処理である。
【0232】
図11は、本発明の第1の実施形態の現行システム102によってFTPサービスが提供される場合における、現行システム102及び端末103間の通信データをテスト支援ツール100が受信する処理を示すフローチャートである。
【0233】
図11に示す処理は、図7のステップ305に対応する。
【0234】
図11において、サービス管理部230は、ステップ401と同じく、スイッチ管理テーブル225に格納される接続情報を取得する(ステップ701)。取得される接続情報は、例えば、現行システム102のアドレス1906、及び、ポート番号1911等である。
【0235】
ステップ701の後、サービス管理部230は、ステップ402と同じく、ステップ701において取得された接続情報に従って、現行システム102及び端末103間で送受信されるデータを受信できるように、通信処理部211及びネットワークインタフェース205を初期化する。また、サービス管理部230は、受信するデータからセッション情報を検出するためのモジュールを、ステップ302において読み出されたサービスプロファイル220のモジュール名1606に初期化する(ステップ702)。
【0236】
図11〜図13に示す処理において、現行システム102及び新システム104はFTPサービスを提供する。FTPサービスによるセッションは、一般的に、最初に確立される制御用TCPセッションによって管理される。さらに、FTPサービスが制御用TCPセッションによって確立された後、現行システム102から端末103にTCPセッションが再度確立される場合がある。
【0237】
この場合、本実施形態において、現行システム102から再度確立されたTCPセッションは、現行システム102(すなわち、FTPサーバ)から送信されたデータ通信に用いられるデータ用セッションであると判定される。すなわち、現行システム102から再度確立されたTCPセッションは、現行システム102と端末103とがセッションを確立するための制御用TCPセッションに属するセッションと判定される。
【0238】
ステップ702の後、現行システム受信処理部212は、ステップ403と同じく、現行システム102に接続されるスイッチ101のポートとミラーリングされたポート、すなわち、本実施形態における7番ポートから、ネットワークインタフェース205及び通信処理部211がデータを受信するか否かを判定する(ステップ703)。7番ポートからデータを受信しない場合、現行システム受信処理部212は、7番ポートからデータを受信するのを待つ。
【0239】
7番ポートからデータを受信した場合、現行システム受信処理部212は、ステップ404と同じく、受信したデータがコネクションに関するデータか否かを判定する(ステップ704)。現行システム受信処理部212は、ステップ704において、例えば、受信したデータのヘッダがTCPのSYNフラグを含む場合、受信したデータがコネクションに関するデータであると判定する。
【0240】
ステップ704において、受信したデータがコネクションに関するデータではないと判定された場合、コネクションに関するデータを示す値を現行システムログ221に格納するため、ステップ709が実行される。ここで、FTPサービスにおけるセッションは、セッションの両端のサーバ(本実施形態の端末103及び現行システム102、並びに、テスト支援ツール100及び新システム104)のアドレス及びポート番号によって識別され、FTPサービスによるデータは、セッション情報の識別情報によって識別される必要がない。このため、セッション管理部217は、セッション管理テーブル223にセッション情報を格納する必要がない。
【0241】
ステップ704において、受信したデータがコネクションに関するデータであると判定された場合、セッション管理部217は、後述するステップ706の処理のため、セッション管理テーブル223を読み出す(ステップ705)。
【0242】
ステップ705の後、セッション管理部217は、ステップ406と同じく、ステップ703において受信したコネクションに関するデータから、端末103のアドレスを抽出する。そして、ステップ705において読み出されたセッション管理テーブル223の送信元アドレス1702に、抽出された端末103のアドレスが格納されているか否かを判定する(ステップ706)。
【0243】
具体的には、ステップ706においてセッション管理部217は、抽出されたアドレスがセッション管理テーブル223の送信元アドレス1702に格納されており、かつ、セッション管理テーブル223の終了時刻1707に値が格納されていない場合、抽出された端末103のアドレスがセッション管理テーブル223に格納されていると判定する。
【0244】
ステップ706において、コネクションに関するデータから抽出された端末103のアドレスが、セッション管理テーブル223の送信元アドレス1702に格納されていないと判定された場合、受信したコネクションに関するデータは、新しいセッションを確立するためのデータである。このため、セッション管理部217は、ステップ407と同じく、コネクションに関するデータのヘッダ情報に基づいて、セッション管理テーブル223に新たなエントリを追加する(ステップ707)。
【0245】
具体的には、ステップ707においてセッション管理部217は、セッション管理テーブル223に新たなエントリを生成する。そして、生成された新たなエントリの送信元アドレス1702、送信元ポート番号1703、宛先アドレス1704、及び、宛先ポート番号1705に、コネクションに関するデータのヘッダ情報に含まれる、送信元アドレス、送信元ポート番号、宛先アドレス、及び、宛先ポート番号を格納する。また、開始時刻1706に、ステップ703においてデータを受信した時刻を格納する。
【0246】
また、ステップ707において、現行システムログ取得部213は、現行システムログ221に、ステップ703において受信したコネクションに関するデータを示す値を格納する。
【0247】
ステップ707の後、図11に示す処理が終了し、図7に示すステップ306が実行される。これは、ステップ707の後、現行システム102において新たなセッションが確立される。このため、現行システム102において新たなセッションが確立される際に、現行システム102におけるセッションに対応するセッションを、新システム104において確立するためである。
【0248】
ステップ707の後、ステップ306を実行することによって、本実施形態のテスト支援ツール100は、現行システム102における処理と、新システム104における処理とを並行に実行することが可能である。
【0249】
ステップ706において、コネクションに関するデータから抽出された端末103のアドレスが、セッション管理テーブル223の送信元アドレス1702に格納されていると判定された場合、受信したコネクションに関するデータは、継続中のセッションにおいて送信されたコネクションに関するデータである。
【0250】
このため、セッション管理部217は、ステップ408と同じく、コネクションに関するデータから抽出された端末103のアドレスを送信元アドレス1702に含むセッション管理テーブル223のエントリを、コネクションに関するデータに含まれるヘッダ情報によって更新する(ステップ708)。
【0251】
具体的には、ステップ708において、セッション管理部217は、ステップ706においてコネクションに関するデータから抽出された端末103のアドレスを、送信元アドレス1702に含むエントリをセッション管理テーブル223から特定する。そして、セッション管理部217は、ステップ703において受信したデータにコネクションを確立するための値(例えば、SYNフラグ)が含まれている場合、特定されたエントリの送信元ポート番号1703を、コネクションに関するデータのヘッダ情報に含まれる、送信元のポート番号によって更新する。
【0252】
また、ステップ708においてセッション管理部217は、ステップ703において受信したデータに、コネクションを切断することを示す値(例えば、FINフラグ)が含まれている場合、ステップ403においてデータを受信した時刻を、特定されたエントリの終了時刻1707に格納する。
【0253】
ステップ708によって、セッション管理テーブル223は、最新のセッションに従って更新される。
【0254】
ステップ704又はステップ708の後、現行システムログ取得部213は、ステップ703において受信したデータを示す値を、現行システムログ221に格納する(ステップ709)。
【0255】
具体的には、ステップ709において現行システムログ取得部213は、ステップ703において受信したデータに基づいて、送信元アドレス1723、送信元ポート番号1724、宛先アドレス1725、及び、宛先ポート番号1726の値を、現行システムログ221の新たに生成されたエントリに格納する。また、現行システムログ取得部213は、新たに生成されたエントリの時刻1721に、ステップ703においてデータを受信した時刻を格納する。
【0256】
ステップ709の後、系切替処理部219は、ステップ414と同じく、ユーザから系切替を指示されたか否かを判定する(ステップ710)。ステップ710において系切替指示がないと判定された場合、ステップ703が実行される。また、ステップ710において系切替指示があると判定された場合、図11に示す処理が終了し、図7に示すステップ306が実行される。
【0257】
なお、図11に示す処理によって生成される現行システムログ221は、FTPサービスの現行システムログ221として生成されてもよい。これによって、図11と並行して図8に示す処理が行われても、Webサービスの現行システムログ221とFTPサービスの現行システムログ221とを識別できる。
【0258】
図12及び図13は、ステップ306の新システム通信処理を示す。
【0259】
図12は、本発明の第1の実施形態の現行システム102によってFTPサービスが提供される場合における、テスト支援ツール100が新システム104へデータを送信する処理を示すフローチャートである。
【0260】
図11に示す処理が終了した後、サービス管理部230は、ステップ500と同じく、スイッチ管理テーブル225に格納される接続情報を取得する(ステップ800)。取得される接続情報は、例えば、端末103のポート番号1901及びアドレス1916、並びに、新システム104のアドレス1916である。
【0261】
ステップ800の後、サービス管理部230は、取得された接続情報に従って、新システム104とテスト支援ツール100とによってデータを送受信できるように、通信処理部211及びネットワークインタフェース205を初期化する(ステップ801)。具体的には、新システム104が各端末103に送信したデータを、テスト支援ツール100の各ポートが受信するように初期化する。
【0262】
ステップ801の後、現行システムログ取得部213は、現行システムログ221に含まれる1エントリをメモリ200に読み出す(ステップ802)。以下、ステップ802において現行システムログ221から読み出されたエントリをエントリYと記載する。
【0263】
なお、現行システム102によってWebサービス及びFTPサービスが提供される場合、ステップ802において現行システムログ取得部213は、FTPサービスのデータに関する現行システムログ221のエントリ、すなわち、図11に示す処理によって生成された現行システムログ221のエントリを読み出す。
【0264】
ステップ802の後、現行システムログ取得部213は、送信元アドレス1723を参照することによって、エントリYが端末103から送信されたデータを示すエントリであるか否かを判定する(ステップ803)。エントリYが端末103から送信されたデータではなく、現行システム102から送信されたデータを示す場合、図13に示す処理が実行される。
【0265】
エントリYが端末103から送信されたデータを示す場合、現行システムログ取得部213は、エントリYがコネクション設定データを示すか否かを判定する(ステップ804)。現行システムログ取得部213は、エントリYのコマンド1728に、コネクションの確立を要求するフラグ(例えば、SYN)が含まれている場合、エントリYがコネクション設定データを示すと判定する。
【0266】
ステップ804において、エントリYがコネクション設定データを示すと判定された場合、セッション管理部217は、セッション管理テーブル223のエントリをメモリ200に読み出す(ステップ805)。具体的には、ステップ805においてセッション管理部217は、エントリYの送信元アドレス1723と同じ値を送信元アドレス1702に含む、セッション管理テーブル223のエントリをメモリ200に読み出す。
【0267】
ステップ805の後、セッション管理部217は、エントリYの送信元ポート番号によって、ステップ805において読み出されたセッション管理テーブル223のエントリの送信元ポート番号1703を更新し、読み出されたエントリをセッション管理テーブル223に格納する(ステップ806)。また、ステップ806において新システムログ取得部216は、後述するステップ807において送信されるコネクションに関するデータを示す値を、新システムログ222に格納する。
【0268】
ステップ806の後、サービス管理部230は、ステップ806において更新されたセッション管理テーブル223のエントリの送信元アドレス1702、及び、送信元ポート番号1703に基づいて、新システム104及びテスト支援ツール100間のコネクションを確立する(ステップ807)。これによって、現行システム102及び端末103間のコネクションに対応する新システム104及びテスト支援ツール100間のコネクションが確立される。
【0269】
ステップ807の後、ステップ802が実行される。
【0270】
ステップ804において、エントリYがコネクション設定データを示すと判定された場合、現行システムログ取得部213は、エントリYがコネクション切断データを示すか否かを判定する(ステップ808)。現行システムログ取得部213は、エントリYのコマンド1728に、コネクションの切断を要求するフラグ(例えば、FIN)が含まれている場合、読み出されたエントリがコネクション切断データを示すと判定する。
【0271】
ステップ808において、エントリYがコネクション切断データを示すと判定された場合、セッション管理部217は、セッション管理テーブル223のエントリをメモリ200に読み出す(ステップ809)。具体的には、ステップ809においてセッション管理部217は、エントリYの送信元アドレス1723と同じ値を送信元アドレス1702に含む、セッション管理テーブル223のエントリを読み出す。
【0272】
ステップ809の後、セッション管理部217は、ステップ809において読み出されたセッション管理テーブル223のエントリの終了時刻1710に値を格納する(ステップ810)。また、ステップ810において、通信処理部211は、ステップ809において読み出されたエントリに対応する新システム104におけるセッションを切断する。具体的には、新システム104へコネクション切断データを送信する。
【0273】
また、ステップ810において新システムログ取得部216は、新システム104へ送信されたコネクション切断データを示す値を、新システムログ222に格納する。
【0274】
ステップ810の後、系切替処理部219は、ステップ414と同じく、ユーザから系切替を指示されたか否かを判定する(ステップ815)。ユーザから系切替を指示されていない場合、ステップ803が実行される。ユーザから系切替を指示された場合、新システム104との通信処理を終了する。
【0275】
ステップ808において、エントリYがコネクション切断データを示さないと判定された場合、現行システムログ取得部213は、エントリYがデータ用セッションに関する情報を含むか否かを判定する(ステップ811)。現行システムログ取得部213は、例えば、エントリYのデータ1729に”PORT”で始まる文字列を含む場合、エントリYがデータ用セッションに関する情報を含むと判定する。
【0276】
ステップ811において、エントリYがデータ用セッションに関する情報を含まないと判定された場合、ステップ813が実行される。
【0277】
ステップ811において、エントリYがデータ用セッションに関する情報を含むと判定された場合、セッション管理部217は、エントリYに含まれる端末103のアドレスを、セッション管理テーブル223の送信元アドレス1702に含むセッション管理テーブル223のエントリを特定する。そして、セッション管理テーブル223の特定されたエントリの送信元アドレス1702及び送信元ポート番号1703の値によって、エントリYのデータ1729に含まれる”PORT”で始まる文字列を、更新する(ステップ812)。これによって、エントリYを、テスト支援ツール100及び新システム104間のデータ用セッション情報に更新する
ステップ811又はステップ812の後、新システム送信処理部214は、エントリYを用いて、新システム104に送信するためのデータを生成し、生成されたデータを新システム104へ送信する(ステップ813)。なお、ステップ812の後のステップ813において、新システム送信処理部214は、データ1729を更新されたエントリYを用いて、データを生成する。
【0278】
ステップ813の後、新システムログ取得部216は、ステップ813において新システム104へ送信されたデータを示す値を、新システムログ222に格納する(ステップ814)。
【0279】
具体的には、ステップ814において新システムログ取得部216は、新システム104へ送信したデータに基づいて、送信元アドレス1723、送信元ポート番号1724、宛先アドレス1725、及び、宛先ポート番号1726の値を、新システムログ222の新たに生成されたエントリに格納する。また、新システムログ取得部216は、新たに生成されたエントリの時刻1721に、ステップ813においてデータを送信した時刻を格納する。
【0280】
ステップ814の後、ステップ802が実行される。
【0281】
図13は、本発明の第1の実施形態の現行システム102によってFTPサービスが提供される場合における、新システム104がテスト支援ツール100へデータを送信する処理を示すフローチャートである。
【0282】
図12に示すステップ803において、エントリYが現行システム102から送信されたデータを示すエントリであると判定された場合、図13に示す処理が開始される。新システム受信処理部215は、新システム104からデータを受信するか否かを判定する(ステップ901)。
【0283】
新システム受信処理部215は、ステップ901において、新システム104からデータを受信するまで待つ。新システム104からデータを受信した場合、新システム104から受信したデータがコネクション切断データであるか否かを判定する(ステップ902)。新システム受信処理部215は、ステップ808と同じく、新システム104から受信したデータに、例えばFINフラグが含まれている場合、新システム104から受信したデータがコネクション切断データであると判定する。
【0284】
新システム104から受信したデータがコネクション切断データではない場合、新システム受信処理部215は、コネクション設定データであるか否かを判定する(ステップ903)。新システム受信処理部215は、ステップ804と同じく、新システム104から受信したデータに、例えばSYNフラグが含まれている場合、新システム104から受信したデータがコネクション設定データであると判定する。
【0285】
ステップ903において新システム104から受信したデータがコネクション設定データでないと判定された場合、ステップ904が実行される。
【0286】
ステップ902において新システム104から受信したデータがコネクション切断データであると判定された場合、又は、ステップ903において新システム104から受信したデータがコネクション設定データであると判定された場合、セッション管理部217は、受信したデータ(コネクション設定データ又はコネクション切断データ)をデータ用セッションによるデータとみなし、受信したデータに含まれる値によってセッション管理テーブル223のエントリを更新する(ステップ905)。
【0287】
具体的には、ステップ905においてセッション管理部217は、受信したデータに含まれる宛先アドレス及び宛先ポート番号を、送信元アドレス1702及び送信元ポート番号1703に含むセッション管理テーブル223のエントリを抽出する。そして、抽出されたエントリを、受信したデータに含まれる値によって更新する。例えば、受信したデータに含まれるポート番号によって、抽出されたエントリの宛先ポート番号1705を更新する。
【0288】
ステップ903又はステップ905の後、新システムログ取得部216は、受信したデータを示す値を新システムログ222に格納する(ステップ904)。
【0289】
具体的には、ステップ904において新システムログ取得部216は、新システム104から受信したデータに基づいて、送信元アドレス1723、送信元ポート番号1724、宛先アドレス1725、及び、宛先ポート番号1726の値を、新システムログ222の新たに生成されたエントリに格納する。また、新システムログ取得部216は、新たに生成されたエントリの時刻1721に、ステップ901において新システム104からデータを受信した時刻を格納する。
【0290】
ステップ904の後、ステップ815と同じく、系切替処理部219は、ユーザから系切替を指示されたか否かを判定する(ステップ906)。ユーザから系切替を指示されていない場合、ステップ901が実行される。ユーザから系切替を指示された場合、図13に示す処理が終了する。
【0291】
図14は、本発明の第1の実施形態の差分抽出処理を示すフローチャートである。
【0292】
図14に示す処理は、図7のステップ308に示す処理である。
【0293】
テスト支援ツール100の差分抽出処理部218は、現行システムログ221から、セッションごとに複数のエントリを読み出す(ステップ1000)。具体的には、差分抽出処理部218は、セッションID1722に同じ値を含む現行システムログ221のエントリを読み出す。また、セッションID1722に値が格納されていない場合、送信元アドレス1723、送信元ポート番号1724、宛先アドレス1725及び宛先ポート番号1726に格納される値の組合せが同じ、現行システムログ221のエントリを読み出す。
【0294】
ステップ1000の後、差分抽出処理部218は、現行システムログ221から読み出されたエントリからセッションID1722、又は、送信元アドレス1723、送信元ポート番号1724、宛先アドレス1725及び宛先ポート番号1726に格納される値の組合せを取得する(ステップ1001)。
【0295】
ステップ1001においてセッションID1722が取得された場合、ステップ1001の後、差分抽出処理部218は、セッション管理テーブル223を参照し、ステップ1001において取得されたセッションID1722と同じ値を現行セッションID1701に含むエントリの新セッションID1708を特定する。そして、特定された新セッションID1708を、セッションID1722に含む新システムログ222のエントリを読み出す。
【0296】
また、ステップ1001において、送信元アドレス1723、送信元ポート番号1724、宛先アドレス1725及び宛先ポート番号1726に格納される値の組合せが取得された場合、差分抽出処理部218は、取得された組合せを、送信元アドレス1723、送信元ポート番号1724、宛先アドレス1725及び宛先ポート番号1726に含む新システムログ222のエントリを読み出す(ステップ1002)。
【0297】
ステップ1001及びステップ1002において読み出されるエントリは、各々少なくとも一つ以上である。差分抽出処理部218は、ステップ1000及びステップ1002において読み出された現行システムログ221及び新システムログ222から、時刻1721の順にそれぞれ一行抽出する(ステップ1003)。
【0298】
ステップ1003の後、差分抽出処理部218は、ステップ1003において抽出された二つのエントリのデータ1729を比較し、二つのデータ1729が同じであるか否かを判定する(ステップ1004)。
【0299】
なお、差分抽出処理部218は、例えば、データ1729に含まれるHTTPのヘッダフィールドの”Date”、”Last−Modified”、又は、セッションID等、予め異なることが分かっており、差分情報として比較する必要のないデータを、あらかじめサービスプロファイル220に保持しておいてもよい。そして、ステップ1004における二つのデータ1729の比較の結果、前述のような、比較する必要のないデータが二つのデータ1729間の相違点として検出される場合も、差分抽出処理部218は、サービスプロファイル220を参照することによって、二つのデータ1729に相違はないと判定してもよい。
【0300】
ステップ1004において、二つのデータ1729が相違すると判定された場合、差分抽出処理部218は、二つのデータ1729を、差分情報として差分情報テーブル224に格納する(ステップ1006)。
【0301】
ステップ1004において、二つのデータ1729が同じであると判定された場合、又は、ステップ1006の後、差分抽出処理部218は、ステップ1000〜ステップ1002において読み出された現行システムログ221及び新システムログ222の各エントリを、すべて比較し終えたか否かを判定する(ステップ1007)。
【0302】
読み出された現行システムログ221及び新システムログ222の各エントリに比較していないエントリがある場合、差分抽出処理部218は、ステップ1003に戻る。また、読み出された現行システムログ221及び新システムログ222の各エントリをすべて比較した場合、図14に示す処理を終了する。
【0303】
なお、ステップ1000において読み出されたエントリ以外に、現行システムログ221にエントリが格納されている場合、差分抽出処理部218は、すべてのエントリがステップ1003〜ステップ1007の処理を実行されるまで、図14に示す処理を繰り返してもよい。
【0304】
図14に示す処理によって、差分情報テーブル224に、現行システムログ221と新システムログ222との差分情報が格納される。
【0305】
図15は、本発明の第1の実施形態の系切替処理を示すフローチャートである。
【0306】
図15に示す処理は、図7のステップ311に示す処理である。
【0307】
系切替処理部219は、まず、系切替処理を行うための条件を示す情報を初期化する(ステップ1100)。具体的には、ステップ1100において系切替処理部219は、例えば、ステップ308において抽出された差分情報の数の所定の閾値を読み出す。また、ユーザによってあらかじめ入力された系切替処理の条件を読み出す。読み出された閾値又は条件を保持することによって、系切替処理を行うための条件を示す情報を初期化する。
【0308】
ステップ1100において初期化された情報に基づいて、系切替処理部219が系切替を実行すると判定した場合、セッション管理部217は、セッション管理テーブル223を読み出す(ステップ1101)。
【0309】
ステップ1101の後、セッション管理部217は、現行システム102に継続中のセッションがあるか否かを判定する(ステップ1102)。セッション管理部217は、セッション管理テーブル223の終了時刻1707にすべて値が格納されている場合、現行システム102に継続中のセッションはないと判定する。
【0310】
ステップ1102において、現行システム102に継続中のセッションがあると判定された場合、系切替処理部219は、セッション管理テーブル223のすべてのエントリの終了時刻1707に値が格納されるまで、ステップ1103以降の処理の実行を待つ。なお、ステップ1102において、現行システム102に継続中のセッションがあると判定された場合、ステップ305が実行されてもよい。
【0311】
ステップ1102によって、現行システム102におけるセッションがすべて終了した後に、現行システム102から新システム104への切替処理が開始される。
【0312】
ステップ1102において、現行システム102に継続中のセッションがないと判定された場合、系切替処理部219は、現行システム受信処理部212に系切替を指示する(ステップ1103)。これによって、現行システム102及び端末103間において通信されるデータに、図3のステップ305〜ステップ308の処理を行うことを停止する。
【0313】
ステップ1103の後、系切替処理部219は、スイッチ管理テーブル225を読み出す(ステップ1104)。ステップ1104の後、系切替処理部219は、現行システム102と端末103とが相互に通信するためのスイッチ101におけるポート(1番ポート)を無効化(“OFF”)するための指示を、スイッチ管理テーブル225を参照することによって生成する。そして、生成された指示をスイッチ101に送信する。これによって、系切替処理部219は、現行システム102に接続されるスイッチ101のポートを無効化する(ステップ1105)。
【0314】
ステップ1105の後、系切替処理部219は、テスト支援ツール100に接続されるスイッチ101におけるポート(7番ポート)に割り当てられたミラーリングを解除するための指示を、スイッチ管理テーブル225を参照することによって生成する。そして、生成された指示をスイッチ101に送信する。これによって、系切替処理部219は、テスト支援ツール100に接続されるスイッチ101におけるポートのミラーリングを解除する(ステップ1106)。
【0315】
ステップ1106の後、セッション管理部217は、新システム104に継続中のセッションがあるか否かを判定する(ステップ1107)。セッション管理部217は、セッション管理テーブル223のすべての終了時刻1710に値が格納されている場合、新システム104に継続中のセッションはないと判定する。
【0316】
ステップ1107において、継続中のセッションがあると判定された場合、セッション管理部217は、セッション管理テーブル223のすべてのエントリの終了時刻1710に値が格納されるまで、ステップ1108以降の処理の実行を待つ。なお、ステップ1107において、新システム104に継続中のセッションがあると判定された場合、ステップ306が実行されてもよい。
【0317】
ステップ1107によって、新システム104におけるセッションがすべて終了した後に、新システム104によって端末103にサービスが提供される。
【0318】
ステップ1107において、新システム104に継続中のセッションがないと判定された場合、系切替処理部219は、新システム104に接続されるスイッチ101におけるポート(6番ポート)を有効化(“ON”)する指示を、スイッチ管理テーブル225を参照することによって生成する。そして、生成された指示をスイッチ101に送信する。これによって、系切替処理部219は、新システム104に接続されるスイッチ101におけるポートを無効化する(ステップ1108)。
【0319】
ステップ1108の後、系切替処理部219は、ステップ1105、ステップ1106及びステップ1108における処理に従って、スイッチ管理テーブル225を更新する(ステップ1109)。
【0320】
ステップ1109の後、系切替処理部219は、テスト支援ツール100をスイッチ101から切り離す。そして、テスト支援ツール100に接続される新システム104におけるネットワークI/Fをダウンさせるよう、新システム104に指示する(ステップ1110)。
【0321】
図15に示す処理によって、現行システム102におけるセッションがすべて終了した場合、端末103へサービスを提供するシステムが、現行システム102から新システム104へ切り替わることができる。
【0322】
第1の実施形態によれば、現行システム102へ入力されたデータに相当するデータを、新システム104へ入力することによって、現行システム102への入力データ及び現行システム102からの出力データと、新システム104への入力データ及び新システム104からの出力とを比較することができる。これによって、現行システム102と新システム104とのシステムの相違点を検証することができる。
【0323】
また、第1の実施形態によれば、現行システム102において新たなセッションが確立される毎に、新システム104においても新たなセッションを確立することによって、現行システム102と新システム104とを並行に稼動させることができる。
【0324】
また、第1の実施形態によれば、テスト支援ツール100がすべてのセッションの終了時刻を保持することによって、すべてのセッションが終了した後に、現行システム102から新システム104への系切替を開始することができる。
【0325】
また、第1の実施形態によれば、Webサービスなど、セッション情報をデータ部に含むデータを送信するサービスが、現行システム102及び新システム104によって提供される場合、テスト支援ツール100が、現行システム102のセッション情報と新システム104のセッション情報とを対応させて保持する。これによって、現行システム102へ入力されるデータを、新システム104へ入力するデータに更新することができる。
【0326】
(第2の実施形態)
第2の実施形態におけるテスト支援ツール100は、系切替処理の前後において負荷分散装置に系切替を通知する。
【0327】
図16は、本発明の第2の実施形態のテスト支援システムの構成を示すブロック図である。
【0328】
第2の実施形態のテスト支援システムは、テスト支援ツール100、複数のスイッチ101(101−1〜101−n)、複数の現行システム102(102−1〜102−n)、複数の端末103及び新システム104を備える。第2の実施形態のテスト支援ツール100、スイッチ101、現行システム102、端末103及び新システム104は、第1の実施形態のテスト支援ツール100、スイッチ101、現行システム102、端末103及び新システム104と同じ機能を有する。
【0329】
第2の実施形態のテスト支援システムは、さらに、負荷分散装置(以下、LB)1200を備える。LB1200は、端末103にサービスを提供するシステムを、複数の現行システム102のうちのいずれかに振り分ける。
【0330】
LB1200は、複数の端末103とネットワークを介して接続され、複数のスイッチ101に接続される。第2の実施形態の新システム104は、スイッチ101−1に接続される。また、現行システム102−1は、スイッチ101−1に接続される。
【0331】
図17は、本発明の第2の実施形態のLB1200を示すブロック図である。
【0332】
LB1200は、メモリ1300、プロセッサ1301、蓄積装置1302、入力装置1303、出力装置1304、及び、ネットワークインタフェース1305を備える。これらの機能部は、バス1306を介して接続される。
【0333】
メモリ1300は、負荷分散ソフトウェア1310を保持する。プロセッサ1301は、メモリ1300に保持されるソフトウェアを実行する。蓄積装置1302は、データ及びプログラムを保持する。入力装置1303は、キーボード又はマウス等である。出力装置1304は、ディスプレイ等である。ネットワークインタフェース1305は、ネットワーク及びスイッチ101に接続するためのインタフェースである。
【0334】
負荷分散ソフトウェア1310は、通信処理部1311、移行処理部1312、負荷分散処理部1316、及び、設定情報1317を有する。設定情報1317は蓄積装置1302に保持され、負荷分散ソフトウェア1310の実行に伴い、適宜、メモリ1300に読み出される。
【0335】
通信処理部1311は、端末103及び現行システム102と、ネットワークインタフェース1305を介してデータを送受信する。移行処理部1312は、現行システム102から新システム104への移行に対応して行われる、サービスの振り分け処理を示す情報を保持する。
【0336】
負荷分散処理部1316は、端末103に提供するサービスを、複数の現行システム102に振り分けて実行させる。設定情報1317は、いずれの現行システム102にいずれのサービスを実行させているかを示す情報を保持する。負荷分散処理部1316は、各現行システム102の状態を取得し、端末103との接続をどの現行システム102−1〜102−nに振り分けるかを決定する。
【0337】
図18は、本発明の第2の実施形態のテスト支援ツール100における系切替処理を示すフローチャートである。
【0338】
図18に示す処理は、図7のステップ311のテスト支援ツール100における系切替処理を示す。ステップ1100〜ステップ1110は、図15のステップ1100〜ステップ1110と同じ処理である。
【0339】
ステップ1104の後、系切替処理部219は、LB1200に、現行システム102−1の移行を開始する旨を通知(移行開始通知)する(ステップ1400)。移行開始通知には、移行元のシステムの情報として、少なくとも、現行システム102−1のアドレスが含まれる。
【0340】
ステップ1109の後、系切替処理部219は、LB1200に、新システム104と端末103とが接続された旨、すなわち、現行システム102−1の移行が終了した旨を通知(移行終了通知)する(ステップ1401)。移行終了通知には、移行先のシステムの情報として、少なくとも、新システム104のアドレスが含まれる。
【0341】
図19は、本発明の第2の実施形態のLB1200における系切替処理を示すフローチャートである。
【0342】
移行処理部1312は、設定情報1317を読み出す(ステップ1500)。ステップ1500において読み出された設定情報1317に基づいて、負荷分散処理を開始する(ステップ1501)。
【0343】
移行処理部1312は、テスト支援ツール100から何らかの通知を受信したか否かを判定する(ステップ1502)。ステップ1502において、テスト支援ツール100から通知を受信しない場合、負荷分散処理部1316は、負荷分散処理を開始する(ステップ1509)。ステップ1509の後、ステップ1510が実行される。
【0344】
ステップ1502において、テスト支援ツール100から何らかの通知を受信したと判定された場合、移行処理部1312は、受信した通知が移行開始通知であるか否かを判定する(ステップ1503)。ステップ1503において、受信した通知が移行開始通知であると判定された場合、受信した移行開始通知に含まれる移行元システム(すなわち、現行システム102−1)のシステム情報(例えば、アドレス)を抽出する(ステップ1504)。
【0345】
ステップ1504の後、移行処理部1312は、移行開始通知から抽出されたシステム情報を送信することによって、負荷分散処理部1316に現行システム102−1へのサービスの振り分けを停止するよう指示する(ステップ1505)。ステップ1505の後、ステップ1510が実行される。
【0346】
ステップ1503において、ステップ1503において、受信した通知が移行開始通知ではないと判定された場合、テスト支援ツール100から受信した通知が移行終了通知であるか否かを判定する(ステップ1506)。受信した通知が移行終了通知ではない場合、ステップ1510が実行される。
【0347】
ステップ1506において、受信した通知が移行終了通知であると判定された場合、移行処理部1312は、移行終了通知に含まれる移行先システム(すなわち、新システム104)のシステム情報(例えば、アドレス)を抽出する(ステップ1507)。
【0348】
ステップ1507の後、移行処理部1312は、移行終了通知から抽出されたシステム情報を送信することによって、移行先システムへのサービスの振分け処理を開始するよう、負荷分散処理部1316に指示する(ステップ1508)。
【0349】
第2の実施形態によれば、現行システム102とテスト支援ツール100とを切り離し、新システム104を新たな現行システムとして稼動させる際、LB1200に移行による切替えを通知することによって、LB1200が現行システム102へ処理振り分けを停止する。このため、システム全体のサービスを停止させることなく、新システム104に切替わることができる。
【0350】
なお、テスト支援ツール100を、現行システム102及び新システム104内の、例えば、Web APサーバとDBMSとが接続されるスイッチに接続させ、第1の実施形態同様の構成としてもよい。これによって、端末103とシステムとの入出力データではなく、システム内のDBへの入出力を取得し、差分状況を検出することができる。
【0351】
本実施形態によれば、現行システム102へ入力されたデータに相当するデータを、新システム104へ入力することによって、現行システム102からの出力と、新システム104からの出力とを比較することができる。これによって、現行システム102と新システム104とのシステムの相違点を検証することができる。
【0352】
また、本実施形態によれば、テスト支援ツール100がすべてのセッションの終了時刻を保持することによって、すべてのセッションが終了した後に、現行システム102から新システム104への系切替を開始することができる。
【0353】
また、本実施形態によれば、Webサービスなど、セッション情報をデータ部に含むデータを送信するサービスが、現行システム102及び新システム104によって提供される場合、テスト支援ツール100が、現行システム102のセッション情報と新システム104のセッション情報とを対応させて保持する。これによって、現行システム102へ入力されるデータを、新システム104へ入力するデータに更新することができる。
【符号の説明】
【0354】
100:テスト支援ツール、101:スイッチ、102:現行システム、103:端末、104:新システム、210:テスト支援ソフトウェア、211:通信処理部、212:現行システム受信処理部、213:現行システムログ取得部、214:新システム送信処理部、215:新システム受信処理部、216:新システムログ取得部、217:セッション管理部、218:差分抽出処理部、219:系切替処理部、220:サービスプロファイル、221:現行システムログ、222:新システムログ、223:セッション管理テーブル、224:差分情報テーブル、225:スイッチ管理テーブル、230:サービス管理部

【特許請求の範囲】
【請求項1】
一以上の端末、第1のシステム、及び、第2のシステムと接続される支援システムであって、
前記支援システムは、
プロセッサとメモリとインタフェースとを備え、
前記端末から前記第1のシステムへ送信される第1のデータと、前記第1のシステムから前記端末へ送信される第2のデータとを、前記インタフェースを介して受信する第1のシステム受信部と、
前記第1のデータと前記第2のデータとを含む第1のシステムログを、前記メモリに保持する第1のシステムログ取得部と、
前記第1のシステムログに基づいて、前記第1のデータと同じ内容を含む第3のデータを、前記第2のシステムへ送信する第2のシステム送信部と、
前記第3のデータと、前記第2のシステムから前記支援システムへ送信される第4のデータとを含む第2のシステムログを、前記メモリに保持する第2のシステムログ取得部と、
前記第1のデータ及び前記第2のデータが示す前記端末及び第1のシステム間のセッションに関する情報と、前記第3のデータ及び前記第4のデータが示す前記支援システム及び前記第2のシステム間のセッションに関する情報と、を含むセッション情報を前記メモリに保持するセッション管理部と、
前記第1のシステムログと、前記第2のシステムログとの差分を抽出する差分抽出部と、
前記セッション情報に含まれる前記端末及び第1のシステム間のセッションに関する情報に基づいて、前記第1のシステムを前記端末から切断させ、前記第2のシステムと前記端末とを接続させる系切替部と、を有することを特徴とする支援システム。
【請求項2】
前記第1のシステム受信部は、前記受信した第1のデータ又は第2のデータが、前記端末及び第1のシステム間のコネクションを切断するためのデータであるか否かを判定し、
前記判定の結果、前記受信した第1のデータ又は第2のデータが、前記端末及び第1のシステム間のコネクションを切断するためのデータである場合、前記セッション管理部は、前記端末及び第1のシステム間のセッションが切断されたことを示す値を前記セッション情報に格納し、
前記セッション管理部は、すべての前記端末及び前記第1のシステム間のセッションが切断されたことを示すか否かを判定し、
前記判定の結果、前記すべての端末及び第1のシステム間のセッションが切断された場合、前記系切替部は、前記第1のシステムを前記端末から切断させることを特徴とする請求項1に記載の支援システム。
【請求項3】
前記支援システムは、前記第1のシステム及び前記第2のシステムが提供するサービスに関するサービス情報を取得するサービス管理部を、更に有し、
前記サービス情報は、前記サービスによって送信されるデータから、前記セッションを識別するための情報を取得する方法を示し、
前記セッション管理部は、前記サービス情報を用いて識別された、前記第1のデータ、前記第2のデータ、前記第3のデータ及び前記第4のデータが示す前記セッションに関する情報を、前記セッション情報に格納することを特徴する請求項2に記載の支援システム。
【請求項4】
前記サービス情報が、前記データから前記セッション識別子を取得することによって前記セッションを識別する方法を示す場合、前記セッション管理部は、前記サービス情報が示す方法を用いて、前記第2のデータ又は前記第4のデータから前記セッション識別子を抽出し、
前記抽出された前記第2のデータ又は前記第4のデータのセッション識別子を、前記セッション情報に格納することを特徴とする請求項3に記載の支援システム。
【請求項5】
前記セッション管理部は、前記第2のデータから、第1のセッション識別子を抽出し、
前記セッション管理部は、前記第2のシステムから前記端末に対応するアドレスへ送信される前記第4のデータから、第2のセッション識別子を抽出し、
前記セッション管理部は、前記第1のセッション識別子と、前記第2のセッション識別子とを対応付けて、前記セッション情報に格納し、
前記第1のシステム受信部が、前記第1のセッション識別子を含む前記第1のデータを受信した場合、前記第2のシステム送信部は、前記セッション情報に基づいて前記第1のセッション識別子を前記第2のセッション識別子に置き換えられた、前記第1のデータの内容を含む前記第3のデータを、前記第2のシステムへ送信することを特徴とする請求項4に記載の支援システム。
【請求項6】
前記支援システムは、前記端末及び前記第1のシステムと接続される負荷分散装置と、更に、接続され、
前記系切替部は、
前記第1のシステムを前記端末から切断させる前に、前記負荷分散装置に系切替通知を送信し、
前記第2のシステムと前記端末とを接続させた後に、前記負荷分散装置に系切替終了通知を送信することを特徴とする請求項1に記載の支援システム。
【請求項7】
一以上の端末、第1のシステム、及び、第2のシステムと接続される支援システムによる支援方法であって、
前記支援システムは、プロセッサとメモリとインタフェースとを備え、
前記方法は、
前記支援システムが、前記端末から前記第1のシステムへ送信される第1のデータと、前記第1のシステムから前記端末へ送信される第2のデータとを、前記インタフェースを介して受信する第1のシステム受信手順と、
前記支援システムが、前記第1のデータと前記第2のデータとを含む第1のシステムログを、前記メモリに保持する第1のシステムログ取得手順と、
前記支援システムが、前記第1のシステムログに基づいて、前記第1のデータと同じ内容を含む第3のデータを、前記第2のシステムへ送信する第2のシステム送信手順と、
前記支援システムが、前記第3のデータと、前記第2のシステムから前記支援システムへ送信される第4のデータとを含む第2のシステムログを、前記メモリに保持する第2のシステムログ取得手順と、
前記支援システムが、前記第1のデータ及び前記第2のデータが示す前記端末及び第1のシステム間のセッションに関する情報と、前記第3のデータ及び前記第4のデータが示す前記支援システム及び前記第2のシステム間のセッションに関する情報と、を含むセッション情報を前記メモリに保持するセッション管理手順と、
前記支援システムが、前記第1のシステムログと、前記第2のシステムログとの差を抽出する差分抽出手順と、
前記支援システムが、前記セッション情報に含まれる前記端末及び第1のシステム間のセッションに関する情報に基づいて、前記第1のシステムを前記端末から切断させ、前記第2のシステムと前記端末とを接続させる系切替手順と、を含むことを特徴とする支援方法。
【請求項8】
前記第1のシステム受信手順は、前記受信した第1のデータ又は第2のデータが、前記端末及び第1のシステム間のコネクションを切断するためのデータであるか否かを判定する手順を含み、
前記判定の結果、前記受信した第1のデータ又は第2のデータが、前記端末及び第1のシステム間のコネクションを切断するためのデータである場合、前記セッション管理手順は、前記端末及び第1のシステム間のセッションが切断されたことを示す値を前記セッション情報に格納する手順を含み、
前記セッション管理手順は、すべての前記端末及び前記第1のシステム間のセッションが切断されたことを示すか否かを判定する手順を含み、
前記判定の結果、前記すべての端末及び第1のシステム間のセッションが切断された場合、前記系切替手順は、前記第1のシステムを前記端末から切断させる手順を含むことを特徴とする請求項7に記載の支援方法。
【請求項9】
前記方法は、前記支援システムが、前記第1のシステム及び前記第2のシステムが提供するサービスに関するサービス情報を取得するサービス管理手順を、更に含み、
前記サービス情報は、前記サービスによって送信されるデータから、前記セッションを識別するための情報を取得する方法を示し、
前記セッション管理手順は、前記サービス情報を用いて識別された、前記第1のデータ、前記第2のデータ、前記第3のデータ及び前記第4のデータが示す前記セッションに関する情報を、前記セッション情報に格納する手順を含むことを特徴する請求項8に記載の支援方法。
【請求項10】
前記サービス情報が、前記データから前記セッション識別子を取得することによって前記セッションを識別する方法を示す場合、前記セッション管理手順は、前記サービス情報が示す方法を用いて、前記第2のデータ又は前記第4のデータから前記セッション識別子を抽出する手順と、
前記抽出された前記第2のデータ又は前記第4のデータのセッション識別子を、前記セッション情報に格納する手順と、を含むことを特徴とする請求項9に記載の支援方法。
【請求項11】
前記セッション管理手順は、前記第2のデータから、第1のセッション識別子を抽出する手順を含み、
前記セッション管理手順は、前記第2のシステムから前記端末に対応するアドレスへ送信される前記第4のデータから、第2のセッション識別子を抽出する手順を含み、
前記セッション管理手順は、前記第1のセッション識別子と、前記第2のセッション識別子とを対応付けて、前記セッション情報に格納する手順を含み、
前記第1のシステム受信手順によって、前記第1のセッション識別子を含む前記第1のデータが受信された場合、前記第2のシステム送信手順は、前記セッション情報に基づいて前記第1のセッション識別子を前記第2のセッション識別子に置き換えられた、前記第1のデータの内容を含む前記第3のデータを、前記第2のシステムへ送信する手順を含むことを特徴とする請求項10に記載の支援方法。
【請求項12】
前記支援システムは、前記端末及び前記第1のシステムと接続される負荷分散装置と、更に、接続され、
前記系切替手順は、
前記第1のシステムを前記端末から切断させる前に、前記負荷分散装置に系切替通知を送信する手順と、
前記第2のシステムと端末とを接続させた後に、前記負荷分散装置に系切替終了通知を送信する手順とを含むことを特徴とする請求項7に記載の支援方法。
【請求項13】
一以上の端末、第1のシステム、及び、第2のシステムと接続されるコンピュータに支援方法を実行させるための支援プログラムであって、
前記コンピュータは、プロセッサとメモリとインタフェースとを備え、
前記支援プログラムは、前記コンピュータに、
前記端末から前記第1のシステムへ送信される第1のデータと、前記第1のシステムから前記端末へ送信される第2のデータとを、前記インタフェースを介して受信する第1のシステム受信手順と、
前記第1のデータと前記第2のデータとを含む第1のシステムログを、前記メモリに保持する第1のシステムログ取得手順と、
前記第1のシステムログに基づいて、前記第1のデータと同じ内容を含む第3のデータを、前記第2のシステムへ送信する第2のシステム送信手順と、
前記第3のデータと、前記第2のシステムから前記支援システムへ送信される第4のデータとを含む第2のシステムログを、前記メモリに保持する第2のシステムログ取得手順と、
前記第1のデータ及び前記第2のデータが示す前記端末及び第1のシステム間のセッションに関する情報と、前記第3のデータ及び前記第4のデータが示す前記支援システム及び前記第2のシステム間のセッションに関する情報と、を含むセッション情報を前記メモリに保持するセッション管理手順と、
前記第1のシステムログと、前記第2のシステムログとの差を抽出する差分抽出手順と、
前記セッション情報に含まれる前記端末及び第1のシステム間のセッションに関する情報に基づいて、前記第1のシステムを前記端末から切断させ、前記第2のシステムと前記端末とを接続させる系切替手順と、を実行させることを特徴とする支援プログラム。
【請求項14】
前記第1のシステム受信手順で、前記受信した第1のデータ又は第2のデータが、前記端末及び第1のシステム間のコネクションを切断するためのデータであるか否かを判定する手順を更に実行させ、
前記判定の結果、前記受信した第1のデータ又は第2のデータが、前記端末及び第1のシステム間のコネクションを切断するためのデータである場合、前記セッション管理手順で、前記端末及び第1のシステム間のセッションが切断されたことを示す値を前記セッション情報に格納する手順を更に実行させ、
前記セッション管理手順で、すべての前記端末及び前記第1のシステム間のセッションが切断されたことを示すか否かを判定する手順を更に実行させ、
前記判定の結果、前記すべての端末及び第1のシステム間のセッションが切断された場合、前記系切替手順で、前記第1のシステムを前記端末から切断させる手順を更に実行させることを特徴とする請求項13に記載の支援プログラム。
【請求項15】
前記支援プログラムは、前記コンピュータに、前記第1のシステム及び前記第2のシステムが提供するサービスに関するサービス情報を取得するサービス管理手順を、更に実行させ、
前記サービス情報は、前記サービスによって送信されるデータから、前記セッションを識別するための情報を取得する方法を示し、
前記セッション管理手順で、前記サービス情報を用いて識別された、前記第1のデータ、前記第2のデータ、前記第3のデータ及び前記第4のデータが示す前記セッションに関する情報を、前記セッション情報に格納する手順を更に実行させることを特徴する請求項14に記載の支援プログラム。
【請求項16】
前記サービス情報が、前記データから前記セッション識別子を取得することによって前記セッションを識別する方法を示す場合、前記セッション管理手順で、前記サービス情報が示す方法を用いて、前記第2のデータ又は前記第4のデータから前記セッション識別子を抽出する手順と、
前記抽出された前記第2のデータ又は前記第4のデータのセッション識別子を、前記セッション情報に格納する手順と、を更に実行させることを特徴とする請求項15に記載の支援プログラム。
【請求項17】
前記セッション管理手順で、前記端末へ送信される前記第2のデータから、第1のセッション識別子を抽出する手順を更に含み、
前記セッション管理手順で、前記第2のシステムから前記端末に対応するアドレスへ送信される前記第4のデータから、第2のセッション識別子を抽出する手順を更に実行させ、
前記セッション管理手順で、前記第1のセッション識別子と、前記第2のセッション識別子とを対応付けて、前記セッション情報に格納する手順を更に実行させ、
前記第1のシステム受信手順によって、前記第1のセッション識別子を含む前記第1のデータが受信された場合、前記第2のシステム送信手順で、前記セッション情報に基づいて前記第1のセッション識別子を前記第2のセッション識別子に置き換えられた、前記第1のデータの内容を含む前記第3のデータを、前記第2のシステムへ送信する手順を更に実行させることを特徴とする請求項16に記載の支援プログラム。
【請求項18】
前記コンピュータは、前記端末及び前記第1のシステムと接続される負荷分散装置と、更に接続され、
前記系切替手順で、
前記第1のシステムを前記端末から切断させる前に、前記負荷分散装置に系切替通知を送信する手順と、
前記第2のシステムと端末とを接続させた後に、前記負荷分散装置に系切替終了通知を送信する手順とを更に実行させることを特徴とする請求項13に記載の支援プログラム。

【図1】
image rotate

【図2】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図6A】
image rotate

【図6B】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2013−93727(P2013−93727A)
【公開日】平成25年5月16日(2013.5.16)
【国際特許分類】
【出願番号】特願2011−234270(P2011−234270)
【出願日】平成23年10月25日(2011.10.25)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】