(57)【要約】【課題】問題個所の特定および問題報告の作成が容易であり、問題報告の閲覧者が問題個所を直観的かつ容易に把握できる問題報告の作成を実現する。【解決手段】ソフトウェア実行部１００と、このソフトウェア実行部１００によるソフトウェアの実行を監視するソフトウェア監視部２００と、を備え、ソフトウェア監視部２００は、ソフトウェア実行部１００がソフトウェアを実行することにより表示装置４００に表示される画面の画像データを取得する画像取得部２２０と、この画像取得部２２０により画像データが取得された時点におけるソフトウェアおよびハードウェアの状態に関する情報である周辺情報を取得する周辺情報取得部２３０と、画像取得部２２０により取得された画像データに基づく画像と共に周辺情報取得部２３０により取得された周辺情報の内容が表示されるように、周辺情報を画像データに付加する保存画像処理部２５０と、を備える。【選択図】図１
2014182646.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの実行を監視する装置であって、
監視対象のソフトウェアを実行する実行部と、
前記実行部による監視対象の前記ソフトウェアの実行を監視する監視部と、を備え、
前記監視部は、
前記実行部が前記ソフトウェアを実行することにより表示装置に表示される画面の画像データを取得する画像取得部と、
前記画像取得部により画像データが取得された時点における前記ソフトウェアおよび当該ソフトウェアが実行されているハードウェアの状態に関する情報である周辺情報を取得する周辺情報取得部と、
前記画像取得部により取得された前記画像データに基づく画像を表示装置に表示させた場合に当該画像と共に前記周辺情報取得部により取得された前記周辺情報の内容が表示されるように、当該周辺情報を当該画像データに付加する保存画像処理部と、
を備える、装置。
【請求項２】
前記周辺情報取得部は、前記画像取得部により画像データが取得された時点で、前記実行部による前記ソフトウェアの実行中にエラーが発生していた場合、当該エラーの種類に基づき、その種類のエラーが発生した場合に取得する周辺情報として予め定められた情報を取得する、請求項１に記載の装置。
【請求項３】
ユーザによる前記ソフトウェアの実行に関わる操作の履歴情報を取得する操作履歴取得部をさらに備え、
前記周辺情報取得部は、前記操作履歴取得部により取得された履歴情報に基づき、前記画像取得部により画像データが取得される前の所定期間に特定の操作が行われたと判断される場合に、当該特定の操作が行われた場合に取得する周辺情報として予め定められた情報を取得する、請求項１または請求項２に記載の装置。
【請求項４】
前記保存画像処理部は、前記画像データのファイル・フォーマットがテキストを記憶する領域を有する場合に、当該領域に前記周辺情報を記述することにより、当該画像データに当該周辺情報を付加する、請求項１乃至請求項３のいずれかに記載の装置。
【請求項５】
前記保存画像処理部は、前記周辺情報を示す画像を前記画像データに基づく画像に埋め込むことにより、当該画像データに当該周辺情報を付加する、請求項１乃至請求項３のいずれかに記載の装置。
【請求項６】
ソフトウェアの実行を監視する装置であって、
監視対象のソフトウェアを実行する実行部と、
前記実行部による監視対象の前記ソフトウェアの実行を監視する監視部と、を備え、
前記監視部は、
ユーザによる前記ソフトウェアの実行に関わる操作の履歴情報を取得する操作履歴取得部と、
前記実行部が前記ソフトウェアを実行することにより表示装置に表示される画面の画像データを取得する画像取得部と、
前記画像取得部により画像データが取得された時点における前記ソフトウェアおよび当該ソフトウェアが実行されているハードウェアの状態に関する情報である周辺情報を取得する周辺情報取得部と、
前記画像取得部により取得された前記画像データに基づく画像を表示装置に表示させた場合に当該画像と共に前記周辺情報取得部により取得された前記周辺情報の内容が表示されるように、当該周辺情報を当該画像データに付加する保存画像処理部と、を備え、
前記周辺情報取得部は、
前記画像取得部により画像データが取得された時点で、前記実行部による前記ソフトウェアの実行中にエラーが発生していた場合、当該エラーの種類に基づき、その種類のエラーが発生した場合に取得する周辺情報として予め定められた情報を取得し、
前記操作履歴取得部により取得された履歴情報に基づき、前記画像取得部により画像データが取得される前の所定期間に特定の操作が行われたと判断される場合に、当該特定の操作が行われた場合に取得する周辺情報として予め定められた情報を取得する、装置。
【請求項７】
コンピュータが、ソフトウェアを実行すると共に、その実行を監視する方法であって、
監視対象のソフトウェアを実行することにより表示装置に表示される画面の画像データを取得するステップと、
前記画像データが取得された時点における前記ソフトウェアおよび当該ソフトウェアが実行されているハードウェアの状態に関する情報である周辺情報を取得するステップと、
前記画像データに基づく画像を表示装置に表示させた場合に当該画像と共に取得された前記周辺情報の内容が表示されるように、当該周辺情報を当該画像データに付加し、当該周辺情報が付加された当該画像データを記憶装置に格納するステップと、
を含む、方法。
【請求項８】
コンピュータを、
監視対象のソフトウェアを実行する実行手段と、
前記実行手段による監視対象の前記ソフトウェアの実行を監視する監視手段として機能させ、
前記監視手段の機能として、前記コンピュータに、
前記実行手段が前記ソフトウェアを実行することにより表示装置に表示される画面の画像データを取得する機能と、
前記画像データが取得された時点における前記ソフトウェアおよび当該ソフトウェアが実行されているハードウェアの状態に関する情報である周辺情報を取得する機能と、
前記画像データに基づく画像を表示装置に表示させた場合に当該画像と共に取得された前記周辺情報の内容が表示されるように、当該周辺情報を当該画像データに付加する機能と、
を実現させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの実行を監視するツールに関し、監視対象のソフトウェアの実行に伴って表示される画像を保存（screen capturing）する装置、方法およびプログラムに関する。
【背景技術】
【０００２】
ソフトウェアの開発においては、ソフトウェアが提供する機能やユーザ・インターフェイス等についての様々なテストが行われる。そして、テストにおいて問題が発見された場合には、ソフトウェアの開発担当者（プログラマ等）等がテスト結果を解析し、解決策を講じ、必要に応じてソフトウェアの修正や改変等が行われる。したがって、ソフトウェアのテストにおいて問題が発見された際には、そのテストが行われた状況に関する情報を収集し、テスト結果の解析者に提供することが望ましい。
【０００３】
例えば、特許文献１に開示される従来技術は、ソフトウェアの評価処理においてエラーが発生した場合に、エラーについての詳細情報、ソースファイル識別子を記載したエラー報告メールを作成して、ソース管理者の電子メールアドレス宛に送信することが開示されている。また、特許文献２に開示される従来技術は、ソフトウェアのテストを対象とするものではないが、システムの動作に関する履歴情報から障害の解析に必要な情報を取得し、取得した情報に基づいて障害の発生の有無を解析することが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−９１４３２号公報
【特許文献２】特開２０１１−１９９５０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ソフトウェアのテストに伴う問題報告において、問題が発生した場面を特定する手段の一つとして、ソフトウェアの実行中に表示装置に表示されるＧＵＩ（Graphical User Interface）等による画面（以下、表示画面）を対象として、問題が発生した時点の表示画面の画像データを保存（screen capturing）することが、一般的に行われる。
【０００６】
しかし、問題が発生した時点の表示画面のみでは、その問題が発生した際の周辺情報（ソフトウェアの実行環境や問題発生に至るプロセス等）が不足しているため、発生した問題の適切な解析を行うことが難しかった。この場合、テスト結果の解析者がテストの実施者に依頼して同じ問題が発生する状況を再現し、周辺情報を取得することが考えられる。しかし、発生した問題によっては、全く同じ状況を再現することが困難な場合がある。また、同じ状況を再現できる場合であっても、周辺情報を取得するために再度、問題を発生させるようにソフトウェアを実行させることは、テストの実施者にとって、言わば二度手間であり、作業効率が良くない。
【０００７】
本発明は、このような課題に鑑み、ソフトウェアを実行した際の特定の場面に関して、その場面を特定する情報と共に、その場面における周辺情報を容易に取得可能とすることを目的とする。
【課題を解決するための手段】
【０００８】
上記の目的を達成するため、本発明は、次のような装置として実現される。この装置は、ソフトウェアの実行を監視する装置であって、監視対象のソフトウェアを実行する実行部と、この実行部による監視対象のソフトウェアの実行を監視する監視部と、を備える。そして、監視部は、実行部がソフトウェアを実行することにより表示装置に表示される画面の画像データを取得する画像取得部と、この画像取得部により画像データが取得された時点におけるソフトウェアおよびソフトウェアが実行されているハードウェアの状態に関する情報である周辺情報を取得する周辺情報取得部と、画像取得部により取得された画像データに基づく画像を表示装置に表示させた場合に、この画像と共に周辺情報取得部により取得された周辺情報の内容が表示されるように、周辺情報を画像データに付加する保存画像処理部と、を備える。
【０００９】
より好ましくは、周辺情報取得部は、画像取得部により画像データが取得された時点で、実行部によるソフトウェアの実行中にエラーが発生していた場合、このエラーの種類に基づき、その種類のエラーが発生した場合に取得する周辺情報として予め定められた情報を取得する。
また、上記の装置において、監視部が、ユーザによるソフトウェアの実行に関わる操作の履歴情報を取得する操作履歴取得部をさらに備える構成としても良い。そして、周辺情報取得部は、操作履歴取得部により取得された履歴情報に基づき、画像取得部により画像データが取得される前の所定期間に特定の操作が行われたと判断される場合に、この特定の操作が行われた場合に取得する周辺情報として予め定められた情報を取得する。
また、より詳しくは、保存画像処理部は、画像データのファイル・フォーマットがテキストを記憶する領域を有する場合に、この領域に周辺情報を記述することにより、画像データに周辺情報を付加する。
あるいは、保存画像処理部は、周辺情報を示す画像を画像データに基づく画像に埋め込むことにより、画像データに周辺情報を付加する。
【００１０】
また、本発明は、次のような方法としても実現される。この方法は、コンピュータが、ソフトウェアを実行すると共に、その実行を監視する方法であって、監視対象のソフトウェアを実行することにより表示装置に表示される画面の画像データを取得するステップと、画像データが取得された時点におけるソフトウェアおよびソフトウェアが実行されているハードウェアの状態に関する情報である周辺情報を取得するステップと、画像データに基づく画像を表示装置に表示させた場合に、この画像と共に周辺情報取得部により取得された周辺情報の内容が表示されるように、周辺情報を画像データに付加し、当該周辺情報が付加された当該画像データを記憶装置に格納するステップと、を含む。
【００１１】
さらにまた、本発明は、コンピュータを制御して上述した装置の各機能を実現するプログラム、あるいは、コンピュータに上記の各ステップに対応する処理を実行させるプログラムとしても実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより、提供することができる。
【発明の効果】
【００１２】
本発明によれば、ソフトウェアを実行した際における問題発生時などの特定の場面に関して、その場面を特定する情報と共に、その場面における周辺情報を容易に取得することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態が適用されるコンピュータ・システムの機能構成の一例を示す図である。
【図２】キー・テーブルの構成例を示す図である。
【図３】操作テーブルの構成例を示す図である。
【図４】周辺情報テーブルの構成例を示す図である。
【図５】周辺情報定義テーブルの構成例を示す図である。
【図６】ソフトウェア監視部の動作を示すフローチャートである。
【図７】ＪＰＥＧのテキスト・フィールドの記述例を示す図である。
【図８】周辺情報取得部の動作例を示すフローチャートである。
【図９】本実施形態による監視情報の例を示す図である。
【図１０】本実施形態のコンピュータ・システムを構成するのに好適なハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１４】
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
＜システム構成＞
図１は、本実施形態が適用されるコンピュータ・システムの機能構成の一例を示す図である。
図１に示すシステムは、テスト対象であるシステムを実現するソフトウェア（アプリケーション・プログラム、以下、対象ソフトウェアと記す）を実行するソフトウェア実行部１００と、この対象ソフトウェアの実行状態を監視するソフトウェア監視部２００と、ソフトウェア監視部２００による監視結果の情報を保持する監視情報保持部３００を備える。また、図１に示すように、本システムには、ソフトウェア実行部１００が対象ソフトウェアを実行することによって生成される画面を表示するための表示装置４００が接続されている。本実施形態では、監視情報保持部３００に保持される監視情報として、ソフトウェア実行部１００により表示装置４００に表示された画面を保存（screen capturing）して取得される画像データ（キャプチャ画像）に基づく情報が作成される。
【００１５】
ソフトウェア実行部１００は、対象ソフトウェアを実行する。この対象ソフトウェアの実行は、対象ソフトウェアのユーザが実際に対象ソフトウェアを使用する場合と同様の実行環境で行われる。ただし、本実施形態においてソフトウェア実行部１００は、ソフトウェア監視部２００が動作し、ソフトウェア実行部１００による動作を監視している環境下で、対象ソフトウェアを実行する。
【００１６】
ソフトウェア監視部２００は、図１に示すように、操作履歴取得部２１０と、画像取得部２２０と、周辺情報取得部２３０と、周辺情報データベース（ＤＢ）２４０と、保存画像処理部２５０とを備える。そして、ソフトウェア実行部１００による対象ソフトウェアの実行状態を監視し、監視情報を作成して監視情報保持部３００に格納する。
【００１７】
操作履歴取得部２１０は、ソフトウェア監視部２００による監視下で実行される、ソフトウェア実行部１００による対象ソフトウェアの実行に関するユーザの操作の履歴情報を取得し保存する。履歴として保存される対象となる操作は、対象ソフトウェアの種類やテストの内容に応じて設定される。具体的には、例えば、キーボードによるキー入力操作やマウス等のポインティング・デバイスを用いた操作等が対象となる。
【００１８】
画像取得部２２０は、監視情報保持部３００に格納する監視情報を作成するために、ソフトウェア実行部１００による対象ソフトウェアの実行に伴って表示装置４００に表示された画面の画像データを取得する。画像取得部２２０による画像データの取得は、ユーザの操作にしたがって行われる。また、対象ソフトウェアの実行中にエラーが発生した場合等のように、監視情報を取得することが望ましい何らかのイベントが発生した場合には、その発生を契機として自動的に画像データの取得を行うようにしても良い。画像データを取得する範囲は、対象ソフトウェアによる表示画面のみであっても良いし、本実施形態が適用されたコンピュータがいわゆるマルチウィンドウの表示機能を有する場合は、対象ソフトウェアによる表示画面を表示したウィンドウを含む画面全体であっても良い。
【００１９】
周辺情報取得部２３０は、画像取得部２２０によりソフトウェア実行部１００による表示画面の画像データが取得された際に、その時点での周辺情報を取得する。ここで、周辺情報とは、画像取得部２２０により画像データが取得された時点における対象ソフトウェアおよびハードウェアの状態に関する情報である。例えば、画像データが取得された時点までの対象ソフトウェアに基づく処理の履歴、対象ソフトウェアから呼び出そうとする資源（リソース）、メモリの空き容量、ＣＰＵの使用率などの情報が周辺情報とされる。なお、具体的にいずれの周辺情報を取得するかについては、対象ソフトウェアの種類やテストの内容、画像データが取得された際の状況等に応じて設定することができる。周辺情報取得部２３０の具体的な動作の内容については後述する。
【００２０】
周辺情報ＤＢ２４０は、周辺情報取得部２３０が周辺情報を取得するために参照するテーブルを格納している。図１に示す例では、周辺情報ＤＢ２４０には、キー・テーブル２４１、操作テーブル２４２、周辺情報テーブル２４３、周辺情報定義テーブル２４４が設定されている。これらのテーブルの詳細については後述する。
【００２１】
保存画像処理部２５０は、画像取得部２２０により取得された画像データに、周辺情報取得部２３０により取得された周辺情報を付加する。本実施形態では、画像データに基づく画像を表示装置４００に表示させた場合に、この画像と共に周辺情報の内容が表示されるように、周辺情報を画像データに付加する。これにより、ソフトウェア監視部２００による監視結果を閲覧したり解析したりする際には、画像データに基づく画像を表示させることにより、その画像データが取得された際の周辺情報も参照することが可能となる。画像データに周辺情報を付加するための具体的な手法については後述する。
【００２２】
監視情報保持部３００は、ソフトウェア監視部２００による監視結果として、保存画像処理部２５０により作成された、周辺情報が付加された画像データを保持する。表示装置４００は、液晶ディスプレイ等のディスプレイ装置により実現され、対象ソフトウェアを実行することにより生成される表示画面を表示する。
【００２３】
＜周辺情報ＤＢの構成例＞
図２〜図５を参照して、周辺情報ＤＢ２４０を構成するテーブルについて説明する。
上記のように、本実施形態において、周辺情報ＤＢ２４０は、キー・テーブル２４１、操作テーブル２４２、周辺情報テーブル２４３、周辺情報定義テーブル２４４の４種類のテーブルを持つものとする。
【００２４】
図２は、キー・テーブル２４１の構成例を示す図である。
図２に示すように、キー・テーブル２４１には、レコードＩＤ、エラーＩＤ、操作ＩＤの各ＩＤ（識別情報）が登録される。エラーＩＤは、対象ソフトウェアを実行中に発生したエラーを特定するＩＤである。例えば、エラーが発生したことに応じて監視情報が作成される場合は、発生したエラーを特定するために、このエラーＩＤが用いられる。操作ＩＤは、監視情報が作成する際に行われたユーザによる操作を特定するＩＤである。レコードＩＤは、キー・テーブル２４１の各レコードを示すＩＤである。キー・テーブル２４１の各レコードには、エラーＩＤのみが登録されているレコード、エラーＩＤと操作ＩＤの両方が登録されているレコード、操作ＩＤのみが登録されているレコードの三つのパターンがある。
【００２５】
図３は、操作テーブル２４２の構成例を示す図である。
図３に示すように、操作テーブル２４２には、操作ＩＤと、各操作ＩＤに対応付けられた操作の内容とが登録される。操作ＩＤにより特定される操作は、単一の操作である場合もあるし、複数の操作が所定の順番で行われたことを表す操作列（シーケンス）である場合もある。また、登録される操作の内容は、何らかの操作が行われたこと（肯定的内容）を特定するものと、行われるべき何らかの操作が行われなかったこと（否定的内容）を特定するものとがある。
【００２６】
図４は、周辺情報テーブル２４３の構成例を示す図である。
図４に示すように、周辺情報テーブル２４３には、レコードＩＤ、周辺情報ＩＤの各ＩＤが登録される。レコードＩＤは、図２に示したキー・テーブル２４１に登録されたレコードＩＤである。周辺情報ＩＤは、取得すべき周辺情報を特定するＩＤである。ここで、キー・テーブル２４１においてエラーＩＤのみが登録されたレコード（レコードＲ１とする）と、エラーＩＤと操作ＩＤとが登録されたレコード（レコードＲ２とする）とを考える。この場合、前者のレコードＲ１のレコードＩＤに対応する周辺情報ＩＤとしては、キー・テーブル２４１のレコードＲ１に登録されたエラーＩＤにより特定されるエラー（エラーＥｒ１−Ｒ１とする）の発生に関係する一つまたは複数の周辺情報（周辺情報Ｐ１−Ｒ１とする）のＩＤが登録される。
【００２７】
また、後者のレコードＲ２のレコードＩＤに対応する周辺情報ＩＤとしては、キー・テーブル２４１のレコードＲ２に登録されたエラーＩＤにより特定されるエラー（エラーＥｒ１−Ｒ２とする）の発生と、キー・テーブル２４１のレコードＲ２に登録された操作ＩＤにより特定される操作（操作Ｏｐ１−Ｒ２とする）の両方に関係する一つまたは複数の周辺情報（周辺情報Ｐ１−Ｒ２とする）のＩＤが登録される。
【００２８】
ここで、周辺情報Ｐ１−Ｒ２は、エラー（Ｅｒ１−Ｒ２）が発生し、かつ特定の操作（Ｏｐ１−Ｒ２）が行われた場合に取得されるべき周辺情報のうち、エラー（Ｅｒ１−Ｒ２）の発生のみに関係する周辺情報を除いた差分に相当する。したがって、実際に周辺情報を取得する際には、周辺情報Ｐ１−Ｒ２とエラー（Ｅｒ１−Ｒ２）の発生のみに関係する周辺情報とを取得する必要がある。例えば、エラー（Ｅｒ１−Ｒ１）とエラー（Ｅｒ１−Ｒ２）とが同一であった場合は、周辺情報Ｐ１−Ｒ１と周辺情報Ｐ１−Ｒ２の両方を取得することが必要である。
【００２９】
図５は、周辺情報定義テーブル２４４の構成例を示す図である。
図５に示すように、周辺情報定義テーブル２４４には、周辺情報ＩＤと、周辺情報ＩＤごとの周辺情報名、取得方法および表示場所とが登録される。取得方法には、周辺情報ごとの取得方法（ソフトウェア実行部１００やＯＳ（Operating System）に要求して取得する等）が記録される。表示場所は、保存画像処理部２５０により処理された画像データを表示装置４００に表示した際に周辺情報の内容が表示される場所を指定する情報が記録される。例えば、対象ソフトウェアによる表示画面に表示される特定のオブジェクトに関連する周辺情報であれば、その特定のオブジェクトの近傍等が指定される。また、メモリ容量等のように特定のオブジェクトに関連しない周辺情報であれば、表示画面上の特定の位置（右上隅や対象ソフトウェアによる表示画面を表示したウィンドウの枠外等）が指定される。
【００３０】
＜ソフトウェア監視部の動作＞
図６は、ソフトウェア監視部２００の動作を示すフローチャートである。
まず、ソフトウェア監視部２００の監視下でソフトウェア実行部１００が対象ソフトウェアの実行を開始する（ステップ６０１）。ここでは、ソフトウェア実行部１００による対象ソフトの実行をソフトウェア監視部２００が監視できれば良いので、ソフトウェア実行部１００およびソフトウェア監視部２００の実行を開始する順序等については特に限定しない。
【００３１】
この状態で、テストケースとして用意された操作手順に基づいて、テスト実施者による操作が実行され（ステップ６０２）、ソフトウェア監視部２００の操作履歴取得部２１０が、実行された操作の履歴情報を取得し保存する（ステップ６０３）。
【００３２】
この操作の実行中に、テスト実施者は、必要に応じて、対象ソフトウェアの実行に伴って表示装置４００に表示された画面を保存する操作を行い（ステップ６０４）、この操作に応じて、画像取得部２２０が、表示画面の画像データを取得する（ステップ６０５）。ここで、画像データの取得は、例えば、対象ソフトウェアの実行中にエラーが発生した場合や、明示的なエラーは発生していないが、ソフトウェア実行部１００が異常な動作をしている場合などに行われる。エラーが発生していないが異常な動作をしている場合としては、例えば、リクエストに対するレスポンスが長時間にわたって帰らない場合や、処理速度が通常と比べて極端に遅くなった場合等が考えられる。なお、これらの明瞭に異常な動作が起きている場合に限らず、テスト実施者が所望する対象ソフトウェアの実行中の任意の時点において、テスト実施者の操作に基づき、画像データの取得を行うことが可能である。
【００３３】
画像取得部２２０により画像データが取得されると、次に、周辺情報取得部２３０が、画像データが取得された時点における周辺情報を取得する（ステップ６０６）。このときに周辺情報を取得するための具体的な動作手順は、画像データが取得された時点におけるソフトウェア実行部１００の状態に応じて異なるので、その詳細については後述する。
【００３４】
周辺情報取得部２３０により周辺情報が取得されると、次に、保存画像処理部２５０が、取得された周辺情報を画像取得部２２０により取得された画像データに付加する（ステップ６０７）。周辺情報が付加された画像データは、監視情報として、監視情報保持部３００に格納される。本実施形態では、このようにして周辺情報を付加された画像データを表示装置４００に表示した際に画像データに付加されている周辺情報が表示されれば良く、周辺情報を画像データに付加するための具体的な手法については特に限定しない。ただし、周辺情報を表す文字列を画像として埋め込む処理は負荷が大きいため、画像に埋め込むテキスト・データをデータ・ファイルに記録する手段がある場合には、この手段を用いても良い。例えば、ＪＰＥＧのファイル・フォーマットには、画像上に表示するテキストを記述するための領域（テキスト・フィールド）を設けることができる。この場合、このテキスト・フィールドを用いて周辺情報を付加することができる。
【００３５】
図７は、ＪＰＥＧのテキスト・フィールドの記述例を示す図である。
図７に示す例では、取得された周辺情報ごとに「周辺情報ＩＤ」、「取得結果」、「表示場所」の各情報が、これらの情報を連結した形式で記述されている。ここで、「取得結果」は、周辺情報取得部２３０が取得した周辺情報そのものである。「表示場所」は、表示装置４００に画像データを表示した際に、テキスト・フィールドに記述された「取得結果」を表示する場所を示す情報であり、図５に例示した周辺情報定義テーブル２４４から得られる。
【００３６】
なお、上記のＪＰＥＧにおけるテキスト・フィールドのような記録手段を用いる場合、「取得結果」の内容は、テキスト・フィールドに直接記述しても良いし、所定の記憶装置に格納しておき、テキスト・フィールドにはこの記憶装置に格納された「取得結果」の内容情報へのリンクを張って、画像データから参照できるように構成としても良い。
【００３７】
＜周辺情報取得部の動作例＞
図８は、周辺情報取得部２３０の動作例を示すフローチャートである。
図８に示すように、対象ソフトウェアによる表示画面の画像データが画像取得部２２０により取得されると、周辺情報取得部２３０は、まず、エラーＩＤの取得処理を行う（ステップ８０１）。通常、ソフトウェアの実行時にエラーが発生した場合、表示画面上にエラーが発生したことを示す表示（エラー表示）が行われる。そこで、ソフトウェア実行部１００におけるこの画面の表示情報から発生したエラーのエラーＩＤを取得することができる。また、エラー表示が行われない場合（例えば、警告音や音声メッセージの出力のみである場合）であっても、ソフトウェア実行部１００から発生したエラーのエラーＩＤを取得することができる。
【００３８】
次に、周辺情報取得部２３０は、操作ＩＤの取得処理を行う（ステップ８０２）。具体的には、周辺情報取得部２３０は、操作履歴取得部２１０により取得された操作履歴に基づき、画像取得部２２０により画像データが取得される前の所定期間に行われた操作に着目する。そして、着目した操作が操作テーブル２４２に登録された操作または操作列に該当するか否かを判断する。操作テーブル２４２に該当する操作または操作列が登録されているならば、その操作または操作列に対応付けられた操作ＩＤを操作テーブル２４２から取得する。
【００３９】
なお、ステップ８０１において、周辺情報取得部２３０は、エラーＩＤを、取得できる場合と取得できない場合とがある。明示的なエラーが発生していない状態で画像取得部２２０により画像データが取得され、周辺情報取得部２３０が周辺情報を取得しようとする場合、エラーが発生していないためにエラーＩＤを取得することができない。また、ステップ８０２において、周辺情報取得部２３０は、操作ＩＤを、取得できる場合と取得できない場合とがある。すなわち、操作履歴取得部２１０から得られた画像データの取得直前の操作が操作テーブル２４２に登録されていない場合、操作ＩＤを取得することができない。また、発生したエラーの種類によっては、操作内容が問題とならないために操作ＩＤを取得する必要がない場合もある。したがって、上記ステップ８０１およびステップ８０２の各処理を経過すると、エラーＩＤのみを取得した状態と、エラーＩＤおよび操作ＩＤの両方を取得した状態と、操作ＩＤのみを取得した状態と、エラーＩＤおよび操作ＩＤのいずれも取得していない状態のいずれかとなる。
【００４０】
エラーＩＤのみを取得した場合（ステップ８０３でＹｅｓ、ステップ８０４でＮｏ）、次に周辺情報取得部２３０は、キー・テーブル２４１を参照し、取得したエラーＩＤが登録されたレコードのレコードＩＤを取得する（ステップ８０５）。そして、周辺情報テーブル２４３を参照し、ステップ８０５で取得したレコードＩＤに対応する周辺情報ＩＤを取得する（ステップ８０６）。そして、周辺情報定義テーブル２４４を参照し、ステップ８０６で取得した周辺情報ＩＤに対応付けて登録された周辺情報の取得方法に基づいて、周辺情報を取得する（ステップ８０７）。
【００４１】
以上の動作によって取得される周辺情報は、例えば、エラーが発生したプログラム・モジュールにアクセスしているプロセスの一覧、このプログラム・モジュールのバージョン情報、このプログラム・モジュールおよびこのプログラム・モジュールが存在するディレクトリへのアクセス権の情報、メモリの空き容量、ＣＰＵの使用率などである。
【００４２】
また、エラーＩＤおよび操作ＩＤの両方を取得した場合（ステップ８０３でＹｅｓ、ステップ８０４でＹｅｓ）、次に周辺情報取得部２３０は、キー・テーブル２４１を参照し、取得したエラーＩＤおよび操作ＩＤが登録されたレコードのレコードＩＤを取得する（ステップ８０８）。そして、周辺情報テーブル２４３を参照し、ステップ８０８で取得したレコードＩＤに対応する周辺情報ＩＤを取得する（ステップ８０９）。そして、周辺情報定義テーブル２４４を参照し、ステップ８０９で取得した周辺情報ＩＤに対応付けて登録された周辺情報の取得方法に基づいて、周辺情報を取得する（ステップ８１０）。
【００４３】
次に周辺情報取得部２３０は、キー・テーブル２４１を参照し、取得したエラーＩＤのみが登録されたレコードのレコードＩＤを取得する（ステップ８０５）。そして、周辺情報テーブル２４３を参照し、ステップ８０５で取得したレコードＩＤに対応する周辺情報ＩＤを取得する（ステップ８０６）。そして、周辺情報定義テーブル２４４を参照し、ステップ８０６で取得した周辺情報ＩＤに対応付けて登録された周辺情報の取得方法に基づいて、周辺情報を取得する（ステップ８０７）。
【００４４】
なお、上記の動作例では、エラーＩＤおよび操作ＩＤに基づいて周辺情報を取得する一連の動作（ステップ８０８〜８１０）の後に、エラーＩＤのみに基づいて周辺情報を取得する一連の動作（ステップ８０５〜８０７）を行うものとして説明したが、実際の処理手順は、上記の手順に限定しない。すなわち、エラーＩＤおよび操作ＩＤに基づく周辺情報とエラーＩＤのみに基づく周辺情報の両方を取得できれば良いので、エラーＩＤのみに基づく周辺情報を先に取得しても良いし、二つの動作を並行して行っても良い。
【００４５】
ここで、操作ＩＤにより特定される操作の具体例として、
・操作：項目「データベースにＤＢ２を使います」のチェックボックスをチェック。
という操作が行われた場合を考える。この場合、上記の動作によって取得される周辺情報は、エラーＩＤおよび操作ＩＤに基づく周辺情報としては、例えば、ＤＢ２のトランザクション・ログ、ＤＢ２のテーブルのスキーマ、ＤＢ２のバージョン情報などである。また、エラーＩＤのみに基づく周辺情報としては、例えば、エラーが発生したプログラム・モジュールにアクセスしているプロセスの一覧、このプログラム・モジュールのバージョン情報、このプログラム・モジュールおよびこのプログラム・モジュールが存在するディレクトリへのアクセス権の情報、メモリの空き容量、ＣＰＵの使用率などである。
【００４６】
ところで、発生したエラーが同一であっても、エラー発生前（画像取得部２２０による画像データの取得前）に行われた操作が異なっている場合があり得る。例えば、上記の場合と同一のエラーが発生し、エラー発生前に行われた操作が、
・操作１：項目「データベースにＤＢ２を使います」のチェックボックスをチェック。
・操作２：パスワード・フィールドに入力しなかった。
であった場合を考える。ここで、操作２は、否定的内容を示している。したがって、パスワード・フィールドへの入力という操作が行われた場合には、周辺情報取得部２３０の処理対象としては着目されず、入力という操作が行われなかった場合に操作２として着目される。
【００４７】
この場合、図８に示したステップ８０８〜８１０の動作では、エラーＩＤおよび操作１の操作ＩＤに基づく周辺情報の取得と、エラーＩＤおよび操作２の操作ＩＤに基づく周辺情報の取得とが行われる。したがって、取得される周辺情報は、エラーＩＤおよび操作１の操作ＩＤに基づく周辺情報としては、例えば、ＤＢ２のトランザクション・ログ、ＤＢ２のテーブルのスキーマ、ＤＢ２のバージョン情報などである。また、エラーＩＤおよび操作２の操作ＩＤに基づく周辺情報としては、例えば、パスワード・フィールドの値などである。また、エラーＩＤのみに基づく周辺情報としては、例えば、エラーが発生したプログラム・モジュールにアクセスしているプロセスの一覧、このプログラム・モジュールのバージョン情報、このプログラム・モジュールおよびこのプログラム・モジュールが存在するディレクトリへのアクセス権の情報、メモリの空き容量、ＣＰＵの使用率などである。
【００４８】
また、図８において、操作ＩＤのみを取得した場合（ステップ８０３でＮｏ、ステップ８１１でＹｅｓ）、次に周辺情報取得部２３０は、キー・テーブル２４１を参照し、取得した操作ＩＤが登録されたレコードのレコードＩＤを取得する（ステップ８１２）。そして、周辺情報テーブル２４３を参照し、ステップ８１２で取得したレコードＩＤに対応する周辺情報ＩＤを取得する（ステップ８１３）。そして、周辺情報定義テーブル２４４を参照し、ステップ８１３で取得した周辺情報ＩＤに対応付けて登録された周辺情報の取得方法に基づいて、周辺情報を取得する（ステップ８１４）。
【００４９】
ここで、操作ＩＤにより特定される操作の具体例として、
・操作：プログラムＡが表示するＯＫボタン・オブジェクトをクリック。
という操作が行われた場合を考える。この場合、上記の動作によって取得される周辺情報は、例えば、プログラムＡのログ、プログラムＡにおいて実行された全てのプロセス、メモリの空き容量、ＣＰＵの使用率などである。
【００５０】
また、図８において、エラーＩＤおよび操作ＩＤのいずれも取得しなかった場合（ステップ８０３でＮｏ、ステップ８１１でＮｏ）は、取得するべき周辺情報が無いため、周辺情報が取得されることなく周辺情報取得部２３０による処理が終了する。
【００５１】
以上のようにして取得された周辺情報は、保存画像処理部２５０により、画像取得部２２０により取得された画像データに付加される。そして、周辺情報が付加された画像データは、監視情報保持部３００に格納される。なお、周辺情報取得部２３０により周辺情報が取得されなかった場合（図８において、ステップ８０３、８１１で共にＮｏの場合）は、保存画像処理部２５０による処理は行われず、周辺情報が付加されていない画像データが監視情報保持部３００に格納される。
【００５２】
テスト結果の解析者がテスト結果を解析するために監視情報を閲覧する場合、解析対象のソフトウェアに関する監視情報として、監視情報保持部３００から周辺情報が付加された画像データが読み出され、表示装置４００に表示される。このとき、表示装置４００に表示される画像は、ソフトウェアの実行に伴って表示される画面を保存して得られた画像に周辺情報が表示されたものである。
【００５３】
図９は、監視情報の例を示す図である。
図９（ａ）は、画像取得部２２０により保存された画面の例を示す図、図９（ｂ）は、周辺情報が付加された画像の例を示す図である。図９（ｂ）に示す例では、対象ソフトウェアによる表示画面が表示されたウィンドウ９１０上のエラー・メッセージ９１１の下方に、周辺情報としてのモジュールに関する情報が記述されたテキスト・ボックス９２１が表示されている。また、ウィンドウ９１０自体の右横に、ハードウェアの情報であるメモリの空き容量およびＣＰＵの使用率が記述されたテキスト・ボックス９２２が表示されている。
【００５４】
＜ハードウェア構成例＞
図１０は、本実施形態のコンピュータ・システムを構成するのに好適なハードウェア構成例を示す図である。
図１０に示すコンピュータは、演算手段であるＣＰＵ（Central Processing Unit）１０ａと、主記憶手段であるメモリ１０ｃを備える。また、外部デバイスとして、磁気ディスク装置（ＨＤＤ：Hard Disk Drive）１０ｇ、ネットワーク・インターフェイス１０ｆ、表示機構１０ｄ、音声機構１０ｈ、キーボードやマウス等の入力デバイス１０ｉ等を備える。
【００５５】
図１０に示す構成例では、メモリ１０ｃおよび表示機構１０ｄは、システム・コントローラ１０ｂを介してＣＰＵ１０ａに接続されている。また、ネットワーク・インターフェイス１０ｆ、磁気ディスク装置１０ｇ、音声機構１０ｈおよび入力デバイス１０ｉは、Ｉ／Ｏコントローラ１０ｅを介してシステム・コントローラ１０ｂと接続されている。各構成要素は、システム・バスや入出力バス等の各種のバスによって接続される。
【００５６】
なお、図１０は、本実施形態が適用されるのに好適なコンピュータのハードウェア構成を例示するに過ぎない。本実施形態は、対象ソフトウェアの動作を監視し、特定の時点における周辺情報を取得して保持するシステムに広く適用できるものであり、図示の構成においてのみ本実施例が実現されるのではない。
【００５７】
図１０において、磁気ディスク装置１０ｇにはＯＳやアプリケーション・ソフトのプログラムが格納されている。そして、これらのプログラムがメモリ１０ｃに読み込まれてＣＰＵ１０ａに実行されることにより、本実施形態におけるソフトウェア実行部１００やソフトウェア監視部２００の各機能が実現される。また、周辺情報ＤＢ２４０および監視情報保持部３００は、メモリ１０ｃや磁気ディスク装置１０ｇ等の記憶手段により実現される。対象プログラムの操作履歴も、メモリ１０ｃ等に保持される。また、表示装置４００は、表示機構１０ｄの一部として構成される。
【符号の説明】
【００５８】
１００…ソフトウェア実行部、２００…ソフトウェア監視部、２１０…操作履歴取得部、２２０…画像取得部、２３０…周辺情報取得部、２４０…周辺情報データベース（ＤＢ）、２５０…保存画像処理部、３００…監視情報保持部、４００…表示装置
【図１】
2014182646.tif 000003
【図２】
2014182646.tif 000004
【図３】
2014182646.tif 000005
【図４】
2014182646.tif 000006
【図５】
2014182646.tif 000007
【図６】
2014182646.tif 000008
【図７】
2014182646.tif 000009
【図８】
2014182646.tif 000010
【図９】
2014182646.tif 000011
【図１０】
2014182646.tif 000012