(57)【要約】【課題】  Webアプリケーションの体感性能を取得するために，クライアント側で，ユーザによるWebブラウザ操作を記録し，記録した一連のWebブラウザ操作を再生することで，各操作の所要時間を計測する。そこで，記録済み操作に対する再生が失敗した場合，再度最初から操作を記録し直す必要がなく，失敗した操作内容であるスクリプトを書き換えることなく，簡単に操作内容を変更，追加，削除でき，しかも前後の操作で連続性を維持することができるようにする。【解決手段】  ある操作シナリオに含まれる操作を再生実行している際、操作の再生に失敗すると、再生に失敗した操作で再生処理を中断し、ユーザから修正操作を受け付け、元の操作シナリオの修正箇所を特定し、ユーザによる修正操作をもとの操作シナリオに反映することにより、上記課題を解決する。【選択図】  図１
2011008558.tif 000002
【特許請求の範囲】
【請求項１】
再生部と、修正部と、記憶部とを備えた情報処理システムによるWebアプリケーションシステムにおけるWebアプリケーション操作方法であって、
前記記憶部から記憶された操作シナリオを読み込み、該操作シナリオに属する操作を前記再生部が順次再生実行するステップと、
前記再生部による操作の再生実行の失敗を前記修正部が検出するステップと、
ユーザから修正操作を前記修正部が受け付けるステップと、
前記操作シナリオから修正する操作を前記修正部が特定するステップと、
前記修正操作に基づいて前記対象の操作を修正するステップと、
を有することを特徴とするWebアプリケーション操作方法。
【請求項２】
前記操作シナリオから修正する操作を前記修正部が特定する前記ステップは、
前記再生実行を失敗した操作を基点に、前記操作シナリオに属する操作の操作対象と、修正操作の操作対象とを比較して、修正する操作を特定するステップ
であることを特徴とする請求項1記載のWebアプリケーション操作方法。
【請求項３】
前記操作シナリオから修正する操作を前記修正部が特定する前記ステップは、
前記修正操作にブラウザのページ履歴をたどる操作があったとき、
当該操作とWebページ同定情報により、前記操作シナリオ中の修正する操作を絞り込み、
さらに、前記再生実行を失敗した操作を基点に、前記操作シナリオに属する操作の操作対象と、前記修正操作の操作対象とを比較して、修正する操作を特定するステップ
であることを特徴する請求項1記載のWebアプリケーション操作方法。
【請求項４】
再生部と、修正部と、記憶部とを備えた情報処理システムによるWebアプリケーションシステムであって、
前記記憶部から記憶された操作シナリオを読み込み、該操作シナリオに属する操作を前記再生部が順次再生実行する手段と、
前記再生部による操作の再生実行の失敗を前記修正部が検出する手段と、
ユーザから修正操作を前記修正部が受付ける手段と、
前記操作シナリオから修正する操作を前記修正部が特定する手段と、
前記修正操作に基づいて前記対象の操作を修正する手段と、
を有することを特徴とするWebアプリケーションの操作方法。
【請求項５】
再生部と、修正部と、記憶部とを備えた情報処理システムによるWebアプリケーションシステムを機能させるWebアプリケーション操作プログラムであって、
前記記憶部から記憶された操作シナリオを読み込み、該操作シナリオに属する操作を前記再生部が順次再生実行するステップと、
前記再生部による操作の再生実行の失敗を前記修正部が検出するステップと、
ユーザから修正操作を前記修正部が受け付けるステップと、
前記操作シナリオから修正する操作を前記修正部が特定するステップと、
前記修正操作に基づいて前記対象の操作を修正するステップと、
を有することを特徴とするWebアプリケーション操作プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，Webアプリケーションの操作技術に関する。
【背景技術】
【０００２】
今日，情報インフラの整備が進み，いつでも，どこからでも，情報システムにアクセスできるようになってきている。また，フロントエンドにあるWebアプリケーションは，簡単に手に入れられるWebブラウザを介して，だれでも簡単に操作できるようになっている。さらに，情報化社会において，多様化する膨大な情報のなかから，適切な情報に高速にアクセスするための検索エンジンや，Web３階層を支えるミドルウェアの発達や，Webアプリケーションをインターネット上で連携できるWebサービス技術等により，今後ますます利用が拡大することは自明である。
【０００３】
このようにWebアプリケーションの普及に伴い，Webシステムへのアクセスは，時と場所を選ばず，高速に得たい情報へアクセスできることが求められるようになっている。
そこで，運用管理の現場では，サービスインと共に，ユーザからのアクセス機会の損失をなくすために，Webアプリケーションに対して応答性能を計測し，Webアクセスの性能傾向を把握し，問題を未然に防いだり，性能劣化にいち早く気づき，迅速に対処することが求められる。
【０００４】
こうしたなか，Webアプリケーションの性能を監視するための方法がいくつかある。
１つは，Webサーバ側で，クライアントからのアクセス数の増減や，リクエストキュー長，ネットワークの入出力量を監視するものである。本方法は，サーバ側での監視であるため，クライアントからのリクエストが到達したものに関する運用状況は把握できるが，クライアントからWebサーバまでリクエストが到達しないケースとして，ネットワークの不具合や，サーバ側で受け付け可能なリクエスト数の限界を超えたために，リクエストを受け付けないケースに対しては，異常を検出できないという問題がある。本方法は，特許文献１で開示されている。
【０００５】
前記方法の問題を解決できる２つめは，各拠点のクライアント側から，Webサーバへアクセスして，応答性能を計測するものである。本方法は，クライアントからサーバまでの応答性能を計測するため，経由するネットワークの不具合や，サーバからリクエストをはじき返されるといった問題を検出できる。しかし，多拠点の拠点別にクライアントを設置して，それぞれのクライアントからの応答性能を計測するため，拠点ごとの性能を収集し，異常個所を特定するには，多数かつ多様の情報を収集して分析する必要がある。分析方法については，本発明内容には直接関係がないため，ここでは言及しない。本方法は，特許文献２および特許文献３で開示されている。特許文献２では，WebサーバにあるWebサイトへの通信性能しか取得できないが，特許文献３では，Webサイトが提供するWebアプリケーションの実行性能，すなわち，クライアント側のアプリケーション性能も含むため，ユーザが体感する性能を取得できる。従って，特許文献３は，Webアプリケーションに対するユーザの体感性能を収集するため，実運用でより有効な性能情報といえる。
【０００６】
特許文献４には、記録済み操作内容とより近い内容を，現在再生中のWebページの中を検索して見つけ出し，検出した操作対象に対して操作を実行する技術が開示されている。特許文献５では，操作情報からスクリプトを生成し，スクリプトにすることで，入力データを編集して変更できる方法について開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許３８６３７４０号
【特許文献２】特許３０８３８０５号
【特許文献３】特開２００７−１７２３７７号公報
【特許文献４】特開２００６−１２７１１７
【特許文献５】特開２００５−２６６９５４
【発明の概要】
【発明が解決しようとする課題】
【０００８】
Webアプリケーションの体感性能を取得するために，クライアント側で，ユーザによるWebブラウザ操作を記録し，記録した一連のWebブラウザ操作を再生することで，各操作の所要時間を計測する。この一連のWebブラウザ操作を，長期にわたって自動再生して性能情報を収集するなか，監視対象であるWebサイトの内容が変更されたり，Webサイトヘアクセスするためのログインパスワードが期限切れになったり，操作情報のなかの入力情報に，有効期限を過ぎてしまうと無効あるいはエラーとなる場合には，一連の操作が中断してしまう。
【０００９】
そこで，記録済み操作に対する再生が失敗した場合に対する対処として，３つの方法が考えられる。
【００１０】
１つは，特許文献4に開示されているように、記録済み操作内容とより近い内容を，現在再生中のWebページの中を検索して見つけ出し，検出した操作対象に対して操作を実行する方式もある。しかし，必ずしも記録済み操作対象と近い内容の操作対象が，現在再生中のWebページで見つかるとは限らない。
【００１１】
２つめは，再度，一連の操作を記録し直す方法である。しかし，一連操作を全てやり直す手間をユーザに課すのは，ユーザの負担も大きく，一部の操作失敗のために，問題がない操作を再度記録し直すのは無駄である。
【００１２】
３つめは，記録済みの一連の操作リストのうち，失敗した操作を編集したり，操作の追加や削除をする方法である。特許文献５のような方式では，操作リストの操作内容である記録情報を書き換えたり，追加するためには，ユーザが操作情報を表すスクリプトに関する知識を持って，記録内容を書き換えられなければならない。また，一部の操作を変更，削除，追加することで，前後の操作間で操作が連続しなくなってしまうことがある。
【００１３】
本発明の目的は，一連のWebブラウザ操作に失敗した場合，再度最初から操作を記録し直す必要が少なく，失敗した操作内容を表すスクリプトを書き換えるための知識を持たずに，簡単に操作内容を変更，追加，削除でき，しかも前後の操作で連続性を維持することにある。
【課題を解決するための手段】
【００１４】
そこで、ある操作シナリオに含まれる操作を再生実行している際、操作の再生に失敗すると、再生に失敗した操作で再生処理を中断し、ユーザから修正操作を受け付け、元の操作シナリオの修正箇所を特定し、ユーザによる修正操作をもとの操作シナリオに反映することにより、上記課題を解決する。
【発明の効果】
【００１５】
Webページの改変や入力情報の変更により記録していた操作シナリオを再生実行できなくなっても部分的に修正するため、操作シナリオを一から記録せずに済み、管理者の作業負担を軽減させることができる。
【図面の簡単な説明】
【００１６】
【図１】情報処理システム2100の構成図
【図２】情報処理システム2100のハードウェア構成図
【図３】操作シナリオテーブル2110の一例を示した図
【図４】実行履歴テーブル2111の一例を示した図
【図５】修正シナリオテーブル2112の一例を示した図
【図６】性能監視サーバを構成する各コンポーネントによる全体処理を示すフロー図
【図７】シナリオ修正部による修正処理を示すフロー図
【図８】ダイアログ操作の記録と再生方法
【図９】記録処理フロー
【図１０】ブラウザ操作とダイアログ操作の再生処理手順
【図１１】ブラウザ操作とダイアログ操作の再生処理方法
【図１２】再生処理フロー
【発明を実施するための形態】
【実施例１】
【００１７】
発明の最適な実施形態を、図を用いて説明する。
【００１８】
図１は、本発明にかかわる情報処理システム2100の構成図である。
【００１９】
情報処理システム2100は、性能監視サーバ2101と、Webサーバ2102と、端末2103から構成されている。性能監視サーバ2101と、Webサーバ2102と、端末2103は、ネットワーク2006を介して相互に接続している。
【００２０】
性能監視サーバ2101は、Webサーバ2102の稼動情報および性能情報を計測する計算機2000である。あらかじめ登録されたシナリオを定期的に再生実行して、その操作に要した時間や応答時間を計測することで、Webサーバ2102の障害や性能劣化を検出する。
【００２１】
性能監視サーバ2101は、Webブラウザ2104と、シナリオ再生部2106と、性能計測部2107と、シナリオ修正部2108と、記憶部2109と、を備えている。
【００２２】
Webブラウザ2104は、利用するブラウザであり、ユーザエージェントである。Webサーバ2102の提供するWeb文書2116を、ネットワーク2006を介して後述するWeb文書2105として取得したり、Web文書を解析したり、解析結果をもとに出力したりする機能を有する。JavaScript(登録商標)などのスクリプトエンジンを搭載したものや、Java(登録商標)プラグイン、Adobe Flash(登録商標)などを利用可能なものもある。
【００２３】
Webブラウザ2104は、Web文書2105を備えている。ただし、ここではWeb文書としているが、Web文書に限定せずWebブラウザの扱えるものであればいずれのリソースでもよく、テキストや、画像や、Adobe Flash(登録商標)、であってもよい。
【００２４】
Web文書2105は、リソースである。Web文書には、例えば、テキストや画像を含み、HTML形式で記述されており、他のWeb文書2105へのハイパーリンクが記述されている。
【００２５】
シナリオ再生部2106は、Webブラウザ2104に対する操作処理を再生実行する処理部である。後述する操作シナリオテーブル2110に記録されたシナリオ情報を読み出し、シナリオ情報に記録された操作情報をもとに、当該操作情報で特定される操作処理をWebブラウザ2104に対して順次実行する。シナリオ再生部2106は、スケジュール実行され、定期的にスケジュールされた時刻に記憶部2109から操作シナリオテーブル2110を読み込み、再生実行する。
【００２６】
性能計測部2107は、シナリオの操作処理の再生に要した時間を計測する処理部である。Webブラウザ2105に対して操作を再生してから操作に対する応答をWebブラウザが応答するまでの間の時間を計測する。具体的には、ハイパーリンクをクリックすると、ページ遷移して、別ページを表示するような場合、シナリオ再生部2106がハイパーリンクをクリックする要求をWebブラウザ2105に送信してから、Webブラウザ2105が別ページの読み込み完了状態になるまでの時間を計測する。また、時間だけでなく、シナリオ再生部2106がハイパーリンクをクリックする要求をWebブラウザ2105に送信した時刻や、Webブラウザ2105が別ページの読み込み完了状態になる時刻を記録する。さらに、各操作の時間を合算して、シナリオ全体に要した時間を計測する。なお、性能計測部2107の記録する時間は、Webサーバ2101の応答時間であってもよい。応答時間とは、Webサーバ2101に要求を出してからWebサーバ2101から応答があるまでの時間である。また、応答時間には、Webページの到着時刻までを応答時間としてもよいし、Webブラウザ2104のレンダリング時間を入れた応答時間としてもよい。
【００２７】
シナリオ修正部2108は、シナリオを修正する処理部である。シナリオ修正部2108は、管理者より入力されたシナリオ修正操作に基づき、後述する操作シナリオテーブル2110のシナリオの内容を修正する。
【００２８】
記憶部2109は、性能監視サーバ2101の各種管理情報を記憶する構成部である。
【００２９】
記憶部2109は、操作シナリオテーブル2110と、実行履歴テーブル2111と、修正シナリオテーブル2112を備えている。
【００３０】
操作シナリオテーブル2110は、シナリオ再生部2106が再生するシナリオの情報を格納するテーブルである。
【００３１】
操作シナリオテーブル2110には、例えば、後述する図3のような情報が格納されている。
【００３２】
実行履歴テーブル2111は、シナリオ再生部2106がシナリオを再生した結果を格納するテーブルである。
【００３３】
実行履歴テーブル2111には、例えば、後述する図4のような情報が格納されている。
【００３４】
修正シナリオテーブル2112は、シナリオ修正内容を一時的に記憶するためのテーブルである。管理者が入力したシナリオ修正操作を一時的にこの修正シナリオテーブル2112に一時的に記憶し、シナリオ修正部2109が修正シナリオテーブル2112に記憶された情報に基づき、操作シナリオテーブル2110に記憶されたシナリオを修正する。
【００３５】
修正シナリオテーブル2112には、例えば、後述する図5のような情報が格納されている。
【００３６】
Webサーバ2102は、計算機2000である。Web文書の要求を受け付け、要求のあったWeb文書を応答する。Webサーバ2102は、Web文書2116を備えている。
【００３７】
端末2103は、性能監視サーバ2101の端末装置である。管理者は、端末2101を通して要求を性能監視サーバ2101に送信したり、当該要求に対する性能監視サーバ2101からの応答を管理者に表示したりする。
【００３８】
端末2103は、入出力部2113と、送受信部2114、情報処理部2115を備えている。
【００３９】
入出力部2113は、管理者が端末を通して入力した情報を情報処理部2115に送信したり、情報処理部2115から受信した情報を管理者に出力したりする処理部である。
【００４０】
送受信部2114は、ネットワークを介して情報処理部2115から受信した情報を送信したり、ネットワークから受信した情報を情報処理部2115に送信したりする処理部である。
情報処理部2115は、入出力部2113や送受信部2114から送受信した情報を加工する処理部である。
【００４１】
図2は、本発明を構成する計算機2000、外部記憶装置2005、ネットワーク2006、入出力装置2007、出力装置2008、およびその接続関係を示すハードウェア構成図である。
【００４２】
計算機2000は、CPU2001と、主記憶装置2002と、外部記憶装置2003と、通信インターフェース2004を備え、これらがバスで接続されている。
【００４３】
図1に示した処理部による情報処理は、図2に示したハードウェアにより具体的に実現可能である。Webブラウザ2104や、シナリオ再生部2106、性能計測部2107、シナリオ修正部2108、情報処理部2115は、プログラムやオブジェクトにより実現される。これらの処理部は主記憶装置2002に、ＣＤ−ＲＯＭやＤＶＤなどの記憶媒体から読み込んでCPU2001が情報処理することにより実現可能である。これらの処理部はハードウェアで実現することもできる。また、記憶部2109は、外部記憶装置2005により実現可能である。入出力部2113は、入出力装置により実現可能である。送受信部2114は、通信インターフェース2004により実現可能である。
【００４４】
図3は、操作シナリオテーブル2110の一例を示した図である。
【００４５】
操作シナリオテーブル2110の各レコードには、それぞれ操作を記憶しており、レコードに記憶された操作を上から下に順に再生すると一連のWebトランザクションになる。
【００４６】
操作シナリオテーブル2110は、シナリオID欄2201と、操作ID欄2202と、操作名欄2203と、操作対象欄2204と、操作内容欄2205と、操作開始条件欄2206と、操作終了条件2207と、ページID欄2208を備えている。
【００４７】
シナリオID欄2201は、シナリオを一意に特定する識別情報を記憶する。同じシナリオIDのレコードは、同じシナリオに属していることを示している。
【００４８】
操作ID欄2202は、操作を一意に特定する識別情報を記憶する。
【００４９】
操作名欄2203は、操作の名前を記憶する。ここでは、操作内容がわかるような文字列で記憶されている。記憶する情報は、操作内容を元に人が入力してもよいし、操作対象や操作内容に応じて、自動でテキストを生成してもよい。
【００５０】
操作対象欄2204は、操作対象を特定する情報を記憶する。Web文書2105を解析して特定されるDOMオブジェクトのパターン情報や、Webブラウザ2104と関連して発生するダイアログの構成オブジェクトを特定する情報を記憶する。例えば、操作がハイパーリンクのクリックであれば、ハイパーリンクに表示される文字列(いわゆるInnerTextの値)や、タグ名(aタグ)、タグの属性(具体的にはID属性、name属性、href属性など)の値、タグ番号、他のタグとの関係(親子関係や兄弟関係など)を用いて、またはこれらを組み合わせて特定する。特定方法は、いずれの方法でもよく、XPathなどの書式で記述してもよい。認証ダイアログにユーザ名とパスワード名を入力する操作であれば、認証ダイアログを特定する情報としてダイアログのクラス名やタイトルを、ユーザ名やパスワード名を入力するフィールドを特定する情報としてフィールドのIDを記憶する。認証ダイアログを構成する他の構成オブジェクトとの関係情報(包含関係など)を記憶してもよい。
【００５１】
操作内容欄2205は、操作の内容を特定する情報を記憶する。再生時にブラウザに発行させるイベントや、入力テキスト情報、ダイアログに対して送信するウィンドウメッセージなどを記憶する。具体的には、クリックイベント、テキストフォームへの入力テキスト情報、ダイアログのボタンダウン、ボタンアップメッセージ情報などである。
【００５２】
操作開始条件欄2206は、操作を開始するために満たすべき条件を記憶する。
【００５３】
操作終了条件2207は、操作が完了するために満たすべき条件を記憶する。
【００５４】
ページID欄2208は、例えば、同一シナリオ中の操作間で同じページを操作する場合、同じ識別子を記憶する。
【００５５】
依存欄2209には、直前の操作内容に依存するか否かの情報を記憶している。依存する場合「T」を記憶し、してない場合「F」を記憶している。依存しない場合とは、例えば、URLを直に指定してページ移動する場合などである。
【００５６】
図4は、実行履歴テーブル2111の一例を示した図である。
【００５７】
実行履歴テーブル2111は、履歴ID欄2301と、シナリオID欄2202と、操作ID欄2203と、実行状態欄2304と、実行結果欄2305と、開始時刻欄2306と、終了時刻欄2307と、応答時間欄2308と、詳細欄2309を備えている。
【００５８】
履歴ID欄2301は、シナリオの再生結果を一意に特定する識別情報である。同じシナリオの再生であっても、定期実行の度に、異なる識別子を付与して管理する。
【００５９】
シナリオID欄2202は、シナリオを一意に特定するための識別子を記憶する。
【００６０】
操作ID欄2203は、シナリオを構成する操作を一意に特定するための識別子を記憶する。
【００６１】
実行状態欄2304は、操作の実行状態を記憶する。例えば、実行が完了していれば「実行済み」、実行中であれば「実行中」、実行していなければ「未実行」を記憶する。
【００６２】
実行結果欄2305は、実行した結果の状態を記憶する。例えば、操作が成功すれば「成功」、失敗すれば「失敗」、操作を実行していなければ「n/a」と記憶する。
【００６３】
開始時刻欄2306は、操作実行を開始した時刻を記憶する。
【００６４】
終了時刻欄2307は、操作実行を終了した時刻を記憶する。
【００６５】
応答時間欄2308は、操作実行に要した時間を記憶する。開始時刻欄2306に記憶した時刻と終了時刻欄2307に記憶した時刻との差分を求めて算出した値を記憶する。
【００６６】
詳細欄2309は、関連情報を記憶する。例えば、操作実行が失敗した場合に、その原因を記憶する。
【００６７】
図5は、修正シナリオテーブル2112の一例を示した図である。
【００６８】
修正シナリオテーブル2112は、修正シナリオID欄2401と、シナリオID欄2402と、操作ID欄2403と、操作対象2404と、操作内容欄2405を備えている。
【００６９】
修正シナリオID欄2401は、修正シナリオを特定するための識別情報を記憶する。
【００７０】
シナリオID欄2402は、修正する対象となるシナリオを特定するための識別情報を記憶する。
【００７１】
操作ID欄2403は、修正シナリオを構成する操作を特定する識別情報を記憶する。
【００７２】
操作対象2404は、修正シナリオを構成する操作の操作対象を特定する情報を記憶する。管理者が入力した操作の操作対象をパターン情報として記憶する。取得方法および書式は、操作シナリオテーブル2110の操作対象欄2204の場合と同じである。
【００７３】
操作内容欄2405は、修正シナリオを構成する操作の操作内容を特定する情報を記憶する。管理者が入力した操作の操作内容を記憶する。取得方法および書式は、操作シナリオテーブル2110の操作対象欄2205の場合と同じである。
【００７４】
図6は、性能監視サーバを構成する各コンポーネントによる全体処理を示すフロー図である。
【００７５】
(1) シナリオ再生部2106は、シナリオAの実行要求を受け付ける(ステップ2501)。
【００７６】
(2) シナリオ再生部2106は、操作シナリオテーブル2110を読み込み、スケジュールにより再生実行が予定されているシナリオAを特定する(ステップ2502)。シナリオID欄2201を検索し、シナリオAに相当する識別子を有するレコードを取得する。
【００７７】
(3) シナリオ再生部2106は、シナリオAの最初の操作Aを特定する(ステップ2503)。ステップ2502で取得したレコードのうち、最初のレコードを操作Aとして特定する。
【００７８】
(4) シナリオ再生部2106は、操作Aから操作内容Aと操作対象パターンAを特定する(ステップ2504)。ステップ2503で特定したレコードの操作内容欄2205に記憶された内容を操作内容A、操作対象欄2204に記憶された内容を操作対象パターンAとする。
【００７９】
(5) シナリオ再生部2106は、Webブラウザ2104からWeb文書2105を読み込み、操作対象パターンAに合致する対象Bを特定する(ステップ2505)。Web文書2105がDOMで構成されている場合、Web文書2105のDOMから操作対象パターンAに合致するオブジェクトを取得して、対象Bとする。
【００８０】
(6) シナリオ再生部2106は、対象Bがあるか否か判定する(ステップ2506)。ステップ2506の判定の結果、対象Bがあれば、ステップ2508に進む。なければ、ステップ2507に進む。
【００８１】
(7) ステップ2506の判定の結果、対象Bがない場合、シナリオ修正部2108は、シナリオAを修正する(ステップ2507)。この処理は、図7を用いて詳細に説明する。修正したら、ステップ2508に進む。
【００８２】
(8) ステップ2506の判定の結果、対象Bがあった場合、シナリオ再生部2106は、対象Bに操作内容Aを実行する(ステップ2508)。例えば、対象Bがリンクであり、操作内容Aがリンクのクリックだったとき、当該リンクに対してリンククリックを実行する。また、対象Bがid属性が「user」のinputタグで構成されるテキストフォームであり、操作内容Aがフォームにテキスト「user001」入力なら、当該テキストフォームに文字列「user001」を埋め込む。
【００８３】
(9) 性能計測部2107は、実行開始時刻を記録する(ステップ2509)。例えば、実行履歴テーブル2111に新たなレコードを生成し、開始時刻欄2306に現在時刻を記憶する。
【００８４】
(10) シナリオ再生部2106は、操作が完了するか判定する(ステップ2510)。例えば、操作の完了は、操作シナリオテーブル2110の操作終了条件欄2207に記述された条件に合致しているか否かを判定する。具体的には、操作終了条件欄2207に、操作実行後に操作完了までに発生するイベントのパターン情報が記憶されていれば、当該パターンに一致するイベントが到着したことにより、操作完了したと判定する。
【００８５】
(11) ステップ2510の判定の結果、完了している場合、性能計測部2106は、実行終了時刻を記録する。例えば、ステップ2509で生成したレコードの終了時刻欄2307に現在時刻を記憶する。現在時刻の代わりに、ステップ2501で操作終了条件欄2207の条件が満たされた時刻を計測してもよい。
【００８６】
(12) 性能計測部2106は、実行開始時刻と実行終了時刻から操作Aにかかった時間を算出して応答時間として記憶する(ステップ2512)。例えば、実行履歴テーブル2111において、ステップ2509で生成したレコードの開始時刻欄2306と終了時刻欄の差分を算出し、応答時間欄2308に記憶する。
【００８７】
(13) シナリオ再生部2106は、操作Aの実行成功を記憶する(ステップ2513)。例えば、実行履歴テーブル2111において、ステップ2509で生成したレコードの実行結果欄2305に、「成功」と記憶する。
【００８８】
(14) シナリオ再生部2106は、操作Aを実行済み状態に変更する(ステップ2514)。例えば、実行履歴テーブル2111において、ステップ2509で生成したレコードの実行状態欄2304に、「実行済」と記憶する。
【００８９】
(15) シナリオ再生部2106は、シナリオAに未実行状態の次の操作があるか判定する(ステップ2515)。次の操作がある場合、ステップ2516に進む。ない場合は、ステップ2517に進む。
【００９０】
(16) ステップ2515の判定の結果、次の操作があれば、シナリオ再生部2106は、シナリオAから未実行状態の次の操作Aを取得する(ステップ2516)。ステップ2504以降の処理を同じように繰り返す。
【００９１】
(17) ステップ2515の判定の結果、次の操作がなければ、性能計測部2107は、操作毎の時間を合算し、シナリオAにかかった時間を算出する(ステップ2517)。ステップ2517を実行したら終了する。
【００９２】
(18) ステップ2510の判定で、操作Aが完了していなければ、シナリオ再生部2106は、タイムアウトしたか判定する(ステップ2518)。タイムアウト前ならステップ2510に戻る。タイムアウトしていれば、ステップ2519に進む。
【００９３】
(19) ステップ2518の判定の結果、タイムアウトしていれば、性能計測部2107は、操作終了時刻を記憶する(ステップ2519)。ステップ2519と同じである。
【００９４】
(20) 性能計測部2107は、実行開始時刻と実行終了時刻から操作Aにかかった時間を算出し記憶する(ステップ2520)。ステップ2520と同じである。
【００９５】
(21) シナリオ再生部2106は、操作Aの実行失敗を記憶する(ステップ2621)。例えば、実行履歴テーブル2111において、ステップ2509で生成したレコードの実行結果欄2305に、「失敗」と記憶する。
【００９６】
(22) シナリオ再生部2106は、操作Aを実行済み状態に変更する(ステップ2522)。例えば、実行履歴テーブル2111において、ステップ2509で生成したレコードの実行状態欄2304に、「実行済」と記憶する。
【００９７】
(23) シナリオ再生部2106は、シナリオAに未実行状態で、しかも実行可能な操作があるか判定する(ステップ2523)。判定の結果、あればステップ2114に進む。なければ、終了する。例えば、実行履歴テーブル2111の操作シナリオAに関するレコードで、実行状態欄2304が「未実行」であり、操作ID欄2302と操作ID欄2202で対応づけられる操作シナリオテーブル2110のレコードの依存欄2209が「T」になっているレコードがあるかを判定する。
【００９８】
(24) シナリオ再生部2106は、ステップ2523の判定の結果、該当操作があれば、シナリオAから未実行状態で、実行可能な操作を取得し、操作Aとする(ステップ2114)。ステップ2114の後、新たな操作Aによりステップ2504以降を繰り返す。
【００９９】
図7は、シナリオ修正部2108による修正処理を示すフロー図である。
ステップ2601からステップ2607までの処理は、ユーザである管理者から修正操作を受信して記憶する処理動作である。
【０１００】
(1) シナリオ修正部2108は、操作失敗を検出する(ステップ2601)。
【０１０１】
(2) シナリオ修正部2108は、操作Aを失敗操作Yとして記憶する(ステップ2602)。失敗操作Yとして一時的に操作Aを記憶する。
【０１０２】
(3) シナリオ修正部2108は、修正シナリオAを初期化する(ステップ2603)。修正シナリオテーブル2112を初期化して、ユーザからの修正操作を記録できるようにする。
【０１０３】
(4) シナリオ修正部2108は、ユーザの操作Cを受け付ける(ステップ2604)。Webブラウザ2104やダイアログに対するユーザの操作Cを受け付ける。
【０１０４】
(5) シナリオ修正部2108は、操作Cを修正シナリオAに記憶する(ステップ2605)。例えば、ブラウザの遷移履歴を戻る操作や、テキストフォームにパスワード入力をしなおす操作などを記憶する。ブラウザイベントやウィンドウメッセージを受信して、操作対象と操作内容を特定して、修正シナリオテーブル2112に記憶する。ステップ2603で初期化するたびに修正シナリオID欄2401に新たな識別子を記録する。また、シナリオID欄2402には、実行履歴テーブル2111での操作Aに相当するレコードのシナリオID欄2302の値を記憶する。操作ID欄2403には修正シナリオテーブル2112のレコードを識別する識別情報を記憶する。操作対象欄2404には、特定した操作対象情報を記憶し、操作内容欄2405には特定した操作内容情報を記憶する。
【０１０５】
(6) シナリオ修正部2108は、操作Cの操作対象と失敗操作Yの操作対象が一致するか判定する(ステップ2606)。判定の結果、一致すればステップ2607に進む。一致しなければステップ2604に戻る。ステップ2606の判定処理は、ユーザからの修正操作の終わりを決めるための処理である。失敗操作Yとして記憶されている操作に相当する操作が、修正処理操作によって成功していれば、そこで修正処理操作が終わったものと判定する。失敗操作Yに相当する操作か否かは、失敗操作Yの操作対象と同一の操作対象に対する操作か否かにより判定する。
【０１０６】
(7) ステップ2606の判定の結果、一致すれば、シナリオ修正部2108は、操作Aが成功したか判定する(ステップ2607)。判定の結果、成功していたらステップ2608に進む。失敗していたらステップ2603に戻り、ユーザに再度入力を促す。
ステップ2608からステップ2618までの処理は、ユーザである管理者から受信した修正情報をもとに元のシナリオを修正する処理動作である。
【０１０７】
(8) ステップ2607の判定の結果、成功していたら、シナリオ修正部2108は、失敗操作Yを修正中操作として一時的に記憶する(ステップ2608)。これは、もとの操作シナリオにおいて、修正範囲を特定するための処理であり、仮に失敗操作Yから修正中操作までを修正候補の操作として特定している。
【０１０８】
(9) シナリオ修正部2108は、修正シナリオAを読み込む(ステップ2609)。修正シナリオテーブル2112を記憶部2109から読みこみ、一連の修正シナリオAを取得する。
(10) シナリオ修正部2108は、修正シナリオAから最初の操作Dを読み込む(ステップ2610)。修正シナリオAを構成する最初の操作Dを取得する。具体的には、修正シナリオテーブル2112の最初のレコードを取得する。
【０１０９】
(11) シナリオ修正部2108は、シナリオAの修正中操作から失敗操作Yまでの操作に、操作Dと操作対象が一致する操作Eがあるか判定する(ステップ2611)。判定の結果、一致すればステップ2612に進む。一致しなければステップ2614に進む。操作シナリオテーブル2110に記憶され修正候補として特定した操作のうち、ユーザから入力された修正操作Dに相当する操作を特定する。相当する操作の特定は、操作対象が一致しているか否かにより、判定する。
【０１１０】
(12) シナリオ修正部2108は、ステップ2611の判定の結果、一致すれば、シナリオ中の操作Eの内容を操作Dの内容で置換する。操作シナリオテーブル2110の操作を、ユーザから入力された修正操作の内容に変更することで、修正をもとの操作シナリオに反映していく。
【０１１１】
(13) シナリオ修正部2108は、操作Eを修正中操作として一時的に記憶する(ステップ2613)。記憶後、ステップ2617に進む。修正範囲を狭める。
【０１１２】
(14) ステップ2611の判定の結果、一致しなければ、シナリオ修正部2108は、操作Dがブラウザの履歴を戻る操作か否か判定する(ステップ2614)。戻る操作なら、ステップ2615に進む。戻る操作でなければステップ2616に進む。戻る操作の場合、もとの操作シナリオの内容を変更するのでなく、失敗操作以前に表示していたページに対する操作の修正を行うものなので、戻る操作自体は記憶せず、ページID欄2208の情報をもとに修正候補範囲を広げる。
【０１１３】
(15) ステップ2614の判定の結果、戻る操作なら、シナリオ修正部2108は、シナリオAのうち戻り先のページに相当する操作を修正中操作として一時的に記憶する(ステップ2615)。記憶後、ステップ2617に進む。
【０１１４】
(16) ステップ2614の判定の結果、戻る操作でなければ、シナリオ修正部2108は、修正中操作として記憶された操作の次の操作として操作EをシナリオAに追加する(ステップ2616)。追加後、ステップ２６１３に進む。もとの操作シナリオにはない操作が必要になったケースなので、もとの操作シナリオに対して、新たに追加する修正を行う。
【０１１５】
(17) ステップ2613やステップ2615の処理後、シナリオ修正部2108は、修正シナリオAに操作Dの次の操作があるか判定する(ステップ2617)。判定の結果、次の操作があれば、ステップ2618に進む。なければ、修正処理を終了する。修正シナリオAに未反映の操作が含まれていれば、引き続き反映処理を行う。
(18) ステップ2617の判定の結果、次の操作があれば、シナリオ修正部2108は、修正シナリオAから次の操作を読み込み、操作Dとする(ステップ2618)。新たな操作Dでステップ2611以降を処理する。
【０１１６】
図7に示した処理動作により、シナリオ修正のために、最初からシナリオを作成しなおすことなく、部分的にシナリオを修正できる。また、もとのシナリオ中の変更箇所やシナリオの記述書式を管理者は意識せずにすむ。管理者は、修正後の操作のみ入力するだけで、シナリオの修正を実現できる。後述する図8の処理と異なり、個別に操作間で比較するため、修正シナリオ中に含まれるもとのシナリオへの修正の反映が必要ない操作を特定し、修正の反映が必要なもののみ反映させることができる。
【０１１７】
図8は，ダイアログ操作の記録と再生方法である。ダイアログ操作の記録と再生では，操作対象ウィンドウにHookを付加し，当該ウィンドウに関連するダイアログを捕捉する処理1201を実行する。ダイアログ操作の記録処理1202は，捕捉したダイアログに対して，ダイアログウィンドウのタイトルと，子ウィンドウの認証情報クラス，EditBoxのコントロールIDと入力データ，各種ButtonのコントロールIDを記録する，ダイアログ操作の再生処理1203は，捕捉したDialogウィンドウに対して，Dialogウィンドウのタイトルが記録したDialogウィンドウと一致すれば，子ウィンドウの内，記録したウィンドウ情報，クラス，コントロールIDと一致するウィンドウハンドル(HWND)に対して，記録データを含む送信メッセージを送る。
【０１１８】
図9は，記録処理部1004の処理フローである。記録処理部1004では，実行制御部1003からの，ユーザが操作画面500の記録ボタン505をクリックすると発生する記録イベント待ち1301する。記録イベントを受け取ると，Webブラウザ操作記録処理1302，ポップアップダイアログ記録処理1303，停止イベント待ち1304の各処理を並列実行する。
Webブラウザ操作記録処理1302は，Webブラウザコントロール上で表示するドキュメントに対して，ユーザからの操作イベントである，リンククリックやフォーム内テキスト入力やボタンクリック等を取得するためのイベントハンドラを登録1305し，ユーザによるWebブラウザ操作1306によるWebブラウザイベント待ち1307し，Webブラウザイベントが発生すると，当該イベント発行元であるタグ情報，クリックやテキスト入力などの操作内容，操作により発生するページ遷移後のページタイトルを取得し，操作シナリオの末尾に，イベント発生順に追加登録1308する。
【０１１９】
ポップアップダイアログ記録処理1303は，Webブラウザ操作途中で出現するポップアップダイアログを捕捉するために，本実行プログラムから呼び出されるダイアログ捕捉のための監視プログラムを起動1309し，ポップアップダイアログの消滅イベント待ち1311し，ダイアログ消滅イベントが発生すると，入力情報を含むダイアログ内容1310を取得し，操作シナリオの末尾に追加登録1312する。
【０１２０】
停止イベント待ち処理1304は，実行制御部1003からの，ユーザが停止ボタン506をクリックすると発生する停止イベント待ち1304し，停止イベントが発生すると，記録処理1004を終了させる。
【０１２１】
図10から図12は，再生処理部1005の処理内容である。
図10は，ブラウザ操作とダイアログ操作の再生処理手順である。図１４は， MainスレッドによるWebブラウザ操作再生処理1401と，子スレッドによるダイアログの捕捉と再生処理1402によって生じる，操作シナリオ1403に対するWebブラウザの状態1404を示している。Webブラウザ上でクリック操作1405を再生すると，Webブラウザは，ドキュメント読み込み開始状態1406となる。続いて，認証ダイアログ1407が出現し，当該ダイアログに対する操作を再生すると，Webブラウザはドキュメント読み込み完了状態1408となり，操作シナリオのドキュメント読み込み完了操作に到達する。
【０１２２】
図11は，ブラウザ操作とダイアログ操作の再生処理方法である。図１５において，再生処理は，ブラウザコントロール処理スレッド1501とダイアログ処理スレッド1502が実行する。そして，ブラウザコントロール処理スレッド1501の実行により，ブラウザコントロール1503が状態遷移し，ダイアログ処理スレッド1502の実行により，ウィンドウプロシージャWinProc1504が状態遷移する。ここで，ブラウザ操作とこれに伴うブラウザイベントを含めて1操作単位1505とし，操作単位に所要時間を計測する。また，1ダイアログ操作までの一連の操作グループ1506を，連続実行する再生処理単位とする。フォーム情報入力再生処理1507は，フォーム入力前の値1508をフォーム入力後の値1509に変換する。
図12は，再生処理部1005の処理フローである。実行制御部1003からの，ユーザが再生ボタン507をクリックすると発生する再生イベント待ち1601し，再生イベントを受け取ると，ブロック再生処理1602と，一時停止イベント待ち1603の各処理を並列実行する。
一時停止イベント待ち処理1603は，ユーザが一時停止ボタンをクリックすると，実行制御部1003から発生する一時停止イベント待ち1603する。一時停止イベントを受け取ると，再生イベント待ち1601する。
【０１２３】
ブロック再生処理1602では，操作シナリオを，ポップアップダイアログ出現までを１ブロックとし，ブロック単位で再生する。
まず，操作シナリオの未実行操作の先頭から，ポップアップダイアログ出現までの操作を抽出1604し，抽出した操作グループを再生処理単位とする。
次に，Webブラウザ操作再生処理1605とポップアップダイアログ再生処理1606を並列実行する。
【０１２４】
Webブラウザ操作再生処理1605は，ポップアップダイアログに対する操作を除く，全てのWebブラウザ操作を順番に実行していく。Webブラウザ操作再生処理1605は，初めに，WebブラウザコントロールにWebページ読み込み完了イベントを取得するためのイベントハンドラを登録1607する。次に，再生処理対象シナリオの未実行操作の先頭からドキュメント表示完了イベント以外の，次の操作イベントの直前までを抽出1608し，1操作単位として，操作イベント発行処理1609と，ドキュメント表示完了イベント待ち1610の各処理を並列実行する。ドキュメント表示完了イベント待ち1610は，完了イベントを受け取るとイベント数をカウントアップ1611し，イベント到着数が記録時と同数になるまで，ドキュメント表示完了イベント待ち1610を実行する。
【０１２５】
ポップアップダイアログ再生処理1606は，本実行プログラムから呼び出されるダイアログを捕捉するための監視プログラムを起動1612し，ポップアップダイアログ出現待ち1613し，ポップアップダイアログが出現すると，記録済みダイアログのウィンドウタイトルと比較1614し，一致していれば，ダイアログ内情報をメッセージ送信1615し，一致していなければ予期しないダイアログの出現を実行履歴に登録1616し，再生処理を終了する。
【０１２６】
以上、本発明の実施形態を説明したが、この実施形態は本発明の説明のための例示にすぎず、本発明の範囲をその実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱することなく、その他の様々な態様でも実施することができる。
【０１２７】
このように処理ことにより、Webページの改変や入力情報の変更により記録していた操作シナリオを再生実行できなくなっても部分的に修正するため、操作シナリオを一から記録せずに済み、管理者の作業負担を軽減させることができる。また、操作シナリオを直接編集しないため、操作シナリオの変更箇所の特定や、操作シナリオの書式を意識せずに、操作シナリオの記録と同じ感覚で操作シナリオを修正できる。
【符号の説明】
【０１２８】
２１０１  性能監視サーバ
２１０２  Ｗｅｂサーバ
２１０３  端末
２１０４  Ｗｅｂブラウザ
２１０５  Ｗｅｂ文書
２１０６  ネットワーク
２１０７  性能計測部
２１０８  シナリオ修正部
２１０９  記憶部
【図１】
2011008558.tif 000003
【図２】
2011008558.tif 000004
【図３】
2011008558.tif 000005
【図４】
2011008558.tif 000006
【図５】
2011008558.tif 000007
【図６】
2011008558.tif 000008
【図７】
2011008558.tif 000009
【図８】
2011008558.tif 000010
【図９】
2011008558.tif 000011
【図１０】
2011008558.tif 000012
【図１１】
2011008558.tif 000013
【図１２】
2011008558.tif 000014