以下図面を参照して本発明の実施形態を説明する。
先ず図1乃至図11を参照して本発明の第1実施形態を説明する。
図1は、負荷試験を行うシステム全体の構成を示すブロック図であり、負荷を発生するクライアント側の複数の情報端末(PC)1,1,…と、負荷試験の対象となるサーバ2とにより構成される。クライアント側の複数の情報端末(PC)1,1,…には、それぞれサーバ2に対して処理要求を行う負荷発生システム10およびクライアントアプリケーション20を単位負荷発生源とする負荷発生手段が設けられる。
負荷試験においては、クライアント側の複数の情報端末(PC)1,1,…に設けられた負荷発生手段から、サーバ2に対し、多量の処理要求を加えることによって、サーバ2の負荷時におけるリソース(CPU等)利用率や、処理要求に対するレスポンスタイム等を測定する。
上記図1に示す負荷発生システム10の構成を図2に示す。
負荷発生システム10は、クライアントアプリケーション20に対して、人間が操作するのと同等に、マウスイベントやキーボードイベントを発生させることによって、画面操作を行う。これによって、クライアントアプリケーション20は、負荷発生システム10に対して処理要求を発行する。
負荷発生システム10は、図2に示すように、制御部11と、画面遷移判定部12と、対象オブジェクト特定部13と、操作イベント発生部14と、画像情報取得部15とを具備する。
図2に示す負荷発生システム10において、制御部11は、操作実行制御部111と、シナリオ格納部に格納された操作シナリオ112とを具備する。
制御部11に設けられた操作実行制御部111は、操作シナリオ112の記述内容に従い、画面遷移判定部12、対象オブジェクト特定部13、および操作イベント発生部14を制御する。操作シナリオ112は、画面上の操作により負荷発生システム10に実行させる一連の画面操作の内容を定義したものである。
制御部11に設けられた操作実行制御部111は、画面遷移判定部12に対して画面遷移判定要求213を発行し、画面遷移判定部12から画面遷移判定応答221を受け付ける機能と、対象オブジェクト特定部13に対して操作対象オブジェクト特定要求211を発行し、対象オブジェクト特定部13から操作対象オブジェクト特定応答222を受け付ける機能と、操作イベント発生部14に対してイベント発生要求212を発行し、操作イベント発生部14からイベント発生応答223を受け付ける機能を具備する。
画面遷移判定部12は、操作実行制御部111から受けた画面遷移判定要求213に従い画像情報取得部15に対して画面情報取得要求215を発行し、画像情報取得部15から画像情報取得応答225を受け付けて、画面遷移判定応答221を操作実行制御部111に送出する機能を具備する。
対象オブジェクト特定部13は、操作実行制御部111から受けた操作対象オブジェクト特定要求211に従い画像情報取得部15に対して画面情報取得要求216を発行し、画像情報取得部15から画像情報取得応答226を受け付けて、操作対象オブジェクト特定応答222を操作実行制御部111に送出する機能を具備する。
操作イベント発生部14は、操作実行制御部111から受けたイベント発生要求212に従いクライアントアプリケーション20に対してイベント201を発行し、イベント発生応答223を操作実行制御部111に送出する機能を具備する。クライアントアプリケーション20は操作イベント発生部14から受けたイベント201に従う処理要求202をサーバ2に送出する。
画像情報取得部15は、画面遷移判定部12から受けた画面情報取得要求215に従いクライアントアプリケーション20から画像情報203を取得し、画像情報取得応答225を画面遷移判定部12に送出する機能と、対象オブジェクト特定部13から受けた画面情報取得要求216に従いクライアントアプリケーション20から画像情報203を取得し、画像情報取得応答226を対象オブジェクト特定部13に送出する機能とを具備する。
なお、操作対象オブジェクト特定要求211、画面遷移判定要求213、画像情報取得応答225,226には、それぞれクライアントアプリケーション20の操作画面に含まれるビットマップイメージ(拡張子bmpのファイル)の画像情報が付随する。ただし、ビットマップイメージには限定されず、他の形式のイメージファイルであっても構わない。
上記図2に示す対象オブジェクト特定部13の構成を図3に示す。
対象オブジェクト特定部13は、図3に示すように、対象オブジェクト特定制御部131と、画像比較部133とを具備する。
対象オブジェクト特定制御部131は、操作実行制御部111から受けた操作対象オブジェクト特定要求211に従い、当該要求211に付随するビットマップイメージの画像情報を画像比較部133に送出するとともに、画面情報取得要求216を画像情報取得部15に送出して、画像情報取得部15から画像情報取得応答226に付随するビットマップイメージの画像情報を取得し、上記各画像情報を画像比較部133に供給する処理機能を実現する。
画像比較部133は、クライアントアプリケーション20の操作画面の画面情報の中から、上記操作対象オブジェクト特定要求211が指定したビットマップイメージと合致する部分を探索する。探索の結果、合致する部分が見つかった場合には、対象オブジェクト特定制御部131に探索結果通知を送出する。探索結果通知には、画面情報内での上記ビットマップイメージと合致した部分の座標情報を含む。なお、ここで言う「合致」は、ビットマップイメージを構成する全てのピクセルが完全に一致することであってもよいし、完全ではないが指定された基準以上に一致することであってもよい。例えば、予め指定された値以上の割合で、ピクセルの色の情報が一致していることを条件に「合致」を定義してもよい。
ここで、クライアントアプリケーション20に於ける操作画面の具体例を挙げて、上記負荷発生システム10の動作について、図4乃至図11を参照して説明する。ここでは、クライアントアプリケーション20が扱うアプリケーション操作ウィンドウとして、図4に示すスケジュール表示画面を例に動作を説明する。
負荷発生システム10の制御部11に設けられた操作実行制御部111は、操作シナリオ112の定義内容に従い、負荷発生システム10内部に設けられた画面遷移判定部12、対象オブジェクト特定部13、操作イベント発生部14、および画像情報取得部15等の各構成要素を制御する。
制御部11の下で操作実行制御部111は、操作シナリオ112に記述(定義)されている内容に従い、対象オブジェクト特定部13に対して操作対象オブジェクト特定要求211を送出し、操作イベント発生部14に対してイベント発生要求212を送出し、画面遷移判定部12に対して画面遷移判定要求213を送出する。
画面遷移判定部12および対象オブジェクト特定部13はそれぞれ操作実行制御部111の制御の下に画像情報取得部15に画面情報取得要求215,216を送出する。すなわち画面遷移判定部12は、操作実行制御部111から画面遷移判定要求213を受けると、画像情報取得部15に対して画面情報取得要求215を送出する。対象オブジェクト特定部13は、操作実行制御部111から操作対象オブジェクト特定要求211を受けると、画像情報取得部15に対して画面情報取得要求216を送出する。
画像情報取得部15は画面遷移判定部12から画面情報取得要求215を受けると、オペレーティングシステム(OS)40を介してクライアントアプリケーション20が画面に表示している画像情報203を取得し、取得した画像を含む画像情報取得応答225を画面遷移判定部12に送出する。同様に対象オブジェクト特定部13から画面情報取得要求216を受けると、クライアントアプリケーション20が画面に表示している画像情報203を取得し、取得した画像を含む画像情報取得応答226を対象オブジェクト特定部13に送出する。
この際のクライアントアプリケーション20が画面に表示している画像情報(アプリケーション操作ウィンドウ)203の具体例を図4に示している。ここでは、スケジュール管理システムに於けるスケジュール表示画面21を例に示している。以降の動作説明においては、この図4に示すスケジュール表示画面21の画像情報が画像情報取得部15により画像情報203として取得され、当該スケジュール表示画面21の画像情報が画面遷移判定部12、および対象オブジェクト特定部13に送出されるものとする。
図4に示すスケジュール表示画面21において、ボタン「旅費清算システム」をクリックすると、図5に示す旅費清算システムの画面22に遷移する。さらに、この旅費清算システムの画面22上で、「一括請求」ボタンをクリックすると、さらに次の画面に遷移する。
この一連の画面遷移に応じた操作を負荷発生システム10によって実現する手順を以下に説明する。
上記図4に示すスケジュール表示画面21の座標軸を図6に示している。ここでは、XGA(1024×768ピクセル)のアプリケーション操作ウィンドウを例に示している。
上記操作シナリオ112の一部記述例を図7に示している。この操作シナリオ112は、図7に示すように、操作ステップと、画面識別情報(画面ID)と、ビットマップイメージの画面遷移判定画像および操作対象オブジェクト画像と、判定/操作内容と、数値情報とを設定項目(定義項目)として構成される。
クライアントアプリケーション20は、画面遷移の中で、図4に示すスケジュール表示画面21を表示しようとしている状態とする。
操作実行制御部111は、操作シナリオ112のステップ20を読み取る。このステップ20には、[判定/操作内容]として「画面遷移判定」が設定(定義)されている。従って、次に行うことは、画面遷移の判定であることが決定される。また、[画面遷移判定画像]として、ファイル名「1.bmp」が設定されている。その内容(ビットマップイメージ)を図8に示している。操作実行制御部111は、この図8に示す画面遷移判定画像の情報(ビットマップイメージ)を含む画面遷移判定要求213を画面遷移判定部12に送出する。
画面遷移判定部12は、操作実行制御部111から画面遷移判定要求213を受けると、画像情報取得部15に対して画面情報取得要求215を送出する。
画像情報取得部15は、画面遷移判定部12から画面情報取得要求215を受けると、クライアントアプリケーション20が表示している画像情報(ビットマップイメージ)203を取得し、当該画像情報203を含む画像情報取得応答225を画面遷移判定部12に送出する。
画面遷移判定部12は、画像情報取得部15を介してクライアントアプリケーション20から取得した画像情報203の中に、「1.bmp」の画像と合致する部分があるか否かを検査する。この際の「1.bmp」の内容(ビットマップイメージ)は上記した図8に示す画面遷移判定画像の情報(ビットマップイメージ)である。
なお、この検査において、例えば画面遷移が完了していないために、合致する部分が存在しなかった場合、画面遷移判定部12は、画像情報取得部15に対して、画面情報取得要求215を送出する動作から、上記同様の処理を適当な頻度で繰り返し実行する。
画面遷移が完了し、合致する部分が見つかった場合、画面遷移判定部12は、操作実行制御部111に対して画面遷移判定応答221を送出する。
操作実行制御部111は、操作シナリオ112の次のステップであるステップ21を読み取る。このステップ21には、[判定/操作内容]として「クリック」が設定されている。従って、次に行うことは、クリックであることが決定される。また、[操作対象オブジェクト画像]としてファイル名「2.bmp」が設定されている。この「2.bmp」のビットマップイメージを図9に示す。
操作実行制御部111は、上記した操作シナリオ112の内容に従い、対象オブジェクト特定部13に対して操作対象オブジェクト特定要求211を送出する。この操作対象オブジェクト特定要求211には、上記した図9に示す操作対象オブジェクト画像(ビットマップイメージ)が付随している。
対象オブジェクト特定部13において、対象オブジェクト特定制御部131は、操作実行制御部111から操作対象オブジェクト特定要求211を受けると、画像情報取得部15に画面情報取得要求216を送出する。
画像情報取得部15は、対象オブジェクト特定部13に設けられた対象オブジェクト特定制御部131から画面情報取得要求216を受けると、クライアントアプリケーション20が表示している画像情報203を取得し、当該取得した画像情報203を対象オブジェクト特定部13に設けられた画像比較部133に送出する。今回のケースでは、画像情報203として図4に示すスケジュール表示画面21が画像比較部133に送出される。
画像比較部133は、画像情報取得部15を介してクライアントアプリケーション20から取得した画像情報203の中から、操作対象オブジェクト画像としてファイル名「2.bmp」で表される画像(ビットマップイメージ)112と一致する部分を検索する。
画像比較部133は、上記検索の結果として、[中心X座標]、[中心Y座標]を対象オブジェクト特定制御部131に応答し、対象オブジェクト特定制御部131は、操作実行制御部111に、操作対象オブジェクト特定応答222を送付する。
操作実行制御部111は、対象オブジェクト特定制御部131から受けた操作対象オブジェクト特定応答222に付随した操作対象オブジェクトの中心X座標、中心Y座標の情報と、操作/判定内容として「クリック」の情報をイベント発生要求212に付随させ、当該イベント発生要求212を操作イベント発生部14に送出する。
操作イベント発生部14は、操作実行制御部111から受けたイベント発生要求212に従い、操作対象オブジェクトの中心X座標、中心Y座標にマウスが移動したのと同等のイベント201を発生する。さらに、マウスクリックのイベント201を発生する。その後、イベント発生応答223を操作実行制御部111に送出する。
このようにして、クライアントアプリケーション20の画面が操作されるような適切な操作イベントを発生させることができる。
次に、操作実行制御部111は、操作シナリオ112の次のステップであるステップ22を読み取る。このステップ22には、[判定/操作内容]として「画面遷移判定」が設定されている。
ここでは、上記ステップ20で実行したのと同様に、ステップ22の処理が実行される。このステップ22における「3.bmp」の内容(ビットマップイメージ)を図10に符号113を付して示している。
操作実行制御部111は、操作シナリオ112の次のステップであるステップ23を読み取る。
ここでは、上記ステップ21で実行したのと同様に、ステップ23の処理が実行される。
このステップ23における「4.bmp」の内容(ビットマップイメージ)を図11に符号114を付して示している。
このようにしてクライアントアプリケーション20の画面に対して適切な操作イベントを発生させることができる。
上記した操作シナリオ112に従う処理動作によって、負荷発生システム10から、クライアントアプリケーション20に対して、画面遷移に応じ、順次、適正なイベントを発生させることができ、これに伴いクライアントアプリケーション20からサーバ2に処理要求を送出して、サーバ2に所望の負荷をかける負荷試験が可能となる。
次に図12乃至図16を参照して本発明の第2実施形態を説明する。この第2実施形態は、画面遷移を伴うアプリケーションプログラムを対象に、上記第1実施形態で用いた操作シナリオ112を作成するシステムを実現している。
本発明の第2実施形態は、操作画面の表示を伴うアプリケーションプログラムを対象に、上記操作画面内の操作対象となるオブジェクトに対して操作イベントを発生する手順を記述した操作シナリオを生成するシナリオ生成システムであって、上記操作画面上の操作に伴い発生するイベントを採取し記録するイベント取得手段と、上記操作画面の全体画像、および上記操作画面上における指定部位の抽出画像を採取し記録する画像取得手段と、上記イベント取得手段が取得したイベント、および上記画像取得手段が取得した画像をもとに上記操作シナリオを生成するシナリオ生成手段とを具備して構成される。上記イベント取得手段は、後述する図13に示すイベント検出部308およびイベント記録部309と、イベント記録部309が記録したイベントログ306とにより実現される。上記画像取得手段は、後述する図13に示す画面画像記録指示部311および画面画像記録部310と、画面画像記録部310が記録した画面全体画像情報と、操作対象オブジェクト範囲抽出部303とにより実現される。上記シナリオ生成手段は、後述する図13に示すシナリオ生成部302により実現される。
本発明の第2、第3、第4、第5実施形態に係るシナリオを作成するシステム全体の構成を図12に示す。この図12に示すシステムは、シナリオ生成システム30を主構成要素として実現される。シナリオ生成システム30は、サーバ2に処理要求を送出するクライアントアプリケーション20に対して、操作者3の操作指示に伴い、オペレーティングシステム(OS)40を介して発生する各種の操作イベントをクライアントアプリケーション20の画像情報とともに取り込み、操作シナリオ112を作成する機能を実現している。
このシナリオ生成システム30の構成を図13に示す。
図13に示すシナリオ生成システム30は、シナリオ生成部302、操作対象オブジェクト範囲抽出部303、イベント検出部308、イベント記録部309、画面画像記録部310、画面画像記録指示部311等を有して構成される。
画面画像記録指示部311は、クライアントアプリケーション20が画面に表示している画像を取り込む際に操作者3によって操作されるもので、例えばキーボード上の「PrintScreen」キー等により実現される。
画面画像記録部310は、画面画像記録指示部311の操作に従い、クライアントアプリケーション20が画面に表示している画像情報(画面全体画像情報)307を取り込み、記録する。例えば図4に示すスケジュール表示画面21の全画像(ビットマップイメージ)を画面全体画像情報307として所定の記録領域に記録する。なお、ここで言う「画面全体画像」は、あくまで操作対象範囲にある全体画像であって、マウス操作が行われるであろう位置が含まれる操作対象範囲内の画像であればよく、例えばアクティブになっているウィンドウの画像である場合も含む。
イベント検出部308は、操作者3によるマウスのクリック操作、キー操作等、各種の操作指示に伴い、オペレーティングシステム(OS)40を介して発生する操作イベントの情報を検出する。このイベント情報には、操作者3が操作する操作画面上における操作の位置を示す座標情報が含まれる。
イベント記録部309は、イベント検出部308が検出したマウスのクリック操作、キー操作等により発生する各種のイベント情報をイベントログ306として記録する。
操作対象オブジェクト範囲抽出部303は、画面全体画像情報307からイベントログ306に従う操作対象オブジェクト範囲の画像情報(ビットマップイメージ)を操作対象オブジェクト画像情報301として抽出する。
シナリオ生成部302は、操作対象オブジェクト画像情報301とイベントログ306とをもとに操作シナリオを生成する。ここでは、クライアントアプリケーション20を操作対象とした操作シナリオ112を作成する。
本発明の第2実施形態におけるシナリオ生成システム30を主構成要素としたシステムの処理手順を図14に示し、当該処理により生成される操作シナリオの内容例を図7に示し、当該操作シナリオに設定された操作対象オブジェクト画像情報の一例を図9乃至図11に示している。また、操作画面上におけるマウスカーソルの操作に伴う操作対象オブジェクト画像の状態遷移の一例を図15および図16に示している。
ここで上記図12乃至図16を参照して本発明の第2実施形態における操作シナリオ112の作成処理動作を説明する。
シナリオ作成者となる操作者3は、まず操作対象となるクライアントアプリケーション20を起動する。そして、シナリオ生成システム30の動作を開始させる。
操作者3は、オペレーティングシステム(OS)40を介し、クライアントアプリケーション20に、マウスの移動、マウスのクリック、キーボード入力等の各種イベントを送出することによって、クライアントアプリケーション20を操作する。
シナリオ生成システム30は、上記各種イベントの情報や、クライアントアプリケーション20の画像情報をオペレーティングシステム(OS)40から取得することによって、操作シナリオ112を生成する。
以下に図14に示す処理手順と図7に示す操作シナリオの内容例と図9乃至図11に示す操作対象オブジェクト画像の一例を参照して、図12および図13に示す本発明の第2実施形態におけるシナリオ生成システム30を主構成要素としたシステムの具体的な処理動作を説明する。
図14に示す処理フローにおいて、ステップS21では、操作者3が、クライアントアプリケーション20の画面に画像から所期の操作対象オブジェクトを認識して、画面画像記録指示部311を操作する。例えば、図4に示されるスケジュール表示画面21が表示され、操作者3が当該スケジュール表示画面21上において、左下の「旅費清算システム」のボタンを発見したとき、キーボード上の「PrintScreen」キー等のボタンを押下する。
ステップS22では、画面画像記録指示部311の操作に従い、画面画像記録指示部311が画面画像記録部310に対して画面全体画像情報の記録を指示する。
ステップS23では、画面画像記録部310が、画面画像記録指示部311からの指示に従い、クライアントアプリケーション20が画面に表示している図4に示すスケジュール表示画面21を画面全体画像情報307として所定の記録領域に記録する。
ステップS24では、操作者3が上記スケジュール表示画面21の「旅費清算システム」ボタン上へマウスを移動させ、クリック操作を行う。
ステップS25では、イベント記録部309が、上記マウスのクリック操作をイベントとして検出し、マウスの位置を示す座標情報と、イベントの種別情報(この例ではクリック)を、イベントログ306として所定の記録領域に記録する。
ステップS26では、操作対象オブジェクト範囲抽出部303が、画面全体画像情報307の中から、上記イベントログ306に記録した座標情報を中心とした、既定の形状とサイズによって決まるエリアに含まれる部分を、マッチング範囲として抽出し、操作対象オブジェクト画像情報301として所定の記録領域に記録する。
ステップS27では、操作者3によるクライアントアプリケーション20の操作が終了したか否かを判断する。操作が終了していない場合は、ステップS21へ戻る。操作が終了していれば、ステップS28へ移行する。
ステップS28では、シナリオ生成部302が、操作対象オブジェクト画像情報301とイベントログ306の情報を組み合わせて、操作シナリオ112を生成する。
この操作シナリオ112の一例を図7に示している。この操作シナリオ112は、操作ステップと、画面識別情報(画面ID)と、ビットマップイメージの画面遷移判定画像および操作対象オブジェクト画像と、判定/操作内容と、数値情報とを設定項目として構成される。
上記図7に示す操作シナリオ112において、操作対象オブジェクト画像の設定項目には、操作対象オブジェクト画像を適当な画像ファイル形式として保存したファイルのファイル名が設定される。この例では、ビットマップのイメージ形式ファイルを表す「.bmp」が設定されている。
上記図7に示す操作シナリオ112の[操作対象オブジェクト画像]に設定された操作対象オブジェクト画像ファイル(2.bmp)の内容を図9に示している。この例ではスケジュール表示画面21から抽出された「旅費清算システム」が操作対象オブジェクト画像として操作シナリオ112に登録される。
なお、上記したステップS24の処理において、マウスをクリックする直前に、マウスがボタンの上へ到達した時点で、ボタンの外見(形状、色、等)が変化することがある。例えば図15に示すようにマウスカーソル(MC)がボタン設定エリア(BA1)に到達しない(BA1の外に位置している)状態から、図16に示すようにマウスカーソル(MC)がボタン設定エリア(BA1)に到達した(BA1内に位置した)とき、ボタンの外郭(非明示/明示)、色(例えば非反転/反転)、明度(暗/明)等が変化する。実際に、汎用OS上の多くのアプリケーションソフトウェアは、メニュ−の上にマウスを移動させただけで、外見(形状、色、等)が変化する。
したがって、上記ステップS24の時点でマウスのクリックが発生したときに、画面の画像情報を取得したのでは、変化した後の画像しか得られない。しかしながら、シナリオを実行する際には、まだマウスが操作対象となるボタンよりも離れた位置に有る状態においてボタンの画像を画面全体の画像の中から検出しなければならず、その時点では、まだボタンの画像は変化していない。つまり、画面全体画像を取得すべき時点とは、操作者3が操作対象オブジェクト(例:ボタン)を視認した後の時点でなければならず、かつ、マウスが操作対象オブジェクトに近づく以前であって、操作対象オブジェクトの外見が変化する以前の時点でなければならない。したがって、上記ステップS21の段階で、画面画像記録指示部を操作する必要がある。
上記したような画面全体の画像の取得処理機能をもつことで、実行可能な操作シナリオによる負荷試験システムを構築することができる。
次に上記第2実施形態をベースにした本発明の第3実施形態を図17乃至図21を参照して説明する。
本発明の第3実施形態に係るシナリオ生成システムの構成を図17に示し、同システムの処理手順を図18に示している。
上記した第2実施形態においては、操作対象オブジェクト範囲抽出部303が、画面全体画像情報307の中から、上記イベントログ306に記録した座標情報を中心とした、既定の形状とサイズによって決まるエリアに含まれる部分を、マッチング範囲として抽出し、操作対象オブジェクト画像情報301として所定の記録領域に記録していた(図14ステップS26)。
これに対して、この第3実施形態は、操作対象オブジェクト範囲抽出部303により抽出された操作対象オブジェクト画像情報301が一意に決定(特定)できない抽出範囲にある際に、抽出範囲を変更させて、一意に決定できる操作対象オブジェクト画像情報301を得る処理ルーチン(フィードバックルーチン)を備えている。
本発明の第3実施形態は、上記した第2実施形態のシステムにおいて、上記抽出画像が上記操作画面内の操作対象となるオブジェクトを特定できない抽出範囲の画像であるとき、上記抽出画像の抽出範囲を変更する処理手段をさらに具備して構成される。上記抽出画像の抽出範囲を変更する処理手段は、図17に示す操作対象オブジェクト画像情報301→マッチング判定部305→形状・サイズ変化部304→操作対象オブジェクト範囲抽出部303のフィードバックループにより実現される。
マッチング判定部305は、画面全体画像情報307の中で操作対象オブジェクト画像情報301を一意に決定できるか否かを判定する。ここで、一意に決定できるというのは、画面全体画像情報307の中で、操作対象オブジェクト画像情報301と合致する部分が、唯一であるという意味である。例えば図4に示すスケジュール表示画面21において、操作対象オブジェクトとして抽出した画像が、文字イメージの一部が欠落した「精算システム」であったとすると、この操作対象オブジェクトとして抽出した画像は、「旅費精算システム」であるか「経費精算システム」であるか一意に特定でない。この文字イメージの欠落部分を補うことによって、操作対象オブジェクトを一意に特定することができる。
一意に決定(特定)できると判定したときは、操作対象オブジェクト範囲抽出部303が抽出した操作対象オブジェクト画像情報301をシナリオ生成用画像とする旨をシナリオ生成部302に通知する。一意に決定できないと判定したときは、その旨を形状・サイズ変化部304に通知する。
形状・サイズ変化部304は、マッチング判定部305が、画面全体画像情報307の中で操作対象オブジェクト画像情報301を一意に決定できないと判定したとき、操作対象オブジェクト範囲抽出部303に対して抽出範囲の変更を指示する。例えば前回の抽出範囲に対して、横方向のサイズ若しくは縦方向のサイズ若しくは縦・横サイズを所定のピクセル単位で拡大するや抽出範囲の変更を指示する。
図17に示すシナリオ生成システム30において生成した操作シナリオ112に示されている操作対象オブジェクト画像が、図19に示すような文字イメージの一部(ここでは前後)が欠落した画像であると、図4に示すスケジュール表示画面21との比較において、操作対象オブジェクト画像(マウスのクリックを行うべき画像)を一意に決定できない。スケジュール表示画面21には、上述したように、「旅費清算システム」と「経費清算システム」の両ボタンが存在することから、「旅費清算システム」と「経費清算システム」の両ボタンの画像がマッチしてしまい、スケジュール表示画面21から操作対象オブジェクト画像を一意に決定できない。
ここで、上述した第1実施形態の処理技術を用いて、複数の画像情報の相対位置関係を利用する方法もあるが、ここでは、シナリオ生成システム30がシステム内の処理で上記問題を解消し、スケジュール表示画面21との比較において一意に決定できる操作対象オブジェクト画像を生成している。この第3実施形態では、図19に示すシナリオ生成システム30において、操作対象オブジェクト画像情報301→マッチング判定部305→形状・サイズ変化部304→操作対象オブジェクト範囲抽出部303のフィードバックループを有する。このフィードバックルーチンにおいて、形状・サイズ変化部304、およびマッチング判定部305により、操作対象オブジェクト画像を一意に特定できるように調整する機能を実現している。
この第3実施形態の処理動作を図18に示す処理フローに従い説明する。
図18に示すステップS31乃至ステップS36の処理は、上述した図14に示す処理フローのステップS21乃至ステップS26の処理と同様であることから、ここでは上記ステップS31乃至ステップS36における処理動作の説明を省略する。
図18に示すステップS37において、マッチング判定部305は、画面全体画像情報307の中で操作対象オブジェクト画像情報301を一意に決定できるか否かを判定する。例えばスケジュール表示画面21の中で、操作対象オブジェクト画像情報301となる「旅費清算システム」が一意に決定できるか否かを判定する。ここで、一意に決定できると判定した場合(Yes)は、ステップS40の処理に移行する。また、一意に決定できないと判定した場合(No)は、ステップS38の処理に移行する。また、一意に決定できないと判定した回数が設定した試行回数を超過した場合(Noかつ試行回数超過)は、ステップS39の予め設定した例外処理に移行する。
ステップS38の処理において、形状・サイズ変化部304は、マッチング判定部305が、画面全体画像情報307の中で操作対象オブジェクト画像情報301を一意に決定できないと判定したとき、操作対象オブジェクト範囲抽出部303に対して抽出範囲の変更を指示する。例えば前回の抽出範囲に対して、横方向のサイズ若しくは縦方向のサイズ若しくは縦・横サイズを所定のピクセル単位で拡大するや抽出範囲の変更を指示する。たとえば、X軸方向(横方向)は固定のままで、Y軸方向(縦方向)の画像範囲を拡大させる形で変化させることが可能である。この変化のさせ方を、画像範囲をX軸、Y軸の数値情報(例えばピクセル数情報)で表現し、当該情報を操作対象オブジェクト範囲抽出部303に送出する。その後、ステップS36に戻って、操作対象オブジェクト範囲抽出部303が、再度、操作対象オブジェクト画像情報301を抽出する。その結果のスケジュール表示画面21から切り出された操作対象オブジェクト画像情報の一例を図20に示す。
この操作対象オブジェクト範囲抽出部303によって再度抽出された操作対象オブジェクト画像情報301について、マッチング判定部305は、ステップS37において、当該操作対象オブジェクト画像情報301を画面全体画像情報307の中で一意に決定できるか否かを再度判定する。
ここでは図20に示す操作対象オブジェクト画像情報を評価する。今度は、図4に示すスケジュール表示画面21において「旅費清算システム」を中心とした画像であることが一意に決定される。したがって、判定結果はYesとなり、次のステップS40に移行する。
上記ステップS38の処理における他の画像切り出し範囲の例を図21に示す。この図21に示す例では、操作対象オブジェクト画像を切り出す範囲を、X軸方向のみ拡大させている。この場合も、切り出し範囲を変化させた結果、一意に操作対象を特定できるようになる。
上記したステップS38における形状・サイズの変化の方法は、上記したように、X軸方向に左右対称に拡大し、Y軸方向に上下対象に拡大するだけでなく、左右、上下非対称に拡大することも可能である。また一度に拡大する幅も種々変化可能である。さらに、操作対象オブジェクト画像範囲の形状を四角形から円形に変える等、切り出し形状を変化させることも可能である。
上記したような操作対象オブジェクト画像の取得処理機能をもつことで、操作シナリオの作成作業を省力化でき、信頼性の高い操作シナリオを生成することができる。
次に図22および図23を参照して本発明の第4実施形態を説明する。
上記した第2、第3実施形態において、操作者3が画面画像記録指示部311の操作を行わずにマウス操作やキーボード操作を行った場合、後の操作対象オブジェクトの抽出に必要とされる画面全体画像が取得されない状態で、マウス操作やキーボード操作に従う入力処理が実行されてしまうことから、以後のシナリオ生成に支障が生じる。操作者3が画面画像記録指示部311の操作を行わずにマウス操作やキーボード操作を行った場合、シナリオ生成システムは、適切な画面全体画像を記録しない状態で、操作対象となるクライアントアプリケーション20が、マウス操作やキーボード操作によって、画面遷移するなどの状態変化を起こしてしまう。
この場合、操作者3が後で、画面画像記録指示部311の操作を忘れたことに気付き、再度操作を繰り返して、正しいシナリオの生成をしようとするには、クライアントアプリケーション20も、以前の状態に戻す必要がある。更に、例えば、クライアントアプリケーション20を初期化して、最初から操作し直すなどの煩雑な手順を要する場合もある。
本発明の第4実施形態は、上記したような不具合の発生を抑制して、シナリオ生成の容易化、迅速化を図っている。
本発明の第4実施形態に係るシナリオ生成システムの構成を図22に示し、同システムの処理手順を図23に示している。
本発明の第4実施形態は、上記した第3実施形態のシステムにおいて、操作対象オブジェクト範囲抽出部303に、画面画像記録有無判定部321と、画面画像記録無し警告部322を設け、イベント検出部308とイベント記録部309との間にイベント無効化部312を設けて、操作者3が画面画像記録指示部311の操作を行わずにマウス操作やキーボード操作を行った場合に、操作者3にその旨を報知するとともに、当該操作に伴い発生するイベント情報を無効化し、画面全体画像を取得するための指示操作から操作を再開可能にする機能を実現している。
画面画像記録有無判定部321は、操作者3が画面画像記録指示部311の操作を行わずに操作画面上でマウス操作やキーボード操作を行った操作を判定し、この判定時に、上記操作画面上の操作に伴い発生するイベントを無効化する指示を行う。この指示に従い、イベント無効化部312は、イベント検出部308が検出した、操作画面上の操作に伴い発生するイベントを無効化する。
画面画像記録無し警告部322は、操作者3が画面画像記録指示部311の操作を行わずに操作画面上でマウス操作やキーボード操作を行った旨を上記操作者3に報知する。この報知により操作者3は、操作画面上の画面全体画像を記録すべく画面画像記録指示部311の操作を行う。
図22に示すシナリオ生成システムにおいて、イベント記録部309は、マウスのクリック操作、キー操作等により発生するイベントの情報をイベントログ306として記録する。このときのマウスのクリック操作、キー操作等により発生するイベントは、オペレーティングシステム(OS)40がマウスやキーボードなどの入力デバイスからの入力を検出しアプリケーションに通知する過程でイベント検出部308により検出される。このイベント検出部308は、例えば、既存のOSにより提供されるグローバルフックという手法を用いることにより実現可能である。
このイベント検出部308で検出されたイベント情報が、イベント記録部309にイベントログ306として記録される。
操作対象オブジェクト範囲抽出部303において、画面画像記録有無判定部321は、イベントログ306に対して、該当する画面全体画像情報307が有るか否かを判別する。この際、操作者3が、画面画像記録指示部311を操作し忘れた状態で、マウスのクリックを行った場合、イベントログ306は存在しても、画面全体画像情報307は存在しない。このことは、イベントログ306と画面全体画像307に、各々、その情報を得た時点の時刻情報を付加しておくことによって、処理しようとしているイベントログ306よりも古く、かつ、直前に処理したイベントログ306よりも新しい画面全体画像情報307が有るかどうかを調べることによって判定可能である。
画面画像記録有無判定部321は、画面全体画像情報307が無いと判定した場合、以下のような動きをする。まず、画面画像記録有無判定部321は、イベント検出部308に対して、イベント無効化指示を送出する。これに伴い、イベント検出部308は、検出したイベント情報を破棄する。また、画面画像記録有無判定部321は、操作対象オブジェクト範囲抽出部303の動きを制御し、操作対象オブジェクト画像情報301を生成しないようにする。したがって、画面全体画像情報307が存在しない場合、シナリオ生成部302は、該当するマウスイベントに対するシナリオを生成しない。さらに、画面画像記録有無判定部321は画面画像記録無し警告部322を起動する。これにより画面画像記録無し警告部322は操作者3が画面画像記録指示部311の操作を行わずに操作画面上でマウス操作やキーボード操作を行った旨を操作者3に報知する。例えば、操作者3に対して、ポップアップウィンドウを開いて警告メッセージを表示し、またはビープ音で画面画像記録指示部311の操作忘れを報知する。
また、画面画像記録有無判定部321は、画面全体画像情報307が存在するとき、イベント検出部308に対して、イベント有効化指示を送出する。これによりイベント検出部308は、検出したイベント情報をイベント記録部309に送出し、イベント記録部309はイベント検出部308から受けたイベント情報をイベントログ306として記録する。
さらに画面画像記録有無判定部321は、操作対象オブジェクト範囲抽出部303の動きを制御し、操作対象オブジェクト画像情報301を生成させる。したがって、画面全体画像情報307が存在する場合、シナリオ生成部302は、該当するマウスイベントに対するシナリオを生成する。
本発明の第4実施形態に係るシナリオ生成システムの処理手順を図23に示す処理フローを参照して説明する。この図23に示す第4実施形態の処理フローは、上記した図18に示す第3実施形態の処理フローに、いくつかの処理ステップを追加したものである。
図23に示す処理フローにおいて、ステップS41〜S43は、操作者3が画面画像記録指示部311の操作を忘れた場合、実行されない処理部分である。
操作者3が操作画面上の画面全体画像に対して画面画像記録指示部311の操作を行った場合、ステップS41において、操作者3が、クライアントアプリケーション20の画面全体画像から所期の操作対象オブジェクトを認識して、画面画像記録指示部311を操作する。例えば、図4に示されるスケジュール表示画面21が表示され、操作者3が当該スケジュール表示画面21上において、左下の「旅費清算システム」のボタンを発見したとき、キーボード上の「PrintScreen」キーを押下する。
ステップS42では、画面画像記録指示部311の操作に従い、画面画像記録指示部311が画面画像記録部310に対して画面全体画像情報の記録を指示する。
ステップS43では、画面画像記録部310が、画面画像記録指示部311からの指示に従い、クライアントアプリケーション20が表示している図4に示すスケジュール表示画面21を画面全体画像情報307として所定の記録領域に記録する。
ステップS44では、操作者3が上記スケジュール表示画面21の「旅費清算システム」ボタン上へマウスを移動させ、クリック操作を行う。
ステップS45では、イベント検出部308が、上記マウスのクリック操作をイベントとして検出し、イベント記録部309が、マウスの位置を示す座標情報と、イベントの種別情報(この例ではクリック)を、イベントログ306として所定の記録領域に記録する。
ステップ46では、画面画像記録有無判定部321が、上記イベントログ306に該当する画面全体画像情報307の有無を判定する。ここでの判定結果は「有」となる。
ステップ47では、画面画像記録有無判定部321が、イベント検出部308にイベント有効化指示を送出し、イベント検出部308は、この指示に従い、検出したイベント情報をイベント記録部309に送出する。イベント記録部309はイベント検出部308から受けたイベント情報をイベントログ306として記録する。
ステップS48では、操作対象オブジェクト範囲抽出部303が、画面全体画像情報307の中から、上記イベントログ306に記録した操作対象オブジェクトの座標情報を中心とした、既定の形状とサイズによって決まるエリアに含まれる部分を、マッチング範囲として抽出し、操作対象オブジェクト画像情報301として所定の記録領域に記録する。
ステップS49では、操作者3によるクライアントアプリケーション20の操作が終了したか否かを判断する。操作が終了していない場合は、ステップS21へ戻る。操作が終了していれば、ステップS50へ移行する。
ステップS50では、シナリオ生成部302が、操作対象オブジェクト画像情報301とイベントログ306の情報を組み合わせて、操作シナリオ112を生成する。
次に、操作者3が画面画像記録指示部311の操作を忘れた場合の処理について説明する。
図23に示す処理フローにおいて、操作者3は、クライアントアプリケーション20の画面全体画像から所期の操作対象オブジェクトを認識する。例えば、図4に示されるスケジュール表示画面21が表示され、操作者3が当該スケジュール表示画面21上において、左下の「旅費清算システム」のボタンを発見する。
ここで、操作者3は、画面画像記録指示部311の操作を行わず、操作画面上でマウスを操作する。
ステップS44では、操作者3が上記スケジュール表示画面21の「旅費清算システム」ボタン上へマウスを移動させ、クリック操作を行う。
ステップS45では、イベント検出部308が、上記マウスのクリック操作をイベントとして検出し、イベント記録部309が、マウスの位置を示す座標情報と、イベントの種別情報(この例ではクリック)を、イベントログ306として所定の記録領域に記録する。
ステップ46では、画面画像記録有無判定部321が、上記イベントログ306に該当する画面全体画像情報307の有無を判定する。ここでは、ステップ43の処理が実行されていないため、判定結果は「無」となる。
ステップS51では、画面画像記録無し警告部322が、操作者3に対して、画面画像記録指示部311の操作をせずにマウス操作を行ったことを示す警告を出力する。
ステップS52では、画面画像記録有無判定部321が、イベント検出部308に、イベント無効化指示を送出し、イベント検出部308がこの指示を受けて、検出したイベントを破棄する。これにより、オペレーティングシステム(OS)40はマウス操作に伴うイベントをクライアントアプリケーション20に渡さない。
ステップS49では、操作者3によるクライアントアプリケーション20の操作が終了したか否かを判断する。操作が終了していない場合は、ステップS21へ戻る。操作が終了していれば、ステップS50へ移行する。
ステップS50では、シナリオ生成部302が、操作対象オブジェクト画像情報301とイベントログ306の情報を組み合わせて、操作シナリオ112を生成する。
このようにして、画面画像記録指示部311の操作を忘れた際に、操作者3に対して警告を発し、しかも、その時に行ったマウス操作やキーボード操作を無効とすることによって、クライアントアプリケーション20の状態変化を防ぐことができる。これによって、操作者3は、画面画像記録指示部311を操作した上で、同じマウス操作やキーボード操作を実行し、正しいシナリオ生成を継続して行うことができる。
上記した第4実施形態においては、画面画像記録指示部311の操作を行わずに(画面全体画像の記録指示操作を行わずに)マウスを操作した場合に、上記指示操作に戻ってシナリオ生成を継続して行う機能構成としている。このようなシナリオ生成を継続して行う他の機能として、シナリオ格納部に格納された操作シナリオ112を活用してシナリオ生成を継続することも可能である。この際は、操作シナリオ112に従う処理を正常な状態遷移が保たれるところまで実行し、以降に登録されたイベント情報に対応する処理の手前で実行を停止することで、操作シナリオ112を活用したシナリオ生成の継続が可能となる。
次に図24および図25を参照して本発明の第5実施形態を説明する。
上記した第4実施形態では、操作者3が画面画像記録指示部311の操作を忘れて、マウスを操作した場合に、操作者3に警告を出し、クライアントアプリケーション20の状態が遷移しないようにする処理機能を実現していた。第5実施形態では、画面画像記録指示部311を操作者が操作するのではなく、シナリオ生成システムが自動的に画面画像記録指示部311を操作することによって、シナリオの作成処理をより容易にしている。
本発明の第5実施形態に係るシナリオ生成システムの構成を図24に示し、同システムの処理手順を図25に示している。
本発明の第5実施形態は、上記した図17に示す第3実施形態のシステムにおいて、イベント検出部308とイベント記録部309との間にマウス挙動分析部325を設けている。
上述した第3の実施例の説明において、図18に示すステップS31の処理で画面画像記録指示部の操作に関して、この操作を行うべき時点は、操作者が操作対象オブジェクトを視認した後の時点で、マウスが操作対象オブジェクト(例:ボタン)に近づき外見が変化する以前でなければならない、という説明をした。
この第5実施形態においては、上記した画面画像記録指示部311の操作を実施すべき時点を、マウス挙動分析部325が決定する。
マウス挙動分析部325は、画面画像記録指示部の操作を実施すべき時点、すなわち、画面全体画像を記録する操作を行うタイミングをマウスの動きをもとに自動認識し、画面全体画像の記録指示を操作者に代わって行う。
マウス挙動分析部325は、マウス操作から画面全体画像を記録する操作を行うタイミングを認識して、画面画像記録指示部311に画面画像記録指示を送出するとともに、イベント検出部308が検出したイベント情報をイベント記録部309に送出する。
操作者3は操作画面上で操作対象オブジェクトを視認すると、その時点で、マウスを操作して操作対象オブジェクトにマウスポインタを移動させようとする。
イベント検出部308は、マウスが移動する度に、マウス移動のイベントをオペレーティングシステム(OS)40から検出する。このような機能は、例えば前述のグローバルフックを用いることで実現可能である。
イベント検出部308は、検出したイベント情報をマウス挙動分析部325に送出する。このイベント情報には、マウスの移動後の座標位置に関する情報が含まれている。マウス挙動分析部325は、マウスの座標位置とイベントの発生時刻から、マウスの移動速度を計算する。マウス挙動分析部325は、マウス操作に伴うマウスの移動速度が、あらかじめ決められた値を超えた時点で、画面画像記録指示部311に画面画像記録指示を送出する。以降のシステムの動作は、上述した第3実施形態と同様である。
マウス挙動分析部325は、イベント検出部308から受け取ったマウス移動イベント情報に含まれる座標位置情報とイベント発生時刻を用いて、マウスの移動速度を計算する。マウスの移動速度は、時刻とともに変化する。例えば図25に示すように、横軸に時刻、縦軸にマウス移動速度をもつグラフにプロットした場合、マウスの移動速度が、設定した閾値(TH)を超えた時点(TD1)で、マウスの初動操作(マウス移動開始タイミング)を検出し、このマウス移動開始タイミングの検出時において、画面画像記録指示部311に、画面画像記録指示を送出する。
マウス挙動分析部325は、上記マウス移動開始タイミングを検出した後、次に、後述のマウス移動終了タイミングを検出をするまでは、マウス移動開始タイミングを検出しない。
マウス挙動分析部325は、上記マウス移動開始タイミングを検出した後、マウスの移動速度が閾値(TH)を下回った時点(TD2)で、マウス移動終了タイミングを検出する。マウス挙動分析部325は、マウス移動終了タイミングを検出した後、マウスの移動速度が閾値(TH)を超えた時点で、次のマウス移動開始タイミングを検出する。
なお、マウス移動開始タイミング(TD1)を検出するための閾値と、マウス移動終了タイミング(TD2)を検出するための閾値は同じ値である必要性はなく、例えば、マウス移動開始タイミング(TD1)を検出するための閾値をマウス移動停止タイミング(TD2)を検出するための閾値よりも大きく設定することで、マウス移動開始タイミング(TD1)とマウス終了タイミング(TD2)とが頻繁に(不要に)検出されないように調整することができる。また、上記各閾値を固定値とせず、操作者によって変更可能にすることより、より適正タイミングでの画面画像記録指示が可能となる。
上述したように本発明の実施形態によれば、操作シナリオを作成する際の労力を大幅に低減でき、その結果、負荷試験の作業効率を向上できる。
例えば本発明の第3実施形態によれば、操作シナリオを作成する際の、画像の範囲が不適切だったときに、操作者が、範囲の調整を行いながらシナリオ生成作業を繰り返す必要を不要にして操作シナリオを作成する際の労力を大幅に低減できる。
また、本発明の第4実施形態によれば、画面画像記録指示部311の操作を忘れた場合であっても、シナリオ生成の手戻りが無くなり、作業効率が向上する。
また、本発明の第5実施形態によれば、画面画像記録指示部の操作を不要にして、操作者の操作負担を軽減し、作業効率をより向上できる。
尚、本発明は、適用の用途が負荷試験に限定されるものではない。例えばソフトウェアの開発の過程においては、開発されるソフトウェアがGUI(Graphical User Interface)機能を持っているときに、所定のGUI操作を行うことに対するソフトウェアの挙動が適切か否かを検証する、所謂、機能試験が実施される。本発明は、この機能試験を実施する際に、GUIを人間に代わり操作するツールとしての用途にも適用可能である。また、GUIを備えたソフトウェアにおいては、バグによる動作異常が発生することがある。しかしながら、動作異常が、所定のGUI操作を行っても毎回再現するとは限らない。ソフトウェア内部の処理とGUI操作との微妙のタイミングによって、そのバグが動作異常を引き起こす場合もあり、動作異常を再現させるためには、所定のGUI操作を多数回繰り返さなければならないこともある。このような、動作異常の再現作業においても、操作者に代わってGUI操作を繰り返すことを可能とする本発明は有効に機能する。さらに、WWWサーバが正常に運用されているか否かを定期的に監視するために、遠隔にあるWWWブラウザを操作して、前記WWWサーバをアクセスし、その結果を検証することによって、監視を実現する用途においても、WWWブラウザがもつGUIを操作者に代わって定期的に自動的操作する必要性があり、この場合においても本発明は有効に機能する。同様に、遠隔のWWWサーバから、WWWブラウザでアクセスを行い、情報を収集する作業を定期的に繰り返したい場合においても、WWWブラウザがもつGUIを操作者に代わって定期的に自動的操作する必要性があり、この場合においても本発明は有効に機能する。上記した事例以外にも、GUIを持ったアプリケーションを、操作者に代わって操作する必要性がある全ての場合において、本発明を有効に活用できる可能性がある。