電文処理システムのテストデータの生成装置、方法、及びプログラム
【課題】 複数のサーバなどの装置が協調して動作するシステムに新たに追加された装置について、網羅性の高いテストデータを自動的に生成する。
【解決手段】 アプリケーションシステム1内のテスト対象サーバのテストデータを生成する管理サーバ15は、アプリケーションシステム1の一つ以上のサーバから、各サーバに蓄積されているログデータを収集するログデータ収集部161と、パラメータを含むリクエスト電文テンプレートと、前記リクエスト電文テンプレートに対応するリプライ電文テンプレートとを含むテンプレート80の登録、及びパラメータに設定されるパラメータ値70の入力を受け付けるユーザ登録部171と、テンプレート80に含まれるパラメータに、入力を受け付けたパラメータ値を設定してテストデータを生成するテストデータ生成部173と、を備える。
【解決手段】 アプリケーションシステム1内のテスト対象サーバのテストデータを生成する管理サーバ15は、アプリケーションシステム1の一つ以上のサーバから、各サーバに蓄積されているログデータを収集するログデータ収集部161と、パラメータを含むリクエスト電文テンプレートと、前記リクエスト電文テンプレートに対応するリプライ電文テンプレートとを含むテンプレート80の登録、及びパラメータに設定されるパラメータ値70の入力を受け付けるユーザ登録部171と、テンプレート80に含まれるパラメータに、入力を受け付けたパラメータ値を設定してテストデータを生成するテストデータ生成部173と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の装置が電文を送受信しながら協調して動作する電文処理システムのテストデータの生成及びテストの実施のための技術に関する。
【背景技術】
【0002】
複数のサーバなどの装置が協調して動作する大規模コンピュータシステムに、新たにサーバを設置して、このサーバにプログラムのインストール、初期設定などを自動的に行うプロビジョニング技術が知られている(例えば特許文献1)。
【特許文献1】特開平2−201657号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、プロビジョニングによって自動的に追加されたサーバを実際に稼動させる(リリースする)ためには、以下のようなことを確認しなければならない。例えば、追加されたサーバが単独で正常に動作をするか否かや、追加されたサーバを経由したときにシステム全体として正常に動作するか否かなどをテストして確認する必要がある。これらは、従来、テスト実施者が作成したテストデータを流し、その結果をテスト実施者が確認しているため、網羅性に欠けるものであったり、見誤りがあったりして、完璧を期しがたいものであった。
【0004】
さらには、プロビジョニングによって同時に複数のサーバが追加されると、従来はこれらを一括してリリースしていた。この結果、新たにリリースしたサーバのうちの複数で同時に不具合が発生すると、システム全体に与える影響が大きい。
【0005】
そこで、本発明の目的は、複数のサーバなどの装置が協調して動作するシステムに新たに追加された装置について、網羅性の高いテストデータを自動的に生成するための技術を提供することである。
【0006】
本発明のさらなる目的は、自動的に生成されたテストデータを用いたテストの実施、及びその結果の検証を自動的に行うための技術を提供することである。
【課題を解決するための手段】
【0007】
本発明の一つの実施態様に従うテストデータの生成装置は、複数の装置を有し、前記複数の装置が互いに電文を送受信しながら協調して動作する電文処理システム内のテスト対象装置のテストデータを生成する装置であって、前記電文処理システム内の一つ以上の装置から、各装置に蓄積されているログデータを取得する手段と、パラメータを含む電文テンプレートを登録する手段と、前記パラメータに設定されるパラメータ値の入力を受け付けるパラメータ入力手段と、前記登録手段により登録された電文テンプレートに含まれるパラメータに、前記パラメータ入力手段が入力を受け付けたパラメータ値を設定してテストデータを生成する手段と、を備える。
【0008】
本発明の一つの実施態様に従うテストデータの生成装置は、複数の装置を有し、前記複数の装置が互いに電文を送受信しながら協調して動作する電文処理システム内の、前段の装置からの入力リクエストに基づいて出力リクエストを後段の装置へ出力し、前記後段の装置からの入力リプライに基づいて出力リプライを前記前段の装置へ出力するテスト対象装置のテストデータを生成する装置であって、パラメータを含む入力リクエスト電文テンプレートと、前記入力リクエスト電文テンプレートに対応する出力リプライ電文テンプレートとを含む第1テンプレートの登録を受け付ける第1の登録手段と、パラメータを含む入力リクエスト電文テンプレート、及び前記入力リクエスト電文テンプレートに対応する出力リクエスト電文テンプレートと、パラメータを含む入力リプライ電文テンプレート、及び前記入力リプライ電文テンプレートに対応する出力リプライ電文テンプレートと、を含む第2テンプレートの登録を受け付ける第2の登録手段と、前記パラメータに設定されるパラメータ値の入力を受け付けるパラメータ入力手段と、前記第1登録手段により登録された第1テンプレートに含まれるパラメータに、前記パラメータ入力手段により入力されたパラメータ値を設定して入力リクエストテストデータと出力リプライテストデータとを含む中間テストデータを生成する手段と、前記中間テストデータと前記第2登録手段により登録された第2テンプレートに基づいて、前記入力リクエストテストデータに対応する出力リクエストテストデータと、前記出力リプライテストデータに対応する入力リプライテストデータとを生成し、最終テストデータを生成する手段と、を備える。
【0009】
好適な実施形態では、前記電文処理システム内の一つ以上の装置から、各装置に蓄積されているログデータを取得する手段をさらに備える。そして、前記中間テストデータを生成する手段は、前記パラメータ入力手段により入力されたパラメータ値、または前記取得手段により取得されたログデータから抽出した値を設定して前記中間テストデータを生成するようにしてもよい。
【0010】
好適な実施形態では、前記中間テストデータ生成手段は、前記パラメータ入力手段により入力されたパラメータ値を、前記ログデータから抽出した値よりも優先させて設定するようにしてもよい。
【0011】
好適な実施形態では、前記入力リクエストテストデータを前記テスト対象装置へ入力して、前記電文処理システムを動作させてテストを実行する手段と、前記テスト実行手段が前記電文処理システムを動作させることにより生成された出力リクエスト、入力リプライ及び出力リプライを含む実行結果データを収集する手段と、前記最終テストデータ生成手段により生成されたテストデータと前記収集手段により収集された実行結果データとを比較して、テスト結果を検証する手段と、をさらに備えるようにしてもよい。
【0012】
好適な実施形態では、前記電文処理システムの環境を変更させ、及び変更後の環境を変更前へ復帰させる変更復帰手段をさらに備えるようにしてもよい。
【発明を実施するための最良の形態】
【0013】
以下、本発明の一実施形態に係るアプリケーションシステム及びその管理を行う管理装置(管理サーバ)について、図面を参照して説明する。
【0014】
図1は、本実施形態に係るシステムの全体構成を示す図である。本システムは、所定の業務処理を実行するアプリケーションシステム1と、顧客が使用するクライアント2とがネットワーク9を介して接続されている。そして、アプリケーションシステム1には、このシステムを管理するための管理サーバ15が接続されている。
【0015】
アプリケーションシステム1は、クライアント2からのリクエストを振り分けて負荷分散をするロードバランサ10と、クライアント2に対する入出力インタフェースを提供する複数のPLサーバ11を含むPLサーバ群11Aと、様々な業務処理(ビジネスロジック、BL)を実行する複数のBLサーバ12を含むBLサーバ群12A(第1のグループ)と、データベース14の参照、更新などを行う複数のDBサーバ13を含むDBサーバ群13A(第2のグループ)と、データベース(DB)14とを備える。PLサーバ11が、クライアント2へ表示する画面の制御(プレゼンテーションロジック、PL)などのインタフェースを提供するインタフェース装置である。BLサーバ12(第1の装置)及びDBサーバ13(第2の装置)が、アプリケーションシステム1の内部処理を実行する内部装置である。
【0016】
クライアント2、各PLサーバ11、各BLサーバ12、各DBサーバ13および管理サーバ15は、いずれも例えば汎用的なコンピュータシステムにより構成され、以下に説明する各サーバ等2,11,12,13,15内の個々の構成要素または機能は、例えば、コンピュータプログラムを実行することにより実現される。
【0017】
PLサーバ群11Aの各PLサーバ11,BLサーバ群12Aの各BLサーバ12及びDBサーバ群13Aの各DBサーバ13は、それぞれ共通の構成を備え、同じ処理を実行するようになっている(図2参照)。つまり、サーバ群11A,12A,13Aがそれぞれ複数のサーバにより多重化されている。これは、耐障害性及び処理性能を確保するためである。そして、各サーバ群11A,12A,13Aの中では、それぞれどのサーバに処理を実行させても、同じ処理が行われる。この結果、各PLサーバ11,各BLサーバ12及び各DBサーバ13を、それぞれ比較的安価なパーソナルコンピュータなどを用いて実現するとともに、ロードバランサ10によって負荷分散することにより、本システム1は、高額の高速コンピュータを導入することなく、低コストでハイパフォーマンスを得ることができる。さらには、本システムは、処理するデータ量の増減に伴って、各サーバ11,12,13の台数を容易に増減させることができ、これにより容易に処理能力を調整することができる。本実施形態では、管理サーバ15が、アプリケーションシステム1の動作の正常性を確認し、新たに追加されたサーバ11,12,13をテストするための処理を実行し、そのサーバをリリースするための処理を実行する。
【0018】
なお、本システムにおけるPLサーバ11の台数、BLサーバ12の台数、及びDBサーバ13の台数は、同じ台数でもよいし、それぞれ異なる台数でもよい。
【0019】
アプリケーションシステム1では、クライアント2からのリクエストがPLサーバ群11A、BLサーバ群12A、及びDBサーバ群13Aの順に伝達され、このリクエストに対するリプライがDBサーバ群13AからBLサーバ群12A、PLサーバ群11Aへと伝達されて、クライアント2へ送信される。詳細に説明すれば、リクエスト及びリプライは、例えば以下のように伝達される。
【0020】
PLサーバ群11Aは、前段であるクライアント2からリクエスト電文21(図2参照)を受け付けると、1台のPLサーバ11が所定の処理を実行後、後段のBLサーバ群12Aに対するサーバ間リクエスト電文A23(図2参照)を生成して、出力する。
【0021】
BLサーバ群12Aは、前段のPLサーバ群11Aからサーバ間リクエスト電文A23を受け付けると、1台のBLサーバ12が所定の処理を実行後、後段のDBサーバ群13Aに対するサーバ間リクエスト電文B25(図2参照)を生成して、出力する。
【0022】
DBサーバ群13Aは、前段のBLサーバ群12Aからサーバ間リクエスト電文B25を受け付けると、1台のDBサーバ13がDB14に対する所定の処理を実行する。そして、前段のBLサーバ群12Aに対するサーバ間リプライ電文B35(図2参照)を生成して、出力する。
【0023】
BLサーバ群12Aでは、1台のBLサーバ12が後段のDBサーバ群13Aからのサーバ間リプライ電文B35に基づいて、前段のPLサーバ群11Aに対するサーバ間リプライ電文A33(図2参照)を生成して、出力する。
【0024】
PLサーバ群11Aでは、1台のPLサーバ11が後段のBLサーバ群12Aからのサーバ間リプライ電文A33に基づいて、前段のクライアント2に対するクライアントリプライ電文31(図2参照)を生成して、出力する。
【0025】
図2には、PLサーバ11,BLサーバ12及びDBサーバ13の詳細な構成図を示す。
【0026】
PLサーバ11は、ロードバランサ10を介してクライアント2から送られてくるクライアントリクエスト電文21を受信し、これをサーバ間リクエスト電文A23に変換していずれかのBLサーバ12へ出力する。また、いずれかのBLサーバ12からサーバ間リプライ電文A33を受信すると、これをクライアントリプライ電文31に変換して、ロードバランサ10を介してクライアント2へ送信する。
【0027】
PLサーバ11は、同図(a)に示すように、電文識別子付与部111と、PL処理部113と、ステータス記憶部114と、電文記録部115と、PLログ117とを備える。
【0028】
電文識別子付与部111は、クライアントリクエスト電文21を受信すると、これに電文識別子を付与する。電文識別子は、それぞれのPLサーバ11が生成するユニークな数字または文字列等である。例えば、PLサーバ11に割り当てられているIPアドレスと、そのサーバ11内でのカウンタ値(シリアル番号)とを組み合わせて、電文識別子を生成してもよい。
【0029】
PL処理部113は、クライアントリクエスト電文21及びサーバ間リプライ電文A33に従って、所定の処理を実行する。例えば、クライアントリクエスト電文21に対しては、その電文に含まれるデータの整合性チェックなどを行い、サーバ間リクエスト電文A23を生成する。ここで、サーバ間リクエスト電文A23に、電文識別子付与部111によってクライアントリクエスト電文21に付与された電文識別子が付与され、クライアントリクエスト電文21とサーバ間リクエスト電文A23とが関連づけられる。また、サーバ間リプライ電文A33に対しては、クライアント2に表示される画面(Webページ)の合成を行い、それを含むクライアントリプライ電文31を生成する。ここで、サーバ間リプライ電文A33に付与されている電文識別子が、クライアントリプライ電文31には含まれない。しかし、電文記録部115がPLログ117に格納するクライアントリプライ電文31のログデータには付与される。
【0030】
ステータス記憶部114については後述する。
【0031】
電文記録部115は、クライアントリクエスト電文21を受信したとき、及びクライアントリプライ電文31を出力するときに、それぞれの電文21,31の電文識別子を含む、各電文に関連する情報をPLログ117に格納する。
【0032】
図3に、PLログ17のデータ構造の一例を示す。PLログ117には、PLサーバ11がクライアント2に対して送受信した電文の送受信履歴が記憶されている。例えば、PLログ117は、データ項目として、電文識別子51と、送信サーバ名52と、受信サーバ名53と、電文内容54とを有する。
【0033】
図2(b)には、BLサーバ12の構成を示す。BLサーバ12は、PLサーバ11から送られてくるサーバ間リクエスト電文A23を受信し、これをサーバ間リクエスト電文Bに変換して、いずれかのDBサーバ13へ出力する。また、いずれかのDBサーバ13からサーバ間リプライ電文B35を受信すると、これをサーバ間リプライ電文A33に変換して、PLサーバ11へ送信する。なお、サーバ間リプライ電文A33の送信先は、サーバ間リクエスト電文A23の送信元のPLサーバ11である。
【0034】
BLサーバ12は、内部の構成として、BL処理部123と、ステータス記憶部124と、電文記録部125と、BLログ127とを備える。
【0035】
BL処理部123は、サーバ間リクエスト電文A23及びサーバ間リプライ電文B35に従って、所定の処理を実行する。例えば、サーバ間リクエスト電文A23を受信したときは、その電文の内容に従って所定の業務処理を実行し、サーバ間リクエスト電文B25を生成する。ここで、サーバ間リクエスト電文B25には、サーバ間リクエスト電文A23に付与されている電文識別子が付与され、サーバ間リクエスト電文A23とサーバ間リクエスト電文B25とが関連づけられる。また、サーバ間リプライ電文B35を受信したときは、その電文の内容に従って所定の業務処理を実行し、サーバ間リプライ電文A33を生成する。この場合も同様に、サーバ間リプライ電文A33には、サーバ間リプライ電文B35に付与されている電文識別子が付与され、サーバ間リプライ電文A33とサーバ間リプライ電文B35とが関連づけられる。
【0036】
ステータス記憶部124については後述する。
【0037】
電文記録部125は、サーバ間リクエスト電文A23を受信したとき、及びサーバ間リプライ電文A33を出力するときに、それぞれの電文23,33の電文識別子を含む、各電文に関連する情報をBLログ127に格納する。
【0038】
BLログ127には、BLサーバ12がPLサーバ11に対して送受信した電文の送受信履歴が記憶されている。BLログ127のデータ構造は、PLログ117と共通である。
【0039】
図2(c)には、DBサーバ13の構成を示す。DBサーバ13は、BLサーバ12から送られてくるサーバ間リクエスト電文B25を受信し、これに基づいてDB14の参照、更新などのDB処理を実行する。そして、この実行結果に基づいてサーバ間リプライ電文B35を生成し、これをサーバ間リクエスト電文B25の送信元のBLサーバ12へ送信する。
【0040】
DBサーバ13は、内部の構成として、DB処理部133と、ステータス記憶部134電文記録部135と、DBログ137とを備える。
【0041】
DB処理部133は、サーバ間リクエスト電文B25を受信すると、その電文の内容に従ってDB14の参照、更新などの処理を実行する。そして、その処理結果に基づいてサーバ間リプライ電文B35を生成する。ここで、サーバ間リプライ電文B35には、サーバ間リクエスト電文B25に付与されている電文識別子が付与され、サーバ間リプライ電文B35とサーバ間リクエスト電文B25とが関連づけられる。
【0042】
ステータス記憶部134については後述する。
【0043】
電文記録部135は、サーバ間リクエスト電文B25を受信したとき、及びサーバ間リプライ電文B35を出力するときに、それぞれの電文25,35の電文識別子を含む、各電文に関連する情報をDBログ137に格納する。
【0044】
DBログ137には、DBサーバ13がBLサーバ12に対して送受信した電文の送受信履歴が記憶されている。DBログ137のデータ構造は、PLログ117及びBLログ127と共通である。
【0045】
ここで、図4にそれぞれの電文フォーマットを示す。同図(a)に示すように、クライアントリクエスト電文21は、HTMLなどで記述されたクライアントリクエスト本文を含んでいる。同図(b)に示すように、クライアントリプライ電文31は、HTMLなどで記述されたクライアントリプライ本文を含んでいる。同図(c)に示すサーバ間リクエスト電文23、25には、それぞれのリクエスト内容を示すサーバ間リクエスト本文と、電文識別子とが含まれ、同様に同図(d)に示すサーバ間リプライ電文33、35には、それぞれのリプライ内容を示すサーバ間リプライ本文と、電文識別子とが含まれる。
【0046】
図5に、管理サーバ15の構成図を示す。管理サーバ15には、キーボードまたはポインティングデバイスなどの入力装置7と液晶ディスプレイなどの表示装置8が接続されている。そして、管理サーバ15は、外部インタフェースとして、これらの入出力装置を制御する入出力装置制御部153と、アプリケーションシステム1とのインタフェースであるシステムインタフェース151とを有する。
【0047】
管理サーバ15は、各サーバ11,12,13からログデータを収集し、その解析などを行う。さらに、管理サーバ15は、プロビジョニングなどによりアプリケーションシステム1に自動的に配備されたサーバ11,12,13に対し、テストデータの生成、テストの実行及びテスト結果の検証などの自動テスト処理を行う。さらに、管理サーバ15は、プロビジョニングにより配備されたサーバ11,12,13を実際に稼働させるリリース制御を行う。
【0048】
これらの機能を実現するために、管理サーバ15は、例えば、以下のような構成を備える。管理サーバ15は、まず、主にログの処理に関する構成として、ログデータ収集部161と、収集したログを保存しておく収集ログ記憶部163と、収集したログデータを解析するログデータ解析部165とを備える。また、管理サーバ15は、主に自動テストのための構成として、ユーザ登録部171と、登録情報記憶部172と、テストデータ生成部173と、テストデータ記憶部174と、テスト実行部175と、テスト結果記憶部176と、テスト結果処理部177と、DB設定変更部178とを備える。そして、主にリリース制御に関する構成として、リリース管理部181と、リリース条件表182と、ステータス表183とを備える。以下、各構成について詳細に説明する。
【0049】
ログデータ収集部161は、システムインタフェース151を介して、アプリケーションシステム1の各サーバ11,12,13がそれぞれ保持しているログデータを収集し、収集ログ記憶部163に格納する。
【0050】
図6に収集ログ記憶部163に記憶されているログデータの一例を示す。収集ログ記憶部163のデータ項目は、PLログ117、BLログ127及びDBログ137と同一である。収集されたログデータには、クライアントリクエスト電文21,クライアントリプライ電文31,サーバ間リクエスト電文23,25及びサーバ間リプライ電文33,35のすべてのログが含まれているが、それらは互いに電文識別子51により関連づけが可能である。例えば、図6のレコード163a〜fは、いずれも電文識別子51が共通であるから、一つのクライアントリクエスト電文21及びそれから派生した各電文のログであることがわかる。さらに、この例では、送信サーバ名52及び受信サーバ名53により、レコード163aがクライアントリクエスト電文21,レコード163bがサーバ間リクエスト電文A23,レコード163cがサーバ間リクエスト電文B25,レコード163dがサーバ間リプライ電文B35,レコード163eがサーバ間リプライ電文A33,及びレコード163fがクライアントリプライ電文31であることがわかる。
【0051】
なお、各リプライ電文31,33,35は、各リクエスト電文21,23,25が通ったPLサーバ、BLサーバ及びDBサーバと同一のPLサーバ、BLサーバ及びDBサーバを通るようになっている。つまり、同じ電文識別子を有する電文は、PLサーバからDBサーバへ向かう昇り方向とDBサーバからPLサーバへ向かう下り方向とでは、同一のパスを通る。
【0052】
ログデータ解析部165は、収集ログ記憶部163に格納されているログデータを解析し、アプリケーションシステム1の動作の正常性の確認をする。例えば、ログデータ解析部165は、電文識別子51をキーにして収集したログデータのレコードをソートし、あるいは、同一の電文識別子51を有する複数のレコードを1グループとしてまとめる。さらに、ログデータ解析部165は、同一の電文識別子51を有するレコード間で、電文内容54の整合性チェックを行う。そして、これらの解析結果を、入出力装置制御部153が表示装置8に表示する。
【0053】
図7は、ログデータ解析部165がログデータの各レコードを電文識別子51でソートした結果の一例を示す図である。
【0054】
図8は、ログデータ解析部165によって抽出された電文識別子「192.168.0.102-0845」のレコード群を示す。ログデータ解析部165は、このレコード群に対して、さらに、整合性チェックを行う。例えば、「送信サーバ名52→受信サーバ名53」のペアにおいて、「client→PL*」「PL*→BL*」「BL*→DB*」「DB*→BL*」「BL*→PL*」「PL*→client」のすべてが存在することを確認する。これにより、入力されたクライアントリクエスト電文21が途中で消失せずに、最終的なクライアントリプライ電文31を返しているか否かを確認できる。
【0055】
さらに、昇り電文と降り電文では同一パスを経由するようになっているため、ログデータ解析部165は、PLサーバ及びBLサーバのサーバ名が同一であるか否かをチェックする。また、電文内容54において、特定のパラメータに同一の値が設定されているか(例えばkozaID=1234567)などをチェックする。これにより、入力されたクライアントリクエスト電文21の内容が、その後生成される各電文に受け継がれているかを確認できる。
【0056】
また、ログデータ解析部165は、予め登録されている電文確認表60を参照し、同一電文識別子51を有するレコード群が、この表60に登録されているリクエスト電文とリプライ電文の対応パターンに合致するか否かを判定する。電文確認表60は、予めユーザによって登録されて、登録情報記憶部172に格納されている。
【0057】
図9に、電文確認表60の一例を示す。電文確認表60は、対象サーバ61と、対象サーバ61が受信するリクエスト電文内容62と、対象サーバが出力するリプライ電文内容63とが対応付けられている。一つのリクエスト電文62に対して、生じ得るリプライ電文63は複数存在することがある。図9の場合、PLサーバに対するリクエスト電文内容601に対するリプライとしては、リプライ電文内容611〜613があり得ることを示している。また、BLサーバが受信するリクエスト電文内容602に対するリプライとしては、リプライ電文内容614,615があり得ることを示している。さらに、DBサーバのリクエスト電文内容603に対するリプライとしては、リプライ電文内容616,617があり得ることを示している。
【0058】
そして、ログデータ解析部165は、同じ電文識別子51を有するレコードの中から、PLサーバが受信したクライアントリクエスト電文21のレコード(つまり、送信サーバ52がクライアント、受信サーバ53がPLサーバであるレコード163a)と、クライアントリプライ電文31のレコード(つまり、送信サーバ52がPLサーバ、受信サーバ53がクライアントであるレコード163f)を抽出する。そして、ここで抽出したレコードのペアが、電文確認表60のリクエスト電文内容601とリプライ電文内容611〜613のペアのいずれかに合致するかを判定する。
【0059】
ログデータ解析部165は、BLサーバに対するリクエスト及びリプライのペア、とDBサーバに対するリクエスト及びリプライのペアについても同様に抽出し、電文確認表60に登録されているペアと合致するか否かを判定する。
【0060】
これにより、各リクエスト電文に対し、予め定められている所定のリプライ電文が生成されているか否かを確認できる。
【0061】
次に、再び図5を参照し、自動テスト処理に関する構成及び処理について説明する。
【0062】
ユーザ登録部171は、入力装置7を用いてユーザが入力するユーザ設定情報の登録を受け付ける。ユーザ登録部171が受け付けたユーザ設定情報は、登録情報記憶部172及びリリース条件表182に登録される。
【0063】
登録情報記憶部172には、ユーザが設定した情報が記憶されている。図5の場合、ユーザ設定情報として、既に説明した電文確認表60と、テストデータに設定されるパラメータ値が記憶されているパラメータ表70と、テンプレート80と、DB設定表90とが記憶されている。
【0064】
図10には、パラメータ表70の一例を示す。すなわち、パラメータ表70は、クライアントリクエスト電文21に含まれるパラメータ71と、それに設定される複数のパラメータ値72とが対応付けて登録されている。
【0065】
図11には、テンプレート80の例を示す。すなわち、同図(a)には、送受信サーバを特定する通信パターン81ごとに、入力リクエスト電文82とそれに対する生成リプライ電文83とが対応付けられているテンプレートAを示す。例えば、テスト対象サーバに入出力する電文を同図(c)に示すようにX,Y,Z,Wとすれば、テンプレートAでは、XとWとの対応関係が示されている。また、同図(b)には、送受信サーバを特定する通信パターン85ごとに、あるサーバの前段に対する電文84と後段に対する電文86とが対応付けられているテンプレートBを示す。例えば同図(c)と対応させると、前段に対する電文84がXまたはWであり、後段に対する電文86がYまたはZであり、XとYまたはWとZがそれぞれ対応付けられている。
【0066】
図12には、DB設定表90の一例を示す。DB設定表90には、同図(a)に示すデータ設定表901と同図(b)に示すデータ戻し表902とがある。データ設定表901及びデータ戻し表902は、いずれも、値を設定する表名91と、値を設定する条件92と、値を設定する列名93と、設定値94とを、データ項目として有する。
【0067】
テストを実行する場合、所定の条件下でテストを実行するために、DB14の設定を一時的に変更したいときがある。このような場合のために、データ設定表901の設定値94にはユーザが入力した値が記憶されている。また、DB14の設定を一時的に変更してテストを実行した後は、その設定を元に戻す必要がある。そこで、データ戻し表902の表名91、条件92及び列名93には、設定を変更する際の表名、条件及び列名が記憶されるとともに、設定値94には、設定を変更する際に取得した変更前のDB14の値が記憶される。
【0068】
テストデータ生成部173は、パラメータ表70、テンプレート80及び収集ログ記憶部163に格納されているログデータに基づいてテストデータを生成し、テストデータ記憶部174に格納する。例えば、テンプレート80に含まれているパラメータに、パラメータ表70に設定されているパラメータ値72を優先させて設定し、パラメータ表70にパラメータ値が設定されていないパラメータについては、ログデータから抽出して設定する。これにより、テスト実施者は、自らが着目するパラメータについてだけパラメータ値を登録しておけばよい。この場合、特に着目しないパラメータについてはログデータから自動設定される。従って、テンプレート80内のすべてのパラメータに値が設定されるので、テストデータの不備によりテストが滞ってしまうようなことがない。
【0069】
一方、パラメータ表70にすべてのパラメータの値が設定されていれば、ログデータは不要である。また、パラメータ表70がないとき、あるいはパラメータ表70にはパラメータ値が何も設定されていないときは、ログデータからすべてのパラメータ値を取得してテストデータを生成してもよい。
【0070】
本実施形態では、まず、テンプレートA、パラメータ表70及びログデータに基づいて中間的なテストデータであるテストデータA(図13参照)が生成される。そして、テストデータAとテンプレートBに基づいて最終的なテストデータであるテストデータB(図14参照)が生成される。以下、具体的に説明する。
【0071】
まず、図11(a)のテンプレートAは、各サーバに対するリクエスト電文(X)と各サーバから出力され得るリプライ電文(W)とのペアを定義している。そこで、テストデータ生成部173は、テンプレートAの各パラメータに図10に示すパラメータ表70に登録されている値を設定する。この例では、支店ID(sitenID)、口座ID(kozaID)、パスワード(passward)、口数(item_count)及び残高(zandaka)に、パラメータ表70に登録されているそれぞれの値がセットされる。
【0072】
この段階では、テンプレートAにおけるパラメータitemには値がセットされていない。そこで、テストデータ生成部173は、パラメータitemに設定すべき値を、ログデータのいずれかのレコードから抽出してセットする。このようにして、図13に示すテストデータAが生成される。
【0073】
図13のテストデータAは、サーバA401からサーバB402へのリクエスト電文(X)403及びそのリクエスト電文(X)403に対するサーバBからサーバAへのリプライ電文(W)404からなる。図13の例では、テストデータ431及び432のリクエスト電文(X)403は共通であり、これに対するリプライ電文(W)404として異なるパターンがセットされたものである。
【0074】
次に、図11(b)のテンプレートBは、リクエスト電文(X)とそれにより生成される後段へのリクエスト電文(Y)、及びリプライ電文(W)とそれが生成される前の後段からのリプライ電文(Z)とのペアを定義している。そこで、テストデータ生成部173は、テンプレートBに図13のテストパターンAのリクエスト電文(X)403及びリプライ電文(W)404を適用し、それぞれに対応する電文Y,Zを生成する。このとき、テストパターンAにおいて既に設定されているパラメータは、それぞれ対応する電文Y,Zに設定される。この処理により生成されたテストデータBを図14に示す。
【0075】
図14のテストデータBは、テスト対象サーバ411に対するリクエスト電文(X)412と,これに対応するリプライ電文(W)413と、後段に対するリクエスト電文(Y)414と、後段からのリプライ電文(Z)415とがワンセットになっている。ここで、テストデータ441,442,443はいずれもリクエスト電文(X)412は共通である。これは、同じリクエスト電文(X)412を入力した場合でも、そこから派生する電文Y,Z,Wについては複数のパターンが生じ得るので、正常に動作する場合のすべてのパターンが用意されているからである。
【0076】
テストデータ記憶部174には、上記のようにして生成されたテストデータBが記憶される。
【0077】
テスト実行部175は、テストデータ記憶部174からテストデータを取得してテストを実行し、そのテスト結果をテスト結果記憶部176に格納する。例えば、テスト実行部175は、テストデータ記憶部174からテストデータBのテストデータを1つずつ読み出し、システムインタフェース151を介して、テスト対象サーバ411にリクエスト電文(X)412を入力する。テスト対象サーバ411は、リクエスト電文(X)412が入力されると、この電文412に基づいて所定の処理を実行する。その結果、テスト対象サーバ411から後段のサーバへリクエスト電文(Y)が出力され、後段の各サーバもこれに従って動作する。そして、最終的にテスト対象サーバからリプライ電文(W)が出力される。ここで、テスト実行部175は、入力したリクエスト電文(X)412に基づく電文Y,Z,Wを、テスト対象サーバ及び後段のサーバのログファイルからそれぞれ取得して、これらを関連づけた形でテスト結果記憶部176に格納する。
【0078】
テスト結果処理部177は、テスト結果記憶部176に記憶されているテスト結果の電文と、テストデータ記憶部174に記憶されているテストデータBとを対比してテスト結果の解析などを行う。この解析結果は、表示装置8に出力される。
【0079】
例えば、テスト結果処理部177は、入力されたリクエスト電文(X)及びこれに対するサーバの処理結果として得られた電文Y,Z,Wの組が、テストデータ記憶部174に記憶されているテストデータBのいずれかと一致するか否かを判定する。いずれかと一致すれば、アプリケーションシステム1は正常に動作していると考えられる。一方、いずれとも一致しない場合は、テスト対象サーバまたはその後段のサーバに何らかの異常があると考えられる。これらの解析結果は、例えば表示装置8に一覧表示される。
【0080】
これにより、テンプレート及び必要なパラメータを設定するだけで、網羅的なテストデータの生成、テストの実施及びその結果の解析を自動的に行うことができる。さらに、テスト実施者は、表示装置8にテストの解析結果が表示されるので、システムが正常であるかを直ちに知ることができる。
【0081】
DB設定変更部178は、テストを実施するために、アプリケーションシステム1の動作環境の変更及びその復帰を行う。例えば、DB設定変更部178は、DB設定表90を参照して、システムインタフェース151を介してDB14の内容を一時的に変更する。例えば、DB設定変更部178は、データ設定表901(図12(a))に基づいてDB14を更新する。また、上記の設定変更をする際に、DB設定変更部178は、変更前の状態をデータ戻し表902(図12(b))に設定する。そして、テスト終了後に、データ戻し表902を参照して前の状態へ戻す。
【0082】
例えば、図12(a)に示すデータ設定表901の場合、DB設定変更部178は、表名91に設定されている表から、条件92を満たすレコードを抽出する。そして、そのレコードの列名93に合致する列を設定値94に設定されている値に変更する。これにより、テストを行うときのDBの設定を自在に変更することができる。
【0083】
次に、リリース制御に関する構成及び処理について説明する。
【0084】
リリース管理部181は、システムインタフェース151を介して、アプリケーションシステム1内の各サーバ11,12,13のステータスを照会する。例えば、各サーバ内のステータス記憶部114、124,134に記憶されている各サーバのステータスを取得する。ここで取得した各サーバ11,12,13のステータスは、ステータス表183に格納される。
【0085】
ここで、各サーバ内のステータス記憶部114、124,134に格納されるステータス情報について説明する。
【0086】
アプリケーションシステム1に新たに追加されたサーバの場合、ステータス記憶部にはプロビジョニングが終了した時点で「未テスト」というステータスが設定される。その後、上述したテストが実行されているときは、テスト実行部175によりステータスが「テスト中」に変更される。そして、表示装置8に表示されたテスト結果などにより、すべてのテストが正常終了したことが確認され、テスト実施者によりテスト完了を示す入力がなされると、そのサーバのステータス記憶部には、アプリケーションシステム1の一部として正式に稼働可能であることを示す「リリース可」というステータスが設定される。さらに、後述するように、リリース管理部181がリリースしたときは、リリースされたサーバ内のステータス記憶部には、「リリース済み」というステータスが設定される。
【0087】
図15には、ステータス表183の一例を示す。すなわち、ステータス表183には、サーバ名1831とステータス1832とが対応付けて登録されている。ステータス1832には、各サーバのステータス記憶部114、124,134から取得したステータスが格納される。
【0088】
また、リリース管理部181は、ステータス表183のステータス1832が「リリース可」であるサーバについて、リリース条件表182に設定された条件が満たされているか否かを判定し、条件が満たされている場合にそのサーバをリリースする。ここで、サーバのリリースを実行するためには、リリース管理部181がリリース対象のサーバを指定して、所定のリリース処理コマンドを発行する。リリース処理コマンドは、例えば、リリース管理部181が有するコマンド表184を参照して取得する。
【0089】
図16には、コマンド表184の一例を示す。コマンド表184には、サーバ種別1841ごとにリリース処理コマンド1842が登録されている。リリース管理部181は、リリースするサーバの種別に応じて、リリース処理コマンドを取得して、実行する。
【0090】
図17には、リリース条件表182の一例を示す。すなわち、リリース条件表182には、リリース対象サーバ1821と依存サーバ1822とが対応付けて記憶されている。ここで、依存サーバ1822とは、リリース対象サーバ1821をリリースするためにはリリース済みでなければならないサーバである。つまり、リリース対象サーバ1821がリリース可能な状態であっても、依存サーバ1822がリリース済みでなければリリース対象サーバ1821をリリースすることができない。リリース条件表182は、システム管理者等によって予め設定される。
【0091】
つぎに、上記のような構成を備えたシステムにおける種々の処理手順について、図18〜図20のフローチャートを用いて説明する。
【0092】
まず、図18には、ログの収集及び解析を行う場合の管理サーバ15の処理手順を示す。
【0093】
ログデータ収集部161がアプリケーションシステム1内の各サーバ11,12,13から、それぞれに蓄積されているログデータを収集し、収集ログ記憶部163に格納する(S101)。ログデータ解析部165は、収集ログ記憶部163に格納されているログデータを、各レコードに含まれている電文識別子をキーにして分類し、電文識別子別に抽出する(S102)。ログデータ解析部165は、登録情報記憶部172に予め登録されている電文確認表60を参照して、同じ電文識別子を有する電文間の整合性をチェックする(S103)。ここでは、例えば、リクエストに対するリプライが予め定められているパターンと一致するか否かを判定する。そして、その解析結果を表示装置8に表示出力する(S104)。
【0094】
これにより、複数のサーバ間で電文を送受信して動作するアプリケーションシステム1において、各サーバ間で送受信される電文が正常であるか否かを自動的に確認することができる。さらに、各サーバ群でそれぞれ複数のサーバを有し、様々な経路で電文がやりとりされる場合であっても、すべての電文のやりとりをもれなくチェックすることができ、網羅性の高いテストを行うことができる。
【0095】
次に、図19には、テストデータの生成及びテストの実施を自動的に行う場合の管理サーバ15の処理手順を示す。
【0096】
テスト実施者が、テストデータの基となるテストパターンのテンプレート及びそのテンプレートにセットされるパラメータ値を登録する(S201)。ログデータ収集部161は、アプリケーションシステム1の各サーバ11,12,13からログデータを収集し、収集ログ記憶部163に格納する(S202)。
【0097】
そして、テストデータ生成部173は、上述の処理で登録されたテンプレート及びパラメータ値と、ログデータとに基づいて、中間的なテストデータであるテストデータAを生成する(S203)。このとき、テスト実施者が登録したパラメータ値をまず設定し、テスト実施者が設定していないパラメータについては、ログデータから取得した値を設定する。次に、テストデータ生成部173は、テストデータAとテンプレートとを用いて、最終的なテストデータであるテストデータBを生成する(S204)。
【0098】
ここで、テストデータを流してテストを実施するに当たり、テスト環境であるDB14の設定を変更する必要がある場合には、DB設定変更部178が、予め登録されているDB設定表90を参照して設定変更を行う(S205,206)。
【0099】
そして、テスト実行部175がテスト対象サーバにテストデータのリクエスト電文を入力して、アプリケーションシステム1を動作させて、テストを実施する(S207)。
【0100】
テストの実施が終了すると、ステップS206でDBの設定変更を行っている場合は、その変更を元に戻し、変更前の状態に復帰させる(S208,209)。
【0101】
テスト結果処理部177は、テスト結果記憶部176に格納されているテスト結果を、テストデータ記憶部174に記憶されているテストデータと比較して検証する(S210)。そして、検証結果が、表示装置8に表示される。
【0102】
これにより、テスト実施者は、数多くのテストデータそのものを作成しなくても、テンプレートとしてテストしたいパターンを登録し、重要なパラメータ値を登録しておくことにより、テストデータが自動的に生成され、かつ、テスト及びその結果検証も自動的に行うことができる。さらに、パラメータ値の設定も、すべてのパラメータについて行う必要がない。つまり、テスト実施者が特に指定しないパラメータはログデータから抽出して自動的に補われるので、テスト実施者は、パラメータ値を網羅的に設定しなくてもテストデータを生成することができる。これにより、テスト実施者の負担が軽減される。
【0103】
図20には、管理サーバ15が行うリリース制御の処理手順を示す。
【0104】
まず、システム管理者が、新規に追加されたサーバをリリースするためのリリース条件を登録する(S301)。登録されたリリース条件は、リリース条件表182に格納される。リリース管理部181は、リリース判定を行う対象のサーバから、そのサーバのステータスを取得し、ステータス管理表183に格納する(S302)。対象のサーバが複数ある場合は、すべての対象サーバから取得する。
【0105】
リリース管理部181は、ステータス管理表183を参照し、「リリース可」であるサーバの有無を判定する(S303)。そして、「リリース可」であるサーバがないときは、終了する(S303:No)。
【0106】
一方、「リリース可」であるサーバがあるときは(S303:Yes)、リリース管理部181は、リリース条件表182を参照し、そのサーバのリリース条件が満たされているか否かを判定する(S304)。そして、リリース条件が満たされていないときは、終了する(S304:No)。
【0107】
リリース条件が満たされているときは(S304:Yes)、リリース管理部181は、リリース対象サーバの種別に応じて、コマンド表184からリリースコマンドを取得し、それをリリース対象サーバへ送信して、リリースを実行する(S305,306)。
【0108】
ステップS303以降の処理を繰り返すことにより、リリース対象サーバが複数ある時は、順次リリース判定及びリリースを実施することができる。
【0109】
これにより、システム管理者が定めたリリース対象サーバごとのリリース条件に従って、サーバごとにリリース判定が行われる。
【0110】
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【0111】
例えば、上述の実施形態では、アプリケーションシステム1がPLサーバ群11A,BLサーバ群12A,及びDBサーバ群13Aの3層構造になっているが、2層、あるいは4層以上であってもよい。さらには、アプリケーションシステム1は、必ずしも層構造になっていなくてもよい。
【図面の簡単な説明】
【0112】
【図1】本実施形態に係るシステムの全体構成図。
【図2】PLサーバ11,BLサーバ12及びDBサーバ13の詳細な構成図。
【図3】PLログ117、BLログ127、DBログ137のデータ構造の一例。
【図4】各電文フォーマットの一例。
【図5】管理サーバ15の構成図。
【図6】収集ログ記憶部163に記憶されているログデータの一例。
【図7】ログデータ解析部165がログデータの各レコードを電文識別子51でソートした結果の一例。
【図8】電文識別子「192.168.0.102-0845」のレコード群。
【図9】電文確認表60の一例。
【図10】パラメータ表70の一例。
【図11】テンプレート80の一例。
【図12】DB設定表90の一例。
【図13】テストデータAの一例。
【図14】テストデータBの一例。
【図15】ステータス表183の一例。
【図16】コマンド表184の一例。
【図17】リリース条件表182の一例。
【図18】ログの収集及び解析を行う場合の処理手順を示すフローチャート。
【図19】テストデータの生成及びテストの実施を自動的に行う場合の処理手順を示すフローチャート。
【図20】リリース制御の処理手順を示すフローチャート。
【符号の説明】
【0113】
1 アプリケーションシステム
2 クライアント
10 ロードバランサ
11 PLサーバ
12 BLサーバ
13 DBサーバ
14 DB
15 管理サーバ
21 クライアントリクエスト電文
23,25 サーバ間リクエスト電文
31 クライアントリプライ電文
33,35 サーバ間リプライ電文
【技術分野】
【0001】
本発明は、複数の装置が電文を送受信しながら協調して動作する電文処理システムのテストデータの生成及びテストの実施のための技術に関する。
【背景技術】
【0002】
複数のサーバなどの装置が協調して動作する大規模コンピュータシステムに、新たにサーバを設置して、このサーバにプログラムのインストール、初期設定などを自動的に行うプロビジョニング技術が知られている(例えば特許文献1)。
【特許文献1】特開平2−201657号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、プロビジョニングによって自動的に追加されたサーバを実際に稼動させる(リリースする)ためには、以下のようなことを確認しなければならない。例えば、追加されたサーバが単独で正常に動作をするか否かや、追加されたサーバを経由したときにシステム全体として正常に動作するか否かなどをテストして確認する必要がある。これらは、従来、テスト実施者が作成したテストデータを流し、その結果をテスト実施者が確認しているため、網羅性に欠けるものであったり、見誤りがあったりして、完璧を期しがたいものであった。
【0004】
さらには、プロビジョニングによって同時に複数のサーバが追加されると、従来はこれらを一括してリリースしていた。この結果、新たにリリースしたサーバのうちの複数で同時に不具合が発生すると、システム全体に与える影響が大きい。
【0005】
そこで、本発明の目的は、複数のサーバなどの装置が協調して動作するシステムに新たに追加された装置について、網羅性の高いテストデータを自動的に生成するための技術を提供することである。
【0006】
本発明のさらなる目的は、自動的に生成されたテストデータを用いたテストの実施、及びその結果の検証を自動的に行うための技術を提供することである。
【課題を解決するための手段】
【0007】
本発明の一つの実施態様に従うテストデータの生成装置は、複数の装置を有し、前記複数の装置が互いに電文を送受信しながら協調して動作する電文処理システム内のテスト対象装置のテストデータを生成する装置であって、前記電文処理システム内の一つ以上の装置から、各装置に蓄積されているログデータを取得する手段と、パラメータを含む電文テンプレートを登録する手段と、前記パラメータに設定されるパラメータ値の入力を受け付けるパラメータ入力手段と、前記登録手段により登録された電文テンプレートに含まれるパラメータに、前記パラメータ入力手段が入力を受け付けたパラメータ値を設定してテストデータを生成する手段と、を備える。
【0008】
本発明の一つの実施態様に従うテストデータの生成装置は、複数の装置を有し、前記複数の装置が互いに電文を送受信しながら協調して動作する電文処理システム内の、前段の装置からの入力リクエストに基づいて出力リクエストを後段の装置へ出力し、前記後段の装置からの入力リプライに基づいて出力リプライを前記前段の装置へ出力するテスト対象装置のテストデータを生成する装置であって、パラメータを含む入力リクエスト電文テンプレートと、前記入力リクエスト電文テンプレートに対応する出力リプライ電文テンプレートとを含む第1テンプレートの登録を受け付ける第1の登録手段と、パラメータを含む入力リクエスト電文テンプレート、及び前記入力リクエスト電文テンプレートに対応する出力リクエスト電文テンプレートと、パラメータを含む入力リプライ電文テンプレート、及び前記入力リプライ電文テンプレートに対応する出力リプライ電文テンプレートと、を含む第2テンプレートの登録を受け付ける第2の登録手段と、前記パラメータに設定されるパラメータ値の入力を受け付けるパラメータ入力手段と、前記第1登録手段により登録された第1テンプレートに含まれるパラメータに、前記パラメータ入力手段により入力されたパラメータ値を設定して入力リクエストテストデータと出力リプライテストデータとを含む中間テストデータを生成する手段と、前記中間テストデータと前記第2登録手段により登録された第2テンプレートに基づいて、前記入力リクエストテストデータに対応する出力リクエストテストデータと、前記出力リプライテストデータに対応する入力リプライテストデータとを生成し、最終テストデータを生成する手段と、を備える。
【0009】
好適な実施形態では、前記電文処理システム内の一つ以上の装置から、各装置に蓄積されているログデータを取得する手段をさらに備える。そして、前記中間テストデータを生成する手段は、前記パラメータ入力手段により入力されたパラメータ値、または前記取得手段により取得されたログデータから抽出した値を設定して前記中間テストデータを生成するようにしてもよい。
【0010】
好適な実施形態では、前記中間テストデータ生成手段は、前記パラメータ入力手段により入力されたパラメータ値を、前記ログデータから抽出した値よりも優先させて設定するようにしてもよい。
【0011】
好適な実施形態では、前記入力リクエストテストデータを前記テスト対象装置へ入力して、前記電文処理システムを動作させてテストを実行する手段と、前記テスト実行手段が前記電文処理システムを動作させることにより生成された出力リクエスト、入力リプライ及び出力リプライを含む実行結果データを収集する手段と、前記最終テストデータ生成手段により生成されたテストデータと前記収集手段により収集された実行結果データとを比較して、テスト結果を検証する手段と、をさらに備えるようにしてもよい。
【0012】
好適な実施形態では、前記電文処理システムの環境を変更させ、及び変更後の環境を変更前へ復帰させる変更復帰手段をさらに備えるようにしてもよい。
【発明を実施するための最良の形態】
【0013】
以下、本発明の一実施形態に係るアプリケーションシステム及びその管理を行う管理装置(管理サーバ)について、図面を参照して説明する。
【0014】
図1は、本実施形態に係るシステムの全体構成を示す図である。本システムは、所定の業務処理を実行するアプリケーションシステム1と、顧客が使用するクライアント2とがネットワーク9を介して接続されている。そして、アプリケーションシステム1には、このシステムを管理するための管理サーバ15が接続されている。
【0015】
アプリケーションシステム1は、クライアント2からのリクエストを振り分けて負荷分散をするロードバランサ10と、クライアント2に対する入出力インタフェースを提供する複数のPLサーバ11を含むPLサーバ群11Aと、様々な業務処理(ビジネスロジック、BL)を実行する複数のBLサーバ12を含むBLサーバ群12A(第1のグループ)と、データベース14の参照、更新などを行う複数のDBサーバ13を含むDBサーバ群13A(第2のグループ)と、データベース(DB)14とを備える。PLサーバ11が、クライアント2へ表示する画面の制御(プレゼンテーションロジック、PL)などのインタフェースを提供するインタフェース装置である。BLサーバ12(第1の装置)及びDBサーバ13(第2の装置)が、アプリケーションシステム1の内部処理を実行する内部装置である。
【0016】
クライアント2、各PLサーバ11、各BLサーバ12、各DBサーバ13および管理サーバ15は、いずれも例えば汎用的なコンピュータシステムにより構成され、以下に説明する各サーバ等2,11,12,13,15内の個々の構成要素または機能は、例えば、コンピュータプログラムを実行することにより実現される。
【0017】
PLサーバ群11Aの各PLサーバ11,BLサーバ群12Aの各BLサーバ12及びDBサーバ群13Aの各DBサーバ13は、それぞれ共通の構成を備え、同じ処理を実行するようになっている(図2参照)。つまり、サーバ群11A,12A,13Aがそれぞれ複数のサーバにより多重化されている。これは、耐障害性及び処理性能を確保するためである。そして、各サーバ群11A,12A,13Aの中では、それぞれどのサーバに処理を実行させても、同じ処理が行われる。この結果、各PLサーバ11,各BLサーバ12及び各DBサーバ13を、それぞれ比較的安価なパーソナルコンピュータなどを用いて実現するとともに、ロードバランサ10によって負荷分散することにより、本システム1は、高額の高速コンピュータを導入することなく、低コストでハイパフォーマンスを得ることができる。さらには、本システムは、処理するデータ量の増減に伴って、各サーバ11,12,13の台数を容易に増減させることができ、これにより容易に処理能力を調整することができる。本実施形態では、管理サーバ15が、アプリケーションシステム1の動作の正常性を確認し、新たに追加されたサーバ11,12,13をテストするための処理を実行し、そのサーバをリリースするための処理を実行する。
【0018】
なお、本システムにおけるPLサーバ11の台数、BLサーバ12の台数、及びDBサーバ13の台数は、同じ台数でもよいし、それぞれ異なる台数でもよい。
【0019】
アプリケーションシステム1では、クライアント2からのリクエストがPLサーバ群11A、BLサーバ群12A、及びDBサーバ群13Aの順に伝達され、このリクエストに対するリプライがDBサーバ群13AからBLサーバ群12A、PLサーバ群11Aへと伝達されて、クライアント2へ送信される。詳細に説明すれば、リクエスト及びリプライは、例えば以下のように伝達される。
【0020】
PLサーバ群11Aは、前段であるクライアント2からリクエスト電文21(図2参照)を受け付けると、1台のPLサーバ11が所定の処理を実行後、後段のBLサーバ群12Aに対するサーバ間リクエスト電文A23(図2参照)を生成して、出力する。
【0021】
BLサーバ群12Aは、前段のPLサーバ群11Aからサーバ間リクエスト電文A23を受け付けると、1台のBLサーバ12が所定の処理を実行後、後段のDBサーバ群13Aに対するサーバ間リクエスト電文B25(図2参照)を生成して、出力する。
【0022】
DBサーバ群13Aは、前段のBLサーバ群12Aからサーバ間リクエスト電文B25を受け付けると、1台のDBサーバ13がDB14に対する所定の処理を実行する。そして、前段のBLサーバ群12Aに対するサーバ間リプライ電文B35(図2参照)を生成して、出力する。
【0023】
BLサーバ群12Aでは、1台のBLサーバ12が後段のDBサーバ群13Aからのサーバ間リプライ電文B35に基づいて、前段のPLサーバ群11Aに対するサーバ間リプライ電文A33(図2参照)を生成して、出力する。
【0024】
PLサーバ群11Aでは、1台のPLサーバ11が後段のBLサーバ群12Aからのサーバ間リプライ電文A33に基づいて、前段のクライアント2に対するクライアントリプライ電文31(図2参照)を生成して、出力する。
【0025】
図2には、PLサーバ11,BLサーバ12及びDBサーバ13の詳細な構成図を示す。
【0026】
PLサーバ11は、ロードバランサ10を介してクライアント2から送られてくるクライアントリクエスト電文21を受信し、これをサーバ間リクエスト電文A23に変換していずれかのBLサーバ12へ出力する。また、いずれかのBLサーバ12からサーバ間リプライ電文A33を受信すると、これをクライアントリプライ電文31に変換して、ロードバランサ10を介してクライアント2へ送信する。
【0027】
PLサーバ11は、同図(a)に示すように、電文識別子付与部111と、PL処理部113と、ステータス記憶部114と、電文記録部115と、PLログ117とを備える。
【0028】
電文識別子付与部111は、クライアントリクエスト電文21を受信すると、これに電文識別子を付与する。電文識別子は、それぞれのPLサーバ11が生成するユニークな数字または文字列等である。例えば、PLサーバ11に割り当てられているIPアドレスと、そのサーバ11内でのカウンタ値(シリアル番号)とを組み合わせて、電文識別子を生成してもよい。
【0029】
PL処理部113は、クライアントリクエスト電文21及びサーバ間リプライ電文A33に従って、所定の処理を実行する。例えば、クライアントリクエスト電文21に対しては、その電文に含まれるデータの整合性チェックなどを行い、サーバ間リクエスト電文A23を生成する。ここで、サーバ間リクエスト電文A23に、電文識別子付与部111によってクライアントリクエスト電文21に付与された電文識別子が付与され、クライアントリクエスト電文21とサーバ間リクエスト電文A23とが関連づけられる。また、サーバ間リプライ電文A33に対しては、クライアント2に表示される画面(Webページ)の合成を行い、それを含むクライアントリプライ電文31を生成する。ここで、サーバ間リプライ電文A33に付与されている電文識別子が、クライアントリプライ電文31には含まれない。しかし、電文記録部115がPLログ117に格納するクライアントリプライ電文31のログデータには付与される。
【0030】
ステータス記憶部114については後述する。
【0031】
電文記録部115は、クライアントリクエスト電文21を受信したとき、及びクライアントリプライ電文31を出力するときに、それぞれの電文21,31の電文識別子を含む、各電文に関連する情報をPLログ117に格納する。
【0032】
図3に、PLログ17のデータ構造の一例を示す。PLログ117には、PLサーバ11がクライアント2に対して送受信した電文の送受信履歴が記憶されている。例えば、PLログ117は、データ項目として、電文識別子51と、送信サーバ名52と、受信サーバ名53と、電文内容54とを有する。
【0033】
図2(b)には、BLサーバ12の構成を示す。BLサーバ12は、PLサーバ11から送られてくるサーバ間リクエスト電文A23を受信し、これをサーバ間リクエスト電文Bに変換して、いずれかのDBサーバ13へ出力する。また、いずれかのDBサーバ13からサーバ間リプライ電文B35を受信すると、これをサーバ間リプライ電文A33に変換して、PLサーバ11へ送信する。なお、サーバ間リプライ電文A33の送信先は、サーバ間リクエスト電文A23の送信元のPLサーバ11である。
【0034】
BLサーバ12は、内部の構成として、BL処理部123と、ステータス記憶部124と、電文記録部125と、BLログ127とを備える。
【0035】
BL処理部123は、サーバ間リクエスト電文A23及びサーバ間リプライ電文B35に従って、所定の処理を実行する。例えば、サーバ間リクエスト電文A23を受信したときは、その電文の内容に従って所定の業務処理を実行し、サーバ間リクエスト電文B25を生成する。ここで、サーバ間リクエスト電文B25には、サーバ間リクエスト電文A23に付与されている電文識別子が付与され、サーバ間リクエスト電文A23とサーバ間リクエスト電文B25とが関連づけられる。また、サーバ間リプライ電文B35を受信したときは、その電文の内容に従って所定の業務処理を実行し、サーバ間リプライ電文A33を生成する。この場合も同様に、サーバ間リプライ電文A33には、サーバ間リプライ電文B35に付与されている電文識別子が付与され、サーバ間リプライ電文A33とサーバ間リプライ電文B35とが関連づけられる。
【0036】
ステータス記憶部124については後述する。
【0037】
電文記録部125は、サーバ間リクエスト電文A23を受信したとき、及びサーバ間リプライ電文A33を出力するときに、それぞれの電文23,33の電文識別子を含む、各電文に関連する情報をBLログ127に格納する。
【0038】
BLログ127には、BLサーバ12がPLサーバ11に対して送受信した電文の送受信履歴が記憶されている。BLログ127のデータ構造は、PLログ117と共通である。
【0039】
図2(c)には、DBサーバ13の構成を示す。DBサーバ13は、BLサーバ12から送られてくるサーバ間リクエスト電文B25を受信し、これに基づいてDB14の参照、更新などのDB処理を実行する。そして、この実行結果に基づいてサーバ間リプライ電文B35を生成し、これをサーバ間リクエスト電文B25の送信元のBLサーバ12へ送信する。
【0040】
DBサーバ13は、内部の構成として、DB処理部133と、ステータス記憶部134電文記録部135と、DBログ137とを備える。
【0041】
DB処理部133は、サーバ間リクエスト電文B25を受信すると、その電文の内容に従ってDB14の参照、更新などの処理を実行する。そして、その処理結果に基づいてサーバ間リプライ電文B35を生成する。ここで、サーバ間リプライ電文B35には、サーバ間リクエスト電文B25に付与されている電文識別子が付与され、サーバ間リプライ電文B35とサーバ間リクエスト電文B25とが関連づけられる。
【0042】
ステータス記憶部134については後述する。
【0043】
電文記録部135は、サーバ間リクエスト電文B25を受信したとき、及びサーバ間リプライ電文B35を出力するときに、それぞれの電文25,35の電文識別子を含む、各電文に関連する情報をDBログ137に格納する。
【0044】
DBログ137には、DBサーバ13がBLサーバ12に対して送受信した電文の送受信履歴が記憶されている。DBログ137のデータ構造は、PLログ117及びBLログ127と共通である。
【0045】
ここで、図4にそれぞれの電文フォーマットを示す。同図(a)に示すように、クライアントリクエスト電文21は、HTMLなどで記述されたクライアントリクエスト本文を含んでいる。同図(b)に示すように、クライアントリプライ電文31は、HTMLなどで記述されたクライアントリプライ本文を含んでいる。同図(c)に示すサーバ間リクエスト電文23、25には、それぞれのリクエスト内容を示すサーバ間リクエスト本文と、電文識別子とが含まれ、同様に同図(d)に示すサーバ間リプライ電文33、35には、それぞれのリプライ内容を示すサーバ間リプライ本文と、電文識別子とが含まれる。
【0046】
図5に、管理サーバ15の構成図を示す。管理サーバ15には、キーボードまたはポインティングデバイスなどの入力装置7と液晶ディスプレイなどの表示装置8が接続されている。そして、管理サーバ15は、外部インタフェースとして、これらの入出力装置を制御する入出力装置制御部153と、アプリケーションシステム1とのインタフェースであるシステムインタフェース151とを有する。
【0047】
管理サーバ15は、各サーバ11,12,13からログデータを収集し、その解析などを行う。さらに、管理サーバ15は、プロビジョニングなどによりアプリケーションシステム1に自動的に配備されたサーバ11,12,13に対し、テストデータの生成、テストの実行及びテスト結果の検証などの自動テスト処理を行う。さらに、管理サーバ15は、プロビジョニングにより配備されたサーバ11,12,13を実際に稼働させるリリース制御を行う。
【0048】
これらの機能を実現するために、管理サーバ15は、例えば、以下のような構成を備える。管理サーバ15は、まず、主にログの処理に関する構成として、ログデータ収集部161と、収集したログを保存しておく収集ログ記憶部163と、収集したログデータを解析するログデータ解析部165とを備える。また、管理サーバ15は、主に自動テストのための構成として、ユーザ登録部171と、登録情報記憶部172と、テストデータ生成部173と、テストデータ記憶部174と、テスト実行部175と、テスト結果記憶部176と、テスト結果処理部177と、DB設定変更部178とを備える。そして、主にリリース制御に関する構成として、リリース管理部181と、リリース条件表182と、ステータス表183とを備える。以下、各構成について詳細に説明する。
【0049】
ログデータ収集部161は、システムインタフェース151を介して、アプリケーションシステム1の各サーバ11,12,13がそれぞれ保持しているログデータを収集し、収集ログ記憶部163に格納する。
【0050】
図6に収集ログ記憶部163に記憶されているログデータの一例を示す。収集ログ記憶部163のデータ項目は、PLログ117、BLログ127及びDBログ137と同一である。収集されたログデータには、クライアントリクエスト電文21,クライアントリプライ電文31,サーバ間リクエスト電文23,25及びサーバ間リプライ電文33,35のすべてのログが含まれているが、それらは互いに電文識別子51により関連づけが可能である。例えば、図6のレコード163a〜fは、いずれも電文識別子51が共通であるから、一つのクライアントリクエスト電文21及びそれから派生した各電文のログであることがわかる。さらに、この例では、送信サーバ名52及び受信サーバ名53により、レコード163aがクライアントリクエスト電文21,レコード163bがサーバ間リクエスト電文A23,レコード163cがサーバ間リクエスト電文B25,レコード163dがサーバ間リプライ電文B35,レコード163eがサーバ間リプライ電文A33,及びレコード163fがクライアントリプライ電文31であることがわかる。
【0051】
なお、各リプライ電文31,33,35は、各リクエスト電文21,23,25が通ったPLサーバ、BLサーバ及びDBサーバと同一のPLサーバ、BLサーバ及びDBサーバを通るようになっている。つまり、同じ電文識別子を有する電文は、PLサーバからDBサーバへ向かう昇り方向とDBサーバからPLサーバへ向かう下り方向とでは、同一のパスを通る。
【0052】
ログデータ解析部165は、収集ログ記憶部163に格納されているログデータを解析し、アプリケーションシステム1の動作の正常性の確認をする。例えば、ログデータ解析部165は、電文識別子51をキーにして収集したログデータのレコードをソートし、あるいは、同一の電文識別子51を有する複数のレコードを1グループとしてまとめる。さらに、ログデータ解析部165は、同一の電文識別子51を有するレコード間で、電文内容54の整合性チェックを行う。そして、これらの解析結果を、入出力装置制御部153が表示装置8に表示する。
【0053】
図7は、ログデータ解析部165がログデータの各レコードを電文識別子51でソートした結果の一例を示す図である。
【0054】
図8は、ログデータ解析部165によって抽出された電文識別子「192.168.0.102-0845」のレコード群を示す。ログデータ解析部165は、このレコード群に対して、さらに、整合性チェックを行う。例えば、「送信サーバ名52→受信サーバ名53」のペアにおいて、「client→PL*」「PL*→BL*」「BL*→DB*」「DB*→BL*」「BL*→PL*」「PL*→client」のすべてが存在することを確認する。これにより、入力されたクライアントリクエスト電文21が途中で消失せずに、最終的なクライアントリプライ電文31を返しているか否かを確認できる。
【0055】
さらに、昇り電文と降り電文では同一パスを経由するようになっているため、ログデータ解析部165は、PLサーバ及びBLサーバのサーバ名が同一であるか否かをチェックする。また、電文内容54において、特定のパラメータに同一の値が設定されているか(例えばkozaID=1234567)などをチェックする。これにより、入力されたクライアントリクエスト電文21の内容が、その後生成される各電文に受け継がれているかを確認できる。
【0056】
また、ログデータ解析部165は、予め登録されている電文確認表60を参照し、同一電文識別子51を有するレコード群が、この表60に登録されているリクエスト電文とリプライ電文の対応パターンに合致するか否かを判定する。電文確認表60は、予めユーザによって登録されて、登録情報記憶部172に格納されている。
【0057】
図9に、電文確認表60の一例を示す。電文確認表60は、対象サーバ61と、対象サーバ61が受信するリクエスト電文内容62と、対象サーバが出力するリプライ電文内容63とが対応付けられている。一つのリクエスト電文62に対して、生じ得るリプライ電文63は複数存在することがある。図9の場合、PLサーバに対するリクエスト電文内容601に対するリプライとしては、リプライ電文内容611〜613があり得ることを示している。また、BLサーバが受信するリクエスト電文内容602に対するリプライとしては、リプライ電文内容614,615があり得ることを示している。さらに、DBサーバのリクエスト電文内容603に対するリプライとしては、リプライ電文内容616,617があり得ることを示している。
【0058】
そして、ログデータ解析部165は、同じ電文識別子51を有するレコードの中から、PLサーバが受信したクライアントリクエスト電文21のレコード(つまり、送信サーバ52がクライアント、受信サーバ53がPLサーバであるレコード163a)と、クライアントリプライ電文31のレコード(つまり、送信サーバ52がPLサーバ、受信サーバ53がクライアントであるレコード163f)を抽出する。そして、ここで抽出したレコードのペアが、電文確認表60のリクエスト電文内容601とリプライ電文内容611〜613のペアのいずれかに合致するかを判定する。
【0059】
ログデータ解析部165は、BLサーバに対するリクエスト及びリプライのペア、とDBサーバに対するリクエスト及びリプライのペアについても同様に抽出し、電文確認表60に登録されているペアと合致するか否かを判定する。
【0060】
これにより、各リクエスト電文に対し、予め定められている所定のリプライ電文が生成されているか否かを確認できる。
【0061】
次に、再び図5を参照し、自動テスト処理に関する構成及び処理について説明する。
【0062】
ユーザ登録部171は、入力装置7を用いてユーザが入力するユーザ設定情報の登録を受け付ける。ユーザ登録部171が受け付けたユーザ設定情報は、登録情報記憶部172及びリリース条件表182に登録される。
【0063】
登録情報記憶部172には、ユーザが設定した情報が記憶されている。図5の場合、ユーザ設定情報として、既に説明した電文確認表60と、テストデータに設定されるパラメータ値が記憶されているパラメータ表70と、テンプレート80と、DB設定表90とが記憶されている。
【0064】
図10には、パラメータ表70の一例を示す。すなわち、パラメータ表70は、クライアントリクエスト電文21に含まれるパラメータ71と、それに設定される複数のパラメータ値72とが対応付けて登録されている。
【0065】
図11には、テンプレート80の例を示す。すなわち、同図(a)には、送受信サーバを特定する通信パターン81ごとに、入力リクエスト電文82とそれに対する生成リプライ電文83とが対応付けられているテンプレートAを示す。例えば、テスト対象サーバに入出力する電文を同図(c)に示すようにX,Y,Z,Wとすれば、テンプレートAでは、XとWとの対応関係が示されている。また、同図(b)には、送受信サーバを特定する通信パターン85ごとに、あるサーバの前段に対する電文84と後段に対する電文86とが対応付けられているテンプレートBを示す。例えば同図(c)と対応させると、前段に対する電文84がXまたはWであり、後段に対する電文86がYまたはZであり、XとYまたはWとZがそれぞれ対応付けられている。
【0066】
図12には、DB設定表90の一例を示す。DB設定表90には、同図(a)に示すデータ設定表901と同図(b)に示すデータ戻し表902とがある。データ設定表901及びデータ戻し表902は、いずれも、値を設定する表名91と、値を設定する条件92と、値を設定する列名93と、設定値94とを、データ項目として有する。
【0067】
テストを実行する場合、所定の条件下でテストを実行するために、DB14の設定を一時的に変更したいときがある。このような場合のために、データ設定表901の設定値94にはユーザが入力した値が記憶されている。また、DB14の設定を一時的に変更してテストを実行した後は、その設定を元に戻す必要がある。そこで、データ戻し表902の表名91、条件92及び列名93には、設定を変更する際の表名、条件及び列名が記憶されるとともに、設定値94には、設定を変更する際に取得した変更前のDB14の値が記憶される。
【0068】
テストデータ生成部173は、パラメータ表70、テンプレート80及び収集ログ記憶部163に格納されているログデータに基づいてテストデータを生成し、テストデータ記憶部174に格納する。例えば、テンプレート80に含まれているパラメータに、パラメータ表70に設定されているパラメータ値72を優先させて設定し、パラメータ表70にパラメータ値が設定されていないパラメータについては、ログデータから抽出して設定する。これにより、テスト実施者は、自らが着目するパラメータについてだけパラメータ値を登録しておけばよい。この場合、特に着目しないパラメータについてはログデータから自動設定される。従って、テンプレート80内のすべてのパラメータに値が設定されるので、テストデータの不備によりテストが滞ってしまうようなことがない。
【0069】
一方、パラメータ表70にすべてのパラメータの値が設定されていれば、ログデータは不要である。また、パラメータ表70がないとき、あるいはパラメータ表70にはパラメータ値が何も設定されていないときは、ログデータからすべてのパラメータ値を取得してテストデータを生成してもよい。
【0070】
本実施形態では、まず、テンプレートA、パラメータ表70及びログデータに基づいて中間的なテストデータであるテストデータA(図13参照)が生成される。そして、テストデータAとテンプレートBに基づいて最終的なテストデータであるテストデータB(図14参照)が生成される。以下、具体的に説明する。
【0071】
まず、図11(a)のテンプレートAは、各サーバに対するリクエスト電文(X)と各サーバから出力され得るリプライ電文(W)とのペアを定義している。そこで、テストデータ生成部173は、テンプレートAの各パラメータに図10に示すパラメータ表70に登録されている値を設定する。この例では、支店ID(sitenID)、口座ID(kozaID)、パスワード(passward)、口数(item_count)及び残高(zandaka)に、パラメータ表70に登録されているそれぞれの値がセットされる。
【0072】
この段階では、テンプレートAにおけるパラメータitemには値がセットされていない。そこで、テストデータ生成部173は、パラメータitemに設定すべき値を、ログデータのいずれかのレコードから抽出してセットする。このようにして、図13に示すテストデータAが生成される。
【0073】
図13のテストデータAは、サーバA401からサーバB402へのリクエスト電文(X)403及びそのリクエスト電文(X)403に対するサーバBからサーバAへのリプライ電文(W)404からなる。図13の例では、テストデータ431及び432のリクエスト電文(X)403は共通であり、これに対するリプライ電文(W)404として異なるパターンがセットされたものである。
【0074】
次に、図11(b)のテンプレートBは、リクエスト電文(X)とそれにより生成される後段へのリクエスト電文(Y)、及びリプライ電文(W)とそれが生成される前の後段からのリプライ電文(Z)とのペアを定義している。そこで、テストデータ生成部173は、テンプレートBに図13のテストパターンAのリクエスト電文(X)403及びリプライ電文(W)404を適用し、それぞれに対応する電文Y,Zを生成する。このとき、テストパターンAにおいて既に設定されているパラメータは、それぞれ対応する電文Y,Zに設定される。この処理により生成されたテストデータBを図14に示す。
【0075】
図14のテストデータBは、テスト対象サーバ411に対するリクエスト電文(X)412と,これに対応するリプライ電文(W)413と、後段に対するリクエスト電文(Y)414と、後段からのリプライ電文(Z)415とがワンセットになっている。ここで、テストデータ441,442,443はいずれもリクエスト電文(X)412は共通である。これは、同じリクエスト電文(X)412を入力した場合でも、そこから派生する電文Y,Z,Wについては複数のパターンが生じ得るので、正常に動作する場合のすべてのパターンが用意されているからである。
【0076】
テストデータ記憶部174には、上記のようにして生成されたテストデータBが記憶される。
【0077】
テスト実行部175は、テストデータ記憶部174からテストデータを取得してテストを実行し、そのテスト結果をテスト結果記憶部176に格納する。例えば、テスト実行部175は、テストデータ記憶部174からテストデータBのテストデータを1つずつ読み出し、システムインタフェース151を介して、テスト対象サーバ411にリクエスト電文(X)412を入力する。テスト対象サーバ411は、リクエスト電文(X)412が入力されると、この電文412に基づいて所定の処理を実行する。その結果、テスト対象サーバ411から後段のサーバへリクエスト電文(Y)が出力され、後段の各サーバもこれに従って動作する。そして、最終的にテスト対象サーバからリプライ電文(W)が出力される。ここで、テスト実行部175は、入力したリクエスト電文(X)412に基づく電文Y,Z,Wを、テスト対象サーバ及び後段のサーバのログファイルからそれぞれ取得して、これらを関連づけた形でテスト結果記憶部176に格納する。
【0078】
テスト結果処理部177は、テスト結果記憶部176に記憶されているテスト結果の電文と、テストデータ記憶部174に記憶されているテストデータBとを対比してテスト結果の解析などを行う。この解析結果は、表示装置8に出力される。
【0079】
例えば、テスト結果処理部177は、入力されたリクエスト電文(X)及びこれに対するサーバの処理結果として得られた電文Y,Z,Wの組が、テストデータ記憶部174に記憶されているテストデータBのいずれかと一致するか否かを判定する。いずれかと一致すれば、アプリケーションシステム1は正常に動作していると考えられる。一方、いずれとも一致しない場合は、テスト対象サーバまたはその後段のサーバに何らかの異常があると考えられる。これらの解析結果は、例えば表示装置8に一覧表示される。
【0080】
これにより、テンプレート及び必要なパラメータを設定するだけで、網羅的なテストデータの生成、テストの実施及びその結果の解析を自動的に行うことができる。さらに、テスト実施者は、表示装置8にテストの解析結果が表示されるので、システムが正常であるかを直ちに知ることができる。
【0081】
DB設定変更部178は、テストを実施するために、アプリケーションシステム1の動作環境の変更及びその復帰を行う。例えば、DB設定変更部178は、DB設定表90を参照して、システムインタフェース151を介してDB14の内容を一時的に変更する。例えば、DB設定変更部178は、データ設定表901(図12(a))に基づいてDB14を更新する。また、上記の設定変更をする際に、DB設定変更部178は、変更前の状態をデータ戻し表902(図12(b))に設定する。そして、テスト終了後に、データ戻し表902を参照して前の状態へ戻す。
【0082】
例えば、図12(a)に示すデータ設定表901の場合、DB設定変更部178は、表名91に設定されている表から、条件92を満たすレコードを抽出する。そして、そのレコードの列名93に合致する列を設定値94に設定されている値に変更する。これにより、テストを行うときのDBの設定を自在に変更することができる。
【0083】
次に、リリース制御に関する構成及び処理について説明する。
【0084】
リリース管理部181は、システムインタフェース151を介して、アプリケーションシステム1内の各サーバ11,12,13のステータスを照会する。例えば、各サーバ内のステータス記憶部114、124,134に記憶されている各サーバのステータスを取得する。ここで取得した各サーバ11,12,13のステータスは、ステータス表183に格納される。
【0085】
ここで、各サーバ内のステータス記憶部114、124,134に格納されるステータス情報について説明する。
【0086】
アプリケーションシステム1に新たに追加されたサーバの場合、ステータス記憶部にはプロビジョニングが終了した時点で「未テスト」というステータスが設定される。その後、上述したテストが実行されているときは、テスト実行部175によりステータスが「テスト中」に変更される。そして、表示装置8に表示されたテスト結果などにより、すべてのテストが正常終了したことが確認され、テスト実施者によりテスト完了を示す入力がなされると、そのサーバのステータス記憶部には、アプリケーションシステム1の一部として正式に稼働可能であることを示す「リリース可」というステータスが設定される。さらに、後述するように、リリース管理部181がリリースしたときは、リリースされたサーバ内のステータス記憶部には、「リリース済み」というステータスが設定される。
【0087】
図15には、ステータス表183の一例を示す。すなわち、ステータス表183には、サーバ名1831とステータス1832とが対応付けて登録されている。ステータス1832には、各サーバのステータス記憶部114、124,134から取得したステータスが格納される。
【0088】
また、リリース管理部181は、ステータス表183のステータス1832が「リリース可」であるサーバについて、リリース条件表182に設定された条件が満たされているか否かを判定し、条件が満たされている場合にそのサーバをリリースする。ここで、サーバのリリースを実行するためには、リリース管理部181がリリース対象のサーバを指定して、所定のリリース処理コマンドを発行する。リリース処理コマンドは、例えば、リリース管理部181が有するコマンド表184を参照して取得する。
【0089】
図16には、コマンド表184の一例を示す。コマンド表184には、サーバ種別1841ごとにリリース処理コマンド1842が登録されている。リリース管理部181は、リリースするサーバの種別に応じて、リリース処理コマンドを取得して、実行する。
【0090】
図17には、リリース条件表182の一例を示す。すなわち、リリース条件表182には、リリース対象サーバ1821と依存サーバ1822とが対応付けて記憶されている。ここで、依存サーバ1822とは、リリース対象サーバ1821をリリースするためにはリリース済みでなければならないサーバである。つまり、リリース対象サーバ1821がリリース可能な状態であっても、依存サーバ1822がリリース済みでなければリリース対象サーバ1821をリリースすることができない。リリース条件表182は、システム管理者等によって予め設定される。
【0091】
つぎに、上記のような構成を備えたシステムにおける種々の処理手順について、図18〜図20のフローチャートを用いて説明する。
【0092】
まず、図18には、ログの収集及び解析を行う場合の管理サーバ15の処理手順を示す。
【0093】
ログデータ収集部161がアプリケーションシステム1内の各サーバ11,12,13から、それぞれに蓄積されているログデータを収集し、収集ログ記憶部163に格納する(S101)。ログデータ解析部165は、収集ログ記憶部163に格納されているログデータを、各レコードに含まれている電文識別子をキーにして分類し、電文識別子別に抽出する(S102)。ログデータ解析部165は、登録情報記憶部172に予め登録されている電文確認表60を参照して、同じ電文識別子を有する電文間の整合性をチェックする(S103)。ここでは、例えば、リクエストに対するリプライが予め定められているパターンと一致するか否かを判定する。そして、その解析結果を表示装置8に表示出力する(S104)。
【0094】
これにより、複数のサーバ間で電文を送受信して動作するアプリケーションシステム1において、各サーバ間で送受信される電文が正常であるか否かを自動的に確認することができる。さらに、各サーバ群でそれぞれ複数のサーバを有し、様々な経路で電文がやりとりされる場合であっても、すべての電文のやりとりをもれなくチェックすることができ、網羅性の高いテストを行うことができる。
【0095】
次に、図19には、テストデータの生成及びテストの実施を自動的に行う場合の管理サーバ15の処理手順を示す。
【0096】
テスト実施者が、テストデータの基となるテストパターンのテンプレート及びそのテンプレートにセットされるパラメータ値を登録する(S201)。ログデータ収集部161は、アプリケーションシステム1の各サーバ11,12,13からログデータを収集し、収集ログ記憶部163に格納する(S202)。
【0097】
そして、テストデータ生成部173は、上述の処理で登録されたテンプレート及びパラメータ値と、ログデータとに基づいて、中間的なテストデータであるテストデータAを生成する(S203)。このとき、テスト実施者が登録したパラメータ値をまず設定し、テスト実施者が設定していないパラメータについては、ログデータから取得した値を設定する。次に、テストデータ生成部173は、テストデータAとテンプレートとを用いて、最終的なテストデータであるテストデータBを生成する(S204)。
【0098】
ここで、テストデータを流してテストを実施するに当たり、テスト環境であるDB14の設定を変更する必要がある場合には、DB設定変更部178が、予め登録されているDB設定表90を参照して設定変更を行う(S205,206)。
【0099】
そして、テスト実行部175がテスト対象サーバにテストデータのリクエスト電文を入力して、アプリケーションシステム1を動作させて、テストを実施する(S207)。
【0100】
テストの実施が終了すると、ステップS206でDBの設定変更を行っている場合は、その変更を元に戻し、変更前の状態に復帰させる(S208,209)。
【0101】
テスト結果処理部177は、テスト結果記憶部176に格納されているテスト結果を、テストデータ記憶部174に記憶されているテストデータと比較して検証する(S210)。そして、検証結果が、表示装置8に表示される。
【0102】
これにより、テスト実施者は、数多くのテストデータそのものを作成しなくても、テンプレートとしてテストしたいパターンを登録し、重要なパラメータ値を登録しておくことにより、テストデータが自動的に生成され、かつ、テスト及びその結果検証も自動的に行うことができる。さらに、パラメータ値の設定も、すべてのパラメータについて行う必要がない。つまり、テスト実施者が特に指定しないパラメータはログデータから抽出して自動的に補われるので、テスト実施者は、パラメータ値を網羅的に設定しなくてもテストデータを生成することができる。これにより、テスト実施者の負担が軽減される。
【0103】
図20には、管理サーバ15が行うリリース制御の処理手順を示す。
【0104】
まず、システム管理者が、新規に追加されたサーバをリリースするためのリリース条件を登録する(S301)。登録されたリリース条件は、リリース条件表182に格納される。リリース管理部181は、リリース判定を行う対象のサーバから、そのサーバのステータスを取得し、ステータス管理表183に格納する(S302)。対象のサーバが複数ある場合は、すべての対象サーバから取得する。
【0105】
リリース管理部181は、ステータス管理表183を参照し、「リリース可」であるサーバの有無を判定する(S303)。そして、「リリース可」であるサーバがないときは、終了する(S303:No)。
【0106】
一方、「リリース可」であるサーバがあるときは(S303:Yes)、リリース管理部181は、リリース条件表182を参照し、そのサーバのリリース条件が満たされているか否かを判定する(S304)。そして、リリース条件が満たされていないときは、終了する(S304:No)。
【0107】
リリース条件が満たされているときは(S304:Yes)、リリース管理部181は、リリース対象サーバの種別に応じて、コマンド表184からリリースコマンドを取得し、それをリリース対象サーバへ送信して、リリースを実行する(S305,306)。
【0108】
ステップS303以降の処理を繰り返すことにより、リリース対象サーバが複数ある時は、順次リリース判定及びリリースを実施することができる。
【0109】
これにより、システム管理者が定めたリリース対象サーバごとのリリース条件に従って、サーバごとにリリース判定が行われる。
【0110】
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【0111】
例えば、上述の実施形態では、アプリケーションシステム1がPLサーバ群11A,BLサーバ群12A,及びDBサーバ群13Aの3層構造になっているが、2層、あるいは4層以上であってもよい。さらには、アプリケーションシステム1は、必ずしも層構造になっていなくてもよい。
【図面の簡単な説明】
【0112】
【図1】本実施形態に係るシステムの全体構成図。
【図2】PLサーバ11,BLサーバ12及びDBサーバ13の詳細な構成図。
【図3】PLログ117、BLログ127、DBログ137のデータ構造の一例。
【図4】各電文フォーマットの一例。
【図5】管理サーバ15の構成図。
【図6】収集ログ記憶部163に記憶されているログデータの一例。
【図7】ログデータ解析部165がログデータの各レコードを電文識別子51でソートした結果の一例。
【図8】電文識別子「192.168.0.102-0845」のレコード群。
【図9】電文確認表60の一例。
【図10】パラメータ表70の一例。
【図11】テンプレート80の一例。
【図12】DB設定表90の一例。
【図13】テストデータAの一例。
【図14】テストデータBの一例。
【図15】ステータス表183の一例。
【図16】コマンド表184の一例。
【図17】リリース条件表182の一例。
【図18】ログの収集及び解析を行う場合の処理手順を示すフローチャート。
【図19】テストデータの生成及びテストの実施を自動的に行う場合の処理手順を示すフローチャート。
【図20】リリース制御の処理手順を示すフローチャート。
【符号の説明】
【0113】
1 アプリケーションシステム
2 クライアント
10 ロードバランサ
11 PLサーバ
12 BLサーバ
13 DBサーバ
14 DB
15 管理サーバ
21 クライアントリクエスト電文
23,25 サーバ間リクエスト電文
31 クライアントリプライ電文
33,35 サーバ間リプライ電文
【特許請求の範囲】
【請求項1】
複数の装置を有し、前記複数の装置が互いに電文を送受信しながら協調して動作する電文処理システム内の、前段の装置からの入力リクエストに基づいて出力リクエストを後段の装置へ出力し、前記後段の装置からの入力リプライに基づいて出力リプライを前記前段の装置へ出力するテスト対象装置のテストデータを生成する装置であって、
パラメータを含む入力リクエスト電文テンプレートと、前記入力リクエスト電文テンプレートに対応する出力リプライ電文テンプレートとを含む第1テンプレートの登録を受け付ける第1の登録手段と、
パラメータを含む入力リクエスト電文テンプレート、及び前記入力リクエスト電文テンプレートに対応する出力リクエスト電文テンプレートと、パラメータを含む入力リプライ電文テンプレート、及び前記入力リプライ電文テンプレートに対応する出力リプライ電文テンプレートと、を含む第2テンプレートの登録を受け付ける第2の登録手段と、
前記パラメータに設定されるパラメータ値の入力を受け付けるパラメータ入力手段と、
前記第1登録手段により登録された第1テンプレートに含まれるパラメータに、前記パラメータ入力手段により入力されたパラメータ値を設定して入力リクエストテストデータと出力リプライテストデータとを含む中間テストデータを生成する手段と、
前記中間テストデータと前記第2登録手段により登録された第2テンプレートに基づいて、前記入力リクエストテストデータに対応する出力リクエストテストデータと、前記出力リプライテストデータに対応する入力リプライテストデータとを生成し、最終テストデータを生成する手段と、を備えることを特徴とするテストデータの生成装置。
【請求項2】
前記電文処理システム内の一つ以上の装置から、各装置に蓄積されているログデータを取得する手段をさらに備え、
前記中間テストデータを生成する手段は、前記パラメータ入力手段により入力されたパラメータ値、または前記取得手段により取得されたログデータから抽出した値を設定して前記中間テストデータを生成することを特徴とする請求項1記載のテストデータの生成装置。
【請求項3】
前記中間テストデータ生成手段は、前記パラメータ入力手段により入力されたパラメータ値を、前記ログデータから抽出した値よりも優先させて設定することを特徴とする請求項2記載のテストデータ生成装置。
【請求項4】
前記入力リクエストテストデータを前記テスト対象装置へ入力して、前記電文処理システムを動作させてテストを実行する手段と、
前記テスト実行手段が前記電文処理システムを動作させることにより生成された出力リクエスト、入力リプライ及び出力リプライを含む実行結果データを収集する手段と、
前記最終テストデータ生成手段により生成されたテストデータと前記収集手段により収集された実行結果データとを比較して、テスト結果を検証する手段と、をさらに備える請求項1乃至請求項3のいずれか一項に記載のテストデータ生成装置。
【請求項5】
前記電文処理システムの環境を変更させ、及び変更後の環境を変更前へ復帰させる変更復帰手段をさらに備える請求項1乃至請求項4のいずれか一項に記載のテストデータ生成装置。
【請求項6】
複数の装置を有し、前記複数の装置が互いに電文を送受信しながら協調して動作する電文処理システム内のテスト対象装置のテストデータを生成する装置であって、
前記電文処理システム内の一つ以上の装置から、各装置に蓄積されているログデータを取得する手段と、
パラメータを含む電文テンプレートを登録する手段と、
前記パラメータに設定されるパラメータ値の入力を受け付けるパラメータ入力手段と、
前記登録手段により登録された電文テンプレートに含まれるパラメータに、前記パラメータ入力手段が入力を受け付けたパラメータ値を設定してテストデータを生成する手段と、を備えることを特徴とするテストデータの生成装置。
【請求項7】
複数の装置を有し、前記複数の装置が互いに電文を送受信しながら協調して動作する電文処理システム内のテスト対象装置のテストデータを生成する方法であって、
前記電文処理システム内の一つ以上の装置から、各装置に蓄積されているログデータを取得するステップと、
パラメータを含むリクエスト電文テンプレートと、前記リクエスト電文テンプレートに対応するリプライ電文テンプレートとを含むテンプレートを登録するステップと、
前記パラメータに設定されるパラメータ値の入力を受け付けるステップと、
前記登録されたテンプレートに含まれるパラメータに、前記入力を受け付けたパラメータ値を設定してテストデータを生成するステップと、を有することを特徴とするテストデータの生成方法。
【請求項8】
複数の装置を有し、前記複数の装置が互いに電文を送受信しながら協調して動作する電文処理システム内のテスト対象装置のテストデータを生成するためのコンピュータプログラムであって、
前記電文処理システム内の一つ以上の装置から、各装置に蓄積されているログデータを取得するステップと、
パラメータを含むリクエスト電文テンプレートと、前記リクエスト電文テンプレートに対応するリプライ電文テンプレートとを含むテンプレートを登録するステップと、
前記パラメータに設定されるパラメータ値の入力を受け付けるステップと、
前記登録されたテンプレートに含まれるパラメータに、前記入力を受け付けたパラメータ値を設定してテストデータを生成するステップと、をコンピュータに実行させるためのコンピュータプログラム。
【請求項1】
複数の装置を有し、前記複数の装置が互いに電文を送受信しながら協調して動作する電文処理システム内の、前段の装置からの入力リクエストに基づいて出力リクエストを後段の装置へ出力し、前記後段の装置からの入力リプライに基づいて出力リプライを前記前段の装置へ出力するテスト対象装置のテストデータを生成する装置であって、
パラメータを含む入力リクエスト電文テンプレートと、前記入力リクエスト電文テンプレートに対応する出力リプライ電文テンプレートとを含む第1テンプレートの登録を受け付ける第1の登録手段と、
パラメータを含む入力リクエスト電文テンプレート、及び前記入力リクエスト電文テンプレートに対応する出力リクエスト電文テンプレートと、パラメータを含む入力リプライ電文テンプレート、及び前記入力リプライ電文テンプレートに対応する出力リプライ電文テンプレートと、を含む第2テンプレートの登録を受け付ける第2の登録手段と、
前記パラメータに設定されるパラメータ値の入力を受け付けるパラメータ入力手段と、
前記第1登録手段により登録された第1テンプレートに含まれるパラメータに、前記パラメータ入力手段により入力されたパラメータ値を設定して入力リクエストテストデータと出力リプライテストデータとを含む中間テストデータを生成する手段と、
前記中間テストデータと前記第2登録手段により登録された第2テンプレートに基づいて、前記入力リクエストテストデータに対応する出力リクエストテストデータと、前記出力リプライテストデータに対応する入力リプライテストデータとを生成し、最終テストデータを生成する手段と、を備えることを特徴とするテストデータの生成装置。
【請求項2】
前記電文処理システム内の一つ以上の装置から、各装置に蓄積されているログデータを取得する手段をさらに備え、
前記中間テストデータを生成する手段は、前記パラメータ入力手段により入力されたパラメータ値、または前記取得手段により取得されたログデータから抽出した値を設定して前記中間テストデータを生成することを特徴とする請求項1記載のテストデータの生成装置。
【請求項3】
前記中間テストデータ生成手段は、前記パラメータ入力手段により入力されたパラメータ値を、前記ログデータから抽出した値よりも優先させて設定することを特徴とする請求項2記載のテストデータ生成装置。
【請求項4】
前記入力リクエストテストデータを前記テスト対象装置へ入力して、前記電文処理システムを動作させてテストを実行する手段と、
前記テスト実行手段が前記電文処理システムを動作させることにより生成された出力リクエスト、入力リプライ及び出力リプライを含む実行結果データを収集する手段と、
前記最終テストデータ生成手段により生成されたテストデータと前記収集手段により収集された実行結果データとを比較して、テスト結果を検証する手段と、をさらに備える請求項1乃至請求項3のいずれか一項に記載のテストデータ生成装置。
【請求項5】
前記電文処理システムの環境を変更させ、及び変更後の環境を変更前へ復帰させる変更復帰手段をさらに備える請求項1乃至請求項4のいずれか一項に記載のテストデータ生成装置。
【請求項6】
複数の装置を有し、前記複数の装置が互いに電文を送受信しながら協調して動作する電文処理システム内のテスト対象装置のテストデータを生成する装置であって、
前記電文処理システム内の一つ以上の装置から、各装置に蓄積されているログデータを取得する手段と、
パラメータを含む電文テンプレートを登録する手段と、
前記パラメータに設定されるパラメータ値の入力を受け付けるパラメータ入力手段と、
前記登録手段により登録された電文テンプレートに含まれるパラメータに、前記パラメータ入力手段が入力を受け付けたパラメータ値を設定してテストデータを生成する手段と、を備えることを特徴とするテストデータの生成装置。
【請求項7】
複数の装置を有し、前記複数の装置が互いに電文を送受信しながら協調して動作する電文処理システム内のテスト対象装置のテストデータを生成する方法であって、
前記電文処理システム内の一つ以上の装置から、各装置に蓄積されているログデータを取得するステップと、
パラメータを含むリクエスト電文テンプレートと、前記リクエスト電文テンプレートに対応するリプライ電文テンプレートとを含むテンプレートを登録するステップと、
前記パラメータに設定されるパラメータ値の入力を受け付けるステップと、
前記登録されたテンプレートに含まれるパラメータに、前記入力を受け付けたパラメータ値を設定してテストデータを生成するステップと、を有することを特徴とするテストデータの生成方法。
【請求項8】
複数の装置を有し、前記複数の装置が互いに電文を送受信しながら協調して動作する電文処理システム内のテスト対象装置のテストデータを生成するためのコンピュータプログラムであって、
前記電文処理システム内の一つ以上の装置から、各装置に蓄積されているログデータを取得するステップと、
パラメータを含むリクエスト電文テンプレートと、前記リクエスト電文テンプレートに対応するリプライ電文テンプレートとを含むテンプレートを登録するステップと、
前記パラメータに設定されるパラメータ値の入力を受け付けるステップと、
前記登録されたテンプレートに含まれるパラメータに、前記入力を受け付けたパラメータ値を設定してテストデータを生成するステップと、をコンピュータに実行させるためのコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公開番号】特開2006−252158(P2006−252158A)
【公開日】平成18年9月21日(2006.9.21)
【国際特許分類】
【出願番号】特願2005−67442(P2005−67442)
【出願日】平成17年3月10日(2005.3.10)
【出願人】(000155469)株式会社野村総合研究所 (1,067)
【Fターム(参考)】
【公開日】平成18年9月21日(2006.9.21)
【国際特許分類】
【出願日】平成17年3月10日(2005.3.10)
【出願人】(000155469)株式会社野村総合研究所 (1,067)
【Fターム(参考)】
[ Back to top ]