(57)【要約】【課題】従来は、クライアントアプリケーション（クライアントという）とサーバ間データをキャプチャし、再生して、複数のクライアントを模擬するが、異常時の動作が非公開で、クライアントとサーバの仕様が不明だと、キャプチャしたデータが不十分の際、模擬クライアントに対するサーバから未知データ送信に対応できない。【解決手段】クライアントとサーバ通信を、データキャプチャ・データ送受信部で送受信パターン毎にキャプチャし、キャプチャデータ蓄積部に蓄積、この蓄積データをクライアント模擬部で模擬台数分複製しセッション番号を付しサーバに送信してクライアントを模擬し、サーバかの送信データが、キャプチャ済みか否かを判定するデータ解析部の結果で、送信データに、未知の応答データ発生時、セッション書換部で未知応答データのセッションをクライアントに動的に割り当てる。【選択図】図１
2013257823.tif 000002
【特許請求の範囲】
【請求項１】
クライアントアプリケーションとサーバの通信を、送受信のパターンごとにキャプチャするデータキャプチャ・データ送受信部と、データキャプチャ・データ送受信部でキャプチャされたデータを蓄積するキャプチャデータ蓄積部と、キャプチャデータ蓄積部に蓄積されたデータを模擬台数分複写してセッション番号を付しサーバに送信して、多数のクライアントアプリケーションを模擬するクライアントアプリケーション模擬部、クライアントアプリケーション及びサーバから送信されるデータを監視し、キャプチャ済みのデータか否かを判定するデータ解析部、データ解析部の解析結果に基づき、サーバから送信されるデータに、まだキャプチャされていない未知の応答データが発生したとき、その未知の応答データのセッションをクライアントアプリケーションに動的に割り当てるセッション書換部を備えた特徴とするシミュレーション装置。
【請求項２】
クライアントアプリケーションとクラインアプリケーション模擬部がデータ送信する際に送信のタイミングを合わせるための送信タイミング制御部を備えたことを特徴とする請求項１に記載のシミュレーション装置。
【請求項３】
クライアントアプリケーションを複数備え、それぞれのクライアントアプリケーションとサーバとデータの送受信を行い、クライアントアプリケーションから送信するデータに対してサーバから複数種類の未知の応答データが返却される場合に、セッション書換部はそれぞれの種類の未知の応答データに該当するデータ送受信を異なるクライアントアプリケーションに割り当てることを特徴とする請求項２に記載のシミュレーション装置。
【請求項４】
クライアントアプリケーションとサーバとの通信時に、設定に従って、サーバから送信されたデータ及び、クライントアプリケーションから送信されたデータを消失・複製させ、エラー時の動作を自発的に発生させる異常注入部を備えたことを特徴とする請求項１に記載のシミュレーション装置。
【請求項５】
動作仕様が完全に分かっているクライアントアプリケーションからの送信データを、正常動作のみ判明している中継機器であるGWを介してサーバーに送信する構成にされたGWアプリケーションと、このGWアプリケーションから送信したデータに対してサーバから複数種類の未知の応答データが返却される場合、２種類目以降の異常データのメッセージをペンディングし、最初の異常なデータの処理後、GWアプリケーションに対して、同一のメッセージのデータをサーバに対して送信させる端末模擬部を備えたことを特徴とする請求項１に記載のシミュレーション装置。
【請求項６】
端末模擬部がGWアプリケーションがサーバに送信するデータのペイロードにエラーとなる内容を記述させる端末異常挿入部を備えたことをする請求項５に記載のシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、クライアント・サーバシステムにおいて、多数のクライアントアプリケーションと接続され通信を行うサーバを検証するためのシミュレーション装置に関するものである。
【背景技術】
【０００２】
クライアント・サーバシステムにおいて、サーバを検証するために、複数のクライアントアプリケーションと通信を行う必要がある。サーバが処理する内容によっては、数千台〜数万台単位のクライアントアプリケーションが必要となることも多い。上記ケースにおいて、サーバの検証のために多数のクライアントアプリケーションを用意することは現実的ではない。そのため、多数のクライアントアプリケーションを模擬する手法が必要となる。
多数のクライアントアプリケーションを模擬する手法の１つとしてクライアントアプリケーションからの入力をキャプチャし、キャプチャしたデータを繰り返して送信を行うことで多数のクライアントアプリケーションを模擬する手法が、例えば特開2003-140988号公報に開示されている。特開2003-140988号公報ではキャプチャしたデータのアドレス・ユーザ名・クライアント名を書き換えてデータを送信することで、サーバに対して複数のクライアントアプリケーションに見せかける方式が公開されている。
【０００３】
また、キャプチャに関連して、サーバとクライアントアプリケーション間のデータを送受信のパターンごとにキャプチャし、キャプチャしたデータを繰り返し送信することで、複数のデータ送受信パターンを再現する技術が例えば、特開2003-283564号公報に公開されている。
上記の２つの技術を組み合わせることで、複数のパターンの動作が可能なクライアントアプリケーションを模擬することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2003-140988号公報
【特許文献２】特開2003-283564号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来は、クライアントアプリケーションとサーバとの間のデータをキャプチャし、再生することで、複数のクライアントアプリケーションを模擬することができた。しかしながら、現実的な問題として、バイナリのみで提供されているクライアントアプリケーションやサーバの中には、正常時の動作のみ公開されており、異常時の動作については詳細に公開されていないものも存在する。
クライアントアプリケーションとサーバの仕様が十分に分からない場合、キャプチャしたデータが十分か否か（正常か異常か）分からない。そのため、キャプチャしたデータが不十分の際に、模擬クライアントアプリケーションに対してサーバから未知のデータ送信があると、キャプチャデータだけでは対応できないという問題があった。特に多数のクライアントアプリケーションを模擬した場合、負荷の少ない状況でキャプチャしたデータだけでは対応できないような異常動作が発生する可能性が高い。
この発明は上記のような問題点を解決するためになされたもので、未知の異常動作にも対応すること及び異常動作により発生するデータを効率的収集することを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係るシミュレーション装置は、
クライアントアプリケーションとサーバの通信を、送受信のパターンごとにキャプチャするデータキャプチャ・データ送受信部と、データキャプチャ・データ送受信部でキャプチャされたデータを蓄積するキャプチャデータ蓄積部と、キャプチャデータ蓄積部に蓄積されたデータを模擬台数分複製してセッション番号を付しサーバに送信して、多数のクライアントアプリケーションを模擬するクライアントアプリケーション模擬部、クライアントアプリケーション及びサーバから送信されるデータを監視し、キャプチャ済みのデータか否かを判定するデータ解析部、データ解析部の解析結果に基づき、サーバから送信されるデータに、まだキャプチャされていない未知の応答データが発生したとき、その未知の応答データのセッションをクライアントアプリケーションに動的に割り当てる、セッション書換部を備える。
【発明の効果】
【０００７】
この発明に係るシミュレーション装置によれば、
データ解析部がクライアントアプリケーション及びサーバからの送信データを監視して、キャプチャ済みのデータか否かを判定し、データ解析部の解析結果に基づき、まだキャプチャされていない未知の受信データが発生したセッションをセッション情報書換部により、クライアントとセッションの対応関係を動的に書換えるようにしているので、サーバから未知のデータを受信した際は、そのセッションをクライアントアプリケーションに割り当てることで、未知データに対応した応答を返すことができ、また未知データ受信時におけるメッセージ送受信の順序である送受信パターンをキャプチャすることが可能であるという効果がある。
【図面の簡単な説明】
【０００８】
【図１】この発明の実施の形態１における全体構成図である。
【図２】実施の形態１におけるクライアントとセッション番号との対応を示す図である。
【図３】実施の形態１における動作シーケンスを示す図である。
【図４】実施の形態２における全体構成図である。
【図５】実施の形態２における動作シーケンスを示す図である。
【図６】実施の形態３における全体構成図である。
【図７】実施の形態４における全体構成図である。
【図８】実施の形態５における全体構成図である。
【図９】実施の形態６における全体構成図である。
【発明を実施するための形態】
【０００９】
実施の形態１．
以下、図を参照にこの発明の実施の形態を説明する。
図１はこの発明の実施の形態１を示す全体構成図であり、シミュレーション装置10とサーバ11を備えている。
図１において、シミュレーション装置10は、シミュレーション対象であるクライアントアプリケーション101、クライアントアプリケーション101とサーバ11間のデータの送受信をキャプチャするデータキャプチャ・データ送受信部102、キャプチャしたデータを蓄積するキャプチャデータ蓄積部103、キャプチャデータ蓄積部103に蓄積されたデータを複製し、例えば図２に示すセッション情報を区分するセッション番号を付与して複数のクライアントアプリケーションのデータに見せかけ、クライアントアプリケーション101と同様のメッセージ送受信をサーバ11と行うクライアントアプリケーション模擬部104を備える。ここで、サーバ11とクライアントアプリケーション101の間にデータ送受信用に作られる接続状態をセッションと呼び、セッション情報とはセッションを区別するための情報で、アドレス、ポート番号、ユーザ名、クライアント名といったクライアント毎の固有の情報であり、１の単位のセッション情報には図２に示すような対応セッション番号が付与され、単位毎のセッション情報を区分する。
また、クライアントアプリケーション模擬部104でサーバ11と通信し、セッションに割り当てられているクライアントアプリケーションを模擬クライアントアプリケーションと呼ぶ。
【００１０】
さらに、サーバ11とクライアントアプリケーション101の間で送受信されたデータを解析するデータ解析部105、内部的に各クライアント(クライアントアプリケーション、模擬クライアントアプリケーション)と実際にサーバ11と通信を行なっているセッションの対応関係を保持し、解析されたデータに基づいてクライアントアプリケーション101がサーバ11と通信を行なっているセッション情報を動的に書き換えるセッション情報書換部106、シミュレーション装置10とサーバ11とのデータ送受信を行うサーバ通信部107を備える。
【００１１】
次に動作について図３を参照し説明する。
図３は本実施の形態１における動作シーケンスである。まず、クライアントアプリケーション101がサーバ11に接続データを送信しサーバ11と接続する（S1001)。次に、クライアントアプリケーション模擬部104がサーバ11に接続データを送信しサーバ11と接続する（S1002)。この際、クライアントアプリケーション模擬部104は多数のクライアントアプリケーションを模擬するため、キャプチャデータ蓄積部103に蓄積され、キャプチャされたデータを複製し多数の接続データをセッション番号を付してサーバ11に送信する。
【００１２】
接続が終わったクライアント(クライアントアプリケーション、模擬クライアントアプリケーション)はサーバ11と通信を開始する（S1003)。サーバ11から送信されたデータは、サーバ通信部107で受信（S1004)され、データ解析部105に送信される。データ解析部105ではサーバ11からサーバ通信部107を介して送信されたデータが、既にデータキャプチャ・データ送受信部102においてキャプチャ済みのデータであり、キャプチャデータ蓄積部103に蓄積済みか否かが判断される（S1005)。既にキャプチャ済みのデータである場合、その際のクライアントアプリケーション101の応答もキャプチャ済みであるため、そのままのセッション情報でデータを送信する(クライアントアプリケーション101に向けてのデータはクライアントアプリケーション101に、模擬クライアントアプリケーションに向けてのデータはクライアントアプリケーション模擬部104に送信する)（S1009)。
【００１３】
もしデータ解析部105によるデータ解析の結果、データキャプチャ・データ送受信部102においてキャプチャされておらず、キャプチャデータ蓄積部103に蓄積されていない未知のデータである場合、それが模擬クライアントアプリケーションに向けて送信されたデータであってもセッション情報書換部106にて、クライアントアプリケーション101に向けてデータを送信するよう、クライントとセッションの対応関係を書換える（S1006)。また、送信されたデータのセッション情報もクライアントが受信可能なように書き換え、クライアントアプリケーション101に対してデータを送信する。
【００１４】
サーバ11から送信されたデータが、データ解析部105でのデータ解析の結果による未知のデータは、セッション情報書換部106にて、クライント(クライアントアプリケーション、模擬クライアントアプリケーション)とセッションの対応関係およびセッション情報が書き換えられ、データキャプチャ・データ送受信部102でキャプチャされる（S1007)。また、サーバ11から送信されたデータに対してクライアントアプリケーション101から応答があれば、そのデータもサーバ11からの送信データに対応付けられてデータキャプチャ・データ送受信部102でキャプチャ（S1008)され、キャプチャデータ蓄積部103に保持される。
次いで、データキャプチャ・データ送受信部102にて、サーバ11からの送信データまたはクライアントアプリケーション101から応答があるか否かを検出してシミュレーションが継続中か、否かを判断し（S1010)、シミュレーションが継続中であれば、S1003に戻って一連の処理を続行し、継続中でなければ終了する。
【００１５】
以上のように実施の形態１においては、セッション情報書換部106により、クライアントとセッションの対応関係を動的に書換えるようにしているので、サーバ11から未知のデータを受信した際は、そのセッションをクライアントアプリケーション101に割り当てることで、未知データに対応した応答を返すことができ、また未知データ受信時におけるメッセージ送受信の順序である送受信パターンをキャプチャすることが可能であるという効果がある。
【００１６】
実施の形態２．
実施の形態２ではクライアントアプリケーション101が内部状態を持ち、メッセージ送受信の順序であるデータの送受信パターンが重要となる場合について述べる。内部状態とは、クライアントアプリケーション内部で保持されている状態変数のことであり、入出力されるメッセージや経過時間により変化する。特定の状態の場合でのみ受け付けることができるメッセージが存在する。
図４は実施の形態２における全体構成図である。実施の形態２における構成は、図１に示す実施の形態１の構成に加え、データキャプチャ・データ送受信部102が検知したクライアントアプリケーション101がデータをサーバ11に送信するタイミングに合わせ、クライアントアプリケーション模擬部104からデータをサーバ11に送信する様に制御するタイミング制御部108を持つ。
【００１７】
次に動作について実施の形態１と異なる動作について述べる。
図５は実施の形態２における動作シーケンスである。クライアントアプリケーション101が最初にデータを送信する（S1003) 際に、タイミング制御部108によってそれを検知し、クライアントアプリケーション模擬部104から多数のクライアントアプリケーションを模擬し、セッション情報のみを書き換えた多数のデータをサーバ11送信する（S1011)。サーバ11からの応答のうち、データ解析部105の解析結果で、既にデータキャプチャ・データ送受信部102においてキャプチャ済みのデータで既知のものは送付されたものから順に、クライアントアプリケーション模擬部104に送信されるよう、セッション情報書換部106にてセッション情報を書換える。データ解析部105の解析結果で、データキャプチャ・データ送受信部102においてキャプチャされておらず、キャプチャデータ蓄積部103に蓄積されていない未知のデータの応答があった場合は、クライアントアプリケーション101に送信するようにセッション情報書換部106によりセッション情報を書換える（S1006) 。
【００１８】
実施の形態３．
前記の実施の形態２では、クライアントアプリケーション101が内部状態を持ち、データの送受信パターンが重要となる場合について述べたが、実施の形態３ではサーバ11から未知のデータの応答が複数ある場合について述べる。
図６はこの発明の実施の形態３を示す全体構成図である。実施の形態３の構成は、図４に示す実施の形態２の構成に加え複数のクライアントアプリケーション101A〜101Cが動作している。また、それぞれのライアントアプリケーション101A〜101Cとサーバ11との通信を行なっているセッションの現在までのそれぞれのメッセージ送受信の順序である送受信パターンを管理する送受信パターン管理部109を備えている。
【００１９】
次に動作について述べる。
実施の形態２と同様に、タイミング制御部108によってクライアントアプリケーション101A〜101Cの何れかが最初にデータをサーバ11に送信するタイミングに合わせクライアントアプリケーション模擬部104は、クライアントアプリケーション101A〜101Cの送信データをサーバ11を検証するために模擬する模擬クライアントアプリケーション分複製した模擬クライアントアプリケーションのデータをサーバ11に送信する。この時、複数あるクライアントアプリケーション101A〜101Cは、クライアントアプリケーション模擬部104が全データを送信している間に、全てのクライアントアプリケーション101A〜101Cがデータをサーバ11に送信するものとする。そして、クライアントアプリケーション101A〜101Cから送信するデータに対してサーバ11から複数種類の未知データの応答が返却された場合、それぞれの種類のデータ送受信を異なるクライアントアプリケーションに割り当てる。この際、それぞれの種類のデータ送受信を異なるクライアントアプリケーションに割り当てることで、それぞれのクライアントアプリケーションの送受信パターンが変わる。２回目以降のデータ送受信における送受信パターンは送受信パターン管理部109によって管理されているため、それぞれのクライアントアプリケーションと同一の送受信パターンの応答が割り当てられる。
このようすることで、複数種類の未知の送受信パターンに対応することができる。
【００２０】
実施の形態４.
実施の形態１では、クライアントアプリケーション101が例えばセンタにあるサーバ11に直接接続する際に動作するものであるが、次に動作が分かっている端末が、正常動作は分っているが異常時の動作は未知のGW(Gateway)を通過してセンタのサーバ11に対してデータを送信する場合の実施の形態を示す。これは、動作仕様が完全に分かっているセンサ端末であるアプリケーション101がデータを吸い出し、中継器であるGWを通してセンタのサーバ11に対してデータを送信するような状況を想定している。
図７は実施の形態４における全体構成図である。図１におけるクライアントアプリケーションの代わりにGWアプリケーション1010が、クライアントアプリケーション模擬部104代わりにGWアプリケーション模擬部109が存在し、さらに端末模擬部1011を備える。なお、GWアプリケーション1010はクライアントアプリケーション101がサーバ11に対して送信するデータを中継器であるGWを介して送信する構成とされたものである。
本実施の形態では端末模擬部1011が端末模擬機能を使用することで、GWアプリケーション1010を制御することができる。
【００２１】
次に動作について示す。
GWアプリケーション1010が送信したデータに対してサーバ11が、２種類以上の異常なデータを応答した場合、即ち、複数のセッションに対して異常動作が発生した場合に、端末模擬部1011が２種類目以降の異常データのメッセージをペンディングし、最初の異常なデータの処理後、GWアプリケーション1010に対して、同一のメッセージのデータをサーバ11に対して送信させ、その直後にサーバ11が２種類目以降の異常データを送信することで、より多くの異常状態をキャプチャすることができる。
【００２２】
実施の形態５．
前記の実施の形態４では、端末のクライアントアプリケーション101が異常時の動作が未知のGWを介してサーバ11へデータを送信する場合のものであるが、GWとサーバ11が通信を行うプロトコルが分かっている場合に、異常を自発的に発生させる機能を追加することで、より多くの異常状態をキャプチャすることができる。
図８は実施の形態５における全体構成図である。本実施の形態では図７に示す構成に加えサーバ通信部107にエラーを注入する異常注入部1012が存在する。異常注入部は設定により次の動作のうち1つを行う。
・既存データがサーバ11から送信された場合に、それを消失させる。
・再送が存在するプロトコルの場合に、サーバ11から一度送信されたデータを、一定時間遅延させて再送する。
・既存データがGWクライアントアプリケーションから送信された場合に、それを消失させる。
・再送が存在するプロトコルの場合にGWクライアントアプリケーションから送信されたデータを、一定時間遅延させて再送する。
【００２３】
このように異常注入部1012は既存データを消失,複製させることでエラーを注入する。データキャプチャ・データ送受信部102では、異常注入部1012により発生したエラーデータ及び、その際のGWクライアントアプリケーションが送信するデータをキャプチャする。
こうすることで、GWクライアントアプリケーション1010とサーバ11との通信において発生しうる異常状態のより多くを模擬することができる。
なお、実施の形態１の構成を示す図１におけるサーバ通信部107にこの実施の形態における異常注入部1012の出力を入力させ、既存データを消失、複製させることでエラーを注入する構成としてもよい。
このように構成することで、データキャプチャ・データ送受信部102では、異常注入部1012により発生したエラーデータ及び、その際のGWクライアントアプリケーションが送信するデータをキャプチャすることができ、GWクライアントアプリケーション1010とサーバ11との通信において発生しうる異常状態のより多くを模擬することができる。
【００２４】
実施の形態６．
実施の形態５では、異常注入部1012でデータの消失および複製を模擬することで異常を発生させていた。実施の形態６は、端末の動作すべてを模擬できる端末異常注入部1013を新たに備え、端末模擬部1011が送信するデータにエラーを発生させ、GWアプリケーション1010からサーバ11に異常のデータを送信する構成にする。
図９は実施の形態６における全体構成図である。実施の形態５に加え、端末異常挿入部1013を持つ。
【００２５】
次に動作について述べる。
異常を発生させる際に、端末異常挿入部1013において、端末模擬部1011から送信されるデータのペイロードに異常なデータを挿入する。そのデータをGWアプリケーション1010に入力することで、GWアプリケーション1010から端末、即ちクライアントアプリケーションの状態が異常であるデータを送信する。
こうすることで、クライアントアプリケーションからの異常データを受け取った際の、サーバ11とGWのデータの送受信パターンをキャプチャすることができる。
【産業上の利用可能性】
【００２６】
この発明は、サーバが多数のクライアントアプリケーションと接続され通信を行うクライアント・サーバシステムにおいて、サーバを検証するためのシミュレーション装置に利用される可能性がある。
【符号の説明】
【００２７】
10；シミュレーション装置、11；サーバ、101、101A、101B、101C；クライアントアプリケーション、102；データキャプチャ・データ送受信部、103；キャプチャデータ蓄積部、104；クライアントアプリケーション模擬部、105；データ解析部、106；セッション情報書換部、107；サーバ通信部、108；タイミング制御部、109；送受信パターン管理部、1010；GWアプリケーション、1011；端末模擬部。
【図１】
2013257823.tif 000003
【図２】
2013257823.tif 000004
【図３】
2013257823.tif 000005
【図４】
2013257823.tif 000006
【図５】
2013257823.tif 000007
【図６】
2013257823.tif 000008
【図７】
2013257823.tif 000009
【図８】
2013257823.tif 000010
【図９】
2013257823.tif 000011