(57)【特許請求の範囲】
【請求項１】
操作画面の表示を伴うアプリケーションプログラムを対象に、前記操作画面内の操作対象となるオブジェクトに対して操作イベントを発生する手順を記述した操作シナリオを生成するシナリオ生成装置であって、
前記操作画面上の操作に伴い発生するイベント情報を採取し記録するイベント情報取得手段と、
前記操作画面上の全体または一部画像を採取し記録するとともに、前記画像の座標値と前記イベント情報に含まれる操作対象オブジェクトの位置座標とをもとに前記操作画面から前記操作対象オブジェクトの画像を抽出し記録する画像取得手段と、
前記イベント情報取得手段が取得したイベント情報と前記画像取得手段が取得した画像情報とをもとに前記操作シナリオを生成するシナリオ生成手段とを具備し、
前記画像取得手段は、
前記抽出した画像が、前記操作画面から前記操作対象オブジェクトとして一意に特定できる抽出範囲の画像であるか否かを判定する判定手段と、
前記判定手段において前記抽出画像が前記操作画面から前記操作対象オブジェクトとして一意に特定できる抽出範囲の画像でないと判定したとき、前記抽出画像の抽出範囲を変更して、前記操作画面から前記操作対象オブジェクトの画像を再度抽出する画像抽出再処理手段と、
を具備したことを特徴とするシナリオ生成装置。
【請求項２】
前記画像取得手段は、
前記全体または一部画像を取得するための指示を行う操作手段と、
前記操作手段の指示を行う以前に前記操作画面が操作されたことを判定する画面操作判定手段と、
前記画面操作判定手段が前記判定をした状態を前記操作画面の操作者に報知する報知手段と、
前記画面操作判定手段が前記判定をしたとき、前記操作画面上の操作に伴い発生するイベント情報を無効化し、前記操作手段による前記全体または一部画像を取得するための指示から操作を再開可能にする無効化処理手段と、
をさらに具備することを特徴とする請求項１に記載のシナリオ生成装置。
【請求項３】
前記画像取得手段は、
前記操作者が前記操作画面上で前記操作対象を発見したタイミングを前記操作手段の操作に伴う前記操作画面上のマウスカーソルの動きから認識し、前記認識時に前記操作画面の全体又は一部画像を採取する画像取得手段をさらに具備することを特徴とする請求項２に記載のシナリオ生成装置。
【請求項４】
操作画面の表示を伴うアプリケーションプログラムを対象に、前記操作画面内の操作対象となるオブジェクトに対してイベントを発生する手順を記述した操作シナリオを生成するシナリオ生成装置であるコンピュータに、
前記操作画面上の操作に伴い発生するイベント情報を採取し記録するイベント情報取得機能と、
前記操作画面上の全体または一部画像を採取し記録するとともに、前記画像の座標値と前記イベント情報に含まれる操作対象オブジェクトの位置座標とをもとに前記操作画面から前記操作対象オブジェクトの画像を抽出し記録する画像取得機能と、
前記イベント情報取得機能が取得したイベント情報と前記画像取得手段が取得した画像情報とをもとに前記操作シナリオを生成するシナリオ生成機能とを実現させ、
前記画像取得機能は、
前記抽出した画像が、前記操作画面から前記操作対象オブジェクトとして一意に特定できる抽出範囲の画像であるか否かを判定する判定機能と、
前記判定機能において前記抽出画像が前記操作画面から前記操作対象オブジェクトとして一意に特定できる抽出範囲の画像でないと判定したとき、前記抽出画像の抽出範囲を変更して、前記操作画面から前記操作対象オブジェクトの画像を再度抽出する画像抽出再処理機能と、
を実現させるためのシナリオ生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムの負荷試験に適用して好適なシナリオを生成するシナリオ生成装置およびシナリオ生成プログラムに関する。
【背景技術】
【０００２】
情報システムに対して、多量の処理要求が発生すると、情報システムに対する負荷が高くなる。この状況において、情報システムが示す性能は極めて重要である。すなわち情報システムがどれだけの負荷に耐えられるか、また、多量の負荷が発生しているときにどれだけの優れたレスポンスタイムを実現するかは、その情報システムの利用者にとっては重要な問題である。
【０００３】
情報システムを開発、運用する際に、この高負荷時の特性を測定、検証するために、擬似的に多量の負荷を発生させ、情報システムの性能を計測するような、負荷試験が行われることが多い。この種の負荷試験においては、特許文献１に示されるように、情報端末に相当するマシンから擬似的に多量の処理要求を情報システムに対して発生させるという手法をとることが一般的である。この情報端末に相当するマシンには、負荷試験プログラムをインストールすることによって、負荷を発生することが多い。この負荷試験プログラムは、人間が情報端末を操作するときと同様の処理要求を情報端末から発生させる。
【０００４】
負荷試験プログラムを実現するには、いくつかの方法がある。その中で、比較的広く普及しているのは、クライアントソフトウェアからサーバへ送られるメッセージを記録しておき、この記録したメッセージを負荷発生ツールからサーバに向けて擬似的に繰り返し発生させる方式である。しかしながら、この方式では、メッセージ内容が毎回変化するような複雑なシステムの場合に、クライアントソフトウェアと同じようにメッセージ内容を変えるための機構を負荷発生ツールにおいて実現する必要がある。状況によっては、これが非常に複雑で困難な場合があり、多大な労力を要する。さらにメッセージ内容の変化のし方を理解するためには、クライアントソフトウェアの内部の動きを理解する必要がある場合もあり、そのようなときには、負荷試験を実施する実施者に対して高度なスキルが要求されるため、負荷試験を行う人材確保に問題がある。
【０００５】
一方、別の実現方法として、クライアントソフトウェアの画面の自動操作によって負荷を発生する方法が考えられる。これは、情報端末においてクライアントソフトウェアを起動しておき、そのクライアントソフトウェアに対して、人間が行うのと同様の操作を、負荷試験ツールが擬似的に実行することによって、クライアントソフトウェアを動作させ、その結果として、クライアントソフトウェアから情報システムのサーバに対して処理要求を発生させる、という方法である。このときに、クライアントソフトウェアの画面遷移に応じて、ボタンなどの所定の操作対象に、マウスやキーボードからの入力イベント（操作イベント）が投入される。この一連の擬似的動作実行の内容は、あらかじめ操作シナリオの形で定義されている。この方式では、サーバへ送られるメッセージを生成するために、クライアントソフトウェア内部に実装されている機構をそのまま利用するため、前述のようなメッセージ内容を毎回変化させるための機構を別途作成する必要がない。さらにクライアントソフトウェアの操作方法を理解した者であれば上記操作シナリオを作成することが可能であり、高度なスキルを要求しない。
【０００６】
この画面自動操作による負荷発生方式においては、情報端末上のウィンドウ内で表示されるボタンやテキストボックスのようなオブジェクトを操作対象とする。このオブジェクトに所定の操作を投入する場合には、いくつかの実現方法が考えられる。その一つの方法は、画面を構成しているソフトウェアの構造を理解し、画面上のオブジェクトを上記ソフトウェアが管理している仕組みを明らかにすることによって、画面内のオブジェクトをソフトウェアが特定するために用いているＩＤを明確にし、そのＩＤと、そこに投入するイベントの種別を、操作シナリオに記述しておく。実行時には、オブジェクトのＩＤに基づいて、そのオブジェクトに対してマウスのクリックイベントなどを投入する。しかしながらこの方法は、ソフトウェアのオブジェクトの管理方法が変わると、オブジェクトの特定の仕方や表示位置の特定の方法も変化することになり、個々のソフトウェアのオブジェクトの管理方法に対応させて負荷試験プログラムを開発しなければならないことから多大のコストが発生するという問題がある。
【０００７】
一方、画面上のオブジェクトを、あらかじめ取得しておいた画像情報と比較することによって、画面上でのオブジェクトの表示位置を特定し、そのオブジェクトの表示位置までマウスを移動してクリックなどの操作に相当するイベントを発生させるという画面操作方式が考えられる。この方式ならば、オブジェクトの外見（形状、色、等）に基づいてオブジェクトを特定するために、ウィンドウのオブジェクト管理方式に対応して個々に対応方式を準備する必要が無いという利点がある。
【０００８】
このような方式でソフトウェアの画面に対して擬似的動作の実行を行うソフトウェアの例として、非特許文献１に示すようなフリーソフトウェアとして公開されているＡｕｔｏＭｏｕｓｅがある。
【特許文献１】特開２００３−２０８３２９号公報
【非特許文献１】情報処理学会論文誌  Ｖｏｌ．３９，Ｎｏ．ＳＩＧＩ（１９９８１２１５）ｐｐ．２６−３３
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記したような画面操作方式を種々の画面を持つクライアントソフトウェアに適応し、効率的に利用するには、上記操作シナリオを作成するための労力が大きいという課題が有った。すなわち従来の方式では、情報端末（ＰＣ）の画面のスナップショットとしての画像情報を取得し、特殊なエディタを用いて、その中から操作対象となる画像の一部を指定し、その操作対象に対して、マウスやキーボードからどのような入力イベントを投入すべきかを定義する必要があった。複数の操作画面を順次切り替えるタイプのクライアントソフトウェアについて、このような手順で操作シナリオを作成するのには多くの労力が必要となり、作業効率を著しく低下させる要因となっていた。
【００１０】
本発明は上記実情に鑑みなされたもので、操作画面の表示を伴うアプリケーションプログラムを対象とした操作シナリオの作成作業を省力化でき、負荷試験の作業効率を向上できるシナリオ生成システムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、操作画面の表示を伴うアプリケーションプログラムを対象に、前記操作画面内の操作対象となるオブジェクトに対して操作イベントを発生する手順を記述した操作シナリオを生成するシナリオ生成装置であって、前記操作画面上の操作に伴い発生するイベント情報を採取し記録するイベント情報取得手段と、前記操作画面上の全体または一部画像を採取し記録するとともに、前記画像の座標値と前記イベント情報に含まれる操作対象オブジェクトの位置座標とをもとに前記操作画面から前記操作対象オブジェクトの画像を抽出し記録する画像取得手段と、前記イベント情報取得手段が取得したイベント情報と前記画像取得手段が取得した画像情報とをもとに前記操作シナリオを生成するシナリオ生成手段とを具備し、前記画像取得手段は、前記抽出した画像が、前記操作画面から前記操作対象オブジェクトとして一意に特定できる抽出範囲の画像であるか否かを判定する判定手段と、前記判定手段において前記抽出画像が前記操作画面から前記操作対象オブジェクトとして一意に特定できる抽出範囲の画像でないと判定したとき、前記抽出画像の抽出範囲を変更して、前記操作画面から前記操作対象オブジェクトの画像を再度抽出する画像抽出再処理手段と、を具備したことを特徴とする。
【００１２】
また、本発明は、操作画面の表示を伴うアプリケーションプログラムを対象に、前記操作画面内の操作対象となるオブジェクトに対してイベントを発生する手順を記述した操作シナリオを生成するシナリオ生成装置であるコンピュータに、前記操作画面上の操作に伴い発生するイベント情報を採取し記録するイベント情報取得機能と、前記操作画面上の全体または一部画像を採取し記録するとともに、前記画像の座標値と前記イベント情報に含まれる操作対象オブジェクトの位置座標とをもとに前記操作画面から前記操作対象オブジェクトの画像を抽出し記録する画像取得機能と、前記イベント情報取得機能が取得したイベント情報と前記画像取得手段が取得した画像情報とをもとに前記操作シナリオを生成するシナリオ生成機能とを実現させ、前記画像取得機能は、前記抽出した画像が、前記操作画面から前記操作対象オブジェクトとして一意に特定できる抽出範囲の画像であるか否かを判定する判定機能と、前記判定機能において前記抽出画像が前記操作画面から前記操作対象オブジェクトとして一意に特定できる抽出範囲の画像でないと判定したとき、前記抽出画像の抽出範囲を変更して、前記操作画面から前記操作対象オブジェクトの画像を再度抽出する画像抽出再処理機能と、を実現させるためのシナリオ生成プログラムを特徴とする。
【発明の効果】
【００１３】
本発明によれば、操作画面の表示を伴うアプリケーションプログラムを対象とした操作シナリオの作成作業を省力化でき、負荷試験の作業効率を向上できる。
【発明を実施するための最良の形態】
【００１４】
以下図面を参照して本発明の実施形態を説明する。
【００１５】
先ず図１乃至図１１を参照して本発明の第１実施形態を説明する。  
図１は、負荷試験を行うシステム全体の構成を示すブロック図であり、負荷を発生するクライアント側の複数の情報端末（ＰＣ）１，１，…と、負荷試験の対象となるサーバ２とにより構成される。クライアント側の複数の情報端末（ＰＣ）１，１，…には、それぞれサーバ２に対して処理要求を行う負荷発生システム１０およびクライアントアプリケーション２０を単位負荷発生源とする負荷発生手段が設けられる。
【００１６】
負荷試験においては、クライアント側の複数の情報端末（ＰＣ）１，１，…に設けられた負荷発生手段から、サーバ２に対し、多量の処理要求を加えることによって、サーバ２の負荷時におけるリソース（ＣＰＵ等）利用率や、処理要求に対するレスポンスタイム等を測定する。
【００１７】
上記図１に示す負荷発生システム１０の構成を図２に示す。  
負荷発生システム１０は、クライアントアプリケーション２０に対して、人間が操作するのと同等に、マウスイベントやキーボードイベントを発生させることによって、画面操作を行う。これによって、クライアントアプリケーション２０は、負荷発生システム１０に対して処理要求を発行する。
【００１８】
負荷発生システム１０は、図２に示すように、制御部１１と、画面遷移判定部１２と、対象オブジェクト特定部１３と、操作イベント発生部１４と、画像情報取得部１５とを具備する。
【００１９】
図２に示す負荷発生システム１０において、制御部１１は、操作実行制御部１１１と、シナリオ格納部に格納された操作シナリオ１１２とを具備する。
【００２０】
制御部１１に設けられた操作実行制御部１１１は、操作シナリオ１１２の記述内容に従い、画面遷移判定部１２、対象オブジェクト特定部１３、および操作イベント発生部１４を制御する。操作シナリオ１１２は、画面上の操作により負荷発生システム１０に実行させる一連の画面操作の内容を定義したものである。
【００２１】
制御部１１に設けられた操作実行制御部１１１は、画面遷移判定部１２に対して画面遷移判定要求２１３を発行し、画面遷移判定部１２から画面遷移判定応答２２１を受け付ける機能と、対象オブジェクト特定部１３に対して操作対象オブジェクト特定要求２１１を発行し、対象オブジェクト特定部１３から操作対象オブジェクト特定応答２２２を受け付ける機能と、操作イベント発生部１４に対してイベント発生要求２１２を発行し、操作イベント発生部１４からイベント発生応答２２３を受け付ける機能を具備する。
【００２２】
画面遷移判定部１２は、操作実行制御部１１１から受けた画面遷移判定要求２１３に従い画像情報取得部１５に対して画面情報取得要求２１５を発行し、画像情報取得部１５から画像情報取得応答２２５を受け付けて、画面遷移判定応答２２１を操作実行制御部１１１に送出する機能を具備する。
【００２３】
対象オブジェクト特定部１３は、操作実行制御部１１１から受けた操作対象オブジェクト特定要求２１１に従い画像情報取得部１５に対して画面情報取得要求２１６を発行し、画像情報取得部１５から画像情報取得応答２２６を受け付けて、操作対象オブジェクト特定応答２２２を操作実行制御部１１１に送出する機能を具備する。
【００２４】
操作イベント発生部１４は、操作実行制御部１１１から受けたイベント発生要求２１２に従いクライアントアプリケーション２０に対してイベント２０１を発行し、イベント発生応答２２３を操作実行制御部１１１に送出する機能を具備する。クライアントアプリケーション２０は操作イベント発生部１４から受けたイベント２０１に従う処理要求２０２をサーバ２に送出する。
【００２５】
画像情報取得部１５は、画面遷移判定部１２から受けた画面情報取得要求２１５に従いクライアントアプリケーション２０から画像情報２０３を取得し、画像情報取得応答２２５を画面遷移判定部１２に送出する機能と、対象オブジェクト特定部１３から受けた画面情報取得要求２１６に従いクライアントアプリケーション２０から画像情報２０３を取得し、画像情報取得応答２２６を対象オブジェクト特定部１３に送出する機能とを具備する。
【００２６】
なお、操作対象オブジェクト特定要求２１１、画面遷移判定要求２１３、画像情報取得応答２２５，２２６には、それぞれクライアントアプリケーション２０の操作画面に含まれるビットマップイメージ（拡張子ｂｍｐのファイル）の画像情報が付随する。ただし、ビットマップイメージには限定されず、他の形式のイメージファイルであっても構わない。
【００２７】
上記図２に示す対象オブジェクト特定部１３の構成を図３に示す。
【００２８】
対象オブジェクト特定部１３は、図３に示すように、対象オブジェクト特定制御部１３１と、画像比較部１３３とを具備する。
【００２９】
対象オブジェクト特定制御部１３１は、操作実行制御部１１１から受けた操作対象オブジェクト特定要求２１１に従い、当該要求２１１に付随するビットマップイメージの画像情報を画像比較部１３３に送出するとともに、画面情報取得要求２１６を画像情報取得部１５に送出して、画像情報取得部１５から画像情報取得応答２２６に付随するビットマップイメージの画像情報を取得し、上記各画像情報を画像比較部１３３に供給する処理機能を実現する。
【００３０】
画像比較部１３３は、クライアントアプリケーション２０の操作画面の画面情報の中から、上記操作対象オブジェクト特定要求２１１が指定したビットマップイメージと合致する部分を探索する。探索の結果、合致する部分が見つかった場合には、対象オブジェクト特定制御部１３１に探索結果通知を送出する。探索結果通知には、画面情報内での上記ビットマップイメージと合致した部分の座標情報を含む。なお、ここで言う「合致」は、ビットマップイメージを構成する全てのピクセルが完全に一致することであってもよいし、完全ではないが指定された基準以上に一致することであってもよい。例えば、予め指定された値以上の割合で、ピクセルの色の情報が一致していることを条件に「合致」を定義してもよい。
【００３１】
ここで、クライアントアプリケーション２０に於ける操作画面の具体例を挙げて、上記負荷発生システム１０の動作について、図４乃至図１１を参照して説明する。ここでは、クライアントアプリケーション２０が扱うアプリケーション操作ウィンドウとして、図４に示すスケジュール表示画面を例に動作を説明する。
【００３２】
負荷発生システム１０の制御部１１に設けられた操作実行制御部１１１は、操作シナリオ１１２の定義内容に従い、負荷発生システム１０内部に設けられた画面遷移判定部１２、対象オブジェクト特定部１３、操作イベント発生部１４、および画像情報取得部１５等の各構成要素を制御する。
【００３３】
制御部１１の下で操作実行制御部１１１は、操作シナリオ１１２に記述（定義）されている内容に従い、対象オブジェクト特定部１３に対して操作対象オブジェクト特定要求２１１を送出し、操作イベント発生部１４に対してイベント発生要求２１２を送出し、画面遷移判定部１２に対して画面遷移判定要求２１３を送出する。
【００３４】
画面遷移判定部１２および対象オブジェクト特定部１３はそれぞれ操作実行制御部１１１の制御の下に画像情報取得部１５に画面情報取得要求２１５，２１６を送出する。すなわち画面遷移判定部１２は、操作実行制御部１１１から画面遷移判定要求２１３を受けると、画像情報取得部１５に対して画面情報取得要求２１５を送出する。対象オブジェクト特定部１３は、操作実行制御部１１１から操作対象オブジェクト特定要求２１１を受けると、画像情報取得部１５に対して画面情報取得要求２１６を送出する。
【００３５】
画像情報取得部１５は画面遷移判定部１２から画面情報取得要求２１５を受けると、オペレーティングシステム（ＯＳ）４０を介してクライアントアプリケーション２０が画面に表示している画像情報２０３を取得し、取得した画像を含む画像情報取得応答２２５を画面遷移判定部１２に送出する。同様に対象オブジェクト特定部１３から画面情報取得要求２１６を受けると、クライアントアプリケーション２０が画面に表示している画像情報２０３を取得し、取得した画像を含む画像情報取得応答２２６を対象オブジェクト特定部１３に送出する。
【００３６】
この際のクライアントアプリケーション２０が画面に表示している画像情報（アプリケーション操作ウィンドウ）２０３の具体例を図４に示している。ここでは、スケジュール管理システムに於けるスケジュール表示画面２１を例に示している。以降の動作説明においては、この図４に示すスケジュール表示画面２１の画像情報が画像情報取得部１５により画像情報２０３として取得され、当該スケジュール表示画面２１の画像情報が画面遷移判定部１２、および対象オブジェクト特定部１３に送出されるものとする。
【００３７】
図４に示すスケジュール表示画面２１において、ボタン「旅費清算システム」をクリックすると、図５に示す旅費清算システムの画面２２に遷移する。さらに、この旅費清算システムの画面２２上で、「一括請求」ボタンをクリックすると、さらに次の画面に遷移する。
【００３８】
この一連の画面遷移に応じた操作を負荷発生システム１０によって実現する手順を以下に説明する。
【００３９】
上記図４に示すスケジュール表示画面２１の座標軸を図６に示している。ここでは、ＸＧＡ（１０２４×７６８ピクセル）のアプリケーション操作ウィンドウを例に示している。
【００４０】
上記操作シナリオ１１２の一部記述例を図７に示している。この操作シナリオ１１２は、図７に示すように、操作ステップと、画面識別情報（画面ＩＤ）と、ビットマップイメージの画面遷移判定画像および操作対象オブジェクト画像と、判定／操作内容と、数値情報とを設定項目（定義項目）として構成される。
【００４１】
クライアントアプリケーション２０は、画面遷移の中で、図４に示すスケジュール表示画面２１を表示しようとしている状態とする。
【００４２】
操作実行制御部１１１は、操作シナリオ１１２のステップ２０を読み取る。このステップ２０には、［判定／操作内容］として「画面遷移判定」が設定（定義）されている。従って、次に行うことは、画面遷移の判定であることが決定される。また、［画面遷移判定画像］として、ファイル名「１．ｂｍｐ」が設定されている。その内容（ビットマップイメージ）を図８に示している。操作実行制御部１１１は、この図８に示す画面遷移判定画像の情報（ビットマップイメージ）を含む画面遷移判定要求２１３を画面遷移判定部１２に送出する。
【００４３】
画面遷移判定部１２は、操作実行制御部１１１から画面遷移判定要求２１３を受けると、画像情報取得部１５に対して画面情報取得要求２１５を送出する。
【００４４】
画像情報取得部１５は、画面遷移判定部１２から画面情報取得要求２１５を受けると、クライアントアプリケーション２０が表示している画像情報（ビットマップイメージ）２０３を取得し、当該画像情報２０３を含む画像情報取得応答２２５を画面遷移判定部１２に送出する。
【００４５】
画面遷移判定部１２は、画像情報取得部１５を介してクライアントアプリケーション２０から取得した画像情報２０３の中に、「１．ｂｍｐ」の画像と合致する部分があるか否かを検査する。この際の「１．ｂｍｐ」の内容（ビットマップイメージ）は上記した図８に示す画面遷移判定画像の情報（ビットマップイメージ）である。
【００４６】
なお、この検査において、例えば画面遷移が完了していないために、合致する部分が存在しなかった場合、画面遷移判定部１２は、画像情報取得部１５に対して、画面情報取得要求２１５を送出する動作から、上記同様の処理を適当な頻度で繰り返し実行する。
【００４７】
画面遷移が完了し、合致する部分が見つかった場合、画面遷移判定部１２は、操作実行制御部１１１に対して画面遷移判定応答２２１を送出する。
【００４８】
操作実行制御部１１１は、操作シナリオ１１２の次のステップであるステップ２１を読み取る。このステップ２１には、［判定／操作内容］として「クリック」が設定されている。従って、次に行うことは、クリックであることが決定される。また、［操作対象オブジェクト画像］としてファイル名「２．ｂｍｐ」が設定されている。この「２．ｂｍｐ」のビットマップイメージを図９に示す。
【００４９】
操作実行制御部１１１は、上記した操作シナリオ１１２の内容に従い、対象オブジェクト特定部１３に対して操作対象オブジェクト特定要求２１１を送出する。この操作対象オブジェクト特定要求２１１には、上記した図９に示す操作対象オブジェクト画像（ビットマップイメージ）が付随している。
【００５０】
対象オブジェクト特定部１３において、対象オブジェクト特定制御部１３１は、操作実行制御部１１１から操作対象オブジェクト特定要求２１１を受けると、画像情報取得部１５に画面情報取得要求２１６を送出する。
【００５１】
画像情報取得部１５は、対象オブジェクト特定部１３に設けられた対象オブジェクト特定制御部１３１から画面情報取得要求２１６を受けると、クライアントアプリケーション２０が表示している画像情報２０３を取得し、当該取得した画像情報２０３を対象オブジェクト特定部１３に設けられた画像比較部１３３に送出する。今回のケースでは、画像情報２０３として図４に示すスケジュール表示画面２１が画像比較部１３３に送出される。
【００５２】
画像比較部１３３は、画像情報取得部１５を介してクライアントアプリケーション２０から取得した画像情報２０３の中から、操作対象オブジェクト画像としてファイル名「２．ｂｍｐ」で表される画像（ビットマップイメージ）１１２と一致する部分を検索する。
【００５３】
画像比較部１３３は、上記検索の結果として、［中心Ｘ座標］、［中心Ｙ座標］を対象オブジェクト特定制御部１３１に応答し、対象オブジェクト特定制御部１３１は、操作実行制御部１１１に、操作対象オブジェクト特定応答２２２を送付する。
【００５４】
操作実行制御部１１１は、対象オブジェクト特定制御部１３１から受けた操作対象オブジェクト特定応答２２２に付随した操作対象オブジェクトの中心Ｘ座標、中心Ｙ座標の情報と、操作／判定内容として「クリック」の情報をイベント発生要求２１２に付随させ、当該イベント発生要求２１２を操作イベント発生部１４に送出する。
【００５５】
操作イベント発生部１４は、操作実行制御部１１１から受けたイベント発生要求２１２に従い、操作対象オブジェクトの中心Ｘ座標、中心Ｙ座標にマウスが移動したのと同等のイベント２０１を発生する。さらに、マウスクリックのイベント２０１を発生する。その後、イベント発生応答２２３を操作実行制御部１１１に送出する。
【００５６】
このようにして、クライアントアプリケーション２０の画面が操作されるような適切な操作イベントを発生させることができる。
【００５７】
次に、操作実行制御部１１１は、操作シナリオ１１２の次のステップであるステップ２２を読み取る。このステップ２２には、［判定／操作内容］として「画面遷移判定」が設定されている。
【００５８】
ここでは、上記ステップ２０で実行したのと同様に、ステップ２２の処理が実行される。このステップ２２における「３．ｂｍｐ」の内容（ビットマップイメージ）を図１０に符号１１３を付して示している。
【００５９】
操作実行制御部１１１は、操作シナリオ１１２の次のステップであるステップ２３を読み取る。
【００６０】
ここでは、上記ステップ２１で実行したのと同様に、ステップ２３の処理が実行される。
【００６１】
このステップ２３における「４．ｂｍｐ」の内容（ビットマップイメージ）を図１１に符号１１４を付して示している。
【００６２】
このようにしてクライアントアプリケーション２０の画面に対して適切な操作イベントを発生させることができる。
【００６３】
上記した操作シナリオ１１２に従う処理動作によって、負荷発生システム１０から、クライアントアプリケーション２０に対して、画面遷移に応じ、順次、適正なイベントを発生させることができ、これに伴いクライアントアプリケーション２０からサーバ２に処理要求を送出して、サーバ２に所望の負荷をかける負荷試験が可能となる。
【００６４】
次に図１２乃至図１６を参照して本発明の第２実施形態を説明する。この第２実施形態は、画面遷移を伴うアプリケーションプログラムを対象に、上記第１実施形態で用いた操作シナリオ１１２を作成するシステムを実現している。
【００６５】
本発明の第２実施形態は、操作画面の表示を伴うアプリケーションプログラムを対象に、上記操作画面内の操作対象となるオブジェクトに対して操作イベントを発生する手順を記述した操作シナリオを生成するシナリオ生成システムであって、上記操作画面上の操作に伴い発生するイベントを採取し記録するイベント取得手段と、上記操作画面の全体画像、および上記操作画面上における指定部位の抽出画像を採取し記録する画像取得手段と、上記イベント取得手段が取得したイベント、および上記画像取得手段が取得した画像をもとに上記操作シナリオを生成するシナリオ生成手段とを具備して構成される。上記イベント取得手段は、後述する図１３に示すイベント検出部３０８およびイベント記録部３０９と、イベント記録部３０９が記録したイベントログ３０６とにより実現される。上記画像取得手段は、後述する図１３に示す画面画像記録指示部３１１および画面画像記録部３１０と、画面画像記録部３１０が記録した画面全体画像情報と、操作対象オブジェクト範囲抽出部３０３とにより実現される。上記シナリオ生成手段は、後述する図１３に示すシナリオ生成部３０２により実現される。
【００６６】
本発明の第２、第３、第４、第５実施形態に係るシナリオを作成するシステム全体の構成を図１２に示す。この図１２に示すシステムは、シナリオ生成システム３０を主構成要素として実現される。シナリオ生成システム３０は、サーバ２に処理要求を送出するクライアントアプリケーション２０に対して、操作者３の操作指示に伴い、オペレーティングシステム（ＯＳ）４０を介して発生する各種の操作イベントをクライアントアプリケーション２０の画像情報とともに取り込み、操作シナリオ１１２を作成する機能を実現している。
【００６７】
このシナリオ生成システム３０の構成を図１３に示す。  
図１３に示すシナリオ生成システム３０は、シナリオ生成部３０２、操作対象オブジェクト範囲抽出部３０３、イベント検出部３０８、イベント記録部３０９、画面画像記録部３１０、画面画像記録指示部３１１等を有して構成される。
【００６８】
画面画像記録指示部３１１は、クライアントアプリケーション２０が画面に表示している画像を取り込む際に操作者３によって操作されるもので、例えばキーボード上の「ＰｒｉｎｔＳｃｒｅｅｎ」キー等により実現される。
【００６９】
画面画像記録部３１０は、画面画像記録指示部３１１の操作に従い、クライアントアプリケーション２０が画面に表示している画像情報（画面全体画像情報）３０７を取り込み、記録する。例えば図４に示すスケジュール表示画面２１の全画像（ビットマップイメージ）を画面全体画像情報３０７として所定の記録領域に記録する。なお、ここで言う「画面全体画像」は、あくまで操作対象範囲にある全体画像であって、マウス操作が行われるであろう位置が含まれる操作対象範囲内の画像であればよく、例えばアクティブになっているウィンドウの画像である場合も含む。
【００７０】
イベント検出部３０８は、操作者３によるマウスのクリック操作、キー操作等、各種の操作指示に伴い、オペレーティングシステム（ＯＳ）４０を介して発生する操作イベントの情報を検出する。このイベント情報には、操作者３が操作する操作画面上における操作の位置を示す座標情報が含まれる。
【００７１】
イベント記録部３０９は、イベント検出部３０８が検出したマウスのクリック操作、キー操作等により発生する各種のイベント情報をイベントログ３０６として記録する。
【００７２】
操作対象オブジェクト範囲抽出部３０３は、画面全体画像情報３０７からイベントログ３０６に従う操作対象オブジェクト範囲の画像情報（ビットマップイメージ）を操作対象オブジェクト画像情報３０１として抽出する。
【００７３】
シナリオ生成部３０２は、操作対象オブジェクト画像情報３０１とイベントログ３０６とをもとに操作シナリオを生成する。ここでは、クライアントアプリケーション２０を操作対象とした操作シナリオ１１２を作成する。
【００７４】
本発明の第２実施形態におけるシナリオ生成システム３０を主構成要素としたシステムの処理手順を図１４に示し、当該処理により生成される操作シナリオの内容例を図７に示し、当該操作シナリオに設定された操作対象オブジェクト画像情報の一例を図９乃至図１１に示している。また、操作画面上におけるマウスカーソルの操作に伴う操作対象オブジェクト画像の状態遷移の一例を図１５および図１６に示している。
【００７５】
ここで上記図１２乃至図１６を参照して本発明の第２実施形態における操作シナリオ１１２の作成処理動作を説明する。
【００７６】
シナリオ作成者となる操作者３は、まず操作対象となるクライアントアプリケーション２０を起動する。そして、シナリオ生成システム３０の動作を開始させる。
【００７７】
操作者３は、オペレーティングシステム（ＯＳ）４０を介し、クライアントアプリケーション２０に、マウスの移動、マウスのクリック、キーボード入力等の各種イベントを送出することによって、クライアントアプリケーション２０を操作する。
【００７８】
シナリオ生成システム３０は、上記各種イベントの情報や、クライアントアプリケーション２０の画像情報をオペレーティングシステム（ＯＳ）４０から取得することによって、操作シナリオ１１２を生成する。
【００７９】
以下に図１４に示す処理手順と図７に示す操作シナリオの内容例と図９乃至図１１に示す操作対象オブジェクト画像の一例を参照して、図１２および図１３に示す本発明の第２実施形態におけるシナリオ生成システム３０を主構成要素としたシステムの具体的な処理動作を説明する。
【００８０】
図１４に示す処理フローにおいて、ステップＳ２１では、操作者３が、クライアントアプリケーション２０の画面に画像から所期の操作対象オブジェクトを認識して、画面画像記録指示部３１１を操作する。例えば、図４に示されるスケジュール表示画面２１が表示され、操作者３が当該スケジュール表示画面２１上において、左下の「旅費清算システム」のボタンを発見したとき、キーボード上の「ＰｒｉｎｔＳｃｒｅｅｎ」キー等のボタンを押下する。
【００８１】
ステップＳ２２では、画面画像記録指示部３１１の操作に従い、画面画像記録指示部３１１が画面画像記録部３１０に対して画面全体画像情報の記録を指示する。
【００８２】
ステップＳ２３では、画面画像記録部３１０が、画面画像記録指示部３１１からの指示に従い、クライアントアプリケーション２０が画面に表示している図４に示すスケジュール表示画面２１を画面全体画像情報３０７として所定の記録領域に記録する。
【００８３】
ステップＳ２４では、操作者３が上記スケジュール表示画面２１の「旅費清算システム」ボタン上へマウスを移動させ、クリック操作を行う。
【００８４】
ステップＳ２５では、イベント記録部３０９が、上記マウスのクリック操作をイベントとして検出し、マウスの位置を示す座標情報と、イベントの種別情報（この例ではクリック）を、イベントログ３０６として所定の記録領域に記録する。
【００８５】
ステップＳ２６では、操作対象オブジェクト範囲抽出部３０３が、画面全体画像情報３０７の中から、上記イベントログ３０６に記録した座標情報を中心とした、既定の形状とサイズによって決まるエリアに含まれる部分を、マッチング範囲として抽出し、操作対象オブジェクト画像情報３０１として所定の記録領域に記録する。
【００８６】
ステップＳ２７では、操作者３によるクライアントアプリケーション２０の操作が終了したか否かを判断する。操作が終了していない場合は、ステップＳ２１へ戻る。操作が終了していれば、ステップＳ２８へ移行する。
【００８７】
ステップＳ２８では、シナリオ生成部３０２が、操作対象オブジェクト画像情報３０１とイベントログ３０６の情報を組み合わせて、操作シナリオ１１２を生成する。
【００８８】
この操作シナリオ１１２の一例を図７に示している。この操作シナリオ１１２は、操作ステップと、画面識別情報（画面ＩＤ）と、ビットマップイメージの画面遷移判定画像および操作対象オブジェクト画像と、判定／操作内容と、数値情報とを設定項目として構成される。
【００８９】
上記図７に示す操作シナリオ１１２において、操作対象オブジェクト画像の設定項目には、操作対象オブジェクト画像を適当な画像ファイル形式として保存したファイルのファイル名が設定される。この例では、ビットマップのイメージ形式ファイルを表す「．ｂｍｐ」が設定されている。
【００９０】
上記図７に示す操作シナリオ１１２の［操作対象オブジェクト画像］に設定された操作対象オブジェクト画像ファイル（２．ｂｍｐ）の内容を図９に示している。この例ではスケジュール表示画面２１から抽出された「旅費清算システム」が操作対象オブジェクト画像として操作シナリオ１１２に登録される。
【００９１】
なお、上記したステップＳ２４の処理において、マウスをクリックする直前に、マウスがボタンの上へ到達した時点で、ボタンの外見（形状、色、等）が変化することがある。例えば図１５に示すようにマウスカーソル（ＭＣ）がボタン設定エリア（ＢＡ１）に到達しない（ＢＡ１の外に位置している）状態から、図１６に示すようにマウスカーソル（ＭＣ）がボタン設定エリア（ＢＡ１）に到達した（ＢＡ１内に位置した）とき、ボタンの外郭（非明示／明示）、色（例えば非反転／反転）、明度（暗／明）等が変化する。実際に、汎用ＯＳ上の多くのアプリケーションソフトウェアは、メニュ−の上にマウスを移動させただけで、外見（形状、色、等）が変化する。
【００９２】
したがって、上記ステップＳ２４の時点でマウスのクリックが発生したときに、画面の画像情報を取得したのでは、変化した後の画像しか得られない。しかしながら、シナリオを実行する際には、まだマウスが操作対象となるボタンよりも離れた位置に有る状態においてボタンの画像を画面全体の画像の中から検出しなければならず、その時点では、まだボタンの画像は変化していない。つまり、画面全体画像を取得すべき時点とは、操作者３が操作対象オブジェクト（例：ボタン）を視認した後の時点でなければならず、かつ、マウスが操作対象オブジェクトに近づく以前であって、操作対象オブジェクトの外見が変化する以前の時点でなければならない。したがって、上記ステップＳ２１の段階で、画面画像記録指示部を操作する必要がある。
【００９３】
上記したような画面全体の画像の取得処理機能をもつことで、実行可能な操作シナリオによる負荷試験システムを構築することができる。
【００９４】
次に上記第２実施形態をベースにした本発明の第３実施形態を図１７乃至図２１を参照して説明する。
【００９５】
本発明の第３実施形態に係るシナリオ生成システムの構成を図１７に示し、同システムの処理手順を図１８に示している。
【００９６】
上記した第２実施形態においては、操作対象オブジェクト範囲抽出部３０３が、画面全体画像情報３０７の中から、上記イベントログ３０６に記録した座標情報を中心とした、既定の形状とサイズによって決まるエリアに含まれる部分を、マッチング範囲として抽出し、操作対象オブジェクト画像情報３０１として所定の記録領域に記録していた（図１４ステップＳ２６）。
【００９７】
これに対して、この第３実施形態は、操作対象オブジェクト範囲抽出部３０３により抽出された操作対象オブジェクト画像情報３０１が一意に決定（特定）できない抽出範囲にある際に、抽出範囲を変更させて、一意に決定できる操作対象オブジェクト画像情報３０１を得る処理ルーチン（フィードバックルーチン）を備えている。
【００９８】
本発明の第３実施形態は、上記した第２実施形態のシステムにおいて、上記抽出画像が上記操作画面内の操作対象となるオブジェクトを特定できない抽出範囲の画像であるとき、上記抽出画像の抽出範囲を変更する処理手段をさらに具備して構成される。上記抽出画像の抽出範囲を変更する処理手段は、図１７に示す操作対象オブジェクト画像情報３０１→マッチング判定部３０５→形状・サイズ変化部３０４→操作対象オブジェクト範囲抽出部３０３のフィードバックループにより実現される。
【００９９】
マッチング判定部３０５は、画面全体画像情報３０７の中で操作対象オブジェクト画像情報３０１を一意に決定できるか否かを判定する。ここで、一意に決定できるというのは、画面全体画像情報３０７の中で、操作対象オブジェクト画像情報３０１と合致する部分が、唯一であるという意味である。例えば図４に示すスケジュール表示画面２１において、操作対象オブジェクトとして抽出した画像が、文字イメージの一部が欠落した「精算システム」であったとすると、この操作対象オブジェクトとして抽出した画像は、「旅費精算システム」であるか「経費精算システム」であるか一意に特定でない。この文字イメージの欠落部分を補うことによって、操作対象オブジェクトを一意に特定することができる。
【０１００】
一意に決定（特定）できると判定したときは、操作対象オブジェクト範囲抽出部３０３が抽出した操作対象オブジェクト画像情報３０１をシナリオ生成用画像とする旨をシナリオ生成部３０２に通知する。一意に決定できないと判定したときは、その旨を形状・サイズ変化部３０４に通知する。
【０１０１】
形状・サイズ変化部３０４は、マッチング判定部３０５が、画面全体画像情報３０７の中で操作対象オブジェクト画像情報３０１を一意に決定できないと判定したとき、操作対象オブジェクト範囲抽出部３０３に対して抽出範囲の変更を指示する。例えば前回の抽出範囲に対して、横方向のサイズ若しくは縦方向のサイズ若しくは縦・横サイズを所定のピクセル単位で拡大するや抽出範囲の変更を指示する。
【０１０２】
図１７に示すシナリオ生成システム３０において生成した操作シナリオ１１２に示されている操作対象オブジェクト画像が、図１９に示すような文字イメージの一部（ここでは前後）が欠落した画像であると、図４に示すスケジュール表示画面２１との比較において、操作対象オブジェクト画像（マウスのクリックを行うべき画像）を一意に決定できない。スケジュール表示画面２１には、上述したように、「旅費清算システム」と「経費清算システム」の両ボタンが存在することから、「旅費清算システム」と「経費清算システム」の両ボタンの画像がマッチしてしまい、スケジュール表示画面２１から操作対象オブジェクト画像を一意に決定できない。
【０１０３】
ここで、上述した第１実施形態の処理技術を用いて、複数の画像情報の相対位置関係を利用する方法もあるが、ここでは、シナリオ生成システム３０がシステム内の処理で上記問題を解消し、スケジュール表示画面２１との比較において一意に決定できる操作対象オブジェクト画像を生成している。この第３実施形態では、図１９に示すシナリオ生成システム３０において、操作対象オブジェクト画像情報３０１→マッチング判定部３０５→形状・サイズ変化部３０４→操作対象オブジェクト範囲抽出部３０３のフィードバックループを有する。このフィードバックルーチンにおいて、形状・サイズ変化部３０４、およびマッチング判定部３０５により、操作対象オブジェクト画像を一意に特定できるように調整する機能を実現している。
【０１０４】
この第３実施形態の処理動作を図１８に示す処理フローに従い説明する。
【０１０５】
図１８に示すステップＳ３１乃至ステップＳ３６の処理は、上述した図１４に示す処理フローのステップＳ２１乃至ステップＳ２６の処理と同様であることから、ここでは上記ステップＳ３１乃至ステップＳ３６における処理動作の説明を省略する。
【０１０６】
図１８に示すステップＳ３７において、マッチング判定部３０５は、画面全体画像情報３０７の中で操作対象オブジェクト画像情報３０１を一意に決定できるか否かを判定する。例えばスケジュール表示画面２１の中で、操作対象オブジェクト画像情報３０１となる「旅費清算システム」が一意に決定できるか否かを判定する。ここで、一意に決定できると判定した場合（Ｙｅｓ）は、ステップＳ４０の処理に移行する。また、一意に決定できないと判定した場合（Ｎｏ）は、ステップＳ３８の処理に移行する。また、一意に決定できないと判定した回数が設定した試行回数を超過した場合（Ｎｏかつ試行回数超過）は、ステップＳ３９の予め設定した例外処理に移行する。
【０１０７】
ステップＳ３８の処理において、形状・サイズ変化部３０４は、マッチング判定部３０５が、画面全体画像情報３０７の中で操作対象オブジェクト画像情報３０１を一意に決定できないと判定したとき、操作対象オブジェクト範囲抽出部３０３に対して抽出範囲の変更を指示する。例えば前回の抽出範囲に対して、横方向のサイズ若しくは縦方向のサイズ若しくは縦・横サイズを所定のピクセル単位で拡大するや抽出範囲の変更を指示する。たとえば、Ｘ軸方向（横方向）は固定のままで、Ｙ軸方向（縦方向）の画像範囲を拡大させる形で変化させることが可能である。この変化のさせ方を、画像範囲をＸ軸、Ｙ軸の数値情報（例えばピクセル数情報）で表現し、当該情報を操作対象オブジェクト範囲抽出部３０３に送出する。その後、ステップＳ３６に戻って、操作対象オブジェクト範囲抽出部３０３が、再度、操作対象オブジェクト画像情報３０１を抽出する。その結果のスケジュール表示画面２１から切り出された操作対象オブジェクト画像情報の一例を図２０に示す。
【０１０８】
この操作対象オブジェクト範囲抽出部３０３によって再度抽出された操作対象オブジェクト画像情報３０１について、マッチング判定部３０５は、ステップＳ３７において、当該操作対象オブジェクト画像情報３０１を画面全体画像情報３０７の中で一意に決定できるか否かを再度判定する。
【０１０９】
ここでは図２０に示す操作対象オブジェクト画像情報を評価する。今度は、図４に示すスケジュール表示画面２１において「旅費清算システム」を中心とした画像であることが一意に決定される。したがって、判定結果はＹｅｓとなり、次のステップＳ４０に移行する。
【０１１０】
上記ステップＳ３８の処理における他の画像切り出し範囲の例を図２１に示す。この図２１に示す例では、操作対象オブジェクト画像を切り出す範囲を、Ｘ軸方向のみ拡大させている。この場合も、切り出し範囲を変化させた結果、一意に操作対象を特定できるようになる。
【０１１１】
上記したステップＳ３８における形状・サイズの変化の方法は、上記したように、Ｘ軸方向に左右対称に拡大し、Ｙ軸方向に上下対象に拡大するだけでなく、左右、上下非対称に拡大することも可能である。また一度に拡大する幅も種々変化可能である。さらに、操作対象オブジェクト画像範囲の形状を四角形から円形に変える等、切り出し形状を変化させることも可能である。
【０１１２】
上記したような操作対象オブジェクト画像の取得処理機能をもつことで、操作シナリオの作成作業を省力化でき、信頼性の高い操作シナリオを生成することができる。
【０１１３】
次に図２２および図２３を参照して本発明の第４実施形態を説明する。
【０１１４】
上記した第２、第３実施形態において、操作者３が画面画像記録指示部３１１の操作を行わずにマウス操作やキーボード操作を行った場合、後の操作対象オブジェクトの抽出に必要とされる画面全体画像が取得されない状態で、マウス操作やキーボード操作に従う入力処理が実行されてしまうことから、以後のシナリオ生成に支障が生じる。操作者３が画面画像記録指示部３１１の操作を行わずにマウス操作やキーボード操作を行った場合、シナリオ生成システムは、適切な画面全体画像を記録しない状態で、操作対象となるクライアントアプリケーション２０が、マウス操作やキーボード操作によって、画面遷移するなどの状態変化を起こしてしまう。
【０１１５】
この場合、操作者３が後で、画面画像記録指示部３１１の操作を忘れたことに気付き、再度操作を繰り返して、正しいシナリオの生成をしようとするには、クライアントアプリケーション２０も、以前の状態に戻す必要がある。更に、例えば、クライアントアプリケーション２０を初期化して、最初から操作し直すなどの煩雑な手順を要する場合もある。
【０１１６】
本発明の第４実施形態は、上記したような不具合の発生を抑制して、シナリオ生成の容易化、迅速化を図っている。
【０１１７】
本発明の第４実施形態に係るシナリオ生成システムの構成を図２２に示し、同システムの処理手順を図２３に示している。
【０１１８】
本発明の第４実施形態は、上記した第３実施形態のシステムにおいて、操作対象オブジェクト範囲抽出部３０３に、画面画像記録有無判定部３２１と、画面画像記録無し警告部３２２を設け、イベント検出部３０８とイベント記録部３０９との間にイベント無効化部３１２を設けて、操作者３が画面画像記録指示部３１１の操作を行わずにマウス操作やキーボード操作を行った場合に、操作者３にその旨を報知するとともに、当該操作に伴い発生するイベント情報を無効化し、画面全体画像を取得するための指示操作から操作を再開可能にする機能を実現している。
【０１１９】
画面画像記録有無判定部３２１は、操作者３が画面画像記録指示部３１１の操作を行わずに操作画面上でマウス操作やキーボード操作を行った操作を判定し、この判定時に、上記操作画面上の操作に伴い発生するイベントを無効化する指示を行う。この指示に従い、イベント無効化部３１２は、イベント検出部３０８が検出した、操作画面上の操作に伴い発生するイベントを無効化する。
【０１２０】
画面画像記録無し警告部３２２は、操作者３が画面画像記録指示部３１１の操作を行わずに操作画面上でマウス操作やキーボード操作を行った旨を上記操作者３に報知する。この報知により操作者３は、操作画面上の画面全体画像を記録すべく画面画像記録指示部３１１の操作を行う。
【０１２１】
図２２に示すシナリオ生成システムにおいて、イベント記録部３０９は、マウスのクリック操作、キー操作等により発生するイベントの情報をイベントログ３０６として記録する。このときのマウスのクリック操作、キー操作等により発生するイベントは、オペレーティングシステム（ＯＳ）４０がマウスやキーボードなどの入力デバイスからの入力を検出しアプリケーションに通知する過程でイベント検出部３０８により検出される。このイベント検出部３０８は、例えば、既存のＯＳにより提供されるグローバルフックという手法を用いることにより実現可能である。
【０１２２】
このイベント検出部３０８で検出されたイベント情報が、イベント記録部３０９にイベントログ３０６として記録される。
【０１２３】
操作対象オブジェクト範囲抽出部３０３において、画面画像記録有無判定部３２１は、イベントログ３０６に対して、該当する画面全体画像情報３０７が有るか否かを判別する。この際、操作者３が、画面画像記録指示部３１１を操作し忘れた状態で、マウスのクリックを行った場合、イベントログ３０６は存在しても、画面全体画像情報３０７は存在しない。このことは、イベントログ３０６と画面全体画像３０７に、各々、その情報を得た時点の時刻情報を付加しておくことによって、処理しようとしているイベントログ３０６よりも古く、かつ、直前に処理したイベントログ３０６よりも新しい画面全体画像情報３０７が有るかどうかを調べることによって判定可能である。
【０１２４】
画面画像記録有無判定部３２１は、画面全体画像情報３０７が無いと判定した場合、以下のような動きをする。まず、画面画像記録有無判定部３２１は、イベント検出部３０８に対して、イベント無効化指示を送出する。これに伴い、イベント検出部３０８は、検出したイベント情報を破棄する。また、画面画像記録有無判定部３２１は、操作対象オブジェクト範囲抽出部３０３の動きを制御し、操作対象オブジェクト画像情報３０１を生成しないようにする。したがって、画面全体画像情報３０７が存在しない場合、シナリオ生成部３０２は、該当するマウスイベントに対するシナリオを生成しない。さらに、画面画像記録有無判定部３２１は画面画像記録無し警告部３２２を起動する。これにより画面画像記録無し警告部３２２は操作者３が画面画像記録指示部３１１の操作を行わずに操作画面上でマウス操作やキーボード操作を行った旨を操作者３に報知する。例えば、操作者３に対して、ポップアップウィンドウを開いて警告メッセージを表示し、またはビープ音で画面画像記録指示部３１１の操作忘れを報知する。
【０１２５】
また、画面画像記録有無判定部３２１は、画面全体画像情報３０７が存在するとき、イベント検出部３０８に対して、イベント有効化指示を送出する。これによりイベント検出部３０８は、検出したイベント情報をイベント記録部３０９に送出し、イベント記録部３０９はイベント検出部３０８から受けたイベント情報をイベントログ３０６として記録する。
【０１２６】
さらに画面画像記録有無判定部３２１は、操作対象オブジェクト範囲抽出部３０３の動きを制御し、操作対象オブジェクト画像情報３０１を生成させる。したがって、画面全体画像情報３０７が存在する場合、シナリオ生成部３０２は、該当するマウスイベントに対するシナリオを生成する。
【０１２７】
本発明の第４実施形態に係るシナリオ生成システムの処理手順を図２３に示す処理フローを参照して説明する。この図２３に示す第４実施形態の処理フローは、上記した図１８に示す第３実施形態の処理フローに、いくつかの処理ステップを追加したものである。
【０１２８】
図２３に示す処理フローにおいて、ステップＳ４１〜Ｓ４３は、操作者３が画面画像記録指示部３１１の操作を忘れた場合、実行されない処理部分である。
【０１２９】
操作者３が操作画面上の画面全体画像に対して画面画像記録指示部３１１の操作を行った場合、ステップＳ４１において、操作者３が、クライアントアプリケーション２０の画面全体画像から所期の操作対象オブジェクトを認識して、画面画像記録指示部３１１を操作する。例えば、図４に示されるスケジュール表示画面２１が表示され、操作者３が当該スケジュール表示画面２１上において、左下の「旅費清算システム」のボタンを発見したとき、キーボード上の「ＰｒｉｎｔＳｃｒｅｅｎ」キーを押下する。
【０１３０】
ステップＳ４２では、画面画像記録指示部３１１の操作に従い、画面画像記録指示部３１１が画面画像記録部３１０に対して画面全体画像情報の記録を指示する。
【０１３１】
ステップＳ４３では、画面画像記録部３１０が、画面画像記録指示部３１１からの指示に従い、クライアントアプリケーション２０が表示している図４に示すスケジュール表示画面２１を画面全体画像情報３０７として所定の記録領域に記録する。
【０１３２】
ステップＳ４４では、操作者３が上記スケジュール表示画面２１の「旅費清算システム」ボタン上へマウスを移動させ、クリック操作を行う。
【０１３３】
ステップＳ４５では、イベント検出部３０８が、上記マウスのクリック操作をイベントとして検出し、イベント記録部３０９が、マウスの位置を示す座標情報と、イベントの種別情報（この例ではクリック）を、イベントログ３０６として所定の記録領域に記録する。
【０１３４】
ステップ４６では、画面画像記録有無判定部３２１が、上記イベントログ３０６に該当する画面全体画像情報３０７の有無を判定する。ここでの判定結果は「有」となる。
【０１３５】
ステップ４７では、画面画像記録有無判定部３２１が、イベント検出部３０８にイベント有効化指示を送出し、イベント検出部３０８は、この指示に従い、検出したイベント情報をイベント記録部３０９に送出する。イベント記録部３０９はイベント検出部３０８から受けたイベント情報をイベントログ３０６として記録する。
【０１３６】
ステップＳ４８では、操作対象オブジェクト範囲抽出部３０３が、画面全体画像情報３０７の中から、上記イベントログ３０６に記録した操作対象オブジェクトの座標情報を中心とした、既定の形状とサイズによって決まるエリアに含まれる部分を、マッチング範囲として抽出し、操作対象オブジェクト画像情報３０１として所定の記録領域に記録する。
【０１３７】
ステップＳ４９では、操作者３によるクライアントアプリケーション２０の操作が終了したか否かを判断する。操作が終了していない場合は、ステップＳ２１へ戻る。操作が終了していれば、ステップＳ５０へ移行する。
【０１３８】
ステップＳ５０では、シナリオ生成部３０２が、操作対象オブジェクト画像情報３０１とイベントログ３０６の情報を組み合わせて、操作シナリオ１１２を生成する。
【０１３９】
次に、操作者３が画面画像記録指示部３１１の操作を忘れた場合の処理について説明する。
【０１４０】
図２３に示す処理フローにおいて、操作者３は、クライアントアプリケーション２０の画面全体画像から所期の操作対象オブジェクトを認識する。例えば、図４に示されるスケジュール表示画面２１が表示され、操作者３が当該スケジュール表示画面２１上において、左下の「旅費清算システム」のボタンを発見する。
【０１４１】
ここで、操作者３は、画面画像記録指示部３１１の操作を行わず、操作画面上でマウスを操作する。
【０１４２】
ステップＳ４４では、操作者３が上記スケジュール表示画面２１の「旅費清算システム」ボタン上へマウスを移動させ、クリック操作を行う。
【０１４３】
ステップＳ４５では、イベント検出部３０８が、上記マウスのクリック操作をイベントとして検出し、イベント記録部３０９が、マウスの位置を示す座標情報と、イベントの種別情報（この例ではクリック）を、イベントログ３０６として所定の記録領域に記録する。
【０１４４】
ステップ４６では、画面画像記録有無判定部３２１が、上記イベントログ３０６に該当する画面全体画像情報３０７の有無を判定する。ここでは、ステップ４３の処理が実行されていないため、判定結果は「無」となる。
【０１４５】
ステップＳ５１では、画面画像記録無し警告部３２２が、操作者３に対して、画面画像記録指示部３１１の操作をせずにマウス操作を行ったことを示す警告を出力する。
【０１４６】
ステップＳ５２では、画面画像記録有無判定部３２１が、イベント検出部３０８に、イベント無効化指示を送出し、イベント検出部３０８がこの指示を受けて、検出したイベントを破棄する。これにより、オペレーティングシステム（ＯＳ）４０はマウス操作に伴うイベントをクライアントアプリケーション２０に渡さない。
【０１４７】
ステップＳ４９では、操作者３によるクライアントアプリケーション２０の操作が終了したか否かを判断する。操作が終了していない場合は、ステップＳ２１へ戻る。操作が終了していれば、ステップＳ５０へ移行する。
【０１４８】
ステップＳ５０では、シナリオ生成部３０２が、操作対象オブジェクト画像情報３０１とイベントログ３０６の情報を組み合わせて、操作シナリオ１１２を生成する。
【０１４９】
このようにして、画面画像記録指示部３１１の操作を忘れた際に、操作者３に対して警告を発し、しかも、その時に行ったマウス操作やキーボード操作を無効とすることによって、クライアントアプリケーション２０の状態変化を防ぐことができる。これによって、操作者３は、画面画像記録指示部３１１を操作した上で、同じマウス操作やキーボード操作を実行し、正しいシナリオ生成を継続して行うことができる。
【０１５０】
上記した第４実施形態においては、画面画像記録指示部３１１の操作を行わずに（画面全体画像の記録指示操作を行わずに）マウスを操作した場合に、上記指示操作に戻ってシナリオ生成を継続して行う機能構成としている。このようなシナリオ生成を継続して行う他の機能として、シナリオ格納部に格納された操作シナリオ１１２を活用してシナリオ生成を継続することも可能である。この際は、操作シナリオ１１２に従う処理を正常な状態遷移が保たれるところまで実行し、以降に登録されたイベント情報に対応する処理の手前で実行を停止することで、操作シナリオ１１２を活用したシナリオ生成の継続が可能となる。
【０１５１】
次に図２４および図２５を参照して本発明の第５実施形態を説明する。
【０１５２】
上記した第４実施形態では、操作者３が画面画像記録指示部３１１の操作を忘れて、マウスを操作した場合に、操作者３に警告を出し、クライアントアプリケーション２０の状態が遷移しないようにする処理機能を実現していた。第５実施形態では、画面画像記録指示部３１１を操作者が操作するのではなく、シナリオ生成システムが自動的に画面画像記録指示部３１１を操作することによって、シナリオの作成処理をより容易にしている。
【０１５３】
本発明の第５実施形態に係るシナリオ生成システムの構成を図２４に示し、同システムの処理手順を図２５に示している。
【０１５４】
本発明の第５実施形態は、上記した図１７に示す第３実施形態のシステムにおいて、イベント検出部３０８とイベント記録部３０９との間にマウス挙動分析部３２５を設けている。
【０１５５】
上述した第３の実施例の説明において、図１８に示すステップＳ３１の処理で画面画像記録指示部の操作に関して、この操作を行うべき時点は、操作者が操作対象オブジェクトを視認した後の時点で、マウスが操作対象オブジェクト（例：ボタン）に近づき外見が変化する以前でなければならない、という説明をした。
【０１５６】
この第５実施形態においては、上記した画面画像記録指示部３１１の操作を実施すべき時点を、マウス挙動分析部３２５が決定する。
【０１５７】
マウス挙動分析部３２５は、画面画像記録指示部の操作を実施すべき時点、すなわち、画面全体画像を記録する操作を行うタイミングをマウスの動きをもとに自動認識し、画面全体画像の記録指示を操作者に代わって行う。
【０１５８】
マウス挙動分析部３２５は、マウス操作から画面全体画像を記録する操作を行うタイミングを認識して、画面画像記録指示部３１１に画面画像記録指示を送出するとともに、イベント検出部３０８が検出したイベント情報をイベント記録部３０９に送出する。
【０１５９】
操作者３は操作画面上で操作対象オブジェクトを視認すると、その時点で、マウスを操作して操作対象オブジェクトにマウスポインタを移動させようとする。
【０１６０】
イベント検出部３０８は、マウスが移動する度に、マウス移動のイベントをオペレーティングシステム（ＯＳ）４０から検出する。このような機能は、例えば前述のグローバルフックを用いることで実現可能である。
【０１６１】
イベント検出部３０８は、検出したイベント情報をマウス挙動分析部３２５に送出する。このイベント情報には、マウスの移動後の座標位置に関する情報が含まれている。マウス挙動分析部３２５は、マウスの座標位置とイベントの発生時刻から、マウスの移動速度を計算する。マウス挙動分析部３２５は、マウス操作に伴うマウスの移動速度が、あらかじめ決められた値を超えた時点で、画面画像記録指示部３１１に画面画像記録指示を送出する。以降のシステムの動作は、上述した第３実施形態と同様である。
【０１６２】
マウス挙動分析部３２５は、イベント検出部３０８から受け取ったマウス移動イベント情報に含まれる座標位置情報とイベント発生時刻を用いて、マウスの移動速度を計算する。マウスの移動速度は、時刻とともに変化する。例えば図２５に示すように、横軸に時刻、縦軸にマウス移動速度をもつグラフにプロットした場合、マウスの移動速度が、設定した閾値（ＴＨ）を超えた時点（ＴＤ１）で、マウスの初動操作（マウス移動開始タイミング）を検出し、このマウス移動開始タイミングの検出時において、画面画像記録指示部３１１に、画面画像記録指示を送出する。
【０１６３】
マウス挙動分析部３２５は、上記マウス移動開始タイミングを検出した後、次に、後述のマウス移動終了タイミングを検出をするまでは、マウス移動開始タイミングを検出しない。
【０１６４】
マウス挙動分析部３２５は、上記マウス移動開始タイミングを検出した後、マウスの移動速度が閾値（ＴＨ）を下回った時点（ＴＤ２）で、マウス移動終了タイミングを検出する。マウス挙動分析部３２５は、マウス移動終了タイミングを検出した後、マウスの移動速度が閾値（ＴＨ）を超えた時点で、次のマウス移動開始タイミングを検出する。
【０１６５】
なお、マウス移動開始タイミング（ＴＤ１）を検出するための閾値と、マウス移動終了タイミング（ＴＤ２）を検出するための閾値は同じ値である必要性はなく、例えば、マウス移動開始タイミング（ＴＤ１）を検出するための閾値をマウス移動停止タイミング（ＴＤ２）を検出するための閾値よりも大きく設定することで、マウス移動開始タイミング（ＴＤ１）とマウス終了タイミング（ＴＤ２）とが頻繁に（不要に）検出されないように調整することができる。また、上記各閾値を固定値とせず、操作者によって変更可能にすることより、より適正タイミングでの画面画像記録指示が可能となる。
【０１６６】
上述したように本発明の実施形態によれば、操作シナリオを作成する際の労力を大幅に低減でき、その結果、負荷試験の作業効率を向上できる。
【０１６７】
例えば本発明の第３実施形態によれば、操作シナリオを作成する際の、画像の範囲が不適切だったときに、操作者が、範囲の調整を行いながらシナリオ生成作業を繰り返す必要を不要にして操作シナリオを作成する際の労力を大幅に低減できる。
【０１６８】
また、本発明の第４実施形態によれば、画面画像記録指示部３１１の操作を忘れた場合であっても、シナリオ生成の手戻りが無くなり、作業効率が向上する。
【０１６９】
また、本発明の第５実施形態によれば、画面画像記録指示部の操作を不要にして、操作者の操作負担を軽減し、作業効率をより向上できる。
【０１７０】
尚、本発明は、適用の用途が負荷試験に限定されるものではない。例えばソフトウェアの開発の過程においては、開発されるソフトウェアがＧＵＩ（Graphical User Interface）機能を持っているときに、所定のＧＵＩ操作を行うことに対するソフトウェアの挙動が適切か否かを検証する、所謂、機能試験が実施される。本発明は、この機能試験を実施する際に、ＧＵＩを人間に代わり操作するツールとしての用途にも適用可能である。また、ＧＵＩを備えたソフトウェアにおいては、バグによる動作異常が発生することがある。しかしながら、動作異常が、所定のＧＵＩ操作を行っても毎回再現するとは限らない。ソフトウェア内部の処理とＧＵＩ操作との微妙のタイミングによって、そのバグが動作異常を引き起こす場合もあり、動作異常を再現させるためには、所定のＧＵＩ操作を多数回繰り返さなければならないこともある。このような、動作異常の再現作業においても、操作者に代わってＧＵＩ操作を繰り返すことを可能とする本発明は有効に機能する。さらに、ＷＷＷサーバが正常に運用されているか否かを定期的に監視するために、遠隔にあるＷＷＷブラウザを操作して、前記ＷＷＷサーバをアクセスし、その結果を検証することによって、監視を実現する用途においても、ＷＷＷブラウザがもつＧＵＩを操作者に代わって定期的に自動的操作する必要性があり、この場合においても本発明は有効に機能する。同様に、遠隔のＷＷＷサーバから、ＷＷＷブラウザでアクセスを行い、情報を収集する作業を定期的に繰り返したい場合においても、ＷＷＷブラウザがもつＧＵＩを操作者に代わって定期的に自動的操作する必要性があり、この場合においても本発明は有効に機能する。上記した事例以外にも、ＧＵＩを持ったアプリケーションを、操作者に代わって操作する必要性がある全ての場合において、本発明を有効に活用できる可能性がある。
【図面の簡単な説明】
【０１７１】
【図１】本発明の第１実施形態に係る、負荷試験を行うシステム全体の構成を示すブロック図。
【図２】上記実施形態に係る負荷発生システムの構成を示すブロック図。
【図３】上記実施形態に係る対象オブジェクト特定部の構成を示すブロック図。
【図４】上記実施形態に係る、クライアントアプリケーションが画面に表示している画像情報の具体例を示す図。
【図５】上記実施形態に係るスケジュール表示画面の階層例を示す図。
【図６】上記実施形態に係るスケジュール表示画面の座標軸を示す図。
【図７】上記実施形態に係る操作シナリオの一部記述例を示す図。
【図８】上記実施形態に係る画面遷移判定画像の具体例を示す図。
【図９】上記実施形態に係る操作対象オブジェクト画像の具体例を示す図。
【図１０】上記実施形態に係る操作対象オブジェクト画像の具体例を示す図。
【図１１】上記実施形態に係る操作対象オブジェクト画像の具体例を示す図。
【図１２】本発明の第２、第３、第４、第５実施形態に係る、シナリオを作成するシステム全体の構成を示すブロック図。
【図１３】上記第２実施形態に係るシナリオ生成システムの構成を示すブロック図。
【図１４】上記第２実施形態に係る処理の手順を示すフローチャート。
【図１５】上記第２実施形態に係る処理の特徴を説明するための図。
【図１６】上記第２実施形態に係る処理の特徴を説明するための図。
【図１７】本発明の第３実施形態に係る、シナリオを作成するシステム全体の構成を示すブロック図。
【図１８】上記第３実施形態に係る処理の手順を示すフローチャート。
【図１９】上記第３実施形態に係るシナリオ生成システムの操作対象オブジェクト画像抽出処理動作を説明するための図。
【図２０】上記第３実施形態に係るシナリオ生成システムの操作対象オブジェクト画像抽出処理動作を説明するための図。
【図２１】上記第３実施形態に係るシナリオ生成システムの操作対象オブジェクト画像抽出処理動作を説明するための図。
【図２２】本発明の第４実施形態に係る、シナリオを作成するシステム全体の構成を示すブロック図。
【図２３】上記第４実施形態に係る処理の手順を示すフローチャート。
【図２４】本発明の第５実施形態に係る、シナリオを作成するシステム全体の構成を示すブロック図。
【図２５】上記第５実施形態に係るマウス挙動分析部の処理動作を説明するための図。
【符号の説明】
【０１７２】
１…情報端末（ＰＣ）、２…サーバ、３…操作者、１０…負荷発生システム、１１制御部、１２…画面遷移判定部、１３…対象オブジェクト特定部、１４…操作イベント発生部、１５…画像情報取得部、２０…クライアントアプリケーション、３０…シナリオ生成システム、４０…オペレーティングシステム（ＯＳ）、１１１…操作実行制御部、１１２…操作シナリオ、１３１…対象オブジェクト特定制御部、１３２…対象オブジェクト判定部、１３３…画像比較部、１３４…相対位置関係分析部、３０２…シナリオ生成部、３０３…操作対象オブジェクト範囲抽出部、３０４…形状・サイズ変化部、３０５…マッチング判定部、３０８…イベント検出部、３０９…イベント記録部、３１０…画面画像記録部、３１１…画面画像記録指示部、３２１…画面画像記録有無判定部、３２２…画面画像記録無し警告部、３２５…マウス挙動分析部。
【図１】
0004381436.tif 000002
【図２】
0004381436.tif 000003
【図３】
0004381436.tif 000004
【図４】
0004381436.tif 000005
【図５】
0004381436.tif 000006
【図６】
0004381436.tif 000007
【図７】
0004381436.tif 000008
【図８】
0004381436.tif 000009
【図９】
0004381436.tif 000010
【図１０】
0004381436.tif 000011
【図１１】
0004381436.tif 000012
【図１２】
0004381436.tif 000013
【図１３】
0004381436.tif 000014
【図１４】
0004381436.tif 000015
【図１５】
0004381436.tif 000016
【図１６】
0004381436.tif 000017
【図１７】
0004381436.tif 000018
【図１８】
0004381436.tif 000019
【図１９】
0004381436.tif 000020
【図２０】
0004381436.tif 000021
【図２１】
0004381436.tif 000022
【図２２】
0004381436.tif 000023
【図２３】
0004381436.tif 000024
【図２４】
0004381436.tif 000025
【図２５】
0004381436.tif 000026