(57)【要約】【課題】ネットワークシステム上の複数のノード間で行われる通信を検証する検証システムを提供する。【解決手段】検証システム１００は、複数のノード間の接続関係と複数のノード間の通信プロトコルとを定義する情報を含む構成定義情報５に基づいて、複数のノードをコンピュータ上で仮想的に稼働できるように仮想化し、仮想化された各々のノードと仮想化された複数のノード間の接続関係とによって構成される仮想システムを生成する仮想システム生成装置１０を含む。検証システム１００は、仮想システムに入力される入力シーケンスと、仮想システムから出力されると予想される予想出力情報と、を含む所定のテストケース６の入力を受け、入力シーケンスを仮想システムに入力し、入力された入力シーケンスに応じて仮想システムから出力された出力結果と、予想出力情報と、を比較し、両者の間の差の有無を判定するテスト制御装置１２を更に含む。【選択図】図２
2020120145.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークシステム上の複数のノード間で行われる通信を検証する検証システムであって、
前記複数のノード間の接続関係と前記複数のノード間の通信プロトコルとを定義する情報を含む構成定義情報に基づいて、前記複数のノードをコンピュータ上で仮想的に稼働できるように仮想化し、仮想化された各々のノードと、仮想化された複数のノード間の接続関係と、によって構成される仮想システムを生成する仮想システム生成装置と、
前記仮想システムに入力される入力シーケンスと、入力された前記入力シーケンスに応じて前記仮想システムから出力されると予想される予想出力情報と、を含む所定のテストケースの入力を受け、前記テストケースに含まれる前記入力シーケンスを前記仮想システムに入力し、入力された前記入力シーケンスに応じて前記仮想システムから出力された出力結果と、前記予想出力情報と、を比較し、両者の間の差の有無を判定するテスト制御装置と、
を含む、検証システム。
【請求項２】
前記仮想システム生成装置は、前記構成定義情報に基づいて、前記仮想システムにおいて前記複数のノード間の通信プロトコルの状態遷移を含む動作を実現するプログラムを生成する、請求項１に記載の検証システム。
【請求項３】
前記仮想システム生成装置は、
前記構成定義情報から前記通信プロトコルのフォーマットを取得するフォーマット取得部と、
前記構成定義情報から前記通信プロトコルの状態遷移情報を取得する状態遷移情報取得部と、
取得された前記通信プロトコルのフォーマットおよび状態遷移情報に基づいて、前記ノード上で稼働する前記プログラムを生成するためのソースコードを生成するソースコード生成部と、
前記ソースコードをコンパイルして前記プログラムを生成するプログラム生成部とを備える、
請求項２に記載の検証システム。
【請求項４】
前記構成定義情報は、前記複数のノードのそれぞれのアドレス情報と、アクセス元情報とを含み、
前記仮想システム生成装置は、前記アドレス情報と前記アクセス元情報とを当てはめることによって、前記複数のノードにそれぞれ対応する仮想化されたノードを生成する装置テンプレートノードを含み、
前記装置テンプレートノードは、
前記アドレス情報と前記アクセス元情報とに基づいて前記仮想化されたノードのネットワーク設定を行うインスタンス設定部と、
前記仮想化されたノード内で実行される前記プログラムと、前記仮想化されたノードに接続される他の仮想化されたノードの情報と、を取得し、前記プログラムを実行するプログラム設定部とを備える、
請求項２または３に記載の検証システム。
【請求項５】
前記仮想化されたノードは、他の仮想化されたノードとの間で行った通信に関する情報を示す通信ログを出力する、請求項１〜４のいずれかに記載の検証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検証システムに関し、特に、仮想システムを利用して、ネットワークシステム上のノード間で行われる通信を検証する検証システムに関する。
【背景技術】
【０００２】
現在のネットワークシステムは、インスタントメッセージ、音声通信、ビデオ通信、データ共有等、様々なデータ形式において、多数のアプリケーションプログラム間で通信を行う。したがって、このような様々な通信態様を漏れなく検証するテスト環境を構築することが要求される。
【０００３】
このようなテストは、例えば部屋等の実験場に複数の装置を配置し、各装置に通信処理を行うためのソフトウェアを実行させることによって行われる。しかしながら、このようなテストには、多数の装置を配置するための広いスペースが必要であり、また、各装置の配置、接続および設定、並びにミスやバグの修正に多大な工数がかかる。そこで、それぞれがプログラムを実行可能な複数の仮想的な装置（以下、「仮想マシン」という。）を含む仮想的なネットワークシステム（以下、「仮想システム」という。）を用いたテスト環境を利用することが知られている（例えば特許文献１参照）。このような仮想システム内では、テストデータに基づいて、仮想的なネットワークを介して、各ネットワークノード、すなわち各仮想マシンが互いに通信を行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１０２４１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、テストケース等のテスト用シーケンスデータに基づく仮想システムの通信テストは、ネットワークシステムを構成する全ての装置（ノード）のプログラムの開発が完了しなければ実行できない。なぜなら、仮想システム内の仮想マシン（仮想ノード）上でプログラムを稼働させる必要があるためである。したがって、テスト用シーケンスデータに基づく仮想システムの通信テストを開発初期に行うことは困難である。ネットワークシステムを構成する全ての装置（ノード）の開発が完了した開発の中期または後期になってからテストを実行してバグ等の不具合が発見された場合、多大な工程の手戻りが発生する。
【０００６】
本発明は、上記の課題を解決するためになされたものであり、ノード間の接続関係および通信プロトコルの仕様さえ決定されれば、当該仕様に基づいてネットワークシステムを構成するノードをコンピュータ上に仮想的に実現し、ノード間で行われる通信を検証することができる検証システムを得ることを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様は、ネットワークシステム上の複数のノード間で行われる通信を検証する検証システムを提供する。検証システムは、複数のノード間の接続関係と複数のノード間の通信プロトコルとを定義する情報を含む構成定義情報に基づいて、複数のノードをコンピュータ上で仮想的に稼働できるように仮想化し、仮想化された各々のノードと仮想化された複数のノード間の接続関係と、によって構成される仮想システムを生成する仮想システム生成装置を含む。検証システムは、仮想システムに入力される入力シーケンスと、入力された入力シーケンスに応じて仮想システムから出力されると予想される予想出力情報と、を含む所定のテストケースの入力を受け、テストケースに含まれる入力シーケンスを仮想システムに入力し、入力された入力シーケンスに応じて仮想システムから出力された出力結果と、予想出力情報と、を比較し、両者の間の差の有無を判定するテスト制御装置を更に含む。
【発明の効果】
【０００８】
本発明により、ノード間の接続関係および通信プロトコルの仕様さえ決定されれば、当該仕様に基づいてネットワークシステムを構成するノードをコンピュータ上に仮想的に実現し、ノード間で行われる通信を検証することができる。したがって、ネットワークシステムの通信の検証をネットワークシステムの開発初期に行うことができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態に係る検証システムの検証対象であるネットワークシステムを例示する図である。
【図２】本発明の実施の形態に係る検証システムの構成を示す図である。
【図３】仮想システム生成装置、仮想システム制御装置およびテスト制御装置の構成を示す図である。
【図４ａ】構成定義情報の一例を示す図である。
【図４ｂ】構成定義情報の一例を示す図である。
【図４ｃ】構成定義情報の一例を示す図である。
【図５】プロトコル定義の一例を示す図である。
【図６】プロトコルの状態遷移定義の一例を示す図である。
【図７】仮想システム生成装置の機能構成を示す機能ブロック図である。
【図８】装置テンプレートノードの構成を例示する図である。
【図９】ログ記録装置テンプレートノードの構成を例示する図である。
【図１０】テスト制御装置の機能構成を示す機能ブロック図である。
【図１１】仮想システムの構成を示す図である。
【図１２】動作ログの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態に係る検証システムについて、図面を参照して説明する。
【００１１】
［１．概要］
本発明の実施の形態に係る検証システム１００は、例えばタクシーの配車システムの検証に適用できる。図１は、このような検証対象の配車システム１を示す図である。
【００１２】
配車システム１は、顧客から送信された依頼情報を受け付け、顧客の現在地から近い場所にいるタクシー内の端末に顧客の位置情報等を通知する機能を有する。配車システム１は、顧客およびタクシー４ａ〜４ｉから送信された依頼情報を受け付け、各タクシーの配車（予約）状況を取りまとめる配車センター内の第１端末２を備える。
【００１３】
タクシー４ａ〜４ｉは、配車センター内の第１端末２と通信を行う通信端末をそれぞれ備える。タクシー４ａ〜４ｉの通信端末は、ＣＰＵ、ＲＡＭおよびＲＯＭ等を含み、情報処理に応じて自車に搭載された電子機器の制御を行う。タクシー４ａ〜４ｉの通信端末は、例えば、ＥＣＵ（電子制御ユニット）により構成される。
【００１４】
配車センター内の第１端末２とタクシー４ａ〜４ｉとの間の通信は、直接的に行われてもよいが、通信を中継する基地局の第２端末３ａ〜３ｃを介して行われてもよい。基地局は様々なエリアに配置され、ネットワークを介して配車センター内の第１端末２と通信を行う。各基地局の第２端末３ａ〜３ｃは、周辺のエリア内にいるタクシーとの通信を担当する。例えば、基地局Ａの第２端末３ａは、基地局Ａの近くにいるタクシー４ａ〜４ｃと無線通信を行う。
【００１５】
上記のような配車システム１においては、配車センターと基地局の端末（例えば第２端末３ａ）との間、および基地局の端末とタクシー（例えばタクシー４ａ）内の端末との間で、通話の音声データ、タクシーの現在地、顧客の現在地および道路の混雑情報等の種々の情報が送受信される。その際、データの種類に応じた独自の（専用の）プロトコルが実装される。専用のプロトコルを利用することにより、例えば、上記のような各情報を効率的に送受信することができる。
【００１６】
このような専用のプロトコルを複数備える配車システム１の検証を行うために、テスト環境に必要となるプロトコルを組込み、必要となるプロトコルのプログラムを予め用意する。また、配車システム１の検証を行うために、各プロトコルに対応するテストケースを予め用意し、プロトコルの検証を順次行う。第１端末２、第２端末３ａ〜３ｃおよびタクシー４ａ〜４ｉ上の端末を模擬的に実現した仮想マシンを含む仮想システムを用いてテストを行うために、テスト環境に必要なプロトコルを組込み、各プロトコルに対応するテストケースを用意し、プロトコルの検証を順次行う。
【００１７】
ここで、本発明の検証システム１００は、種々のプロトコルのプログラムの生成およびテストを自動的に行うことができるものであり、上記のような配車システム１の検証を行う際に利点を有する。
【００１８】
［２．構成］
［２−１．検証システムの構成］
図２は、本発明の実施の形態に係る検証システム１００の構成を示す図である。検証システム１００は、仮想システム生成装置１０と、仮想システム制御装置１１と、テスト制御装置１２とを備える。仮想システム生成装置１０は、入力された構成定義情報５に基づいて、仮想システム制御装置１１内に仮想システムを生成する。仮想システム制御装置１１は、仮想システム生成装置１０から出力された仮想システムを稼働させる。
【００１９】
テスト制御装置１２は、ネットワークシステム間のテスト用シーケンス情報を示すテストケース６を読み取り、テストケース６に基づくシーケンスを仮想システム制御装置１１に対して出力する。テストケース６は、仮想システムとその外部との間の境界における、仮想システムの入出力情報を有する。テストケース６に基づくシーケンスが入力された仮想システム制御装置１１は、入力に基づく動作を行い、結果を出力する。テスト制御装置１２には、仮想システム制御装置１１から出力された結果が入力される。テスト制御装置１２は、テストケース６に記載された予想出力結果と、仮想システム制御装置１１から出力された結果とを比較し、両者が合致するか否かを判定する。両者が合致すれば、仮想システムが所望の動作をしていることが実証され、ひいては、現実のネットワークシステムが所望の動作を行うことが期待できる。このようにして、ネットワークシステムの検証を行うことができる。
【００２０】
仮想システム生成装置１０、仮想システム制御装置１１およびテスト制御装置１２は、例えば汎用的なコンピュータと同様の構成を有する。すなわち、仮想システム生成装置１０、仮想システム制御装置１１およびテスト制御装置１２は、例えば、図３に示すように、入力部４１、出力部４２、主記憶部４３、補助記憶部４４、制御部４５および通信インタフェース（Ｉ／Ｆ）４６を備える。
【００２１】
入力部４１は、使用者による操作指示やデータを受け付ける入力用インタフェースである。例えば、入力部４１は、使用者から受け付けた入力指示や操作の内容を電気信号に変換して制御部４５に伝達する。入力部４１は、マウス、キーボード、タッチパネル、マイク等を含む。
【００２２】
出力部４２は、種々の情報を出力する。出力部４２は、液晶ディスプレイ、有機ＥＬディスプレイ、プロジェクタ等の表示装置を含む。また、出力部４２は、プリンタおよび音声を出力するスピーカを含む。
【００２３】
主記憶部４３および補助記憶部４４は、種々の情報を記録する記録媒体である。主記憶部４３は、例えば種々の情報を一時的に記憶する高速動作可能なＳＲＡＭ、ＤＲＡＭなどの揮発性メモリで構成される。補助記憶部４４は、例えば、フラッシュメモリ、ＳＳＤなどの半導体メモリ装置、ハードディスク等の磁気記憶装置、その他の記憶デバイス単独でまたはそれらを適宜組み合わせて実現される。
【００２４】
制御部４５は、プログラムを実行することによって所定の機能を実現するＣＰＵまたはＭＰＵのような汎用プロセッサを含み、補助記憶部４４に格納された制御プログラムを呼び出して実行することによって、各種の制御を実現する。制御部４５は、ハードウェアとソフトウェアの協働により所定の機能を実現するものに限定されず、所定の機能を実現するための専用回路として設計されたＦＰＧＡ、ＡＳＩＣ、ＤＳＰ等のハードウェア回路で構成されてもよい。
【００２５】
通信Ｉ／Ｆ４６は、ネットワークを介して外部機器への通信接続を可能とするためのインタフェース回路またはモジュールである。通信Ｉ／Ｆ４６は、ＩＥＥＥ８０２．３、ＩＥＥＥ８０２．１１またはＷｉ−Ｆｉ、ＬＴＥ、３Ｇ、４Ｇ、５Ｇ等の規格に従って通信を行う。
【００２６】
仮想システム生成装置１０、仮想システム制御装置１１およびテスト制御装置１２は、それぞれ別のコンピュータ端末であってもよいが、１台のコンピュータ端末によって実現されてもよい。この場合、制御部４５は、例えば図２に示した仮想システム生成装置１０の機能に相当する仮想システム生成機能と、仮想システム制御装置１１の機能に相当する仮想システム制御機能と、テスト制御装置１２の機能に相当するテスト制御機能と、を実現する。
【００２７】
［２−２．構成定義情報］
以上のように構成された検証システム１００において、仮想システム生成装置１０は、入力された構成定義情報５に基づいて、仮想システム制御装置１１内に仮想システムを生成する。図４ａ〜４ｃは、構成定義情報５の一例を示す図である。構成定義情報５は、例えば、ＪＳＯＮ、ＸＭＬ、ＹＡＭＬまたはＣＳＶの形式で記述される。構成定義情報５には、仮想システム上のネットワーク構成を定義するネットワークトポロジが記載される。図４ａに示した例では、構成定義情報５には、第１トポロジ（ｔｏｐ１）、第２トポロジ（ｔｏｐ２）および第３トポロジ（ｔｏｐ３）等からなるネットワークトポロジの構造が記載されている。図４ｂは、このような第１トポロジの構成の一例を示す図である。図４ｃは、第２トポロジの構成の一例を示す図である。図４ｂおよび図４ｃに示した左端の数字は、図面をわかりやすくするために付した行番号である。
【００２８】
図４ｂおよび図４ｃに示すように、構成定義情報５は、ネットワークトポロジ内で稼働する各種ノード（サブシステム）の情報（４行目のｎｏｄｅｓ）、サブシステム上で稼働する通信プロトコルを表すプロトコル定義および状態遷移定義を含む。図４ｂでは、１０行目においてプロトコル定義として外部の「Ｘ１．ｐｒｔ」ファイルを、１１行目において状態遷移定義として外部の「Ｙ１．ｓｔｍ」ファイルを参照している。しかしながら、本発明の実施の形態はこれに限定されず、例えばプロトコル定義および状態遷移定義は、構成定義情報５に直接記述されてもよい。
【００２９】
図５は、プロトコル定義の一例を示す図である。装置Ａと装置Ｂとの間の通信プロトコルを表すプロトコル定義（ｐｒｏｔｏ＿ＡＢ）は、例えば「Ｘ１．ｐｒｔ」ファイル内に記載され、構成定義情報５によって参照される（図４ａ〜４ｃ参照）。同様に、各装置間の通信プロトコルを表すプロトコル定義が、同一のまたは異なるファイル内に記載され、構成定義情報５によって参照される。
【００３０】
プロトコル定義は、例えば図５に示すように、バージョン情報、信号長情報、信号種別情報、識別ＩＤ情報、送信元のＩＰアドレス等の送信元判別情報、送信先のＩＰアドレス等の送信先特定情報、予約領域およびデータ領域を含む。プロトコル定義は、図５に示したものに限定されず、ＦＴＰ、ＨＴＴＰ、ＴＣＰ、ＩＰ、ＭＡＣ等の周知のプロトコルに従った仕様を有するものであってもよいし、検証システム１００の検証対象であるシステム（例えば図１の配車システム１）に応じた専用の仕様を有するものであってもよい。
【００３１】
図６は、プロトコルの状態遷移定義の一例を示す図である。図６の状態遷移は、装置Ａと装置Ｂとの間の通信プロトコルを表している。装置Ａと装置Ｂとの間の通信プロトコルを表す状態遷移定義は、例えば「Ｙ１．ｓｔｍ」ファイル内に記載され、構成定義情報５によって参照される（図４ａ〜４ｃ参照）。同様に、各装置間の通信プロトコルを表す状態遷移定義が、同一のまたは異なるファイル内に記載され、構成定義情報５によって参照される。
【００３２】
図６に例示した状態遷移定義では、装置Ａおよび装置Ｂの起動後、装置Ａが装備Ｂに対して信号を送信し、装置Ｂが信号を受信する。装置Ｂは、受信した信号に基づいてデータ処理を行い、装置Ａに対して信号を返信する。
【００３３】
状態遷移定義は、図６に示したものに限定されず、周知のプロトコルに従った仕様を有するものであってもよいし、検証システム１００の検証対象であるシステム（例えば図１の配車システム１）に応じた専用の仕様を有するものであってもよい。
【００３４】
以上の構成のほか、構成定義情報５は、図示しないネットワークハブ、ロードバランサおよびデータベースサーバ等の種々の装置に関する情報を含んでもよい。
【００３５】
［２−３．仮想システム生成装置の構成］
図７は、仮想システム生成装置１０の機能構成を示す機能ブロック図である。仮想システム生成装置１０は、構成定義情報入力部５０、構成定義情報解析部６０、プロトコル解析部７０、仮想システム生成部８０および仮想システム出力部９０を含む。これらの各部は、仮想システム生成装置１０のＣＰＵ等の制御部によって実現される。
【００３６】
構成定義情報入力部５０は、外部から受信した構成定義情報５（図２参照）を構成定義情報解析部６０に出力する。
【００３７】
構成定義情報解析部６０は、構成定義情報５を解析して、ネットワーク構成（ネットワークトポロジ）の各構成要素に関する情報を取得する。構成定義情報解析部６０は、ネットワークトポロジ情報取得部６１、ノード情報取得部６２、ノード種別判定部６３および装置情報取得部６４を含む。
【００３８】
ネットワークトポロジ情報取得部６１は、ネットワークトポロジに必要なＲａｎｇｅ情報等を取得する。ノード情報取得部６２は、ネットワークトポロジ内の各ノードを取得する。ノード種別判定部６３は、取得された各ノードが、装置インスタンス、ルータ、ログ記録装置等のうちのいずれの種別の装置に該当するかを判定する。装置情報取得部６４は、各装置（例えば図４ｂの装置Ａ、第１ルータおよびログ記録装置）のアドレス情報、各装置によって送受信されるログの情報、各装置を構成するために必要なプログラムの情報等を取得する。
【００３９】
プロトコル解析部７０は、構成定義情報５を解析して、装置上で稼働するプロトコルのプログラムを生成する。プロトコル解析部７０は、フォーマット取得部７１、状態遷移情報取得部７２、ソースコード生成部７３およびプログラム生成部７４を含む。
【００４０】
フォーマット取得部７１は、構成定義情報５からプロトコル定義のフォーマットを取得してソースコード生成部７３に出力する。プロトコル定義のフォーマットは、例えば、図４ｂおよび図４ｃの１０行目に示すように、「ｆｏｒｍａｔ」によって定義される。図４ｂに示した例では、構成定義情報５において、「Ｘ１．ｐｒｔ」が参照されている。プロトコル定義のフォーマットの情報は、「Ｘ１．ｐｒｔ」ファイル（図５参照）内に記載されている。このようにして、フォーマット取得部７１は、プロトコルの構成を表す情報を取得する。
【００４１】
状態遷移情報取得部７２は、構成定義情報５から状態遷移情報を取得してソースコード生成部７３に出力する。状態遷移情報は、例えば、図４ｂおよび図４ｃに示すように、「ｓｔａｔｅｍｅｎｔ」によって定義される。図４ｂに示した例では、構成定義情報５において、「Ｙ１．ｓｔｍ」が参照されている。装置間の通信プロトコルを表す状態遷移定義は、例えば図６のような状態遷移を示す「Ｙ１．ｓｔｍ」ファイル内に記載されている。このようにして、状態遷移情報取得部７２は、プロトコルの振る舞いを表す情報を取得する。
【００４２】
ソースコード生成部７３は、入力されたプロトコル定義のフォーマットおよび状態遷移情報に基づいて、装置上で稼働するプロトコルのプログラムを生成するためのソースコードを生成する。ソースコードの生成は、例えば、ドメイン固有言語（Domain Specific Language、ＤＳＬ）を用いたメタプログラミング技術によって行われる。ソースコード生成部７３は、生成したソースコードをプログラム生成部７４に出力する。
【００４３】
プログラム生成部７４は、入力されたソースコードをコンパイルして、装置上で実行可能なバイナリ形式のプログラムを生成する。
【００４４】
仮想システム生成部８０は、構成定義情報解析部６０およびプロトコル解析部７０によって得られた各情報に基づいて、仮想システムを構成する。仮想システム生成部８０は、ノード生成部８１、プログラム設定部８２、トポロジ生成部８３、ノード結合部８４およびトポロジ結合部８５を含む。
【００４５】
ノード生成部８１は、構成定義情報解析部６０のノード情報取得部６２およびノード種別判定部６３によって取得されたノード情報およびノード種別に基づいて、仮想システム内に装置、ルータ、ログ記録装置等のノードを生成する。
【００４６】
図８は、ノード生成部８１によって生成される装置インスタンスのひな形である装置テンプレートノード１１０の構成を例示する図である。ノード生成部８１は、構成定義情報５から取得したアドレス情報１１２とアクセス元情報１１３とを装置テンプレートノード１１０に当てはめることによって、複数のノードにそれぞれ対応する仮想化されたノードを生成することができる。
【００４７】
装置テンプレートノード１１０は、仮想システム生成部８０が装置インスタンスを生成する際に用いられる。装置テンプレートノード１１０は、インスタンス設定部１１１と、プログラム設定部１１５と、ログ設定部１１８とを備える。
【００４８】
インスタンス設定部１１１は、構成定義情報５から取得したアドレス情報１１２と、アクセス元のノードの情報を示すアクセス元情報１１３と、に基づいてネットワーク設定を行う。ネットワーク設定は出力ファイル１１４に記載され、後述の仮想システム出力部９０（図７）から出力される。
【００４９】
プログラム設定部１１５は、装置内で実行されるプログラムと、装置の接続先のノードの情報と、を取得し、これらを装置に設定する接続先ノード設定部１１６を含む。プログラム設定部１１５は、設定されたプログラムを実行するプログラム実行部１１７を更に含む。
【００５０】
ログ設定部１１８は、装置がログ記録装置に接続するためのログ記録装置接続情報を設定するログ記録装置接続情報設定部１１９を含む。ログ設定部１１８は、プログラム実行部１１７によって実行されたプログラムが出力するログを取得するログ取得部１２０を含む。取得されたログは、ログ送信部１２１からログ記録装置に出力される。
【００５１】
図９は、ノード生成部８１によって生成されるログ記録装置のひな形であるログ記録装置テンプレートノード１３０の構成を例示する図である。ログ記録装置テンプレートノード１３０は、ノード情報設定部１３１と、ログシステム設定部１３３と、ログ取得部１３７とを備える。
【００５２】
ノード情報設定部１３１は、構成定義情報５から取得したアドレス情報１３２に基づいてネットワーク設定を行う。
【００５３】
ログシステム設定部１３３は、接続元ノード１３４の情報から接続元となるサブシステムの許可を行う。また、ログシステム設定部１３３は、ファシリティ（facility）またはプライオリティ（priority）等の出力されるログの形式を示すログタイプ１３５と、出力ファイル１３６の形式等の設定を行う。
【００５４】
ログ取得部１３７は、装置から送信されるログを記録するログ記録部１３８を含む。記録されたログは、ログファイル１３９に記載され、出力される。
【００５５】
図７に戻り、仮想システム生成装置１０のプログラム設定部８２は、生成された各ノード上に、稼働すべきプログラムを設定する。このプログラムは、プロトコル解析部７０のプログラム生成部７４によって生成されたものである。
【００５６】
トポロジ生成部８３は、構成定義情報解析部６０のネットワークトポロジ情報取得部６１によって取得されたネットワークトポロジ情報に基づいて、仮想システム内にネットワークトポロジを生成する。トポロジ生成部８３は、ネットワークトポロジ情報に基づいて各ノードを結合するノード結合部８４と、ネットワークトポロジを結合するトポロジ結合部８５とを含む。
【００５７】
仮想システム出力部９０は、生成された仮想システムを、仮想システム制御装置１１（図２参照）に出力する。
【００５８】
［２−４．テスト制御装置の構成］
図１０は、テスト制御装置１２の機能構成を示す機能ブロック図である。テスト制御装置１２は、テストケース取得部１４０と、テストケース解釈部１４１と、テスト入力情報出力部１４５と、仮想システム出力結果取得部１４６と、仮想システム出力結果解析部１４７と、テスト結果出力部１４８とを含む。これらの各部は、テスト制御装置１２のＣＰＵ等の制御部によって実現される。
【００５９】
テストケース取得部１４０は、テスト制御装置１２の補助記憶部や外部サーバに格納されたテストケース６（図２参照）を取得する。
【００６０】
テストケース解釈部１４１は、テストケース取得部１４０によって取得されたテストケース６を解釈する。テストケース解釈部１４１は、仮想システム制御装置１１上で稼働する仮想システム（以下、単に「仮想システム」という。）に入力するテスト用のシーケンス情報を取得するテスト入力情報取得部１４２と、仮想システムに入力するテスト用のシーケンス情報に対応して仮想システムから出力されると予想される予想出力情報を取得する予想出力情報取得部１４３と、取得したテスト入力情報および予想出力情報を保存するためにテスト制御装置１２の補助記憶部や外部サーバに送信する保存部１４４とを含む。
【００６１】
テスト入力情報出力部１４５は、テスト入力情報取得部１４２によって取得されたテスト入力情報を仮想システムに対して出力する。
【００６２】
仮想システム出力結果取得部１４６は、入力されたテスト入力情報に基づいて仮想システムが出力した出力結果を取得する。
【００６３】
仮想システム出力結果解析部１４７は、予想出力情報取得部１４３によって取得された予想出力情報と、仮想システム出力結果取得部１４６によって取得された出力結果とを比較し、両者の間の差の有無を判定する。両者の間に差がない場合、仮想システムの出力結果は予想通りであり、ネットワーク構成に問題がないことを意味する。予想出力情報は、テスト用のシーケンスが入力された場合に、仮想システムから出力されると想定されるテスト結果の情報である。例えば、予想出力情報は、テスト用のシーケンスとともに設計者によって用意される。
【００６４】
テスト結果出力部１４８は、仮想システム出力結果解析部１４７による判定結果を出力する。判定結果は、仮想システム内のログ記録装置に記録されてもよいし、外部ファイルとして出力部から出力されてもよい。
【００６５】
［３．仮想システム］
仮想システム制御装置１１（図２参照）は、仮想システム生成装置１０によって生成された仮想システムを仮想的に実現して稼働させる。図１１は、仮想システム生成装置１０によって生成された仮想システム２００の構成を示す図である。
【００６６】
仮想システム２００は、第１トポロジ２０１、第２トポロジ２０２、第３トポロジ２０３および第４トポロジ２０４を含む。図１１に示した例では、第１トポロジ２０１において、装置Ａ２０５およびログ記録装置２０６が通信可能に接続されている。第１トポロジ２０１は、第１ルータ２０７を介して、第２トポロジ２０２に通信可能に接続されている。図１１に示した第１トポロジ２０１は、図４ｂに示した構成定義情報５に従った構成を有していることがわかる。
【００６７】
第２トポロジ２０２では、装置Ｂ２０８および装置Ｃ２０９が通信可能に接続されている。第２トポロジ２０２は、第２ルータ２１０を介して第３トポロジ２０３に通信可能に接続されるとともに、第３ルータ２１１を介して第４トポロジ２０４に通信可能に接続されている。図１１に示した第２トポロジ２０２は、図４ｃに示した構成定義情報５に従った構成を有していることがわかる。
【００６８】
第３トポロジは、装置Ｄ２１２を含む。第４トポロジ２０４では、装置Ｅ２１３および装置Ｆ２１４が通信可能に接続されている。第４トポロジ２０４は、第４ルータ２１５を介して、更に他のトポロジに通信可能に接続されてもよい。
【００６９】
仮想システム２００の各ノード２０５〜２１５には、構成定義情報５に記述された通りのＩＰアドレスが付されている（図４ｂおよび図４ｃ参照）。
【００７０】
以上のように、構成定義情報５に基づいて、図１１に示したような仮想システム２００を構成することができる。なお、仮想システム２００は、図示しないネットワークハブ、ロードバランサおよびデータベースサーバ等の種々の装置を更に備えてもよい。
【００７１】
仮想システム２００にテスト入力情報出力部１４５から出力されたテスト入力情報等のシーケンスが入力されると、入力されたシーケンスに従って仮想システム２００内のノードが動作し、ログ記録装置２０６に動作ログが記録される。なお、動作ログは、仮想システム２００のログ記録装置２０６ではなく、仮想システム制御装置１１の補助記憶部や外部サーバ等の他の記憶装置に記録されてもよい。
【００７２】
図１２は、このような動作ログの一例を示す図である。動作ログは、ログ取得時刻（図１２のｔ１〜ｔ３６）と、装置Ａ、装置ＢおよびルータＡ等のログの出力元インスタンスと、ＰＲＯＴＯ＿ＡＢ等のログ出力元プログラムと、ログ識別番号と、ログメッセージと、に関する情報を含む。動作ログは、上記のものに限定されず、クラス名および関数名等のプログラムに依存する情報や、ネットワークアドレス等の仮想システムに依存する情報を含んでもよい。
【００７３】
動作ログは、例えば、仮想システム制御装置１１、テスト制御装置１２または外部のクライアント端末のディスプレイ等の出力部に表示され、あるいは、プリンタ等の出力部によってプリントアウトされる。これにより、ユーザは動作ログを確認することができる。
【００７４】
［４．まとめ］
以上のように、検証システム１００は、ネットワークシステム上のノード間で行われる通信を検証する。検証システム１００は、ノード間の接続関係とノード間の通信プロトコルとを定義する情報を含む構成定義情報５に基づいて、ノードを仮想システム制御装置１１上で仮想的に稼働できるように仮想化し、仮想化されたノードによって構成される仮想システム２００を生成する仮想システム生成装置１０を含む。
【００７５】
さらに、検証システム１００は、仮想システム２００に入力される入力シーケンスと、入力された入力シーケンスに応じて仮想システムから出力されると予想される予想出力情報と、を含む所定のテストケース６に基づいて、入力シーケンスを仮想システム２００に入力し、入力された入力シーケンスに応じて仮想システムから出力された出力結果と、予想出力情報と、を比較し、両者の間の差の有無を判定するテスト制御装置１２を含む。
【００７６】
具体的には、仮想システム生成装置１０は、構成定義情報５に基づいて、仮想システム２００においてノード間の通信プロトコルの状態遷移を含む動作を実現するプログラムを生成する。
【００７７】
このような構成により、検証システム１００は、ノード間の接続関係および通信プロトコルの仕様を記述する構成定義情報５に基づいて、ネットワークシステムを構成するノードを仮想システム制御装置１１上に仮想的に実現し、ノード間で行われる通信を検証することができる。これにより、ネットワークシステムの通信の検証をネットワークシステムの開発初期に行うことができ、開発の中期または後期に不具合が発見された場合の工程の手戻りの発生を防止することができる。
【００７８】
仮想化されたノードは、他の仮想化されたノードとの間で行った通信に関する情報を示す通信ログを出力してもよい。
【００７９】
検証システム１００ではネットワークシステム上の全ノードが再現されるため、ネットワークシステム全体の動作を示す通信ログがシーケンシャルに収集できる。このログを確認することにより、ネットワークシステムの仕様に不具合があった場合、早期に不具合を発見することができる。
【符号の説明】
【００８０】
１  配車システム、５  構成定義情報、６  テストケース、１０  仮想システム生成装置、１１  仮想システム制御装置、１１  コンピュータ、１２  テスト制御装置、５０  構成定義情報入力部、６０  構成定義情報解析部、６１  ネットワークトポロジ情報取得部、６２  ノード情報取得部、６３  ノード種別判定部、６４  装置情報取得部、７０  プロトコル解析部、７１  フォーマット取得部、７２  状態遷移情報取得部、７３  ソースコード生成部、７４  プログラム生成部、８０  仮想システム生成部、８１  ノード生成部、８２  プログラム設定部、８３  トポロジ生成部、８４  ノード結合部、８５  トポロジ結合部、９０  仮想システム出力部、１００  検証システム、１１０  装置テンプレートノード、１１１  インスタンス設定部、１１２  アドレス情報、１１３  アクセス元情報、１１４  出力ファイル、１１５  プログラム設定部、１１６  接続先ノード設定部、１１７  プログラム実行部、１１８  ログ設定部、１１９  ログ記録装置接続情報設定部、１２０  ログ取得部、１２１  ログ送信部、１３０  ログ記録装置テンプレートノード、１３１  ノード情報設定部、１３３  ログシステム設定部、１３４  接続元ノード、１３５  ログタイプ、１３６  出力ファイル、１３７  ログ取得部、１３８  ログ記録部、１３９  ログファイル、１４０  テストケース取得部、１４１  テストケース解釈部、１４２  テスト入力情報取得部、１４３  予想出力情報取得部、１４４  保存部、１４５  テスト入力情報出力部、１４６  仮想システム出力結果取得部、１４７  仮想システム出力結果解析部、１４８  テスト結果出力部、２００  仮想システム、２０１  第１トポロジ、２０２  第２トポロジ、２０３  第３トポロジ、２０４  第４トポロジ、２０６  ログ記録装置、２０７  第１ルータ、２１０  第２ルータ、２１１  第３ルータ、２１５  第４ルータ。
【図１】
2020120145.tif 000003
【図２】
2020120145.tif 000004
【図３】
2020120145.tif 000005
【図４ａ】
2020120145.tif 000006
【図４ｂ】
2020120145.tif 000007
【図４ｃ】
2020120145.tif 000008
【図５】
2020120145.tif 000009
【図６】
2020120145.tif 000010
【図７】
2020120145.tif 000011
【図８】
2020120145.tif 000012
【図９】
2020120145.tif 000013
【図１０】
2020120145.tif 000014
【図１１】
2020120145.tif 000015
【図１２】
2020120145.tif 000016