(57)【要約】      （修正有）【課題】検証対象装置やシステムを運搬することなく、効率よく装置やシステムを検証する。【解決手段】仮想テスト装置１０は、接続用装置２０から受信した、評価用装置を仮想的にテストするための環境情報に基づいて評価環境を構築する環境構築部１０３と、接続用装置から受信した、評価環境において評価用装置が実行するテストの処理内容を示すテストケースに基づいて仮想的なテストを実行するテストケース実行部１０４と、テストケースの実行結果に基づいてテストケースに示されたテストが評価環境で実行された場合の評価用装置のあるべき振る舞いを示すテストスートを生成するテストスート生成部１０６と、接続用装置から環境情報およびテストケースを受信し、または接続用装置にテストスートを送信するテスト装置通信部１０１と、を備える。【選択図】図１
2014041515.tif 000002
【特許請求の範囲】
【請求項１】
評価対象となる評価用装置の動作を仮想的にテストする仮想テスト装置と、前記仮想テスト装置にネットワークを介して接続された前記評価用装置の動作を検証する接続用装置と、前記接続用装置に接続された前記評価用装置とを有して構成されたリモート検証システムであって、
前記仮想テスト装置は、
前記接続用装置から受信し、前記評価用装置を仮想的にテストするための環境情報に基づいて評価環境を構築する環境構築部と、
前記接続用装置から受信し、前記評価環境において前記評価用装置が実行するテストの処理内容を示すテストケースに基づいて仮想的なテストを実行するテストケース実行部と、
前記テストケースの実行結果に基づいて前記テストケースに示されたテストが前記評価環境で実行された場合の前記評価用装置のあるべき振る舞いを示すテストスートを生成するテストスート生成部と、
前記接続用装置から前記環境情報およびテストケースを受信し、または前記接続用装置に前記テストスートを送信するテスト装置通信部と、を備え、
前記接続用装置は、
前記環境情報および前記テストケースの入力を受け付ける入力部と、
前記仮想テスト装置から受信した前記テストスートから前記評価用装置に対するテストコマンドを取得し、取得した前記テストコマンドを前記評価用装置に送信するコマンド送信制御部と、
前記評価用装置から受信した前記テストコマンドに対するレスポンスの妥当性を検証するレスポンス検証部と、
前記仮想テスト装置から前記テストスートを受信し、または前記仮想テスト装置に前記環境情報およびテストケースを送信するテスト装置側通信部と、
前記評価用装置から前記レスポンスを受信し、または前記評価用装置に前記テストコマンドを送信する評価用装置側通信部と、を備え、
前記評価用装置は、
前記接続用装置から前記テストコマンドを受信し、または前記接続用装置に前記レスポンスを送信する評価装置通信部と、
前記接続用装置から受信した前記テストコマンドに従って処理を実行する処理制御部と、
を備えることを特徴とするリモート検証システム。
【請求項２】
前記テストケースには、前記テストコマンドを実行するタイミングを含み、
前記接続用装置は、
前記コマンド送信制御部が、前記仮想テスト装置から受信した前記テストスートに含まれるテストコマンド群と、前記テストコマンド群が実行された場合に前記評価用装置から受信すると予測される期待レスポンス群とを抽出し、前記テストコマンド群を前記テストスートにおいて指定された前記タイミングで前記評価用装置に送信し、
前記レスポンス検証部が、前記評価用装置から取得したレスポンスを取得し、取得した前記レスポンスと、前記テストスートに記載された前記期待レスポンス群とを比較することにより、前記評価用装置の動作を検証する、
ことを特徴とする請求項１に記載のリモート検証システム。
【請求項３】
前記接続用装置は、
前記レスポンス検証部が、前記評価用装置の動作を検証した際に、前記レスポンスが前記テストスートに示された値と異なっているか否か、または前記レスポンスが予め規定された範囲を逸脱しているか否かを判定し、
前記テスト装置側通信部が、前記レスポンスが前記テストスートに示された値と異なっている、または前記レスポンスが予め規定された範囲を逸脱していると判定された場合、前記仮想テスト装置に対して前記レスポンスを送信し、
前記仮想テスト装置は、
前記テストケース実行部が、前記評価環境において前記レスポンスを反映させて再度前記テストケースを実行し、前記評価用装置に接続された他の装置への影響を検証する、
ことを特徴とする請求項２に記載のリモート検証システム。
【請求項４】
前記他の装置への影響を検証する場合において、前記テストケース実行部が前記テストケースを実行した場合に、前記他の装置が前記テストコマンドを発行し、前記評価用装置が所定のタイミングで前記レスポンスを発行し、前記他の装置においてエラーが発生するか否かを判定することにより、前記他の装置への影響を検証する、
ことを特徴とする請求項３に記載のリモート検証システム。
【請求項５】
前記仮想テスト装置は、
前記テストケース実行部が、前記評価環境における前記テストケースを前記評価用装置に接続された他の装置に対して実行し、前記他の装置に所定のタイミングで前記テストケースに記載されたコマンドを発行させ、
前記テストスート生成部が、発行された前記コマンドにより送受信されるデータの内容と、そのタイミングとを含む前記テストスートを生成する、
ことを特徴とする請求項１〜４のいずれか１項に記載のリモート検証システム。
【請求項６】
前記テストスート生成部は、前記評価用装置が前記テストコマンドまたは前記レスポンスを送受信したタイミングを示す送受信タイミングと、前記テストコマンドまたは前記レスポンスの入出力方向と、前記テストコマンドまたは前記レスポンスの通信手順を示す通信プロトコルと、送信元や送信先に関する情報と、送受信データ内容と、を含むテストスートを生成する、
ことを特徴とする請求項１〜５のいずれか１項に記載のリモート検証システム。
【請求項７】
評価対象となる評価用装置の動作を仮想的にテストする仮想テスト装置と、前記仮想テスト装置にネットワークを介して接続された前記評価用装置の動作を検証する接続用装置と、前記接続用装置に接続された前記評価用装置とを有して構成されたリモート検証システムであって、
前記仮想テスト装置は、
前記接続用装置から受信し、前記評価用装置を仮想的にテストするための環境情報に基づいて評価環境を構築する環境構築部と、
前記接続用装置から受信し、前記評価環境において前記評価用装置が実行するテストの処理内容を示すテストケースに基づいて仮想的なテストを実行するテストケース実行部と、
前記テストケースの実行結果に基づいて前記テストケースに示されたテストが前記評価環境で実行された場合の前記評価用装置のあるべき振る舞いを示すテストスートを生成するテストスート生成部と、
前記接続用装置から前記コマンドに対するレスポンスおよび前記テストコマンドを送信してから受信するまでのレスポンスタイムを受信し、または前記接続用装置に前記テストコマンドを送信するテスト装置通信部と、
前記評価用装置から受信した前記テストコマンドに対するレスポンスおよびレスポンスタイムの妥当性を検証するレスポンス検証部と、
生成された前記テストスートから前記評価用装置に対する前記テストコマンドを取得し、取得した前記テストコマンドを前記テスト通信部を介して前記接続用装置に送信するコマンド送信制御部と、を備え、
前記接続用装置は、
前記環境情報および前記テストケースの入力を受け付ける入力部と、
前記仮想テスト装置から受信したテストコマンドを前記評価用装置に送信したタイミングと、前記評価用装置から受信したレスポンスのタイミングの差分からレスポンスタイムを算出するレスポンスタイム取得部と、
前記仮想テスト装置から前記テストコマンドを受信し、または前記仮想テスト装置に前記レスポンスタイムと前記環境情報と前記テストケースとを送信するテスト装置側通信部と、
前記評価用装置から前記レスポンスを受信し、または前記評価用装置に前記テストコマンドを送信する評価用装置側通信部と、を備え、
前記評価用装置は、
前記接続用装置から前記テストコマンドを受信し、または前記接続用装置に前記レスポンスを送信する評価装置通信部と、
前記接続用装置から受信した前記テストコマンドに従って処理を実行する処理制御部と、
を備えることを特徴とするリモート検証システム。
【請求項８】
前記仮想テスト装置は、
前記コマンド送信制御部が、生成された前記テストに含まれるテストコマンド群を抽出し、抽出した前記テストコマンド群を前記接続用装置に送信し、
前記レスポンス検証部が、前記接続用装置から取得した前記レスポンスおよび前記レスポンスタイムと、前記テストスートに記載された前記期待レスポンス群とを比較することにより、前記評価用装置の動作を検証し、
前記接続用装置は、
前記評価用装置側通信部が、前記仮想テスト装置から受信した前記テストコマンド群を前記評価用装置に送信し、
前記レスポンスタイム取得部が、前記評価用装置から取得したレスポンスを取得して前記レスポンスタイムを算出し、
前記テスト装置側通信部が、前記レスポンスおよび前記レスポンスタイムを前記仮想テスト装置に送信する、
ことを特徴とする請求項７に記載のリモート検証システム。
【請求項９】
前記仮想テスト装置は、前記テストの処理時間を計時するテストタイマーの起動または停止を制御するテストタイマー制御部をさらに備え、
前記接続用装置は、前記評価用装置が有する評価用タイマーであって前記評価用装置における処理時間を計時する評価用タイマーの起動または停止を制御する評価用タイマー制御部をさらに備え、
前記テストタイマー制御部および前記評価用タイマー制御部は、前記他の装置に前記テストコマンドを送信または前記他の装置から前記レスポンスを受信した場合に、前記テストタイマー制御部は前記テストタイマーの起動または停止を制御し、前記評価用タイマー制御部は、前記評価用タイマーの起動または停止を制御する、
ことを特徴とする請求項７または８に記載のリモート検証システム。
【請求項１０】
前記仮想テスト装置は、
前記テストタイマー制御部が、前記接続用装置に前記テストコマンドを送信した場合に前記レスポンスおよび前記レスポンスタイムを受信するまで前記テストタイマーを停止させ、前記レスポンスおよび前記レスポンスタイムを受信した場合に前記テストタイマーによる計時を再開させ、前記テストケース実行部が前記評価環境において前記レスポンスを反映させるまでの経過時間を計時させ、
前記接続用装置は、
前記評価用タイマー制御部が、前記レスポンスタイム取得部が前記レスポンスを取得した場合に前記評価用タイマーを停止させ、前記仮想テスト装置から前記経過時間を受信した場合に、前記評価用タイマーによる計時を再開させ、
前記レスポンス検証部が、反映された前記レスポンスによってエラーが発生しているか否かを判定することにより、前記他の装置への影響を検証する、
ことを特徴とする請求項９に記載のリモート検証システム。
【請求項１１】
前記接続用装置の前記評価装置側通信部は、前記評価用装置の上位側に接続された他の装置との間のレスポンスを検証するための上位側通信部と、前記評価用装置の下位側に接続された他の装置との間のレスポンスを検証するための下位側通信部と、を備え、
前記評価用装置は、前記上位側通信部と前記下位側通信部とのそれぞれに対応して前記評価装置通信部が設けられている、
ことを特徴とする請求項１〜１０のいずれか１項に記載のリモート検証システム。
【請求項１２】
前記評価用装置は、前記評価用装置に接続された他の装置を含む複数の装置を有したシステムから構成される、
ことを特徴とする請求項１〜１１のいずれか１項に記載のリモート検証システム。
【請求項１３】
評価対象となる評価用装置の動作を仮想的にテストする仮想テスト装置にネットワークを介して接続され、前記評価用装置に接続された前記評価用装置の動作を検証するリモート検証装置であって、
前記評価用装置を仮想的にテストするための環境情報および評価環境において前記評価用装置が実行するテストの処理内容を示すテストケースの入力を受け付ける入力部と、
前記仮想テスト装置から受信した前記テストケースの実行結果に基づいて前記テストケースに示されたテストが前記評価環境で実行された場合の前記評価用装置のあるべき振る舞いを示すテストスートから前記評価用装置に対するテストコマンドを取得し、取得した前記テストコマンドを前記評価用装置に送信するコマンド送信制御部と、
前記評価用装置から受信した前記テストコマンドに対するレスポンスの妥当性を検証するレスポンス検証部と、
前記仮想テスト装置から前記テストスートを受信し、または前記仮想テスト装置に前記環境情報およびテストケースを送信するテスト装置側通信部と、
前記評価用装置から前記レスポンスを受信し、または前記評価用装置に前記テストコマンドを送信する評価用装置側通信部と、
を備えることを特徴とするリモート検証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続して情報システムや制御システムといった様々なシステムやシステム内の装置の動作検証を行うシステムに関し、さらに詳しくは、テスト用の検証環境を構築せずに遠隔のテスト環境と連携してシステムや装置の動作確認を行うシステムに関する。
【背景技術】
【０００２】
電力、鉄道、水道、ガスといった社会インフラで利用される制御システムでは、一度構築したシステムは装置の老朽化や故障等の不具合が起きない限り、構成は変更されないことが通例である。これは、構成変更に伴い、設計時に想定されていない動作が発生し、システム全体に悪影響を及ぼすことを排除するためである。これにより、情報システムに比べて長期間利用する制御システムでは、旧式の制御装置やＯＳやソフトウェア等が利用され続けるケースがあり、性能面やセキュリティ面といった観点から問題となっていた。そこで、稼働中のシステムであっても、高性能で安全性が高い装置やアプリケーションを導入することが求められてきている。
【０００３】
しかしながら、稼働中の制御システムのシステム構成を変更する場合には、事前に同構成のシステムを構築し、新しく導入する装置によって不具合が発生しないことを検証する必要があるが、大規模な制御システムの場合、同構成のシステム構築が困難であるという問題があった。また、中小規模なシステムであれば、同構成のシステム構築は可能であるが、顧客への納品物と同じものを予め保有しておかなければならず、管理面やコスト面から現実的ではなかった。このような課題を解決する手段として、制御システムの安全性や相互接続性を検証するためのテストベッドと呼ばれる検証施設を構築する動きが欧州や米国をはじめ、各国で進められている。テストベッドには各インフラ分野で利用されている代表的な制御システムが構築され、各ベンダは開発した製品やシステムをテストベッドに持ち込むことにより、その製品の安全性の評価や、他社製品との相互接続性などを検証することが可能である。
【０００４】
このようなテストベッドを用いた制御システムや制御装置の動作検証を行う場合、テストベッドが設置されている検証施設まで制御システムや制御装置を運搬し、テストベッドに接続する必要があるため、サイズの小さい制御装置を評価することしかできなかった。また、テストベッドを使用する制御システムベンダや制御システムユーザが多数存在した場合、テストベッドを長時間占有することは困難であり、限られた時間内で所望の検証を行う必要があった。このような課題に対し、ネットワークを介して遠隔地からシステムを検証することにより、多人数での同一システム上での検証が可能な技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１２２５９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した従来技術では、予めテストベッドに検証対象装置やシステムを接続しておくことにより、多数のユーザが利用するテストベッドの空き時間を利用して効率良く検証することが可能であったが、検証対象装置が複数存在する場合には事前に接続できないため、効率良く評価することはできなかった。また、テストベッドまで検証対象装置やシステムを運搬することが必要となるため、運搬が困難な大規模な装置やシステムの場合、テストベッドを用いて動作検証を行うことができなかった。
【０００７】
本発明は、上記に鑑みてなされたものであって、検証対象装置やシステムを運搬することなく、効率よくその装置やシステムを検証することが可能なリモート検証システム、およびリモート検証装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明にかかるリモート検証システムは、仮想テスト装置は、接続用装置から受信し、評価用装置を仮想的にテストするための環境情報に基づいて評価環境を構築する環境構築部と、接続用装置から受信し、評価環境において評価用装置が実行するテストの処理内容を示すテストケースに基づいて仮想的なテストを実行するテストケース実行部と、テストケースの実行結果に基づいてテストケースに示されたテストが評価環境で実行された場合の評価用装置のあるべき振る舞いを示すテストスートを生成するテストスート生成部と、接続用装置から環境情報およびテストケースを受信し、または接続用装置にテストスートを送信するテスト装置通信部と、を備え、接続用装置は、環境情報およびテストケースの入力を受け付ける入力部と、仮想テスト装置から受信したテストスートから評価用装置に対するテストコマンドを取得し、取得したテストコマンドを評価用装置に送信するコマンド送信制御部と、評価用装置から受信したテストコマンドに対するレスポンスの妥当性を検証するレスポンス検証部と、仮想テスト装置からテストスートを受信し、または仮想テスト装置に環境情報およびテストケースを送信するテスト装置側通信部と、評価用装置からレスポンスを受信し、または評価用装置にテストコマンドを送信する評価用装置側通信部と、を備え、評価用装置は、接続用装置からテストコマンドを受信し、または接続用装置にレスポンスを送信する評価装置通信部と、接続用装置から受信したテストコマンドに従って処理を実行する処理制御部と、を備える。
【発明の効果】
【０００９】
本発明によれば、検証対象装置やシステムを運搬することなく、効率よくその装置やシステムを検証することが可能なリモート検証システム、およびリモート検証装置を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第一の実施形態が適用されたリモート検証システムの構成を例示する図である。
【図２】図１に示す仮想テスト装置、接続用装置、評価用装置のハードウェア構成を例示する図である。
【図３】本発明の第一の実施形態が適用されたリモート検証システムにおいて、接続用装置内にテストスートを格納し、ローカルで評価用装置の検証を行う際に実施する処理フローを例示する図である。
【図４】本発明の第一の実施形態が適用されたリモート検証システムにおいて、ローカル検証時にエラーが発生した場合に再度仮想テスト装置を用いて他装置への影響を検証する際に実施する処理フローを例示する図である。
【図５】本発明の第一の実施形態が適用されたリモート検証システムにおいて、仮想テスト装置内に構成する仮想制御システムの構成を例示する図である。
【図６】本発明の第一の実施形態が適用されたリモート検証システムにおいて、仮想テスト装置内の仮想制御システムを用いてテストスートを生成する際の処理フローを例示する図である。
【図７】本発明の第一の実施形態が適用されたリモート検証システムにおいて、仮想テスト装置で実行するテストケースの構造を例示する図である。
【図８】本発明の第一の実施形態が適用されたリモート検証システムにおいて、仮想テスト装置で生成するテストスートの構造を例示する図である。
【図９】本発明の第一の実施形態が適用されたリモート検証システムにおいて、接続用装置でテストスートより抽出するテストコマンド群の構造を例示する図である。
【図１０】本発明の第一の実施形態が適用されたリモート検証システムにおいて、接続用装置でテストスートより抽出する期待レスポンス群の構造を例示する図である。
【図１１】本発明の第一の実施形態が適用されたリモート検証システムにおいて、仮想テスト装置で再評価を行う際に実施する処理フローを例示する図である。
【図１２】本発明の第二の実施形態が適用されたリモート検証システムの構成を例示する図である。
【図１３】本発明の第二の実施形態が適用されたリモート検証システムにおいて、接続用装置を経由して仮想テスト装置から評価用装置の検証を行う際に実施する処理フローを例示する図である。
【図１４】本発明の第三の実施形態が適用されたリモート検証システムの構成を例示する図である。
【図１５】本発明の第三の実施形態が適用されたリモート検証システムにおいて、接続用装置を経由して仮想テスト装置から評価用装置の検証を行い、タイマー制御により時刻同期を実現する際の処理フローを例示する図である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、本発明にかかるリモート検証システム、およびリモート検証装置の実施の形態を詳細に説明するが、これにより本発明が限定されるものではない。
【実施例１】
【００１２】
図１は、本発明の第一の実施形態が適用されたリモート検証システムの構成図である。本実施形態のリモート検証システムは、図１に例示するように、仮想テスト装置１０と、接続用装置２０と、評価用装置３０と、ネットワーク４０と、を有して構成されている。
【００１３】
仮想テスト装置１０は、ネットワーク４０と通信を行う通信部１０１と、接続用装置２０から評価したい環境情報を取得する環境情報取得部１０２と、環境情報取得部１０２で取得した環境情報を用いて、仮想テスト装置１０内に仮想的な評価環境を構築する環境構築部１０３と、構築した評価環境において各装置が実行するテストの処理内容を記載したテストケースを実行するテストケース実行部１０４と、構築した評価環境においてテストケースを実行した際の処理時間を出力するタイマー部１０５と、テストケースに記載されたテストが評価環境で実行された場合の評価対象装置のあるべき振る舞い（理想的な振る舞い）を表したテストスート（テスト集）を生成するテストスート生成部１０６と、テストケース実行部１０４で実行するテストケースを格納するテストケース格納部１０７と、を含む。
【００１４】
接続用装置２０は、評価用装置３０において評価したい環境情報の入力を受け付ける環境情報入力部２０１と、評価用装置３０を用いて検証したいテストケースの入力を受け付けるテストケース入力部２０２と、評価用装置３０に対して送信するコマンドを制御するコマンド送信制御部２０３と、評価用装置３０から受信したレスポンスを検証する受信レスポンス検証部２０４と、受信レスポンス検証部２０４で検証した結果を出力する評価結果出力部２０５と、仮想テスト装置１０から受信したテストスートを格納するテストスート格納部２０６と、評価用装置３０から受信したレスポンス（処理結果を示す応答値、処理続行のための制御値やコマンド等）を格納するレスポンス格納部２０７と、ネットワーク４０を経由して仮想テスト装置１０と通信する外部通信部２０８と、評価用装置３０に対して評価用環境における上位側（上流側）からの通信を行う内部通信部（上位）２０９と、評価用装置３０に対して評価用環境における下位側（下流側）からの通信を行う内部通信部（下位）２１０と、を含む。
【００１５】
評価用装置３０は、接続用装置２０の内部通信部（上位）２０９と通信を行う上位通信部３０１と、接続用装置２０の内部通信部（下位）２１０と通信を行う下位通信部３０２と、上位通信部３０１や下位通信部３０２から取得したデータを処理する制御部３０３と、を含む。ここで、評価用装置３０は、単一の装置だけではなく、複数の装置を組み合わせて構成しても良い。この場合、装置を組み合わせたシステム態様での各装置のレスポンスを検証することが可能となる。なお、具体的には図５を用いて後述するが、接続用装置２０および評価用装置３０が、通信部として上位および下位の２種類の通信部を有している理由は、評価対象となる装置またはシステムが、その上位側にある装置またはシステムに接続されていたり、あるいはその下位側にある装置またはシステムに接続されていたり、あるいはその両方に接続されている場合（中間層の装置である場合）等様々なケースが考えられるため、これらの接続形態に応じたレスポンスの検証を可能とするためである。
【００１６】
図２は仮想テスト装置１０や接続用装置２０や評価用装置３０のハードウェア構成を例示する図である。新規制御装置１０や接続用装置２０や評価用装置３０は、通信装置１１と、入出力装置１２と、記憶装置１３と、ＣＰＵ１４と、メモリ１５と、読取装置１６と、がバスなどの内部通信線１８で連結され、構成されている。ここで、通信装置１１は、一つしか記載されていないが、一つの装置内に複数の通信装置が含まれていてもよい。なお、後述する各処理では、各装置が所定のタイミングに到達しているか否かを判定しているが、そのタイミングの計時は、例えば、ＣＰＵ１４が有する内部タイマによって行われる。
【００１７】
本実施形態のリモート検証システムにおける処理フローについて説明する。以下に述べる処理フローは、仮想テスト装置１０や接続用装置２０や評価用装置３０の記憶装置に格納されたプログラムがメモリにロードされ、ＣＰＵにより実行されることにより、リモート検証システムを構成する装置上に具現化される各処理部により実行されるものである。また、各プログラムは予め記憶装置に格納されても良いし、他の記憶媒体１７または通信媒体（ネットワークまたはネットワークを伝搬する搬送波）を介して、必要なときに導入されても良い。
【００１８】
図３は、本発明の第一の実施形態が適用されたリモート検証システムにおいて、仮想テスト装置１０から取得したテストスートを接続用装置２０に格納し、ローカルで評価用装置３０の動作検証を行う場合の処理フローを示した図である。なお、以下では、接続用装置２０が、第一のテストコマンド（Ａ３０３）、第二のテストコマンド（Ａ３０５）、第三のテストコマンド（Ａ３０７）を評価用装置３０に送信しているが、この数はテストコマンド（後述）の数だけ繰り返されるため、この回数に限らない。また、以下では、評価用装置３０が、第一のレスポンス（Ａ３０４）、第二のレスポンス（Ａ３０６）、第三のレスポンス（Ａ３０８）を接続用装置２０に送信しているが、この数は、上述した各テストコマンドに対するレスポンス（後述）があった数だけ繰り返されるため、この回数に限らない。
【００１９】
はじめに、接続用装置２０は、環境情報入力部２０１が、テストスートを生成するために必要となる評価用環境情報の入力を受け付ける（Ｓ３０１（Ｓ３０１と表現する。以下同様））。ここで、評価環境情報には、システム構成情報（例えば、システムが有する装置やネットワークの構成等）、そのシステム内に含まれる装置の固有情報（例えば、型番、メーカー、ＯＳ、アプリケーション情報、許容処理時間ゆらぎ量、装置間の接続関係等）、これらの固有情報と同様の評価対象装置に関する情報が含まれる。
【００２０】
次に、テストケース入力部２０２が、評価対象装置３０に対して実施したいテストケースの入力を受け付ける（Ｓ３０２）。以下、入力された情報をテストケース情報ともいう。ここで、テストケースの入力には、テストケース入力部２０２が予め決められた番号や記号の情報の入力を受け付けても良いし、具体的なテスト手順（テストケース）を記載したファイルをアップロードしても良い。次に、外部通信部２０８が、入力された評価用環境情報およびテストケース情報（Ａ３０１）を仮想テスト装置１０に送信する。なお、許容処理時間ゆらぎ量とは、例えば、処理時間があらかじめ定められた誤差範囲内に収まっているか否かを示す時間の幅の長さである。
【００２１】
次に、仮想テスト装置１０は、環境情報取得部１０２が、受信した各情報から評価環境情報を取得し、環境構築部１０３がその評価環境情報を用いて自装置内に仮想的な評価環境を構築する（Ｓ３０３）。ここで、評価環境の構築例を以降の図５に記載する。次に、テストケース実行部１０４が、受信したテストケース情報を用いてテストケース格納部１０７からテストケースを取得する（Ｓ３０４）。ここで、テストケース入力部２０２がＳ３０２でテストケースをアップロードした場合には、Ｓ３０４は不要であり、受信されたテストケースをそのまま利用する。具体的なテストケースの構成については以降の図７に記載する。次に、テストケース実行部１０４が、取得されたテストケースを実行し（Ｓ３０５）、テストスート生成部１０６が、仮想環境内の評価対象装置への入出力情報を収集し、テストスートを作成し（Ｓ３０６）、生成したテストスート（Ａ３０２）を接続用装置２０に対して送信する。具体的なテストスートの生成方法については以降の図６に記載し、テストスートの構成については以降の図８に記載する。
【００２２】
次に、接続用装置２０は、テストスート格納部２０６が、受信したテストスート（Ａ３０２）を格納する（Ｓ３０７）。次に、コマンド送信制御部２０３が、格納されたテストスートを分析し、評価用装置３０に対して送信するテストコマンド群を取得する（Ｓ３０８）。具体的なテストコマンドの構成については以降の図９に記載する。次に、受信レスポンス検証部２０４は、受信したテストスートを分析し、評価用装置３０から受信するレスポンスの期待値群を取得する（Ｓ３０９）。具体的な期待レスポンスの構成については以降の図１０に記載する。次に、コマンド送信制御部２０３は、取得されたテストコマンド群に記載されている第一のテストコマンドを送信するタイミングに到達したか検証する（Ｓ３１０）。その結果、コマンド送信制御部２０３は、指定タイミングに到達していないと判断した場合（Ｓ３１０；Ｎｏ）にはウェイトし、指定タイミングに到達していると判断した場合（Ｓ３１０；Ｙｅｓ）には、内部通信部（上位）２０９または内部通信部（下位）２１０を介して、テストコマンド群に記載されているテストコマンドのうち、第一のテストコマンド（Ａ３０３）を評価用装置３０に送信する。
【００２３】
次に、評価用装置３０は、制御部３０３が、受信した第一のテストコマンド（Ａ３０３）を処理し、第一のレスポンス（Ａ３０４）を生成し、接続用装置２０に送信する。次に、接続用装置２０は、レスポンス格納部２０７が、受信した第一のレスポンス（Ａ３０４）を格納する（Ｓ３１１）。次に、コマンド送信制御部２０３は、取得されたテストコマンド群に記載されている第二のテストコマンドを送信するタイミングに到達したか検証する（Ｓ３１２）。その結果、コマンド送信制御部２０３が、指定タイミングに到達していないと判断した場合（Ｓ３１２；Ｎｏ）にはウェイトし、指定タイミングに到達していると判断した場合（Ｓ３１２；Ｙｅｓ）には、内部通信部（上位）２０９または内部通信部（下位）２１０を介して、テストコマンド群に記載されているテストコマンドのうち、第二のテストコマンド（Ａ３０５）を評価用装置３０に送信する。
【００２４】
次に、評価用装置３０は、制御部３０３が、受信した第二のテストコマンド（Ａ３０５）を処理し、第二のレスポンス（Ａ３０６）を生成し、接続用装置２０に送信する。次に、接続用装置２０は、レスポンス格納部２０７が、受信した第二のレスポンス（Ａ３０６）を格納する（Ｓ３１３）。次に、コマンド送信制御部２０３が、取得されたテストコマンド群に記載されている第三のテストコマンドを送信するタイミングに到達したか検証する（Ｓ３１４）。その結果、コマンド送信制御部２０３が、指定タイミングに到達していないと判断した場合（Ｓ３１４；Ｎｏ）にはウェイトし、指定タイミングに到達していると判断した場合（Ｓ３１４；Ｙｅｓ）には、内部通信部（上位）２０９または内部通信部（下位）２１０を介して、テストコマンド群に記載されているテストコマンドのうち、第三のテストコマンド（Ａ３０７）を評価用装置３０に送信する。
【００２５】
次に、評価用装置３０は、制御部３０３が、受信した第三のテストコマンド（Ａ３０７）を処理し、第三のレスポンス（Ａ３０８）を生成し、接続用装置２０に送信する。次に、接続用装置２０は、レスポンス格納部２０７が、受信した第三のレスポンス（Ａ３０８）を格納する（Ｓ３１５）。次に、受信レスポンス検証部２０４が、Ｓ３１１、Ｓ３１３、Ｓ３１５で格納されたレスポンス群とＳ３０９で取得されたレスポンスの期待値群とを比較し、評価用装置３０から受信したレスポンスの妥当性を検証する（Ｓ３１６）。ここで妥当性の検証とは、レスポンスそのものの値が期待値と一致しているかという観点と、コマンドを受信してからレスポンスを生成するまでの処理時間が期待値と一致しているか（予め規定された誤差範囲内に収まっているか）という観点で評価を行う。このような観点で評価する理由は、評価対象となる装置やシステムによって誤差の許容範囲が異なってくるためである。次に、評価結果出力部２０５が、検証された結果を出力する（Ｓ３１７）。このように複数のレスポンスを含むレスポンス群とその期待値群とを比較することにより、例えば、同時に複数のレスポンスについて検証を行うことができ、また、一連のコマンドに対するレスポンスを時系列的に検証することが可能となり、評価者が効率よくその検証を行うことができるようになる。
【００２６】
図４は、本発明の第一の実施形態が適用されたリモート検証システムにおいて、図３のフローを用いて評価用装置３０の動作検証を実施した結果、Ｓ３１６において、レスポンスが規定範囲内を超えていた場合に他の装置やシステムに対する影響の有無を判定する処理フローを示した図である。以下に示した処理を行うことにより、レスポンスが当初想定した条件を満たしていない場合において、その原因や他の装置への影響を再検証検証することが可能となる。
【００２７】
はじめに、接続用装置２０は、受信レスポンス検証部２０４が、評価用装置３０から受信されたレスポンスを検証し、レスポンスが上述した許容範囲内（規定範囲内）であるか否かを判定する（Ｓ４０１）。その結果、受信レスポンス検証部２０４が、レスポンスそのものの値が期待値通り（規定範囲内）であり、レスポンス生成時間も期待値と同等であると判断した場合（Ｓ４０１；Ｙｅｓ）には、評価結果出力部２０５が結果を出力し、終了する（Ｓ４０２）。
【００２８】
一方、受信レスポンス検証部２０４が、レスポンスそのものの値が期待値と異なっていると判断した場合や、レスポンス生成時間が期待値と大幅にずれていると判断した場合（Ｓ４０１；Ｎｏ）には、再度仮想テスト装置１０を用いて他装置への影響がないか検証するために、外部通信部２０８が、仮想テスト装置１０に対して、Ｓ３０１で入力した評価環境情報と、Ｓ３０２で入力されたテストケース情報と、Ｓ３１１、Ｓ３１３、Ｓ３１５で格納されたレスポンス結果（Ａ４０１）を送信する。ここで、レスポンス生成時間が期待値とずれているかどうかの基準は、受信レスポンス検証部２０４が評価環境情報として入力される許容処理時間ゆらぎ量から算出し、レスポンス生成時間のずれが、許容されるゆらぎの範囲に収まる程度であれば同等であると判断し、許容されるゆらぎの範囲に収まらない場合には大幅にずれていると判断する。
【００２９】
次に、仮想テスト装置１０は、環境構築部１０３が、受信した評価環境情報を用いて自装置内に仮想的な評価環境を構築する（Ｓ４０３）。次に、テストケース実行部１０４が、受信したテストケース情報を用いてテストケース格納部１０７からテストケースを取得する（Ｓ４０４）。次に、テストケース実行部１０４が、受信したレスポンス結果を、取得されたテストケースに反映する（Ｓ４０５）。次に、テストケース実行部１０４が、生成されたテストケースを実行し（Ｓ４０６）、仮想環境内の評価対象装置以外の装置においてエラーが発生しないか検証し（Ｓ４０７）、検証した結果（Ａ４０２）を接続用装置２０に対して送信する。次に、接続用装置２０は、評価結果出力部２０５が、受信した検証結果（Ａ４０２）を出力する（Ｓ４０８）。
【００３０】
図５は、本発明の第一の実施形態が適用されたリモート検証システムにおいて、Ｓ３０３やＳ４０３における仮想テスト装置１０内に構築する仮想制御システムの構成の一例を示したものである。
【００３１】
仮想制御システム（５０）は、仮想制御コントローラに対して制御指令値を送信する仮想制御サーバ（５０１）と、仮想制御サーバと仮想制御コントローラ群を接続する仮想ネットワークハブ（５０２）と、評価対象となる仮想制御コントローラ（５０３）と、評価対象ではない仮想制御コントローラ（５０４）と、評価対象となる仮想制御コントローラ（５０３）と接続されているアクチュエータ／センサ（５０５）と、評価対象ではない仮想制御コントローラと接続されているアクチュエータ／センサ（５０６）と、を有して構成される。仮想テスト装置１０は、システム構成構築後、環境情報を用いて各仮想装置の動作モードや実行環境情報を設定する。
【００３２】
図５に示した例では、評価対象となる仮想制御コントローラ（５０３）は、その上位側にある仮想ネットワークハブ５０２に接続されるとともに、その下位側にあるアクチュエータ／センサ５０５に接続されている。この例では、アクチュエータ／センサ５０５が温度センサであり、仮想制御コントローラ５０３、５０４がポンプ等の弁を制御するコントローラである場合において、仮想制御サーバ５０１からの弁の開閉を制御する程度の温度変化があった場合（例えば、水温５０℃から４０℃に変化した場合）を考える。この場合、仮想制御サーバ５０１は、上述した制御を行うために、温度の閾値の上限である５０℃とその下限である４０℃を示す閾値となる温度情報を仮想制御コントローラ５０３、５０４に送信し、アクチュエータ／センサ５０５の温度がその閾値以上であれば弁を閉じるように制御を指示する一方、これとは逆にアクチュエータ／センサ５０５の温度がその閾値未満であれば弁を開けるように制御を指示する。そして、アクチュエータ／センサ５０５は、受信した指示に従って弁の開閉を制御するとともに、実際の温度を計測し、その結果を仮想制御コントローラ５０３、５０４に送信する。なお、本実施の形態では、上述した各装置やセンサ等を用いて仮想制御システム５０が生成される前提で説明しているが、もちろん評価対象となる装置やシステムの構成に応じて多様な構成の仮想制御システムを生成することができる。
【００３３】
図６は、本発明の第一の実施形態が適用されたリモート検証システムにおいて、図５で示した仮想制御システム５０内でＳ３０５が実行される処理フローを例示する図である。
【００３４】
はじめに、仮想制御サーバ５０１、仮想制御コントローラ５０４、アクチュエータ／センサ５０５において、テストケース格納部１０７から取得したテストケースを読み込む（Ｓ６０１、Ｓ６０２、Ｓ６０３）。次に、評価対象となる仮想制御コントローラ５０３は、入力データおよび出力データに関する情報を取得するため、ログ記録を開始する（Ｓ６０４）。
【００３５】
次に、仮想制御サーバ５０１は、読み込んだテストケースに記載されているタイミングに到達しているか検証する（Ｓ６０５）。仮想制御サーバ５０１は、その結果、そのタイミングに到達していないと判断された場合（Ｓ６０５；Ｎｏ）には、ウェイトし、到達していると判断された場合（Ｓ６０５；Ｙｅｓ）には、テストケースに記載されているコマンドである制御指令値（Ａ６０１）をテストケースに記載されている送信先（評価対象仮想制御コントローラ５０３）に対して送信する。次に、評価対象仮想制御コントローラ５０３は、受信した制御指令値（Ａ６０１）をもとに、制御指令値を設定する（Ｓ６０６）。例えば、仮想制御サーバ５０１は、制御指令値として、アクチュエータ／センサ５０５の温度の閾値の上限である５０℃とその下限である４０℃を示す閾値となる温度情報を、評価対象となる仮想制御コントローラ５０３に送信し、評価対象となる仮想制御コントローラ５０３は、仮想制御サーバ５０１から受け取ったその制御指令値を自身が有するメモリに設定する。
【００３６】
次に、アクチュエータ／センサ５０５は、読み込んだテストケースに記載されているタイミングに到達しているか検証する（Ｓ６０７）。その結果、そのタイミングに到達していないと判断した場合（Ｓ６０７；Ｎｏ）には、ウェイトし、そのタイミングに到達していると判断した場合（Ｓ６０７；Ｙｅｓ）には、アクチュエータ／センサ５０５は、テストケースに記載されているコマンドであるセンサデータ（Ａ６０２）をテストケースに記載されている送信先（以下、評価対象仮想制御コントローラ５０３とも呼ぶ。）に対して送信する。例えば、アクチュエータ／センサ５０５は、上述したタイミングに到達したと判定した場合、その時点においてアクチュエータ／センサ５０５が温度（例えば、３９℃）を検知し、その温度情報をセンサデータ（Ａ６０２）として評価対象仮想制御コントローラ５０３に送信する。
【００３７】
次に、評価対象仮想制御コントローラ５０３は、受信したセンサデータ（Ａ６０２）をもとに、アクチュエータ／センサ５０５に対して制御コマンドを発行する必要があるか検証する（Ｓ６０８）。その結果、必要があると判断した場合（Ｓ６０８；Ｙｅｓ）には、評価対象仮想制御コントローラ５０３は、制御コマンド（Ａ６０３）をアクチュエータ／センサ５０５に対して送信し、制御コマンドを発行したことを示す制御コマンド発行情報（Ａ６０４）を同一ネットワーク内の他の装置に対して送信する。一方、評価対象仮想制御コントローラ５０３は、必要がないと判断した場合（Ｓ６０８；Ｎｏ）には、何も処理を行わない。例えば、評価対象仮想制御コントローラ５０３は、アクチュエータ／センサ５０５からセンサデータ（Ａ６０２）として３９℃を示す温度情報を受信した場合、制御指令値として設定されている閾値の下限４０℃を下回っているので、弁を閉じる制御コマンドをアクチュエータ／センサ５０５に対して発行し、そのコマンドを発行したことを示す制御コマンド発行情報（Ａ６０４）を、仮想コントローラ５０４および仮想制御サーバ５０１に送信する。
【００３８】
次に、アクチュエータ／センサ５０５は、受信した制御コマンド（Ａ６０３）をもとに、制御処理を実行し（Ｓ６０９）、制御処理を実行したことにより変化したセンサデータを生成し（Ｓ６１０）、生成したセンサデータ（Ａ６０５）を評価対象仮想制御コントローラ５０３に対して送信する。例えば、アクチュエータ／センサ５０５は、評価対象仮想制御コントローラ５０３から弁を閉じる制御コマンドを受信した場合、そのコマンドに従って弁を閉じ、正常に弁を閉じることができたことによって変化するセンサデータを評価対象仮想制御コントローラ５０３に送信する。
【００３９】
次に、仮想制御コントローラ５０４は、Ｓ６０２で読み込んだテストケースに記載されているタイミングに到達しているか検証する（Ｓ６１１）。その結果、到達していないと判断した場合（Ｓ６１１；Ｎｏ）には、ウェイトし、そのタイミングに到達していると判断した場合（Ｓ６１１；Ｙｅｓ）には、仮想制御コントローラ５０４は、テストケースに記載されているコマンドである他コントローラ制御コマンド発行情報（Ａ６０６）を同一のネットワーク内の他の装置に対して送信する。
【００４０】
次に、評価対象仮想制御コントローラ５０３は、受信したセンサデータ（Ａ６０５）と、受信した他コントローラ制御コマンド発行情報（Ａ６０６）をもとに、アクチュエータ／センサ５０５に対して制御コマンドを発行する必要があるか検証する（Ｓ６１２）。その結果、必要があると判断した場合（Ｓ６１２；Ｙｅｓ）には、評価対象仮想制御コントローラ５０３は、制御コマンド（Ａ６０７）をアクチュエータ／センサ５０５に対して送信し、制御コマンドを発行したことを示す制御コマンド発行情報（Ａ６０８）を同一ネットワーク内の他の装置に対して送信する。一方、評価対象仮想制御コントローラ５０３は、必要がないと判断した場合（Ｓ６１２；Ｎｏ）には、何も処理を行わない。例えば、評価対象仮想制御コントローラ５０３は、アクチュエータ／センサ５０５から受信したセンサ情報と他コントローラの制御コマンド発行情報（弁を閉じる）から、弁を開けたままでよいのか、弁を閉じる必要があるのか判断し、弁を閉じる必要がある場合には、弁を閉じる旨を示す制御コマンド（Ａ６０７）をアクチュエータ／センサ５０５に対して送信する一方、仮想制御コントローラ５０４および仮想制御サーバ５０１に対して、そのコマンドを発行したことを示す他コントローラ制御コマンド発行情報（Ａ６０８）を送信する。
【００４１】
次に、アクチュエータ／センサ５０５は、受信した制御コマンド（Ａ６０７）をもとに、制御処理を実行し（Ｓ６１３）、制御処理を実行したことにより変化したセンサデータを生成し（Ｓ６１４）、生成したセンサデータ（Ａ６０９）を評価対象仮想制御コントローラ５０３に対して送信する。
【００４２】
次に、評価対象仮想制御コントローラ５０３は、全てのテストケースが終了したことを認識し、Ｓ６０４から実施していたログ記録を終了する（Ｓ６１５）。このように、図６に示した処理では、他の装置（仮想制御サーバ５０１、仮想制御コントローラ５０４、アクチュエータ／センサ５０５）が主体的にテストケースに記載されたコマンドを実行し、評価対象装置（評価対象仮想制御コントローラ５０３）は、その際における自らの処理内容を記録することにより、評価対象装置側でのデータの入出力に関する情報を取得することができる。
【００４３】
図７は、本発明の第一の実施形態が適用されたリモート検証システムにおいて、Ｓ３０４で取得するテストケース（テストケースデータ）の構成を例示する図である。テストケースとは、構築された評価環境において評価対象装置を含む各装置が実行するテストの処理内容を記載した情報である。
【００４４】
テストケース（Ａ７０１）は、処理を実施する実施タイミング（Ａ７０２）と、データ送信元（Ａ７０３）と、使用する通信プロトコル（Ａ７０４）と、データ送信先（Ａ７０５）と、送信するデータの内容（Ａ７０６）から構成される。ここで、テストケース（Ａ７０１）の構成要素は上記に限定されるものではなく、少なくとも上記の要素が含まれていればよい。また、テストケース（Ａ７０１）の構成要素の順序は上記に限定されるものではない。図７に示す例では、仮想制御サーバ５０１は仮想制御システム５０を起動してから１０秒後に、ＴＣＰプロトコルで評価対象装置（評価対象仮想制御コントローラ５０３）に制御指令値（Ａ６０１）（例えば、アクチュエータ／センサ５０５の温度の閾値の上限である５０℃とその下限である４０℃を示す閾値となる温度情報）やその設定コマンドを送信することを示している。同様に、アクチュエータ／センサ５０５は仮想制御システム５０を起動してから２０秒後に、Ｍｏｄｂｕｓプロトコルで評価対象装置（評価対象仮想制御コントローラ５０３）にセンサデータ（Ａ６０２）（例えば、アクチュエータ／センサ５０５が検知した温度情報）を送信し、他コントローラ（仮想制御コントローラ５０３）は仮想制御システム５０を起動してから３０秒後に、ＴＣＰプロトコルで各装置（仮想制御サーバ５０１および評価対象仮想制御コントローラ５０３）に弁の吐出圧を下げるコマンドが発行されたことを示す他コントローラ制御コマンド発行情報（Ａ６０６）を送信することを示している。このように、テストケースにはあらかじめ指定されたタイミングを含んでいるため、評価者は所望のタイミングでのテストが可能となる。
【００４５】
図８は、本発明の第一の実施形態が適用されたリモート検証システムにおいて、Ｓ３０６で生成するテストスートの構成を例示する図である。テストスート（テスト集）とは、テストケースに記載されたテストが評価環境で実行された場合の評価対象装置のあるべき振る舞い（理想的な振る舞い）を表したものである。
【００４６】
テストスート（Ａ８０１）は、処理を実施した実施タイミング（Ａ８０２）と、入力もしくは出力といったデータ入出力方向（Ａ８０３）と、使用した通信プロトコル（Ａ８０４）と、送信元や送信先の情報（Ａ８０５）と、送受信するデータの内容（Ａ８０６）から構成される。ここで、テストスート（Ａ８０１）の構成要素は上記に限定されるものではなく、少なくとも上記の要素が含まれていればよい。また、テストスート（Ａ８０１）の構成要素の順序は上記に限定されるものではない。図８に示す例では、評価対象仮想制御コントローラ５０３は、仮想制御システム５０を起動してから１０秒後に、ＴＣＰプロトコルで仮想制御サーバ５０１から図７の場合と同様の制御指令値を入力として受信していることを示している。同様に、評価対象仮想制御コントローラ５０３は、仮想制御システム５０を起動してから２０秒後に、Ｍｏｄｂｕｓプロトコルでアクチュエータ／センサ５０５から図７の場合と同様のセンサデータを入力として受信し、仮想制御システム５０を起動してから２５秒後に、Ｍｏｄｂｕｓプロトコルでアクチュエータ／センサ５０５に対して弁を閉める等の制御コマンドを出力として送信していることを示している。以下、図７に示したように、評価対象仮想制御コントローラ５０３がセンサデータ（Ａ６０９）をアクチュエータ／センサ５０５から受信したときまでの情報が書き込まれている。このように、テストスートには、評価環境における評価対象装置と他の装置との間の入出力に関する情報が記録される。このように、テストスートにはあらかじめ指定されたタイミングを含んでいるため、テストケースと同様に、評価者は所望のタイミングでのテストが可能となる。また、テストスートには、送信タイミングに加え、データ内容の他に通信プロトコルやデータ入出力方向、送信先（送信元）の各情報を含んでいるので、評価環境の詳細な検証が可能となる。
【００４７】
図９は、本発明の第一の実施形態が適用されたリモート検証システムにおいて、Ｓ３０８でテストスートより生成するテストコマンド群の構成を例示する図である。テストコマンド群とは、図８に示したテストスートの中で評価対象装置に対して実行されるコマンドの集まりを表したものである。
【００４８】
テストコマンド群（Ａ９０１）は、評価対象装置３０に対してデータを送信するタイミングを示す送信タイミング（Ａ９０２）と、使用する通信プロトコル（Ａ９０３）と、データの送信元（Ａ９０４）と、評価対象装置３０に対して送信するデータ内容（Ａ９０５）から構成される。ここで、テストコマンド群（Ａ９０１）の構成要素は上記に限定されるものではなく、少なくとも上記の要素が含まれていればよい。また、テストコマンド群（Ａ９０１）の構成要素の順序は上記に限定されるものではない。図９に示す例では、評価対象仮想制御コントローラ５０３に対して、仮想制御システム５０を起動してから１０秒後に、ＴＣＰプロトコルで仮想制御サーバ５０１から図８の場合と同様の制御指令値が送信されることを示している。以下同様に、図８に示したテストスートの中でデータ入出力方向が入力となっているデータがテストコマンド群として抽出されている。
【００４９】
図１０は、本発明の第一の実施形態が適用されたリモート検証システムにおいて、Ｓ３０９でテストスートより生成する期待レスポンス群の構成を例示する図である。期待レスポンス群とは、テストコマンド群に示された各コマンドが評価対象装置に対して実行された場合において評価対象装置が出力すると予想される各コマンドのレスポンスの集まりを表したものである。
【００５０】
期待レスポンス群（Ａ１００１）は、評価対象装置３０からデータを受信するタイミングを示す受信タイミング（Ａ１００２）と、使用する通信プロトコル（Ａ１００３）と、データの送信先（Ａ１００４）と、評価対象装置３０が送信するデータ内容（Ａ１００５）から構成される。ここで、期待レスポンス群（Ａ１００１）の構成要素は上記に限定されるものではなく、少なくとも上記の要素が含まれていればよい。また、期待レスポンス群（Ａ１００１）の構成要素の順序は上記に限定されるものではない。図１０に示す例では、評価対象仮想制御コントローラ５０３は、仮想制御システム５０を起動してから２５秒後に、Ｍｏｄｂｕｓプロトコルでアクチュエータ／センサ５０５に対して図８の場合と同様の制御コマンドを送信していることを示している。以下同様に、図８に示したテストスートの中でデータ入出力方向が出力となっているデータが期待レスポンス群として抽出されている。
【００５１】
図１１は、本発明の第一の実施形態が適用されたリモート検証システムにおいて、評価対象装置から取得したレスポンスが規定範囲内を超えていた場合に、図５で示した仮想制御システム５０内でＳ４０６が実行される処理フローを例示する図である。
【００５２】
はじめに、仮想制御サーバ５０１、仮想制御コントローラ５０４、アクチュエータ／センサ５０５は、テストケース格納部１０７から取得したテストケースを読み込み（Ｓ１１０１、Ｓ１１０２、Ｓ１１０３）、評価対象となる仮想制御コントローラ５０３は、接続用装置２０から取得したレスポンスデータを読み込む（Ｓ１１０４）。
【００５３】
次に、仮想制御サーバ５０１、仮想制御コントローラ５０４、アクチュエータ／センサ５０５において、エラー記録を開始し（Ｓ１１０５、Ｓ１１０６、Ｓ１１０７）、仮想制御サーバ５０１は、読み込んだテストケースに記載されているタイミングに到達しているか検証する（Ｓ１１０８）。その結果、到達していないと判断した場合（Ｓ１１０８；Ｎｏ）には、ウェイトし、到達していると判断した場合（Ｓ１１０８；Ｙｅｓ）には、仮想制御サーバ５０１は、テストケースに記載されているコマンドである制御指令値（Ａ１１０１）をテストケースに記載されている送信先（評価対象仮想制御コントローラ５０３）に対して送信する。例えば、仮想制御サーバ５０１は、制御指令値として、アクチュエータ／センサ５０５の温度の閾値の上限である５０℃とその下限である４０℃を示す閾値となる温度情報を、評価対象となる仮想制御コントローラ５０３に送信する。
【００５４】
次に、評価対象仮想制御コントローラ５０３は、受信した制御指令値（Ａ１１０１）をもとに、制御指令値を設定し（Ｓ１１０９）、アクチュエータ／センサ５０５は、読み込んだテストケースに記載されているタイミングに到達しているか検証する（Ｓ１１１０）。その結果、到達していないと判断した場合（Ｓ１１１０；Ｎｏ）には、ウェイトし、到達していると判断した場合（Ｓ１１１０；Ｙｅｓ）には、テストケースに記載されているコマンドであるセンサデータ（Ａ１１０２）をテストケースに記載されている送信先（評価対象仮想制御コントローラ５０３）に対して送信する。例えば、仮想制御コントローラ５０３は、仮想制御サーバ５０１から受け取った温度情報を示す制御指令値を自身が有するメモリに設定し、アクチュエータ／センサ５０５は、その時点での温度（例えば、３９℃）を検知し、その温度情報をセンサデータ（Ａ１１０２）として評価対象仮想制御コントローラ５０３に送信する。
【００５５】
次に、評価対象仮想制御コントローラ５０３は、読み込んだレスポンスデータに記載されているタイミングに到達しているか検証する（Ｓ１１１１）。その結果、到達していないと判断した場合（Ｓ１１１１；Ｎｏ）には、ウェイトし、到達していると判断した場合（Ｓ１１１１；Ｙｅｓ）には、評価対象仮想制御コントローラ５０３は、レスポンスデータに記載されているコマンドである制御コマンド（Ａ１１０３）をレスポンスデータに記載されている送信先（アクチュエータ／センサ５０５）に対して送信する。
【００５６】
次に、評価対象仮想制御コントローラ５０３は、読み込んだレスポンスデータに記載されているタイミングに到達しているか検証する（Ｓ１１１２）。その結果、到達していないと判断した場合（Ｓ１１１２；Ｎｏ）には、ウェイトし、到達していると判断した場合（Ｓ１１１２；Ｙｅｓ）には、レスポンスデータに記載されているコマンドである制御コマンド発行情報（Ａ１１０４）をレスポンスデータに記載されている送信先（同一ネットワーク内の他の装置）に対して送信する。例えば、評価対象仮想制御コントローラ５０３は、弁を閉じる制御コマンドをアクチュエータ／センサ５０５に対して発行したことを示す制御コマンド発行情報（Ａ１１０４）を、仮想コントローラ５０４および仮想制御サーバ５０１に送信する。
【００５７】
次に、アクチュエータ／センサ５０５は、受信した制御コマンド（Ａ１１０３）をもとに、制御処理を実行した後（Ｓ１１１３）、制御処理を実行したことにより変化したセンサデータを生成し（Ｓ１１１４）、生成したセンサデータ（Ａ１１０５）を評価対象仮想制御コントローラ５０３に対して送信する。
【００５８】
次に、仮想制御コントローラ５０４は、読み込んだテストケースに記載されているタイミングに到達しているか検証する（Ｓ１１１５）。その結果、到達していないと判断された場合（Ｓ１１１５；Ｎｏ）には、ウェイトし、到達していると判断された場合（Ｓ１１１５；Ｙｅｓ）には、テストケースに記載されているコマンドである他コントローラ制御コマンド発行情報（Ａ１１０６）を同一のネットワーク内の他の装置に対して送信する。
【００５９】
次に、評価対象仮想制御コントローラ５０３は、読み込んだレスポンスデータに記載されているタイミングに到達しているか検証する（Ｓ１１１６）。その結果、到達していないと判断した場合には、ウェイトし、到達していると判断した場合には、評価対象仮想制御コントローラ５０３は、レスポンスデータに記載されているコマンドである制御コマンド（Ａ１１０７）をレスポンスデータに記載されている送信先（アクチュエータ／センサ５０５）に対して送信する。例えば、評価対象仮想制御コントローラ５０３は、アクチュエータ／センサ５０５の弁を閉じる制御コマンド（Ａ１１０７）をアクチュエータ／センサ５０５に対して送信する。
【００６０】
次に、評価対象仮想制御コントローラ５０３は、読み込んだレスポンスデータに記載されているタイミングに到達しているか検証する（Ｓ１１１７）。その結果、到達していないと判断した場合には、ウェイトし、到達していると判断した場合にはレスポンスデータに記載されているコマンドである制御コマンド発行情報（Ａ１１０８）をレスポンスデータに記載されている送信先（同一ネットワーク内の他の装置）に対して送信する。例えば、評価対象仮想制御コントローラ５０３は、仮想制御コントローラ５０４および仮想制御サーバ５０１に対して、アクチュエータ／センサ５０５の弁を閉じる制御コマンド（Ａ１１０７）を発行したことを示す他コントローラ制御コマンド発行情報（Ａ１１０８）を送信する。
【００６１】
次に、アクチュエータ／センサ５０５は、受信した制御コマンド（Ａ１１０７）をもとに、制御処理を実行する（Ｓ１１１８）。次に、制御処理を実行したことにより変化したセンサデータを生成し（Ｓ１１１９）、生成したセンサデータ（Ａ１１０９）を評価対象仮想制御コントローラ５０３に対して送信する。例えば、アクチュエータ／センサ５０５は、評価対象仮想制御コントローラ５０３からアクチュエータ／センサ５０５の検知精度を下げて弁を閉じる制御コマンドを受信した場合、そのコマンドに従って制御を実行し、制御コマンドによって変化した温度等の情報をアクチュエータ／センサ５０５によって取得し、評価対象仮想制御コントローラ５０３に送信する。
【００６２】
次に、仮想制御サーバ５０１、仮想制御コントローラ５０４、アクチュエータ／センサ５０５において、エラー記録を停止し（Ｓ１１２０、Ｓ１１２１、Ｓ１１２２）、評価対象装置３０以外の装置への影響の有無を検証する際に活用する。このように、図１１に示した処理では、評価対象装置（評価対象仮想制御コントローラ５０３）が主体的にテストケースのレスポンスに記載されたコマンドを実行し、他の装置（仮想制御サーバ５０１、仮想制御コントローラ５０４、アクチュエータ／センサ５０５）は、その際における各自の処理内容を記録（エラー記録）することにより、図４に示したステップＳ４０７で、他の装置側での影響の有無を検証することができる。
【００６３】
このように、ローカルの検証対象装置とテストベッドをネットワーク経由で接続し、連携して検証を行うことにより、検証対象装置やシステムを運搬することなく動作検証や相互接続性検証を実現するシステムを提供する。具体的には、テストベッドと検証対象装置の間に接続用装置を設置し、この装置を経由してお互いが保有する装置の実行結果を送受信する。テストベッドでは、事前に理想的な環境での振る舞いに関する情報を生成し、その実行シーケンスと同じものを検証対象装置に対しても実行し、実行結果と事前に生成した結果を比較することにより、検証対象装置の動作検証を行うので、検証対象装置やシステムを運搬することなく、効率よくその装置やシステムを検証することができる。
【００６４】
より具体的には、テストベッド内にはクライアントからの環境情報に応じて評価環境を構築する機能があり、ローカルの検証対象装置の動作検証をする前に、事前に構築した評価環境でテストシーケンスを実行し、理想的な環境における期待レスポンスおよび期待レスポンス時間を取得する。そして、取得した結果をローカルの接続用装置にダウンロードし、検証対象装置に対して入力されたデータを検証対象装置に対して送信し、検証対象装置を実行した場合の結果と事前に取得した結果を比較することにより、検証対象装置の動作検証を行う。さらに、結果が一致しなかった場合には、その結果をテストベッドに対して再度アップロードし、検証対象装置の実行結果が既存システムや他の装置に対して影響を与えないかという相互接続性検証を実施する。したがって、様々な制御システムの環境を保有するテストベッドが設置されている場所にシステムや装置を持ち込むことなく、遠隔からテストベッドに接続し、ローカル環境のシステムや装置の動作検証や相互接続性検証を実施することが可能となる。また、テストベッドから検証に必要な情報を取得してローカルで検証するため、テストベッドの占有時間を減少させて効率よく動作検証を行うことが可能となる。
【実施例２】
【００６５】
上述した第一の実施の形態では、仮想テスト装置で生成したテストスートを接続装置側に格納することにより、システムの利用者が評価対象装置の検証を容易に行えるようにした。しかし、検証すべき内容が多岐にわたり、テストスートの容量が膨大になる場合があったり、あるいはテストベッドの運営会社がテストスートを公開したくない場合も存在する。そこで、そのような場合に備え、以下では、テストスートを仮想テスト装置に格納し、レスポンスを検証する場合について説明する。
【００６６】
図１２は、本発明の第二の実施形態が適用されたリモート検証システムの構成図である。本実施形態のリモート検証システムは、図１２に例示するように、仮想テスト装置１０と、接続用装置２０と、評価用装置３０と、ネットワーク４０と、を有して構成されている。
【００６７】
仮想テスト装置１０は、ネットワーク４０と通信を行う通信部１０１と、接続用装置２０から評価したい環境情報を取得する環境情報取得部１０２と、環境情報取得部１０２で取得した環境情報を用いて、仮想テスト装置１０内に仮想的な評価環境を構築する環境構築部１０３と、構築した評価環境において各装置が実行するテストの処理内容を記載したテストケースを実行するテストケース実行部１０４と、構築した評価環境においてテストケースを実行した際の処理時間を出力するタイマー部１０５と、テストケースに記載されたテストが評価環境で実行された場合の評価対象装置のあるべき振る舞い（理想的な振る舞い）を表したテストスート（テスト集）を生成するテストスート生成部１０６と、テストケース実行部１０４で実行するテストケースを格納するテストケース格納部１０７と、テストスート生成部１０６で生成したテストスートを格納するテストスート格納部１０８と、接続用装置２０を経由して評価用装置３０に対してコマンドを送信するコマンド送信制御部１０９と、接続用装置２０を経由して評価用装置３０から受信したレスポンスを検証する受信レスポンス検証部１１０と、接続用装置２０を経由して評価用装置３０から受信したレスポンス（処理結果を示す応答値、処理続行のための制御値やコマンド等）を格納するレスポンス格納部１１１と、を含む。
【００６８】
接続用装置２０は、評価用装置３０において評価したい環境情報の入力を受け付ける環境情報入力部２０１と、評価用装置３０を用いて検証したいテストケースの入力を受け付けるテストケース入力部２０２と、仮想テスト装置１０で検証した結果を出力する評価結果出力部２０５と、ネットワーク４０を経由して仮想テスト装置１０と通信する外部通信部２０８と、評価用装置３０に対して評価用環境における上位側（上流側）からの通信を行う内部通信部（上位）２０９と、評価用装置３０に対して評価用環境における下位側（下流側）からの通信を行う内部通信部（下位）２１０と、評価用装置３０にコマンドを送信してからレスポンスを受信するまでのレスポンスタイムを算出するレスポンスタイム取得部２１１と、を含む。
【００６９】
評価用装置３０は、接続用装置２０の内部通信部（上位）２０９と通信を行う上位通信部３０１と、接続用装置２０の内部通信部（下位）２１０と通信を行う下位通信部３０２と、上位通信部３０１や下位通信部３０２から取得したデータを処理する制御部３０３と、を含む。ここで、評価用装置３０は、単一の装置だけではなく、複数の装置を組み合わせて構成しても良い。この場合、第一の実施の形態の場合と同様に、装置を組み合わせたシステム態様での各装置のレスポンスを検証することが可能となる。
【００７０】
図１３は、本発明の第二の実施形態が適用されたリモート検証システムにおいて、仮想テスト装置１０で生成したテストスートを接続用装置２０を経由して評価用装置に送信し、オンラインで評価用装置３０の動作検証を行う場合の処理フローを示した図である。
【００７１】
はじめに、接続用装置２０は、環境情報入力部２０１が、テストスートを生成するために必要となる評価用環境情報の入力を受け付ける（Ｓ１３０１）。ここで、第一の実施の形態の場合と同様に、評価環境情報には、システム構成情報（例えば、システムが有する装置やネットワークの構成等）、そのシステム内に含まれる装置の固有情報（例えば、型番、メーカー、ＯＳ、アプリケーション情報、許容処理時間ゆらぎ量、装置間の接続関係等）、これらの固有情報と同様の評価対象装置に関する情報が含まれる。
【００７２】
次に、テストケース入力部２０２が、評価対象装置３０に対して実施したいテストケースの入力を受け付ける。ここで、テストケースの入力には、テストケース入力部２０２が予め決められた番号や記号の情報の入力を受け付けても良いし、具体的なテスト手順（テストケース）を記載したファイルをアップロードしても良い。次に、外部通信部２０８が、入力された評価用環境情報およびテストケース情報（Ａ１３０１）を仮想テスト装置１０に送信する（Ｓ１３０２）。
【００７３】
次に、仮想テスト装置１０は、環境情報取得部１０２が、受信した各情報から評価環境情報を取得し、環境構築部１０３がその評価環境情報を用いて自装置内に仮想的な評価環境を構築する（Ｓ１３０３）。次に、テストケース実行部１０４が、受信したテストケース情報を用いてテストケース格納部１０７からテストケースを取得する（Ｓ１３０４）。ここで、テストケース入力部２０２がＳ１３０２でテストケースをアップロードした場合には、Ｓ１３０４は不要であり、受信したテストケースをそのまま利用する。次に、テストケース実行部１０４が、取得したテストケースを実行し（Ｓ１３０５）、テストスート生成部１０６が、仮想環境内の評価対象装置への入出力情報を収集し、テストスートを作成し（Ｓ１３０６）、生成したテストスートの中から、評価用装置３０に対して送信するテストコマンド群を取得し、コマンド送信制御部１０９は、第一のテストコマンド（Ａ１３０２）を接続用装置２０に対して送信する（Ｓ１３０７）。なお、テストケースの実行については、第一の実施の形態の場合と同様であるため、ここではその説明を省略する。
【００７４】
次に、接続用装置２０は、コマンド送信制御部２０３が、内部通信部（上位）２０９または内部通信部（下位）２１０を介して、受信した第一のテストコマンド（Ａ１３０２）を評価用装置３０に対して送信する。評価用装置３０は、制御部３０３が、受信した第一のテストコマンド（Ａ１３０２）を処理し、第一のレスポンス（Ａ１３０３）を生成して接続用装置２０に送信する。接続用装置２０は、レスポンスタイム取得部２１１が、第一のテストコマンド（Ａ１３０２）を送信したタイミングと第一のレスポンス（Ａ１３０３）を受信したタイミングの差分を計算し、レスポンスタイムを取得する（Ｓ１３０８）。レスポンスタイムを取得する理由は、仮想テスト装置１０でレスポンスの検証を行うためである。次に、外部通信部２０８が、受信した第一のレスポンスと生成したレスポンスタイム（Ａ１３０４）を仮想テスト装置１０に送信する。
【００７５】
次に、仮想テスト装置１０は、受信レスポンス検証部１１０が、受信した第一のレスポンスおよびレスポンスタイム（Ａ１３０４）を検証する（Ｓ１３０９）。なお、レスポンスの検証方法については、第一の実施の形態の場合と同様であるため、ここではその説明を省略する。例えば、実施例１の場合と同様に、複数のレスポンスを含むレスポンス群とその期待値群とを比較する。このように比較することにより、例えば、同時に複数のレスポンスについて検証を行うことができ、また、一連のコマンドに対するレスポンスを時系列的に検証することが可能となり、評価者が効率よくその検証を行うことができるようになる。
【００７６】
次に、コマンド送信制御部１０９は、テストコマンド群から第二のテストコマンド（Ａ１３０５）を接続用装置２０に対して送信し、接続用装置２０は、レスポンスタイム取得部２１１が、受信した第二のテストコマンド（Ａ１３０５）を評価用装置３０に対して送信する。評価用装置３０は、制御部３０３が、受信した第二のテストコマンド（Ａ１３０５）を処理し、第二のレスポンス（Ａ１３０６）を生成して接続用装置２０に送信する。接続用装置２０は、レスポンスタイム取得部２１１が、第二のテストコマンド（Ａ１３０５）を送信したタイミングと第二のレスポンス（Ａ１３０６）を受信したタイミングの差分を計算し、レスポンスタイムを取得する（Ｓ１３１０）。次に、外部通信部２０８が、受信した第二のレスポンスと生成したレスポンスタイム（Ａ１３０７）を仮想テスト装置１０に送信する。
【００７７】
次に、仮想テスト装置１０は、受信レスポンス検証部１１０が、受信した第二のレスポンスおよびレスポンスタイム（Ａ１３０７）を検証し（Ｓ１３１１）、Ｓ１３０９およびＳ１３１１で検証した結果（Ａ１３０８）を接続用装置２０に対して送信する。次に、接続用装置２０は、評価結果出力部２０５が、受信した検証結果（Ａ１３０８）を出力する（Ｓ１３１２）。
【００７８】
このように、テストスートを仮想テスト装置に格納した状態でレスポンスの検証を仮想テスト装置側で実行するので、検証すべき内容が多岐にわたり、テストスートの容量が膨大になる場合があったり、あるいはテストベッドの運営会社がテストスートを公開したくない場合であっても、適切にその装置やシステムを検証することができる。
【実施例３】
【００７９】
上述した第二の実施の形態では、テストスートを仮想テスト装置に格納した状態でレスポンスの検証を仮想テスト装置側で実行した。しかし、複数のテストコマンドについて同じようなタイミングでレスポンスの検証を行いたい場合には、ネットワークのトラフィックの状態等によってコマンドの送信等の際にタイムラグ（ネットワーク上の遅延）が生じ、検証すべきタイミングがずれてしまう場合も存在する。そこで、そのような場合に備え、以下では、タイマー制御によりネットワーク上の遅延を考慮した上でレスポンスの検証を行う場合について説明する。
【００８０】
図１４は、本発明の第三の実施形態が適用されたリモート検証システムの構成図である。本実施形態のリモート検証システムは、図１４に例示するように、仮想テスト装置１０と、接続用装置２０と、評価用装置３０と、ネットワーク４０と、から構成されている。
【００８１】
仮想テスト装置１０は、ネットワーク４０と通信を行う通信部１０１と、接続用装置２０から評価したい環境情報を取得する環境情報取得部１０２と、環境情報取得部１０２で取得した環境情報を用いて、仮想テスト装置１０内に仮想的な評価環境を構築する環境構築部１０３と、構築した評価環境において各装置が実行するテストの処理内容を記載したテストケースを実行するテストケース実行部１０４と、構築した評価環境においてテストケースを実行した際の処理時間を出力するタイマー部１０５と、テストケースに記載されたテストが評価環境で実行された場合の評価対象装置のあるべき振る舞い（理想的な振る舞い）を表したテストスート（テスト集）を生成するテストスート生成部１０６と、テストケース実行部１０４で実行するテストケースを格納するテストケース格納部１０７と、テストスート生成部１０６で生成したテストスートを格納するテストスート格納部１０８と、接続用装置２０を経由して評価用装置３０に対してコマンドを送信するコマンド送信制御部１０９と、接続用装置２０を経由して評価用装置３０から受信したレスポンスを検証する受信レスポンス検証部１１０と、接続用装置２０を経由して評価用装置３０から受信したレスポンス（処理結果を示す応答値、処理続行のための制御値やコマンド等）を格納するレスポンス格納部１１１と、仮想テスト装置１０内のタイマーの起動や停止を制御するタイマー制御部１１２と、を含む。
【００８２】
接続用装置２０は、評価用装置３０において評価したい環境情報の入力を受け付ける環境情報入力部２０１と、評価用装置３０を用いて検証したいテストケースの入力を受け付けるテストケース入力部２０２と、仮想テスト装置１０で検証した結果を出力する評価結果出力部２０５と、ネットワーク４０を経由して仮想テスト装置１０と通信する外部通信部２０８と、評価用装置３０に対して評価用環境における上位側（上流側）からの通信を行う内部通信部（上位）２０９と、評価用装置３０に対して評価用環境における下位側（下流側）からの通信を行う内部通信部（下位）２１０と、評価用装置３０にコマンドを送信してからレスポンスを受信するまでのレスポンスタイムを算出するレスポンスタイム取得部２１１と、評価用装置３０のタイマーの起動や停止を制御するタイマー制御部２１２と、を含む。
【００８３】
評価用装置３０は、接続用装置２０の内部通信部（上位）２０９と通信を行う上位通信部３０１と、接続用装置２０の内部通信部（下位）２１０と通信を行う下位通信部３０２と、上位通信部３０１や下位通信部３０２から取得したデータを処理する制御部３０３と、評価用装置３０内の時刻情報を管理するタイマー部３０４と、を含む。ここで、評価用装置３０は、単一の装置だけではなく、複数の装置を組み合わせて構成しても良い。この場合、第一、第二の実施の形態の場合と同様に、装置を組み合わせたシステム態様での各装置のレスポンスを検証することが可能となる。
【００８４】
図１５は、本発明の第三の実施形態が適用されたリモート検証システムにおいて、仮想テスト装置１０で生成したテストスートを接続用装置２０を経由して評価用装置に送信し、オンラインで評価用装置３０の動作検証を実施し、タイマー制御を用いて時刻同期を実現する場合の処理フローを示した図である。
【００８５】
はじめに、接続用装置２０は、環境情報入力部２０１が、テストスートを生成するために必要となる評価用環境情報の入力を受け付ける（Ｓ１５０１）。ここで、第二の実施の形態の場合と同様に、評価環境情報には、システム構成情報（例えば、システムが有する装置やネットワークの構成等）、そのシステム内に含まれる装置の固有情報（例えば、型番、メーカー、ＯＳ、アプリケーション情報、許容処理時間ゆらぎ量、装置間の接続関係等）、これらの固有情報と同様の評価対象装置に関する情報が含まれる。
【００８６】
次に、テストケース入力部２０２が、評価対象装置３０に対して実施したいテストケースの入力を受け付ける（Ｓ１５０２）。ここで、テストケースの入力には、予め決められた番号や記号の情報を入力しても良いし、具体的なテスト手順（テストケース）を記載したファイルをアップロードしても良い。次に、外部通信部２０８が、入力された評価用環境情報およびテストケース情報（Ａ１５０１）を仮想テスト装置１０に送信する。
【００８７】
次に、仮想テスト装置１０は、環境情報取得部１０２が、受信した各情報から評価環境情報を取得し、環境構築部１０３がその評価環境情報を用いて自装置内に仮想的な評価環境を構築する（Ｓ１５０３）。次に、テストケース実行部１０４が、受信したテストケース情報を用いてテストケース格納部１０７からテストケースを取得する（Ｓ１５０４）。ここで、Ｓ１５０２でテストケースをアップロードした場合には、Ｓ１５０４は不要であり、受信したテストケースをそのまま利用する。次に、テストケース実行部１０４が、取得したテストケースを実行する（Ｓ１５０５）。
【００８８】
次に、テストケース実行部１０４が、テストケース実行中に評価用装置３０宛てのコマンドが発生したか否かを判定し、評価用装置３０宛てのコマンドが発生したと判定した場合には、コマンド送信制御部１０９は、そのコマンドを第一のテストコマンド（Ａ１５０２）として接続用装置２０に対して送信する。次に、タイマー制御部１１２が、タイマー部１０５が計時するタイマーを停止する（Ｓ１５０６）。なお、テストケースの実行については、第一の実施の形態の場合と同様であるため、ここではその説明を省略する。また、本実施の形態では、主としてネットワーク上の遅延をどのように考慮するかについて説明しているためテストスートの生成については記載していないが、第二の実施の形態の場合と同様に、Ｓ１５０５の処理後にＳ１３０６のようにテストスートを生成する処理を実行してももちろん構わない。
【００８９】
次に、接続用装置２０は、内部通信部（上位）２０９または内部通信部（下位）２１０を介して、受信した第一のテストコマンド（Ａ１５０２）を評価用装置３０に対して送信し、評価用装置３０は、制御部３０３が、受信した第一のテストコマンド（Ａ１５０２）を処理し、第一のレスポンス（Ａ１５０３）を生成し、接続用装置２０に送信する。
【００９０】
次に、接続用装置２０は、タイマー制御部２１２が、評価用装置３０に対してタイマー停止コマンド（Ａ１５０４）を送信し、評価用装置３０は、タイマー部３０４が、自身のタイマーを停止する（Ｓ１５０７）。次に、接続用装置２０は、レスポンスタイム取得部２１１が、第一のテストコマンド（Ａ１５０２）を送信したタイミングと第一のレスポンス（Ａ１５０３）を受信したタイミングの差分を計算し、レスポンスタイムを取得する（Ｓ１５０８）。次に、外部通信部２０８が、受信した第一のレスポンスと生成したレスポンスタイム（Ａ１５０５）を仮想テスト装置１０に送信する。
【００９１】
次に、仮想テスト装置１０は、タイマー制御部１１２が、受信した第一のレスポンスおよびレスポンスタイム（Ａ１５０５）のうち、レスポンスタイムの情報を用いてタイマー情報を更新する（Ｓ１５０９）。ここでタイマー情報の更新とは、Ｓ１５０６で停止したタイマー情報（例えば、停止したときの時刻００時００分００秒）にレスポンスタイムの時間（例えば、２秒）を加算して実現する。例えば、タイマーが００時００分００秒に停止され、レスポンスタイムが２秒ある場合は００時００分０２秒となる。そして、タイマー制御部１１２は、タイマー部１０５による計時を再び開始する（Ｓ１５１０）。
【００９２】
次に、テストケース実行部１０４が、受信した第一のレスポンスを仮想環境内に展開して反映させてテストケースを続行する（Ｓ１５１１）。次に、テストケース実行部１０４は、レスポンス展開およびテストケース実行中に評価用装置３０宛てのコマンドが発生したか否かを判定し、評価用装置３０宛てのコマンドが発生したと判定した場合には、Ｓ１５１０でタイマー制御部１１２がタイマー部１０５による計時を開始してからの経過時間を取得し（Ｓ１５１２）、コマンド送信制御部１０９は、そのコマンド（第二のテストコマンド）と経過時間（Ａ１５０６）を接続用装置２０に対して送信する。次に、タイマー制御部１１２が、タイマー部１０５が計時するタイマーを停止する（Ｓ１５１３）。
【００９３】
次に、接続用装置２０は、タイマー制御部２１２が、受信した第二のテストコマンドおよび経過時間（Ａ１５０６）のうち、経過時間を取得し、評価用装置３０に対して、タイマー開始コマンドと経過時間（Ａ１５０７）を送信し、評価用装置３０は、タイマー部３０４が、受信したタイマー開始コマンドをもとにＳ１５０７で停止したタイマーを経過時間分更新して開始する（Ｓ１５１４）。
【００９４】
次に、接続用装置２０は、内部通信部（上位）２０９または内部通信部（下位）２１０を介して、第二のテストコマンド（Ａ１５０８）を評価用装置３０に対して送信し、評価用装置３０は、制御部３０３が、受信した第二のテストコマンド（Ａ１５０８）を処理し、第二のレスポンス（Ａ１５０９）を生成し、接続用装置２０に送信する。
【００９５】
次に、接続用装置２０は、タイマー制御部２１２が、評価用装置３０に対してタイマー停止コマンド（Ａ１５１０）を送信し、評価用装置３０は、タイマー部３０４が、自身のタイマーを停止する（Ｓ１５１５）。次に、接続用装置２０は、レスポンスタイム取得部２１１が、第二のテストコマンド（Ａ１５０８）を送信したタイミングと第二のレスポンス（Ａ１５０９）を受信したタイミングの差分を計算し、レスポンスタイムを取得する（Ｓ１５１６）。次に、外部通信部２０８が、受信した第二のレスポンスと生成したレスポンスタイム（Ａ１５１１）を仮想テスト装置１０に送信する。
【００９６】
次に、仮想テスト装置１０は、タイマー制御部１１２が、受信した第二のレスポンスおよびレスポンスタイム（Ａ１５１１）のうち、レスポンスタイムの情報を用いてタイマー情報を更新する（Ｓ１５１７）。次に、タイマー制御部１１２は、タイマー部１０５による計時を再び開始する（Ｓ１５１８）。次に、テストケース実行部１０４が、受信した第二のレスポンスを仮想環境内に展開して反映させてテストケースを続行する（Ｓ１５１９）。
【００９７】
次に、受信レスポンス検証部１１０が、Ｓ１５１１やＳ１５１９で他装置に対して展開したレスポンスによってエラーが発生していないか検証し（Ｓ１５２０）、検証結果（Ａ１５１２）を接続用装置２０に対して送信する。次に、接続用装置２０は、評価結果出力部２０５が、受信した検証結果（Ａ１５１２）を出力する（Ｓ１５２１）。
【００９８】
このように、ネットワーク上の遅延を考慮した上でレスポンスの検証を行うので、複数のテストコマンドについて同じようなタイミングでレスポンスの検証を行いたい場合には、ネットワークのトラフィックの状態等によってコマンドの送信等の際にタイムラグが生じ、検証すべきタイミングがずれてしまうような場合であっても、正しくその装置やシステムを検証することができる。
【００９９】
そして、上述した第一の実施の形態から第三の実施の形態までに示した構成、手順およびデータ構造を実現することにより、テスト環境と評価対象装置が遠隔に設置されている場合であっても、ネットワークを経由してコマンドとレスポンスの関係性およびレスポンス処理時間の妥当性を評価することが可能となる。また、第一の実施例では、リモートのテスト環境から動作検証に必要なファイルのみをダウンロードし、ローカルで検証を行うことにより、テスト環境を占有することなく動作検証を実行することが可能となる。
【０１００】
なお、本発明は、上記の実施形態に限定されるものではなく、その要旨の範囲内で様々な変形が可能である。たとえば、接続用装置の機能が評価用装置に含まれている場合や、接続用装置が複数の評価用装置と接続されている場合や、評価用装置が複数の装置を組み合わせて構成されている場合であっても、その実施形態の場合においても、上述した各実施の形態の場合と同様に、上述した各処理を実行することができる。
【符号の説明】
【０１０１】
１０：仮想テスト装置、１１：通信装置、１２：入出力装置、１３：記憶装置、１４：ＣＰＵ、１５：メモリ、１６：読取装置、１７：記憶媒体、１８：内部信号線。
【図１】
2014041515.tif 000003
【図２】
2014041515.tif 000004
【図３】
2014041515.tif 000005
【図４】
2014041515.tif 000006
【図５】
2014041515.tif 000007
【図６】
2014041515.tif 000008
【図７】
2014041515.tif 000009
【図８】
2014041515.tif 000010
【図９】
2014041515.tif 000011
【図１０】
2014041515.tif 000012
【図１１】
2014041515.tif 000013
【図１２】
2014041515.tif 000014
【図１３】
2014041515.tif 000015
【図１４】
2014041515.tif 000016
【図１５】
2014041515.tif 000017