以下に添付図面を参照して、この発明にかかる検証支援プログラム、検証支援方法および検証支援装置の実施の形態を詳細に説明する。
(実施の形態1)
図1は、実施の形態1にかかる検証支援方法の一実施例を示す説明図である。図1において、検証支援装置100は、検証対象システムの動作検証を支援するコンピュータである。ここで、検証対象システムは、例えば、実際に稼動している実動系システムを模擬したシステムである。
また、検証対象システムの動作検証とは、検証対象システムの機能や性能を検証することである。具体的には、例えば、検証対象システムにおいて、実動系システムの装置間において送受信されるデータと同様のデータを送受信させることにより、実動系システムと同様の負荷を検証対象システムにかけて機能や性能の検証が行われる。
より具体的には、例えば、サーバへのパッチ適用、ファームウェア更新等の作業が行われる場合に、検証対象システムにおいて作業後のサーバが作業前と同様に動作するか否かの検証が行われる。また、実際のトランザクションデータから障害が発生した期間のデータを抜き出して、検証対象システムにおいて障害発生時の動作を再現して障害原因の検証が行われる。また、システムを移行する場合に、実動系システムを停止することなく、検証対象システムにおいてシステム移行後の各装置が正常に動作するか否かの検証が行われる。
実動系システムの装置間において送受信されるデータは、例えば、実動系システムの装置間において送受信されるパケットである。また、データは、実動系システムの装置間において送受信される複数のパケットを解析して再構成されるメッセージデータであってもよい。
検証支援装置100は、例えば、実動系システムに含まれるスイッチ装置のミラーリングの機能を利用して、実動系システムの装置間で送受信されるデータを取得することができる。なお、ミラーリングとは、あるポートに出力されるデータと同じデータを、他のポートからも出力する機能である。
以下の説明では、実動系システムの装置間において送受信されるデータとして「パケット」を例に挙げて説明する。また、実動系システムのスイッチ装置のミラーリングの機能などを利用して取得されるパケットの集合を「キャプチャデータ」と表記する場合がある。
ここで、1つの実動系システムに対して複数の検証系システムを用意することにより、検証対象システムの動作検証にかかる負荷を複数の検証系システムに分散して、検証対象システムの動作検証を並列に行うことができる。例えば、キャプチャデータをn個に分割して、分割後のキャプチャデータをn個の検証系システムにそれぞれ割り当てることにより、検証対象システムの動作検証を並列に行って検証期間の短縮化を図ることができる。
一方、キャプチャデータを分割する時刻に、あるセッションが継続中の場合、セッションが分割後のキャプチャデータを跨ぐことになる。セッションとは、装置間において実行される一連の処理である。この場合、分割後のキャプチャデータからセッションを維持するための情報が欠落して、実動系システムの装置間において実行される一連の処理を検証系システムの装置間において再現することができない場合がある。
例えば、図1において、実動系システムの装置間において、8時から12時の間に送受信されるパケットp1〜p16が示されている。パケットp1〜p16は、実動系システムのクライアント装置とサーバとの間で実行されたセッションSにかかる一連のパケットである。
セッションSは、コネクションA〜Dを含む。コネクションとは、装置間のセッションにおいてデータ転送を行うための論理的な通信経路である。1つのセッションには1以上のコネクションが存在する。ここでは、コネクションAにはパケットp1〜p3が含まれ、コネクションBにはパケットp4〜p10が含まれ、コネクションCにはパケットp11〜p13が含まれ、コネクションDにはパケットp14〜p16が含まれている。
セッションSは、コネクションAにおけるログイン処理により開始され、コネクションDにおけるログアウト処理まで継続する。具体的には、例えば、クライアント装置からサーバへのパケットp1の送信を契機に、サーバにおいてセッションIDが発行され、このセッションIDを用いてクライアント装置とサーバとのセッションSが維持される。
セッションIDは、送信元を識別する識別情報であり、例えば、クライアント装置のユーザを識別するHTTP(HyperText Transfer Protocol)のCookie情報である。セッションIDは、装置間において実行されるセッションSを維持するための情報となる。
以下、8時を基準時刻として1時間の時間幅で区切ることにより、パケットp1〜p16をパケット群E1〜E4に分割して、各パケット群E1〜E4を別々の検証系システムに分散して、検証対象システムの動作検証を行う場合を想定する。
この場合、8時から9時のパケット群E1にはコネクションAとコネクションBが含まれる。また、9時から10時のパケット群E2にはコネクションBが含まれる。また、10時から11時のパケット群E3にはコネクションBとコネクションCとコネクションDが含まれる。また、11時から12時のパケット群E4にはコネクションDが含まれる。
ここで、パケット群E1〜E4のうち、セッションIDが発行されるのはログイン処理が実行されるパケット群E1である。このため、パケット群E2〜E4に含まれるコネクションからセッションSを維持するための情報が欠落して、検証中に不整合を起こす場合がある。
すなわち、パケットp1〜p16を1時間ごとに分割した場合、パケットp1〜p16を分割する時刻において、セッションSが継続中のため、セッションSがパケット群E1〜E4を跨ぐことになる。このため、パケット群E2〜E4を用いて、実動系システムの装置間において実行される処理を、検証系システムの装置間において再現させることが難しくなる。
そこで、実施の形態1では、検証支援装置100は、実動系システムにおいて送受信される一連のパケットを分割した複数のパケット群のうち、装置間のセッションを維持するための情報を取得するパケットが欠落している箇所に該パケットを補間する。これにより、複数の検証系システムにおいて検証試験を分散処理する際に、実動系システムの装置間において実行される処理を再現可能にする。以下、検証支援装置100の検証支援処理手順の一実施例について説明する。
(1)検証支援装置100は、実動系システムの装置間において送受信される一連のパケットを取得する。図1の例では、実動系システムのクライアント装置とサーバとの間において送受信されるパケットp1〜p16が取得される。
(2)検証支援装置100は、取得した一連のパケットを分割することにより複数のパケット群を作成する。図1の例では、8時を基準時刻として1時間の時間幅で区切った期間ごとにパケットp1〜p16を分割することにより、パケット群E1〜E4が作成されている。
(3)検証支援装置100は、作成した複数のパケット群の中から、送信元の識別情報の発行要求となる特定のパケットを含むパケット群を検出する。ここで、特定のパケットは、例えば、クライアント装置のユーザを識別するCookie情報の発行要求となるパケットである。図1の例では、クライアント装置からサーバへのパケットp1の送信を契機にCookie情報が発行されるため、パケットp1が特定のパケットとなる。このため、パケット群E1〜E4の中からパケットp1を含むパケット群E1が検出される。
(4)検証支援装置100は、複数のパケット群のうち、検出したパケット群よりも送信された順序が後となる後続のパケット群の先頭に特定のパケットを付加する。図1の例では、パケット群E1よりも送信された順序が後となる後続のパケット群は、パケット群E2〜E4である。このため、パケット群E2の先頭にパケットp1が付加され、パケット群E3の先頭にパケットp1が付加され、パケット群E4の先頭にパケットp1が付加される。
このように、実施の形態1にかかる検証支援装置100によれば、複数の検証系システムにおいて検証対象システムの検証試験を分散処理するための検証用データを作成することができる。これにより、検証対象システムの検証試験を、複数の検証系システムにおいて分散処理して検証期間の短縮化を図ることができる。
図1の例では、パケット群E1およびパケットp1が付加されたパケット群E2〜E4をそれぞれ別々の検証系システムに割り当てることにより、検証対象システムの検証試験を分散処理することができる。この際、各検証系システムにおいて、最初にパケットp1が送信されてセッションIDが発行されるため、各検証系システムの装置間においてセッションを維持することができ、実動系システムの装置間において実行される処理を再現することができる。
(試験システムのシステム構成例)
つぎに、実施の形態1にかかる試験システム200について説明する。図2は、試験システム200のシステム構成例を示す説明図である。図2において、試験システム200は、検証試験装置201と、複数のクライアント装置CLと、複数のサーバSVと、を含む。試験システム200において、検証試験装置201、クライアント装置CLおよびサーバSVは、有線または無線のネットワーク210を介して接続されている。ネットワーク210は、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などである。
検証試験装置201は、検証対象システムの動作検証を行うコンピュータである。検証試験対象システムは、例えば、実動系システム220を模擬したシステムである。実動系システム220は、クライアント装置CLとサーバSVとを含むクライアント・サーバ型のシステムである。クライアント装置CLは、例えば、ウェブサービスの提供を受けるユーザが使用するコンピュータである。サーバSVは、例えば、ウェブサーバ、アプリケーションサーバ、データベースサーバなどのコンピュータである。
また、検証試験装置201は、自装置のハードウェア資源を仮想化して、複数の異なるOS(Operating System)を実行可能である。具体的には、例えば、検証試験装置201は、自装置のハードウェア資源を分割して構築される実行環境で動作する仮想マシン(Virtual Machine、VM)によってOSを稼働させることができる。また、ハードウェア資源を仮想化せず、検証試験装置201と各サーバ(ウェブサーバ、アプリケーション、データベースサーバなど)を異なる物理マシン上に構築することも可能である。
仮想マシンは、検証試験装置201のハードウェア資源を分割して構築される実行環境で動作する仮想的なコンピュータである。仮想マシンの実体は、例えば、プログラムやOSなどのソフトウェア、ソフトウェアに与えられる変数、およびソフトウェアを実行させるためのハードウェア資源を指定する情報を含むものである。
ここでは、検証試験装置201は、試験管理装置202と、試験装置203−1〜203−nと、検証系装置群204−1〜204−nと、を含む(n:1以上の自然数)。
試験管理装置202は、システムの動作検証を支援する仮想マシンである。試験管理装置202は、例えば、実動系システム220のスイッチ装置(不図示)のミラーリングの機能を利用して、実動系システム200の装置間において送受信されるパケットをキャプチャすることができる。試験管理装置202は、図1に示した検証支援装置100に相当する。
試験装置203−1〜203−nは、検証系装置群204−1〜204−nと連動して、検証対象システムの動作検証を行う仮想マシンである。検証系装置群204−1〜204−nは、実動系システム220を模擬したシステムを構築するための仮想マシンである。ここでは、試験装置203−iと検証系装置群204−iとのペアが一つの検証系システム230−iとなる(i=1,2,…,n)。
なお、上述した説明では、試験管理装置202と、試験装置203−1〜203−nと、検証系装置群204−1〜204−nとを、検証試験装置201上で動作する仮想マシンとしたが、それぞれ異なる物理的なコンピュータにより実現することにしてもよい。
(検証試験装置201のハードウェア構成例)
図3は、検証試験装置201のハードウェア構成例を示すブロック図である。図3において、検証試験装置201は、CPU(Central Processing Unit)301と、メモリ302と、HDD(Hard Disk Drive)303と、I/F(Interface)304と、ディスプレイ305と、キーボード306と、マウス307と、を有している。また、各構成部はバス300によってそれぞれ接続されている。
ここで、CPU301は、検証試験装置201の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有している。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されているプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させることになる。
HDD303は、CPU301の制御にしたがって磁気ディスクに対するデータのリード/ライトを制御する。I/F304は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して外部装置に接続される。そして、I/F304は、ネットワーク210と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F304は、仮想的なIFを含み、検証試験装置201上で動作する仮想マシン間を接続する。I/F304には、例えば、モデム、LANアダプタ、仮想NIC(Network Interface Card)などを採用することができる。
ディスプレイ305は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ305は、例えば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。キーボード306は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。マウス307は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。なお、検証試験装置201は、上述した構成部のほか、例えば、スキャナやプリンタなどを有することにしてもよい。
(キャプチャデータの具体例)
つぎに、試験管理装置202が用いるキャプチャデータの具体例について説明する。キャプチャデータは、実動系システム220のクライアント装置CLとサーバSVとの間において送受信されるパケットをキャプチャしたデータである。
図4は、キャプチャデータの具体例を示す説明図である。図4において、キャプチャデータ400は、パケットID、Time、Src、Dst、Dst_Port、Session−IDおよびInfoのフィールドを有する。各フィールドに情報を設定することにより、実動系システム220の装置間において送受信されたパケット(例えば、パケットp1〜p18)がレコードとして記憶されている。
パケットIDは、パケットを識別する識別情報である。Timeは、パケットがキャプチャされたキャプチャ時刻である。Srcは、パケットの送信元となる装置のIP(Internet Protocol)アドレスである。なお、図面では、Srcとして、送信元が、クライアント装置CLまたはサーバSVであることを示す「CL」または「SV」を表記している。
Dstは、パケットの宛先となる装置のIPアドレスである。なお、図面では、Dstとして、宛先が、クライアント装置CLまたはサーバSVであることを示す「CL」または「SV」を表記している。Dst_Portは、パケットの宛先となる装置のポート番号である。
Session−IDは、クライアント装置CLのユーザを識別するCookie情報である。Cookie情報には、例えば、クッキー名とその値、ドメイン名、パス名、有効期限、生成日時、クライアント装置CLのIPアドレスなどが含まれている。Infoは、パケットの宛先となる装置に要求される処理の処理内容や処理結果を表す情報である。なお、図示は省略するが、各パケットには、各パケットの種別(リクエストまたはレスポンス)、各パケットの送信元となる装置のポート番号および各パケットのデータサイズを表すパケット長などが示されていてもよい。
ここで、パケットp1,p2を例に挙げて、クライアント装置CLおよびサーバSVの動作例を説明する。まず、パケットp1がクライアント装置CLからサーバSVに送信されると、サーバSVにおいてユーザ名:Taroのログイン処理が実行される。ログイン処理が完了すると、サーバSVのSet−Cookie処理においてSession−ID「Alpha」が発行され、Session−ID「Alpha」を含むパケットp2がサーバSVからクライアント装置CLに送信される。
これにより、以降において、クライアント装置CLとサーバSVとの間で送受信されるパケットにSession−ID「Alpha」を含めることにより、サーバSVはクライアント装置CLのユーザを識別することができる。なお、Session−IDは、例えば、サーバSVのSet−Cookie処理において定期的に更新される。
(試験管理装置202の機能的構成例)
図5は、実施の形態1にかかる試験管理装置202の機能的構成例を示すブロック図である。図5において、試験管理装置202は、取得部501と、作成部502と、検出部503と、付加部504と、割当部505と、収集部506と、判定部507と、出力部508と、を含む。取得部501〜出力部508は制御部となる機能であり、具体的には、例えば、図3に示したメモリ302、HDD303などに記憶されたプログラムをCPU301に実行させることにより、または、I/F304により、その機能を実現する。また、各機能部の処理結果は、例えば、メモリ302、HDD303などに記憶される。
取得部501は、装置間において送受信される一連のパケットを取得する機能を有する。ここで、一連のパケットは、装置間において送受信される時系列のパケット群であり、例えば、装置間において実行されるセッションにかかるパケット群である。
具体的には、例えば、取得部501は、実動系システム200の装置間において送受信されるパケットをキャプチャすることにより、一連のパケットを含むキャプチャデータを取得する。また、取得部501は、図3に示したキーボード306やマウス307を用いたユーザの操作入力により、または、データベースからの抽出により、一連のパケットを含むキャプチャデータを取得してもよい。
キャプチャデータは、所定期間分(例えば、1日分、1週間分)のパケットの集合であり、例えば、1以上のセッションにかかる一連のパケットを含む。具体的には、例えば、キャプチャデータは、図4に示したキャプチャデータ400である。
作成部502は、取得された一連のパケットを分割することにより複数のパケット群を作成する機能を有する。具体的には、例えば、作成部502は、取得されたキャプチャデータを分割することにより、複数の分割キャプチャデータを作成する。キャプチャデータを分割する際の最小単位は、例えば、1パケットである。
キャプチャデータから分割される分割キャプチャデータの個数は、例えば、予め設定されていてもよい。具体的には、例えば、分割キャプチャデータの個数は、検証試験にかけられる最大検証時間や検証系システム230−iの最大数などから算出されてメモリ302、HDD303などに記憶されていてもよい。
より具体的には、例えば、作成部502は、キャプチャデータに含まれる各々のパケットの送信時刻に基づいて、基準時刻から一定の時間幅で区切った期間ごとにキャプチャデータを分割することにしてもよい。ここで、基準時刻は、例えば、検証対象システムの動作検証を行う検証期間の開始時刻である。また、パケットの送信時刻は、例えば、パケットのキャプチャ時刻に相当する。
また、作成部502は、例えば、キャプチャデータに含まれる各々のパケットのデータサイズに基づいて、基準時刻から分割キャプチャデータ単位のデータサイズが所定値となるようにキャプチャデータを分割することにしてもよい。分割キャプチャデータ単位のデータサイズは、例えば、分割キャプチャデータに含まれる各パケットのパケット長を積算したものである。なお、分割キャプチャデータの作成例については、図6および図7を用いて後述する。
以下の説明では、取得されたキャプチャデータを「キャプチャデータP」と表記する場合がある。また、キャプチャデータPから分割された複数の分割キャプチャデータを「分割キャプチャデータP1〜Pn」と表記する場合がある。また、分割キャプチャデータP1〜Pnのうち任意の分割キャプチャデータを「分割キャプチャデータPi」と表記する場合がある。
また、キャプチャデータPには1以上のセッションにかかるパケットの集合が含まれており、1以上のセッションを「セッションS1〜Sm」と表記する場合がある。また、セッションS1〜Smのうち任意のセッションを「セッションSj」と表記する場合がある(j=1,2,…,m)。
検出部503は、作成された分割キャプチャデータP1〜Pnの中から、送信元の識別情報の発行要求となる特定のパケットを含む分割キャプチャデータを検出する機能を有する。ここで、特定のパケットは、例えば、実動系システム200の装置間において実行されるセッションSjを識別するセッションIDの発行要求となるパケットである。
より詳細に説明すると、特定のパケットは、例えば、クライアント装置CLのユーザを識別するCookie情報の発行要求となるパケットである。すなわち、特定のパケットは、例えば、クライアント装置CLのユーザがログインする場合に、クライアント装置CLからサーバSVに送信されるパケットである。
具体的には、例えば、検出部503は、各分割キャプチャデータPiに含まれる各々のパケットのInfoの情報、例えば、クエリ文字列、セッションオブジェクトなどを字句解析して『ログイン』という文字列を含む特定のパケットを検出する。そして、検出部503は、分割キャプチャデータP1〜Pnの中から、特定のパケットを含む分割キャプチャデータを検出する。
以下の説明では、特定のパケットを「パケットX」と表記する場合がある。また、パケットXを含む分割キャプチャデータを「分割キャプチャデータPk」と表記する場合がある(k=1,2,…,n)。
付加部504は、分割キャプチャデータP1〜Pnのうち、分割キャプチャデータPkよりも送信順序が後となる後続の分割キャプチャデータの先頭にパケットXを付加する機能を有する。ここで、後続の分割キャプチャデータとは、分割キャプチャデータP1〜Pnのうち、分割キャプチャデータPkに含まれるパケットよりも送信時刻が後となるパケットを含む分割キャプチャデータである。
具体的には、例えば、付加部504は、後続の分割キャプチャデータの各々におけるパケットXの送信時刻が最古となるようにパケットXの送信時刻を書き換えて、後続の分割キャプチャデータの各々にパケットXを付加することにしてもよい。
また、キャプチャデータPkには複数のパケットXが含まれる場合がある。この場合、付加部504は、キャプチャデータPkに含まれる複数のパケットXのうち最新のパケットXを後続の分割キャプチャデータの先頭に付加することにしてもよい。
また、パケットXを含む分割キャプチャデータが複数検出される場合がある。ここで、分割キャプチャデータP1〜Pnの中から、パケットX1を含む分割キャプチャデータPkとパケットX2を含む分割キャプチャデータPk+2が検出された場合を想定する。
この場合、付加部504は、例えば、分割キャプチャデータPk+1および分割キャプチャデータPk+2の先頭にパケットX1を付加し、分割キャプチャデータPk+3〜Pnの先頭にパケットX2を付加することにしてもよい。すなわち、ある分割キャプチャデータに付加されるパケットXは、その分割キャプチャデータに含まれるパケットよりも前に送信されたパケットXのうちの最新のパケットXとなる。
また、キャプチャデータPには2以上のセッションにかかるパケットの集合が含まれている場合がある。この場合、付加部504は、例えば、セッションSjごとに、セッションSjにかかる一連のパケットを含む分割キャプチャデータのうち、パケットXを含む分割キャプチャデータPkの後続の分割キャプチャデータの先頭にパケットXを付加することにしてもよい。
キャプチャデータPの集合のうち、セッションSjにかかる一連のパケットは、例えば、クライアント装置CLのIPアドレス、サーバSVのIPアドレスおよびセッションIDなどから特定することができる。サーバSVのIPアドレスやドメイン名は複数存在する場合がある。また、キャプチャデータPのうち、Infoに『ログイン』という文字列を含むパケットから『ログアウト』という文字列を含むパケットまでをセッションSjにかかる一連のパケットとしてもよい。さらに、例えば、キーボード306やマウス307を用いてユーザの操作入力により、キャプチャデータPのうち各セッションSjにかかる一連のパケットを指定することにしてもよい。なお、パケットXの付加例については、図8を用いて後述する。
割当部505は、後続の分割キャプチャデータの先頭にパケットXが付加された分割キャプチャデータP1〜Pnの各々の分割キャプチャデータPiを、試験装置203−1〜203−nの各々の試験装置203−iに割り当てる機能を有する。試験装置203−iは、検証対象システムの動作検証を行うコンピュータである(図2参照)。
具体的には、例えば、まず、割当部505は、分割キャプチャデータP1〜Pnの個数分の試験装置203−1〜203−nを起動する。そして、割当部505は、分割キャプチャデータP1〜Pnの各々の分割キャプチャデータPiを、試験装置203−1〜203−nの各々の試験装置203−iに割り当てる。
収集部506は、試験装置203−iに割り当てられた分割キャプチャデータPiに基づく検証対象システムの動作検証が行われた結果、試験装置203−iから検証結果を取得する機能を有する。具体的には、例えば、収集部506は、試験装置203−1〜203−nの各々の試験装置203−iから各々の検証結果を取得する。なお、検証結果の具体例については、図9を用いて後述する。
判定部507は、取得された検証結果に基づいて、検証対象システムが正常に動作するか否かを判定する機能を有する。具体的には、例えば、判定部507は、試験装置203−1〜203−nから取得された検証結果に基づいて、検証対象システムが正常に動作するか否かを判定する。なお、判定結果の具体例については、図9を用いて後述する。
出力部508は、判定された判定結果を出力する。具体的には、例えば、出力部508は、図9に示す判定結果901を出力する。また、出力部508は、試験装置203−1〜203−nの各々の試験装置203−iから取得された各々の検証結果を出力することにしてもよい。出力形式としては、例えば、ディスプレイ305への表示、プリンタ(不図示)への印刷出力、I/F304による外部装置への送信、メモリ302やHDD303への記憶がある。
また、出力部508は、後続の分割キャプチャデータの先頭にパケットXが付加された分割キャプチャデータP1〜Pnを出力することにしてもよい。これにより、検証系システム230−1〜230−nにおいて負荷を分散して検証試験を行うための検証用の分割キャプチャデータP1〜Pnを出力することができる。この結果、検証系システム230−1〜230−nにおいて、分割キャプチャデータP1〜Pnを用いて、検証対象システムの動作検証を任意のタイミングで行うことができる。
(分割キャプチャデータPiの作成例)
つぎに、分割キャプチャデータPiの作成例について説明する。ここでは、まず、図6を用いて、各々のパケットの送信時刻に基づく分割キャプチャデータPiの作成例について説明する。
図6は、分割キャプチャデータの作成例を示す説明図(その1)である。図6において、キャプチャデータ600は、実動系システム200の装置間において送受信されたパケット(例えば、パケットp100〜p201)を含む情報である。ここで、検証期間の開始時刻から終了時刻までの総時間を「総時間T_all」とし、検証系システム230−iの数を「分割数n」とする。
まず、作成部502は、総時間T_allを分割数nで割ることにより、基本時間T_divを算出する。そして、作成部502は、キャプチャデータ600に含まれる各々のパケットのキャプチャ時刻に基づいて、検証期間の開始時刻から基本時間T_divで区切った期間ごとにキャプチャデータ600を分割する。
ここでは、検証期間の開始時刻を「8:00:00」とし、基本時間T_divを「60[分]」とする。この場合、作成部502は、時刻「8:00:00」から60[分]単位で区切った期間ごとにキャプチャデータ600を分割する。図6の例では、キャプチャデータ600を時刻「8:00:00」から時刻「8:59:59」までの期間で分割することにより、パケットp100〜p199を含む分割キャプチャデータP1が作成される。
これにより、各検証系システム230−iにおける検証期間が均等になるようにキャプチャデータ600を分割して分割キャプチャデータP1〜Pnを作成することができる。
つぎに、図7を用いて、各々のパケットのデータ量に基づく分割キャプチャデータPiの作成例について説明する。
図7は、分割キャプチャデータの作成例を示す説明図(その2)である。図7において、キャプチャデータ700は、実動系システム200の装置間において送受信されたパケット(例えば、パケットp100〜p201)を含む情報である。キャプチャデータ700には、各パケットのパケット長[B(バイト)]が示されている。ここで、キャプチャデータ700のデータサイズを「データサイズS_all」とし、検証系システム230−iの数を「分割数n」とする。
まず、作成部502は、データサイズS_allを分割数nで割ることにより、基本サイズS_divを算出する。そして、作成部502は、キャプチャデータ700に含まれる各々のパケットのパケット長に基づいて、検証期間の開始時刻から分割キャプチャデータ単位のデータサイズが基本サイズS_divとなるようにキャプチャデータ700を分割する。
ここでは、検証期間の開始時刻を「8:00:00」とし、基本サイズS_divを「S_div=1[GB]」とする。この場合、作成部502は、時刻「8:00:00」から分割キャプチャデータ単位のデータサイズが1[GB]となるようにキャプチャデータ700を分割する。図7の例では、キャプチャデータ700を時刻「8:00:00」から1[GB]単位で分割することにより、パケットp100〜p201を含む分割キャプチャデータP1が作成される。
これにより、各検証系システム230−iにおける分割キャプチャデータPiのデータサイズが均等になるようにキャプチャデータ700を分割して分割キャプチャデータP1〜Pnを作成することができる。
(パケットXの付加例)
つぎに、パケットXの付加例について説明する。図8は、パケットXの付加例を示す説明図である。図8において、あるキャプチャデータPから分割された分割キャプチャデータP1,P2が示されている。ここでは、分割キャプチャデータP1,P2に含まれるパケットp1〜p18は、セッションS1にかかる一連のパケットとする。
この場合、検出部503は、まず、パケットXとなるパケットp1を含む分割キャプチャデータP1を検出する。つぎに、付加部504は、分割キャプチャデータP1よりも送信順序が後となる後続の分割キャプチャデータP2の先頭にパケットXであるパケットp1を付加する。
具体的には、例えば、付加部504は、分割キャプチャデータP2において、クライアント装置CLからサーバSVに送信されたパケットの中でパケットXであるパケットp1の送信時刻が最古となるように、分割キャプチャデータP2にパケットp1を付加する。図8の例では、パケットp1のキャプチャ時刻が「8:59:59」に変更されて分割キャプチャデータP2に付加されている。
この場合、例えば、分割キャプチャデータP2に基づく検証対象システムの動作検証において、検証系装置群204−2の装置間において最初にパケットp1が送受信されることになる。この結果、クライアント装置CLのユーザのログイン処理が実行されてセッションIDが発行されることになり、検証系装置群204−2の装置間においてセッションが維持されることになる。
具体的には、例えば、パケットp1のログイン処理によりセッションID「Delta」が発行され、パケットp11,p13のリクエストがセッションID「Delta」を使用して送信される。また、パケットp13のリクエストに対して新しいセッションID「Echo」が発行され、パケットp15,p17のリクエストがセッションID「Echo」を使用して送信される。
なお、セッションIDは、検証系装置群204−iの装置間においてパケットXが送受信された結果発行される。このため、検証前の段階は、分割キャプチャデータPiのセッションIDには、情報が未設定であってもよく、あるいは、分割前と同じセッションIDが設定されていてもよい。
(検証結果および判定結果の具体例)
つぎに、図9を用いて検証結果および判定結果の具体例について説明する。ここでは、分割キャプチャデータP1〜Pnの個数を「4」、すなわち、キャプチャデータPを4分割する場合を例に挙げて説明する。
図9は、検証結果および判定結果の具体例を示す説明図(その1)である。図9において、検証結果900−1〜900−4は、試験装置203−1〜203−4から取得される検証対象システムの動作検証の検証結果を表している。
検証結果900−1には、検証対象システムの機能検証の検証結果「OK」と、検証対象システムの性能検証の検証結果「OK」と、検証対象システムのページロード時間の平均「AVRG1」および分散「STDN1」とが示されている。
また、検証結果900−2には、検証対象システムの機能検証の検証結果「OK」と、検証対象システムの性能検証の検証結果「OK」と、検証対象システムのページロード時間の平均「AVRG2」および分散「STDN2」とが示されている。
また、検証結果900−3には、検証対象システムの機能検証の検証結果「OK」と、検証対象システムの性能検証の検証結果「OK」と、検証対象システムのページロード時間の平均「AVRG3」および分散「STDN3」とが示されている。
また、検証結果900−4には、検証対象システムの機能検証の検証結果「OK」と、検証対象システムの性能検証の検証結果「OK」と、検証対象システムのページロード時間の平均「AVRG4」および分散「STDN4」とが示されている。
なお、機能検証の検証結果「OK」は検証対象システムの機能が正常であることを示している。また、機能検証の検証結果「NG」は検証対象システムの機能が異常であることを示している。性能検証の検証結果「OK」は検証対象システムの性能が正常であることを示している。また、性能検証の検証結果「NG」は検証対象システムの性能が異常であることを示している。
ここで、パケットXが付加された分割キャプチャデータPiに基づく検証対象システムの動作検証にかかる試験装置203−iの検証処理の具体的な処理例について説明する。
例えば、試験装置203−iは、分割キャプチャデータPiが割り当てられた結果、検証系装置群204−iを起動して、分割キャプチャデータPiに基づく検証対象システムの動作検証を行う。具体的には、例えば、試験装置203−iは、検証系装置群204−iの装置間において、分割キャプチャデータPiに含まれるリクエストのパケットを送受信させる。
この際、分割キャプチャデータPiの先頭にはパケットXが付加されているため、検証系装置群204−iの装置間においてセッションが維持されることになる。このため、実動系システム220において実行される一連の処理を検証系システム230−iにおいて再現することができる。なお、分割キャプチャデータPiに含まれる各リクエストのパケットのヘッダ情報(例えば、送信元IPアドレス、宛先IPアドレスなど)は、検証系装置群204−iの各装置に合わせて変更される。
そして、試験装置203−iは、例えば、検証系装置群204−iの装置間におけるリクエスト数、レスポンス数およびレスポンス時間を計測する。レスポンス時間は、例えば、クライアント装置CLに表示されるウェブページのページロード時間である。レスポンス時間は、例えば、リクエストの送信時刻から、該リクエストに対応するレスポンスの送信時刻までの時間として算出することができる。さらに、試験装置203−iは、レスポンス時間の平均、分散などを算出することにしてもよい。
つぎに、試験装置203−iは、例えば、検証系装置群204−iにおけるレスポンス数と、実動系システム220におけるレスポンス数とを比較することにより、検証系装置群204−iの機能検証を行う。具体的には、例えば、試験装置203−iは、検証系装置群204−iにおけるレスポンス数と、実動系システム220におけるレスポンス数とが不一致の場合に、検証対象システムの機能が異常であると判定することにしてもよい。なお、実動系システム220におけるレスポンス数は、例えば、分割キャプチャデータPiに基づいて算出される。
ここで、パケットXが付加された分割キャプチャデータPiに基づく検証対象システムの動作検証では、パケットXに対するレスポンスが発生する。このため、試験装置203−iは、例えば、検証系装置群204−iにおけるレスポンス数からパケットXに対するレスポンスの数を減算した値を、検証系装置群204−iにおけるレスポンス数として算出することにしてもよい。
また、キャプチャデータPから分割された分割キャプチャデータPiには、対応するリクエストが存在しないレスポンスが含まれる場合がある。このため、試験装置203−iは、例えば、実動系システム220におけるレスポンス数から対応するリクエストが存在しないレスポンスの数を減算した値を、実動系システム220におけるレスポンス数として算出することにしてもよい。
なお、キャプチャデータPに含まれるリクエストとレスポンスとの対応関係は、例えば、試験管理装置202により予め設定されている。これにより、試験装置203−iは、例えば、レスポンスに対応するリクエストの存在を判別することができる。また、試験管理装置202は、分割キャプチャデータPiに含まれるレスポンスのうち対応するリクエストが存在するレスポンス数を計数して、その計数結果を分割キャプチャデータPiに付与することにしてもよい。これにより、試験装置203−iにおけるレスポンス数の計数が不要となる。
また、試験装置203−iは、検証系装置群204−iにおけるレスポンスのレスポンスコードと、実動系システム220におけるレスポンスのレスポンスコードとを比較することにより、レスポンスコードの不一致数を計測することにしてもよい。レスポンスコードは、例えば、HTTPのステータスコードである。そして、試験装置203−iは、例えば、レスポンスコードの不一致数が1以上の場合に、検証対象システムの機能が異常であると判定することにしてもよい。
ただし、上述したように、分割キャプチャデータPiには、対応するリクエストが存在しないレスポンスが含まれる場合がある。このため、試験装置203−iは、例えば、実動系システム220におけるレスポンスのうち、対応するリクエストが存在しないレスポンスをレスポンスコードの比較対象から除外することにしてもよい。
また、試験装置203−iは、例えば、検証系装置群204−iにおけるレスポンス時間の平均と、実動系システム220におけるレスポンス時間の平均とを比較することにより、検証系装置群204−iの性能検証を行うことにしてもよい。具体的には、例えば、試験装置203−iは、検証系装置群204−iにおけるレスポンス時間の平均と、実動系システム220におけるレスポンス時間の平均との差分が所定値以上の場合に、検証対象システムの性能が異常であると判定することにしてもよい。
また、試験装置203−iは、例えば、検証系装置群204−iにおけるレスポンス時間の分散と、実動系システム220におけるレスポンス時間の分散とを比較することにより、検証系装置群204−iの性能検証を行うことにしてもよい。具体的には、例えば、試験装置203−iは、検証系装置群204−iにおけるレスポンス時間の分散と、実動系システム220におけるレスポンス時間の分散との差分が所定値以上の場合に、検証対象システムの性能が異常であると判定することにしてもよい。
つぎに、検証結果900−1〜900−4を例に挙げて、判定部507の判定処理の具体的な処理例について説明する。
判定部507は、検証結果900−1〜900−4に基づいて、検証対象システムの機能が正常であるか否かを判定する。具体的には、例えば、判定部507は、検証結果900−1〜900−4の機能検証の検証結果がすべて「OK」の場合に、検証対象システムの機能が正常であると判定する。
また、判定部507は、検証結果900−1〜900−4に基づいて、検証対象システムの性能が正常であるか否かを判定する。具体的には、例えば、判定部507は、検証結果900−1〜900−4の性能検証の検証結果がすべて「OK」の場合に、検証対象システムの性能が正常であると判定する。
また、判定部507は、例えば、検証系装置群204−1〜204−4におけるレスポンス時間の平均と、実動系システム220におけるレスポンス時間の平均とを比較することにより、検証対象システムの性能検証を行うことにしてもよい。実動系システム220におけるレスポンス時間の平均は、例えば、キャプチャデータPに基づいて算出される。
具体的には、例えば、判定部507は、下記式(1)を用いて、検証系装置群204−1〜204−4におけるレスポンス時間の平均を算出することができる。ただし、AVRGは、検証系装置群204−1〜204−4全体の平均レスポンス時間である。RESiは、検証系装置群204−iにおけるレスポンス数である。AVRGiは、検証系装置群204−iにおける平均レスポンス時間である。
そして、判定部507は、検証系装置群204−1〜204−4全体の平均レスポンス時間AVRGと、実動系システム220全体の平均レスポンス時間Rとの差分が所定値以上の場合に、検証対象システムの性能が異常であると判定することにしてもよい。この場合、判定部507は、検証結果900−1〜900−4のいずれかの性能検証の検証結果が「NG」であっても、平均レスポンス時間AVRGと平均レスポンス時間Rとの差分が所定値未満の場合は、検証対象システムの性能が正常であると判定する。
また、判定部507は、例えば、検証系装置群204−1〜204−4におけるレスポンス時間の分散と、実動系システム220におけるレスポンス時間の分散とを比較することにより、検証対象システムの性能検証を行うことにしてもよい。実動系システム220におけるレスポンス時間の分散は、例えば、キャプチャデータPに基づいて算出される。
具体的には、例えば、判定部507は、下記式(2)を用いて、検証系装置群204−1〜204−4におけるレスポンス時間の分散を算出することができる。ただし、STDNは、検証系装置群204−1〜204−4全体のレスポンス時間の分散である。STDNiは、検証系装置群204−iにおけるレスポンス時間の分散である。
そして、判定部507は、検証系装置群204−1〜204−4全体のレスポンス時間の分散STDNと、実動系システム220全体のレスポンス時間の分散Sとの差分が所定値以上の場合に、検証対象システムの性能が異常であると判定することにしてもよい。この場合、判定部507は、検証結果900−1〜900−4のいずれかの性能検証の検証結果が「NG」であっても、分散STDNと分散Sとの差分が所定値未満の場合は、検証対象システムの性能が正常であると判定する。
判定部507は、検証対象システムの機能検証の検証結果と、検証対象システムの性能検証の検証結果とに基づいて、検証対象システムの動作が正常であるか否かを判定する。具体的には、例えば、判定部507は、検証対象システムの機能が正常かつ検証対象システムの性能が正常の場合に、検証対象システムの動作が正常であると判定する。
図9の例では、判定部507は、例えば、検証対象システムの機能および性能が正常のため、最終的に、検証対象システムの動作が正常であると判定する。そして、出力部508は、判定結果901を出力する。
(試験管理装置202の各種処理手順)
つぎに、実施の形態1にかかる試験管理装置202の各種処理手順について説明する。ここでは、まず、試験管理装置202の検証支援処理手順について説明する。
図10は、実施の形態1にかかる試験管理装置202の検証支援処理手順の一例を示すフローチャートである。図10のフローチャートにおいて、まず、試験管理装置202は、キャプチャデータPを取得したか否かを判断する(ステップS1001)。
ここで、試験管理装置202は、キャプチャデータPを取得するのを待つ(ステップS1001:No)。そして、試験管理装置202は、キャプチャデータPを取得した場合(ステップS1001:Yes)、キャプチャデータPを分割することにより、分割キャプチャデータP1〜Pnを作成する(ステップS1002)。
つぎに、試験管理装置202は、セッションSjの「j」を「j=1」とする(ステップS1003)。そして、試験管理装置202は、分割キャプチャデータP1〜Pnの中から、セッションSjにかかる一連のパケットのうちの少なくともいずれかのパケットを含む1以上の分割キャプチャデータを特定する(ステップS1004)。
つぎに、試験管理装置202は、セッションSjにかかる分割キャプチャデータの中から、クライアント装置CLのユーザを識別するCookie情報の発行要求となるパケットXを含む分割キャプチャデータPkを検出する(ステップS1005)。
そして、試験管理装置202は、セッションSjにかかる分割キャプチャデータのうち、分割キャプチャデータPkよりも送信順序が後となる後続の分割キャプチャデータの先頭にパケットXを付加する(ステップS1006)。
つぎに、試験管理装置202は、セッションSjの「j」をインクリメントして(ステップS1007)、「j」が「m」より大きくなったか否かを判断する(ステップS1008)。ここで、「j」が「m」以下の場合(ステップS1008:No)、試験管理装置202は、ステップS1004に戻る。
一方、「j」が「m」より大きくなった場合(ステップS1008:Yes)、試験管理装置202は、検証用の分割キャプチャデータP1〜Pnを出力して(ステップS1009)、本フローチャートによる一連の処理を終了する。検証用の分割キャプチャデータP1〜Pnは、各セッションSjについて、分割キャプチャデータPkの後続の分割キャプチャデータの先頭にパケットXが付加された分割キャプチャデータP1〜Pnである。
これにより、検証系システム230−1〜230−nにおいて負荷を分散して検証試験を行うための検証用の分割キャプチャデータP1〜Pnを出力することができる。
つぎに、試験管理装置202の検証処理手順について説明する。
図11は、実施の形態1にかかる試験管理装置202の検証処理手順の一例を示すフローチャートである。図11のフローチャートにおいて、まず、試験管理装置202は、検証用の分割キャプチャデータP1〜Pnをメモリ302から読み込む(ステップS1101)。
つぎに、試験管理装置202は、検証用の分割キャプチャデータP1〜Pnの各々の分割キャプチャデータPiを、試験装置203−1〜203−nの各々の試験装置203−iに割り当てる(ステップS1102)。そして、試験管理装置202は、試験装置203−1〜203−nから検証結果を取得したか否かを判断する(ステップS1103)。
ここで、試験管理装置202は、試験装置203−1〜203−nから検証結果を取得するのを待つ(ステップS1103:No)。試験管理装置202は、試験装置203−1〜203−nから検証結果を取得した場合(ステップS1103:Yes)、取得した検証結果に基づいて、検証対象システムが正常に動作するか否かを判定する(ステップS1104)。そして、試験管理装置202は、判定した判定結果を出力して(ステップS1105)、本フローチャートによる一連の処理を終了する。
これにより、検証対象システムの動作検証にかかる負荷を試験装置203−1〜203−nにほぼ均等に分散して、検証対象システムの動作検証を並列に行うことができる。
以上説明したように、実施の形態1にかかる試験管理装置202によれば、キャプチャデータPから分割された分割キャプチャデータP1〜Pnの中からパケットXを含む分割キャプチャデータPkを検出することができる。パケットXは、送信元の識別情報の発行要求となるパケットであり、装置間においてセッションを維持するための情報(例えば、Cookie情報)を取得するリクエストのパケットである。また、試験管理装置202によれば、分割キャプチャデータPkの後続の分割キャプチャデータの先頭にパケットXを付加して、後続の分割キャプチャデータの先頭にパケットXが付加された分割キャプチャデータP1〜Pnを出力することができる。
これにより、装置間においてセッションを維持するための情報を取得するリクエストが欠落している分割キャプチャデータにパケットXを補間して、検証用の分割キャプチャデータP1〜Pnを出力することができる。
また、試験管理装置202によれば、キャプチャデータPに含まれる各々のパケットのキャプチャ時刻に基づいて、検証期間の開始時刻から基本時間T_divで区切った期間ごとにキャプチャデータPを分割することができる。これにより、各検証系システム230−iにおける検証期間が均等になるようにキャプチャデータPを分割して分割キャプチャデータP1〜Pnを作成することができる。
また、試験管理装置202によれば、キャプチャデータPに含まれる各々のパケットのパケット長に基づいて、検証期間の開始時刻から分割キャプチャデータ単位のデータサイズが基本サイズS_divとなるようにキャプチャデータPを分割することができる。これにより、各検証系システム230−iにおける分割キャプチャデータPiのデータサイズが均等になるようにキャプチャデータPを分割して分割キャプチャデータP1〜Pnを作成することができる。この結果、各検証系システム230−iにおける分割キャプチャデータPiの読み込みにかかる時間を一定にして検証期間の開始時刻を一定にすることができる。なお、各検証系システム230−iにおける検証期間の終了時刻がばらつく可能性があるが、装置間の通信があまり発生していない部分でパケットの送信間隔を詰めることにより終了時刻を早めることが可能である。
また、試験管理装置202によれば、検証用の分割キャプチャデータP1〜Pnの各々の分割キャプチャデータPiを、試験装置203−1〜203−nの各々の試験装置203−iに割り当てることができる。これにより、検証系システム230−1〜230−nにおいて負荷を分散して、検証対象システムの動作検証を並列に行うことができる。
また、試験管理装置202によれば、各検証対象システム230−iにおいて各分割キャプチャデータPiに基づく検証対象システムの動作検証が行われた結果、各試験装置203−iから検証結果を取得することができる。また、試験管理装置202によれば、試験装置203−1〜203−nから取得した検証結果に基づいて、検証対象システムの動作検証を行うことができる。
(実施の形態2)
つぎに、実施の形態2にかかる試験管理装置202について説明する。なお、実施の形態1で説明した箇所と同様の箇所については説明を省略する。
実施の形態2では、実動系システム200の装置間においてDB(データベース)に対する操作を表すパケットが送受信される場合について説明する。具体的には、例えば、実施の形態2では、試験管理装置202は、キャプチャデータPを分割する時刻におけるDBの記憶内容の複製データを生成する。これにより、検証対象システム230−iにおいて、キャプチャデータPを分割する時刻におけるデータベースの記憶内容を復元可能にして、データベースの記憶内容に基づく検証対象システムの機能検証を可能にする。
(DBに対する操作を表すパケットの具体例)
ここで、実動系システム200の装置間において送受信されるDBに対する操作を表すパケットの具体例について説明する。操作対象となるDBは、例えば、実動系システム200のデータベースサーバが有するDBである。
図12および図13は、DBに対する操作を表すパケットの具体例を示す説明図である。図12において、パケット1200は、HTTPヘッダ部1201とHTTPボディ部1202を有する。パケット1200は、HTTPボディ部1202にSELECT文が含まれており、DBの内容を参照するのみ、すなわち、DBの内容を書き換えないリクエストである。具体的には、パケット1200は、ユーザ情報管理テーブルの顧客名「Taro」の預金を参照するための参照系のリクエストである。
図13において、パケット1300は、HTTPヘッダ部1301とHTTPボディ部1302を有する。パケット1300は、HTTPボディ部1301にINSERT文が含まれており、DBの内容を書き換えるリクエストである。具体的には、パケット1300は、手続き情報管理テーブルに、顧客名「Taro」、相手顧客「Jiro」、取引時刻「システム時刻」、取引内容「Transfer」および取引金額「150$」の行を挿入するための更新系のリクエストである。
(試験管理装置202の機能的構成例)
つぎに、実施の形態2にかかる試験管理装置202の機能的構成例について説明する。図14は、実施の形態2にかかる試験管理装置202の機能的構成例を示すブロック図である。図14において、試験管理装置202は、取得部501と、作成部502と、検出部503と、付加部504と、割当部505と、収集部506と、判定部507と、出力部508と、生成部1401と、を含む。取得部501〜出力部508および生成部1401は制御部となる機能であり、具体的には、例えば、図3に示したメモリ302、HDD303などに記憶されたプログラムをCPU301に実行させることにより、または、I/F304により、その機能を実現する。また、各機能部の処理結果は、例えば、メモリ302、HDD303などに記憶される。
生成部1401は、所定期間内に設定された各々の時刻におけるDBの記憶内容を複製した各々の時刻における複製データを生成する機能を有する。ここで、所定期間は、例えば、検証対象システムの動作検証を行う検証期間の開始時刻から終了時刻までの期間である。また、各々の時刻は、キャプチャデータPを分割する時刻であり、検証期間の開始時刻および終了時刻を含む。DBの記憶内容は、例えば、DBに記憶されている各種テーブルの記憶内容である。
具体的には、例えば、生成部1401は、キャプチャデータPを分割する各時刻T0〜TnにおけるDBに記憶されている各種テーブルのスナップショットDB0〜DBnを生成する。なお、時刻T0は検証期間の開始時刻に相当し、時刻Tnは検証期間の終了時刻に相当する。
生成された各時刻T0〜TnにおけるスナップショットDB0〜DBnは、例えば、各検証系システム230−iの試験装置203−iと検証系装置群204−iとがアクセス可能な共有メモリに格納される。共有メモリは、例えば、メモリ302やHDD303により実現される。なお、スナップショットDB0〜DBnの生成例については、図15を用いて後述する。
作成部502は、取得されたキャプチャデータPを各時刻T0〜Tnにおいて分割することにより、分割キャプチャデータP1〜Pnを作成する。これにより、各検証系システム230−iにおいて、各検証期間の開始時刻および終了時刻におけるDBの記憶内容をスナップショットDB0〜DBnから復元することができる。
収集部506は、試験装置203−iに割り当てられた分割キャプチャデータPiとスナップショットDBi-1とに基づく検証対象システムの動作検証が行われた結果、試験装置203−iから検証結果を取得する。ここで、スナップショットDBi-1は、スナップショットDB0〜DBnのうち、検証系システム230−iの検証期間の開始時刻に対応するDBのスナップショットである。
試験装置203−iからの検証結果には、例えば、検証系システム230−iの検証完了後におけるDBの記憶内容と、検証系システム230−iの検証期間の終了時刻に対応するスナップショットDBiから復元されるDBの記憶内容との比較結果を含む。なお、検証結果の具体例については、図18を用いて後述する。
判定部507は、取得された検証結果に含まれるDBの記憶内容の比較結果に基づいて、検証対象システムが正常に動作するか否かを判定する。具体的には、例えば、判定部507は、試験装置203−1〜203−nから取得された比較結果に基づいて、検証対象システムが正常に動作するか否かを判定する。なお、判定結果の具体例については、図18を用いて後述する。
上述した説明では、生成部1401が各時刻T0〜TnにおけるスナップショットDB0〜DBnを生成することにしたが、これに限らない。
例えば、生成部1401は、分割キャプチャデータP1〜Pnの連続する第1の分割キャプチャデータおよび第2の分割キャプチャデータのうち、第1の分割キャプチャデータの中からDBに対する操作を表すパケットを検索することにしてもよい。具体的には、例えば、生成部1401は、第1の分割キャプチャデータの中から、更新系のリクエストのパケットを検索する。更新系のリクエストは、例えば、図13に示したようなINSERT文を含むパケット1300である。
この場合、付加部504は、検索されたパケットを第2の分割キャプチャデータの先頭に付加することにしてもよい。そして、付加部504は、分割キャプチャデータP1〜Pnのうち、分割キャプチャデータPkよりも送信順序が後となる後続の分割キャプチャデータの先頭にパケットXを付加することにしてもよい。
これにより、各検証系システム230−iにおいて、分割キャプチャデータPi-1に含まれる更新系のリクエストを再現することができる。例えば、オンラインショッピングを想定すると、分割キャプチャデータPi-1において更新された買い物リストの内容(商品の追加、削除等)を、分割キャプチャデータPiにおいて再現することができる。
また、生成部1401は、時刻T0におけるDBに記憶されている各種テーブルのスナップショットDB0を生成することにしてもよい。時刻T0は検証期間の開始時刻に相当する。この場合、作成部502は、時刻T0を基準時刻として、キャプチャデータPを分割することにより、分割キャプチャデータP1〜Pnを作成する。
これにより、各検証系システム230−iにおいて、スナップショットDB0から復元される時刻T0におけるDBの記憶内容をもとに、クライアント装置からの参照系のリクエストに対して、サーバから適正な値を返すことができるようになる。ここで、更新系のパケットを付加する付加例について説明する。
(更新系のパケットの付加例)
図15は、更新系のパケットの付加例を示す説明図である。図15において、あるキャプチャデータPから分割された分割キャプチャデータP1,P2が示されている。ただし、分割直後は、分割キャプチャデータP2にはパケットp1,p5,p7,p9は含まれていない。
この場合、生成部1401は、分割キャプチャデータP1の中からDBに対する操作を表すパケットを検索する。図15の例では、パケットp5,p7,p9が検索される。この場合、付加部504は、検索されたパケットp5,p7,p9を分割キャプチャデータP2の先頭に付加する。
さらに、付加部504は、分割キャプチャデータP1から検出されるパケットXを分割キャプチャデータP2の先頭に付加する。図15の例では、パケットp5,p7,p9が付加された付加後の分割キャプチャデータP2の先頭にパケットXであるパケットp1が付加されている。この際、パケットp5,p7,p9の送信時刻は、パケットp1の送信時刻よりも後でかつパケットp10よりも前となるようにそれぞれ変更される。
これにより、パケットp15の時点において、例えば、ユーザ名「Taro」が預金残高確認のリクエストを送信する際、サーバから適正な値を返すことができるようになる。なお、分割キャプチャデータP2に付加するパケットp5,p7,p9は、順序さえ正しければ時間間隔を詰めて送信することも可能である。
(スナップショットDB0〜DBnの生成例)
つぎに、スナップショットDB0〜DBnの生成例について説明する。ここでは、基準時刻を「8:00:00」とし、基準時刻から1時間の時間幅で区切った期間ごとにキャプチャデータPを分割する場合を例に挙げて説明する。
図16は、スナップショットの生成例を示す説明図である。図16において、キャプチャデータ1500から分割された分割キャプチャデータP1,P2が示されている。ただし、分割直後は、分割キャプチャデータP2にはパケットp1は含まれていない。ここで、検証対象システムの検証期間の開始時刻を「8:00:00」とし、終了時刻を「10:00:00」とする。
このため、キャプチャデータPを分割する各時刻T0〜T2は、「T0=8:00:00」、「T1=9:00:00」および「T2=10:00:00」となる。この場合、生成部1401は、キャプチャデータPを分割する各時刻T0〜T2におけるDBに記憶されている各種テーブルのスナップショットDB0〜DB2を生成する。
生成されたスナップショットDB0〜DB2は、例えば、図17に示すスナップショットテーブル1700に格納される。スナップショットテーブル1700は、例えば、各検証系システム230−iの試験装置203−iと検証系装置群204−iとがアクセス可能な共有メモリに記憶されている。
図17は、スナップショットテーブル1700の記憶内容の一例を示す説明図である。図17において、スナップショットテーブル1700は、各スナップショットDB0〜DB2を、キャプチャデータPを分割する各時刻T0〜T2と対応付けて記憶している。各検証系システム230−iの試験装置203−iと検証系装置群204−iは、スナップショットテーブル1700にアクセスすることにより、各時刻T0〜T2のスナップショットDB0〜DB2を取得することができる。
ここで、パケットXが付加された分割キャプチャデータP1およびスナップショットDB0,DB1に基づく試験装置203−1の検証処理の処理例について説明する。
図18は、試験装置の検証処理の処理例を示す説明図である。図18において、ユーザ情報管理テーブル1810の記憶内容1811は、「8:00:00」時点のスナップショットDB0から復元されたものである。各時点のスナップショットは、例えば、図17に示したスナップショットテーブル1700から特定される。
ここで、分割キャプチャデータP1に、図13に示したパケット1300が含まれる場合を想定する。この場合、検証系システム230−1の検証系装置群204−1においてパケット1300が送受信された結果、手続き情報管理テーブル1820の記憶内容が更新される。そして、「8:00:00」時点のユーザ情報管理テーブル1810の記憶内容1811と更新後の手続き情報管理テーブル1820の記憶内容とに基づいて、「9:00:00」時点のユーザ情報管理テーブル1810の記憶内容1812に更新される。
この場合、試験装置203−1は、例えば、スナップショットテーブル1700を参照して、スナップショットDB1から、「9:00:00」時点のユーザ情報管理テーブル1810の記憶内容を復元する。つぎに、試験装置203−1は、ユーザ情報管理テーブル1810の記憶内容1812と、復元した「9:00:00」時点のユーザ情報管理テーブル1810の記憶内容とを比較する。そして、試験装置203−1は、比較した比較結果を含む検証結果を試験管理装置202に送信する。
(検証結果および判定結果の具体例)
ここで、図19を用いて検証結果および判定結果の具体例について説明する。ここでは、分割キャプチャデータP1〜Pnの個数を「4」、すなわち、キャプチャデータPを4分割する場合を例に挙げて説明する。
図19は、検証結果および判定結果の具体例を示す説明図(その2)である。図19において、検証結果1900−1〜1900−4は、試験装置203−1〜203−4から取得される検証対象システムの動作検証の検証結果を表している。
検証結果1900−1には、検証対象システムの機能検証の検証結果「OK」、検証対象システムの性能検証の検証結果「OK」、検証対象システムのページロード時間の平均「AVRG1」、分散「STDN1」およびスナップショット「一致」が示されている。ここで、スナップショット「一致」は、検証系システム230−1の検証完了後におけるDBの記憶内容と、検証系システム230−1の検証期間の終了時刻に対応するスナップショットDB1から復元されるDBの記憶内容とが一致することを示している。
検証結果1900−2には、検証対象システムの機能検証の検証結果「OK」、検証対象システムの性能検証の検証結果「OK」、検証対象システムのページロード時間の平均「AVRG2」、分散「STDN2」およびスナップショット「不一致」が示されている。ここで、スナップショット「不一致」は、検証系システム230−2の検証完了後におけるDBの記憶内容と、検証系システム230−2の検証期間の終了時刻に対応するスナップショットDB2から復元されるDBの記憶内容とが一致しないことを示している。
検証結果1900−3には、検証対象システムの機能検証の検証結果「OK」、検証対象システムの性能検証の検証結果「OK」、検証対象システムのページロード時間の平均「AVRG3」、分散「STDN3」およびスナップショット「一致」が示されている。ここで、スナップショット「一致」は、検証系システム230−3の検証完了後におけるDBの記憶内容と、検証系システム230−3の検証期間の終了時刻に対応するスナップショットDB3から復元されるDBの記憶内容とが一致することを示している。
検証結果1900−4には、検証対象システムの機能検証の検証結果「OK」、検証対象システムの性能検証の検証結果「OK」、検証対象システムのページロード時間の平均「AVRG4」、分散「STDN4」およびスナップショット「一致」が示されている。ここで、スナップショット「一致」は、検証系システム230−4の検証完了後におけるDBの記憶内容と、検証系システム230−4の検証期間の終了時刻に対応するスナップショットDB4から復元されるDBの記憶内容とが一致することを示している。
判定部507は、検証結果1900−1〜1900−4に基づいて、検証対象システムの機能が正常であるか否かを判定する。ここでは、判定部507は、例えば、検証結果1900−1〜1900−4の機能検証の検証結果は「OK」となっているが、検証結果の1900−2のスナップショットが「不一致」となっているため、検証対象システムの機能が異常であると判定する。
また、判定部507は、例えば、検証結果1900−1〜1900−4の性能検証の検証結果がすべて「OK」となっているため、検証対象システムの性能が正常であると判定する。この場合、判定部507は、検証対象システムの機能が異常となったため、最終的に、検証対象システムの動作が異常であると判定する。そして、出力部508は、判定結果1901を出力する。
(試験管理装置202の生成処理手順)
つぎに、実施の形態2にかかる試験管理装置202の生成処理手順について説明する。生成処理は、キャプチャデータPを分割する各時刻T0〜TnにおけるDBに記憶されている各種テーブルのスナップショットDB0〜DBnを生成する処理である。
図20は、実施の形態2にかかる試験管理装置202の生成処理手順の一例を示す説明図である。図20のフローチャートにおいて、まず、試験管理装置202は、時刻Tiの「i」を「i=0」として(ステップS2001)、現在時刻が時刻Tiとなったか否かを判断する(ステップS2002)。
ここで、試験管理装置202は、現在時刻が時刻Tiとなるのを待つ(ステップS2002:No)。そして、試験管理装置202は、現在時刻が時刻Tiとなった場合(ステップS2002:Yes)、DBの記憶内容のスナップショットDBiを生成する(ステップS2003)。
つぎに、試験管理装置202は、時刻Tiの「i」をインクリメントして(ステップS2004)、「i」が「n」より大きくなったか否かを判断する(ステップS2005)。ここで、「i」が「n」以下の場合(ステップS2005:No)、試験管理装置202は、ステップS2002に戻る。
一方、「i」が「n」より大きくなった場合(ステップS2005:Yes)、試験管理装置202は、本フローチャートによる一連の処理を終了する。これにより、キャプチャデータPを分割する各時刻T0〜TnにおけるDBに記憶されている各種テーブルのスナップショットDB0〜DBnを生成することができる。
なお、実施の形態2にかかる試験管理装置202の検証支援処理手順および検証処理手順については、実施の形態1で説明した試験管理装置202の検証支援処理手順および検証処理手順と同様のため、ここでは説明を省略する。
また、分割キャプチャデータPiに更新系のパケットを付加する場合、試験管理装置202は、セッションSjごとに、分割キャプチャデータPi-1から更新系のパケットを検索して、分割キャプチャデータPiに付加することになる。
(試験装置203−iの検証処理手順)
つぎに、実施の形態2にかかる試験装置203−iの検証処理手順について説明する。なお、ここでは、検証系システム230−iにおいて検証試験を行う期間を「基本時間」という。基本時間は、例えば、キャプチャデータPを分割する際の一定の時間幅(例えば、1時間)である。
図21は、実施の形態2にかかる試験装置203−iの検証処理手順の一例を示すフローチャートである。図21のフローチャートにおいて、まず、試験装置203−iは、スナップショットDBi-1からDBの記憶内容を復元する(ステップS2101)。
つぎに、試験装置203−iは、割り当てられた分割キャプチャデータPiと、復元したDBの記憶内容とに基づいて、検証対象システムの動作検証を行う(ステップS2102)。そして、試験装置203−iは、基本時間内に検証対象システムの動作検証が完了したか否かを判断する(ステップS2103)。
ここで、基本時間内に検証対象システムの動作検証が完了した場合(ステップS2103:Yes)、試験装置203−iは、検証系システム230−iの検証完了後におけるDBの記憶内容を取得する(ステップS2104)。つぎに、試験装置203−iは、スナップショットDBiからDBの記憶内容を復元する(ステップS2105)。
そして、試験装置203−iは、取得したDBの記憶内容と、復元したDBの記憶内容とが一致するか否かを判断する(ステップS2106)。ここで、DBの記憶内容が一致する場合(ステップS2106:Yes)、試験装置203−iは、スナップショットが一致することを示す比較結果を含む検証結果を試験管理装置202に送信して(ステップS2107)、本フローチャートによる一連の処理を終了する。
一方、DBの記憶内容が不一致の場合(ステップS2106:No)、試験装置203−iは、スナップショットが不一致であることを示す比較結果を含む検証結果を試験管理装置202に送信して(ステップS2108)、本フローチャートによる一連の処理を終了する。
また、ステップS2103において、基本時間内に検証対象システムの動作検証が完了しなかった場合(ステップS2103:No)、試験装置203−iは、検証失敗を示す検証結果を試験管理装置202に送信して(ステップS2109)、本フローチャートによる一連の処理を終了する。
これにより、検証対象システム230−iにおいて、キャプチャデータPを分割する各時刻Ti-1,TiにおけるDBの記憶内容を復元して、DBの記憶内容に基づく検証対象システムの機能検証を行うことができる。また、実施の形態1で説明したような、レスポンス数やレスポンスコードの比較を合わせて行うことにより、より精度の高い機能検証を行うことができる。
また、操作対象となるDBの構成や機能を変更して検証試験を行う際に、アプリケーションやDBで蓄積するログ情報や統計情報を参照することにより、DBの構成変更や機能変更の有効性や検証試験に失敗した原因を突き止めやすくなる。例えば、DBの台数を増やしたり、DBのキャッシュ機能を利用して検証試験を行う際に、DBに対して非常に負荷がかかる処理が行われた結果、負荷に耐え切れずDBが応答を返さなくなってしまう事象を検知することができる。
以上説明したように、実施の形態2にかかる試験管理装置202によれば、キャプチャデータPを分割する各時刻T0〜TnにおけるDBに記憶されている各種テーブルのスナップショットDB0〜DBnを生成することができる。
また、実施の形態2にかかる試験装置203−iによれば、キャプチャデータPを分割する各時刻Ti-1,TiにおけるDBの記憶内容を復元して、DBの記憶内容に基づく検証対象システムの機能検証を行うことができる。
また、試験管理装置202によれば、分割キャプチャデータP1〜Pnの連続する第1の分割キャプチャデータおよび第2の分割キャプチャデータのうち、第1の分割キャプチャデータの中からDBに対する操作を表す更新系のパケットを検索することができる。そして、試験管理装置202によれば、検索した更新系のパケットを第2の分割キャプチャデータの先頭に付加することができる。
これにより、検証系システム230−iにおいて、分割キャプチャデータPi-1に含まれる更新系のリクエストを再現することができる。この結果、検証系システム230−iにおいて、クライアント装置からの参照系のリクエストに対して、サーバから適正な値を返すことができるようになる。
なお、本実施の形態で説明した検証支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本検証支援プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本検証支援プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
装置間において送受信される一連のデータを取得し、
取得した前記一連のデータを分割することにより複数のデータ群を作成し、
作成した前記複数のデータ群の中から、送信元の識別情報の発行要求となる特定のデータを含むデータ群を検出し、
前記複数のデータ群のうち、検出した前記データ群よりも送信された順序が後となる後続のデータ群の先頭に前記特定のデータを付加し、
前記後続のデータ群の先頭に前記特定のデータを付加した前記複数のデータ群を出力する、
処理を実行させることを特徴とする検証支援プログラム。
(付記2)前記作成する処理は、
前記一連のデータの各々のデータのデータ量に基づいて、前記一連のデータを基準時刻からデータ群単位のデータ量が所定値となるように分割することにより、前記複数のデータ群を作成することを特徴とする付記1に記載の検証支援プログラム。
(付記3)前記作成する処理は、
前記一連のデータの各々のデータの送信時刻に基づいて、前記一連のデータを基準時刻から一定の時間幅で区切った期間ごとに分割することにより、前記複数のデータ群を作成することを特徴とする付記1に記載の検証支援プログラム。
(付記4)前記コンピュータに、
検証対象システムの動作検証を行う複数の検証装置の各々の検証装置に、前記後続のデータ群の先頭に前記特定のデータを付加した前記複数のデータ群の各々のデータ群をそれぞれ割り当て、
前記各々の検証装置に割り当てた前記各々のデータ群に基づく前記動作検証が行われた結果、前記各々の検証装置から前記動作検証の検証結果を取得し、
前記各々の検証装置から取得した前記検証結果に基づいて、前記検証対象システムが正常に動作するか否かを判定し、
判定した判定結果を出力する、
処理を実行させることを特徴とする付記1〜3のいずれか一つに記載の検証支援プログラム。
(付記5)前記コンピュータに、
前記装置間においてデータベースに対する操作を表すデータが送受信される場合、所定期間内に設定された各々の時刻における前記データベースの記憶内容を複製した前記各々の時刻における複製データを生成する処理を実行させ、
前記取得する処理は、
前記所定期間内の前記装置間において送受信される一連のデータを取得し、
前記作成する処理は、
前記一連のデータを前記各々の時刻において分割することにより前記複数のデータ群を作成することを特徴とする付記1〜4のいずれか一つに記載の検証支援プログラム。
(付記6)前記コンピュータに、
検証対象システムの動作検証を行う複数の検証装置がアクセス可能な記憶部に前記各々の時刻における複製データを格納し、
前記複数の検証装置の各々の検証装置に、前記後続のデータ群の先頭に前記特定のデータを付加した前記複数のデータ群の各々のデータ群をそれぞれ割り当て、
前記各々のデータ群と前記記憶部に格納されている前記動作検証の開始時刻に対応する複製データとに基づく前記動作検証が行われた結果、前記動作検証の終了時刻における前記データベースの記憶内容と前記記憶部に格納されている前記動作検証の終了時刻に対応する複製データとの比較結果を前記各々の検証装置から取得し、
前記各々の検証装置から取得した前記比較結果に基づいて、前記検証対象システムが正常に動作するか否かを判定し、
判定した判定結果を出力する、
処理を実行させることを特徴とする付記5に記載の検証支援プログラム。
(付記7)前記コンピュータに、
前記複数のデータ群の連続する第1のデータ群および第2のデータ群のうち、前記第1のデータ群の中からデータベースに対する操作を表すデータを検索し、
検索した前記データを前記第2のデータ群の先頭に付加する処理を実行させ、
前記特定のデータを付加する処理は、
検索した前記データを前記第2のデータ群の先頭に付加した結果、前記後続のデータ群の先頭に前記特定のデータを付加することを特徴とする付記1〜6のいずれか一つに記載の検証支援プログラム。
(付記8)コンピュータが、
装置間において送受信される一連のデータを取得し、
取得した前記一連のデータを分割することにより複数のデータ群を作成し、
作成した前記複数のデータ群の中から、送信元の識別情報の発行要求となる特定のデータを含むデータ群を検出し、
前記複数のデータ群のうち、検出した前記データ群よりも送信された順序が後となる後続のデータ群の先頭に前記特定のデータを付加し、
前記後続のデータ群の先頭に前記特定のデータを付加した前記複数のデータ群を出力する、
処理を実行することを特徴とする検証支援方法。
(付記9)装置間において送受信される一連のデータを取得する取得部と、
前記取得部によって取得された前記一連のデータを分割することにより複数のデータ群を作成する作成部と、
前記作成部によって作成された前記複数のデータ群の中から、送信元の識別情報の発行要求となる特定のデータを含むデータ群を検出する検出部と、
前記複数のデータ群のうち、前記検出部によって検出された前記データ群よりも送信された順序が後となる後続のデータ群の先頭に前記特定のデータを付加する付加部と、
前記付加部によって前記後続のデータ群の先頭に前記特定のデータが付加された前記複数のデータ群を出力する出力部と、
を有することを特徴とする検証支援装置。