(57)【要約】      （修正有）【課題】複数のＧＵＩテストにおけるユーザ操作シナリオをＧＵＩアプリケーションを変更しても、再利用できるようにする。【解決手段】第１のＧＵＩアプリケーション３０１の第１のＧＵＩ項目に対するユーザ操作の手順を記憶したユーザシナリオ記憶手段３０３から第１のユーザ操作シナリオを取得し、第１のユーザ操作シナリオと同じユーザ操作の手順を実施すべき第２のＧＵＩアプリケーションにおいて、ユーザ操作の手順を実施すべき、第２のＧＵＩ項目の指定を受け付ける。受け付けた第２のＧＵＩ項目と同じユーザ操作の手順で実施する第１のユーザ操作シナリオの部分を修正する箇所の選択を受け付け、受け付けたユーザ操作シナリオ修正箇所と、第１のユーザ操作シナリオとの差分情報を抽出し、抽出した差分情報と第１のユーザ操作シナリオとから、第２のＧＵＩアプリケーションで実施する第２のユーザ操作シナリオに生成する。【選択図】図３
2014067106.tif 000002
【特許請求の範囲】
【請求項１】
テスト対象であるＧＵＩアプリケーションに用いられているＧＵＩ項目に対するユーザ操作の手順を規定する情報であるユーザ操作シナリオを生成するユーザ操作シナリオ生成手段を有するＧＵＩテスト装置であって、
テスト対象である第１のＧＵＩアプリケーションの第１のＧＵＩ項目に対するユーザ操作の手順を記憶したユーザシナリオ記憶手段から第１のユーザ操作シナリオを取得するユーザ操作シナリオ取得手段と、
前記ユーザ操作シナリオ取得手段で取得した第１のユーザ操作シナリオと同じユーザ操作の手順を実施すべき第２のＧＵＩアプリケーションにおいて、前記ユーザ操作の手順を実施すべき、第２のＧＵＩ項目の指定を受け付ける修正ＧＵＩ項目受付手段と、
前記修正ＧＵＩ項目受付手段で受け付けた第２のＧＵＩ項目と同じユーザ操作の手順で実施する前記第１のユーザ操作シナリオの部分を修正する箇所の選択を受け付けるユーザ操作シナリオ修正箇所選択手段と
前記ユーザ操作シナリオ修正箇所選択手段により選択されたユーザ操作シナリオ修正箇所と、前記ユーザ操作シナリオ取得手段で取得した前記第１のユーザ操作シナリオとの差分情報を抽出し、記憶するユーザ操作シナリオ差分記憶手段と、
前記ユーザ操作シナリオ取得手段で取得した前記第１のユーザ操作シナリオに、前記ユーザ操作シナリオ差分記憶手段により記憶される差分情報を呼び出し、該第１のユーザ操作シナリオから前記第２のＧＵＩアプリケーションで実施する第２のユーザ操作シナリオに置換するユーザ操作シナリオ置換手段と、
を有することを特徴とするＧＵＩテスト装置。
【請求項２】
前記ユーザ操作シナリオ置換手段により置換された前記第２のユーザ操作シナリオに則って、前記第２のＧＵＩアプリケーションをテストするＧＵＩテスト手段を有することを特徴とする、請求項１に記載のＧＵＩテスト装置。
【請求項３】
テスト対象であるＧＵＩアプリケーションに用いられているＧＵＩ項目に対するユーザ操作の手順を規定する情報であるユーザ操作シナリオを生成するユーザ操作シナリオ生成工程を有するＧＵＩテスト装置におけるＧＵＩテスト方法であって、
テスト対象である第１のＧＵＩアプリケーションの第１のＧＵＩ項目に対するユーザ操作の手順を記憶したユーザシナリオ記憶手段から第１のユーザ操作シナリオを取得するユーザ操作シナリオ取得工程と、
前記ユーザ操作シナリオ取得工程で取得した第１のユーザ操作シナリオと同じユーザ操作の手順を実施すべき第２のＧＵＩアプリケーションにおいて、前記ユーザ操作の手順を実施すべき、第２のＧＵＩ項目の指定を受け付ける修正ＧＵＩ項目受付工程と、
前記修正ＧＵＩ項目受付工程で受け付けた第２のＧＵＩ項目と同じユーザ操作の手順で実施する前記第１のユーザ操作シナリオの部分を修正する箇所の選択を受け付けるユーザ操作シナリオ修正箇所選択工程と
前記ユーザ操作シナリオ修正箇所選択工程により選択されたユーザ操作シナリオ修正箇所と、前記ユーザ操作シナリオ取得工程で取得した前記第１のユーザ操作シナリオとの差分情報を抽出し、ユーザ操作シナリオ差分記憶手段に登録するユーザ操作シナリオ差分登録工程と、
前記ユーザ操作シナリオ取得工程で取得した前記第１のユーザ操作シナリオに、前記ユーザ操作シナリオ差分記憶手段により記憶される差分情報を呼び出し、該第１のユーザ操作シナリオから前記第２のＧＵＩアプリケーションで実施する第２のユーザ操作シナリオに置換するユーザ操作シナリオ置換工程と、
を備えることを特徴とするＧＵＩテスト方法。
【請求項４】
テスト対象であるＧＵＩアプリケーションに用いられているＧＵＩ項目に対するユーザ操作の手順を規定する情報であるユーザ操作シナリオを生成するユーザ操作シナリオ生成手段を有するＧＵＩテスト装置で読み取り実行されるプログラムであって、
前記ＧＵＩテスト装置を、
テスト対象である第１のＧＵＩアプリケーションの第１のＧＵＩ項目に対するユーザ操作の手順を記憶したユーザシナリオ記憶手段から第１のユーザ操作シナリオを取得するユーザ操作シナリオ取得手段と、
前記ユーザ操作シナリオ取得手段で取得した第１のユーザ操作シナリオと同じユーザ操作の手順を実施すべき第２のＧＵＩアプリケーションにおいて、前記ユーザ操作の手順を実施すべき、第２のＧＵＩ項目の指定を受け付ける修正ＧＵＩ項目受付手段と、
前記修正ＧＵＩ項目受付手段で受け付けた第２のＧＵＩ項目と同じユーザ操作の手順で実施する前記第１のユーザ操作シナリオの部分を修正する箇所の選択を受け付けるユーザ操作シナリオ修正箇所選択手段と
前記ユーザ操作シナリオ修正箇所選択手段により選択されたユーザ操作シナリオ修正箇所と、前記ユーザ操作シナリオ取得手段で取得した前記第１のユーザ操作シナリオとの差分情報を抽出し、記憶するユーザ操作シナリオ差分記憶手段と、
前記ユーザ操作シナリオ取得手段で取得した前記第１のユーザ操作シナリオに、前記ユーザ操作シナリオ差分記憶手段により記憶される差分情報を呼び出し、該第１のユーザ操作シナリオから前記第２のＧＵＩアプリケーションで実施する第２のユーザ操作シナリオに置換するユーザ操作シナリオ置換手段と、
して機能させる事を特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＧＵＩテスト装置およびＧＵＩテスト方法およびプログラムおよび記録媒体に関する。
【背景技術】
【０００２】
近年、ＧＵＩライブラリの複雑化や高度化に伴ない、ＧＵＩアプリケーションに対するユーザ操作のテストが非常に複雑になっている。
【０００３】
ＧＵＩアプリケーションに対するユーザ操作のテストの多くは、テスターが仕様書をもとに、ユーザ操作シナリオ（テストにおけるユーザ操作の手順を規定した情報。テスト設計）の作成を行い、テスト実施を手動または自動で行っている。
【０００４】
一般に利用されているＧＵＩテスト自動化ツールは、最初にテスターが手動で操作を行い、その操作を記録して再現するという回帰テストに利用されている。
【０００５】
なお、ＧＵＩアプリケーションに対するユーザ操作のテストに用いるユーザ操作シナリオの自動生成に関連する技術として、例えば、特許文献１には、ＧＵＩアプリケーションプログラムを解析し、ＧＵＩコンポーネントに対して可能な操作を特定して、操作シナリオを生成するＧＵＩテスト装置が記載されている。 
【特許文献１】特開２０１０−１０２６２０
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、テスト対象のＧＵＩアプリケーションのバージョンアップなどによってＧＵＩの画面配置が変更された場合、特許文献１ではそれまでに生成したテストが再利用できない場合がある。例えば、図１（ａ）（旧バージョンのソフトウェア）のように、一つのログイン項目しかなかった画面が、図１（ｂ）（新バージョンのソフトウェア）のように複数のログイン項目になった場合、特許文献１では、複数のログイン項目の内、ログイン項目ＩＤが図１（ａ）と図１（ｂ）で同じものをバージョンアップ前と同じユーザ操作シナリオで自動実行することは不可能な場合が多い。特に、図１（ｂ）のように複数のログイン項目のログイン項目ＩＤが変更されてしまうと、それまでに生成したユーザ操作シナリオは利用ができなくなり、ましてや、図１（ｂ）のように、ＷｉｎｄｏｗｓフォームＰａｎｅｌコントロールでコントロールをグループ化されている場合は、ユーザ操作シナリオの階層も変わるため、従来のユーザ操作シナリオは利用することができない。そのため、それまでに生成した複数のユーザ操作シナリオも利用することが出来なくなり、ユーザが改めて複数のユーザ操作シナリオを作成しなければならなくなる。
【０００７】
本発明は、一度作成した複数のユーザ操作シナリオをＧＵＩアプリケーションを変更しても、再利用できるようにするＧＵＩテスト装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、テスト対象であるＧＵＩアプリケーションに用いられているＧＵＩ項目に対するユーザ操作の手順を規定する情報であるユーザ操作シナリオを生成するユーザ操作シナリオ生成手段を有するＧＵＩテスト装置であって、テスト対象である第１のＧＵＩアプリケーションの第１のＧＵＩ項目に対するユーザ操作の手順を記憶したユーザシナリオ記憶手段から第１のユーザ操作シナリオを取得するユーザ操作シナリオ取得手段と、前記ユーザ操作シナリオ取得手段で取得した第１のユーザ操作シナリオと同じユーザ操作の手順を実施すべき第２のＧＵＩアプリケーションにおいて、前記ユーザ操作の手順を実施すべき、第２のＧＵＩ項目の指定を受け付ける修正ＧＵＩ項目受付手段と、前記修正ＧＵＩ項目受付手段で受け付けた第２のＧＵＩ項目と同じユーザ操作の手順で実施する前記第１のユーザ操作シナリオの部分を修正する箇所の選択を受け付けるユーザ操作シナリオ修正箇所選択手段と
【０００９】
前記ユーザ操作シナリオ修正箇所選択手段により選択されたユーザ操作シナリオ修正箇所と、前記ユーザ操作シナリオ取得手段で取得した前記第１のユーザ操作シナリオとの差分情報を抽出し、記憶するユーザ操作シナリオ差分記憶手段と、前記ユーザ操作シナリオ取得手段で取得した前記第１のユーザ操作シナリオに、前記ユーザ操作シナリオ差分記憶手段により記憶される差分情報を呼び出し、該第１のユーザ操作シナリオから前記第２のＧＵＩアプリケーションで実施する第２のユーザ操作シナリオに置換するユーザ操作シナリオ置換手段と、を備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ユーザが新バージョンのソフトウェアの修正箇所を指定するだけで、ＧＵＩテスト装置が旧バージョンのソフトウェアのユーザ操作シナリオのターゲット（ＧＵＩ項目）を自動的に変更し、ユーザはユーザ操作シナリオの操作データの操作欄（ユーザ入力やユーザ操作）やユーザ操作シナリオの制御データを変更する必要はなく、従来から使用していた複数のユーザ操作シナリオをそのまま利用することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明に係わるＧＵＩテスト装置を適応させる一例を示す画面イメージを示した模式図である。
【図２】本発明の実施形態における各種装置のハードウェア構成を示す図である。
【図３】本発明の実施形態におけるＧＵＩテスト装置２００のソフトウェア構成を示す図である。
【図４】本発明の実施形態におけるＧＵＩテスト装置２００のユーザ操作シナリオ生成の基本的な処理フローを示す図である。
【図５】本発明の実施形態におけるＧＵＩテスト装置２００のＧＵＩテストプログラムの部品認識の基本的な処理フローを示す図である。
【図６】本発明の実施形態におけるＧＵＩテスト装置２００のＧＵＩテストプログラムの部品操作認識の基本的な処理フローを示す図である。
【図７】本発明の実施形態におけるＧＵＩテスト装置２００のＧＵＩテストプログラムのユーザ操作シナリオを記憶する基本的な処理フローを示す図である。
【図８】本発明の実施形態におけるＧＵＩテスト装置２００のユーザ操作シナリオ修正の基本的な処理フローを示す図である。
【図９】本発明の実施形態におけるＧＵＩテスト装置２００のユーザ操作シナリオを修正・保存する処理フローを示す図である。
【図１０】本発明のＧＵＩテスト装置２００における処理画面イメージの一例を示す模式図である。
【図１１】本発明の実施形態におけるＧＵＩテスト装置２００のＧＵＩテストプログラムが生成するデータ構造の一例を示す模式図である。
【図１２】本発明の実施形態におけるＧＵＩテスト装置２００のＧＵＩテストプログラムが生成するデータ構造の一例を示す模式図である。
【図１３】本発明のＧＵＩテスト装置２００における処理画面イメージの一例を示す模式図である。
【図１４】本発明のＧＵＩテスト装置２００における処理画面イメージの一例を示す模式図である。
【図１５】本発明のＧＵＩテスト装置２００における処理画面イメージの一例を示す模式図である。
【図１６】本発明の実施形態におけるＧＵＩテスト装置２００のＧＵＩテストプログラムが生成するデータ構造の一例を示す模式図である。
【図１７】本発明の実施形態におけるＧＵＩテスト装置２００のＧＵＩテストプログラムが生成するデータ構造の一例を示す模式図である。
【図１８】本発明の実施形態におけるＧＵＩテスト装置２００の修正したユーザ操作シナリオを適応した処理フローを示す図である。
【図１９】本発明のＧＵＩテスト装置２００における処理画面イメージの一例を示す模式図である。
【図２０】本発明のＧＵＩテスト装置２００における処理画面イメージの一例を示す模式図である。
【発明を実施するための形態】
【００１２】
以下、本発明の解決しようとする課題を図１を参照して説明する。
【００１３】
図１は、本発明に係わるＧＵＩテスト装置を適応させる一例を示す画面イメージを示した模式図である。
【００１４】
例えば、後述するＧＵＩテスト装置２００のディスプレイ２１０に図１（ａ）のようなログイン画面１００を表示するＧＵＩアプリケーションを、図１（ｂ）のようなログイン画面１１０を表示するＧＵＩアプリケーションにバージョンアップした際に、ログイン画面１００でユーザが作成したユーザ操作シナリオを適応させる場合を説明する。
【００１５】
図１（ａ）のようなログイン画面１００を有するＧＵＩアプリケーションが、ＧＵＩアプリケーションのバージョンアップに伴い、図１（ｂ）のようなログイン画面１１０を有する、個別のアプリケーション毎にログイン入力欄を設置したＧＵＩアプリケーションに変更されている。
【００１６】
なお、従来のログイン画面図１（ａ）の入力欄は個別のアプリケーションの内、作業者ログイン項目１１１に継続されているとする。
【００１７】
上記の場合に従来のＧＵＩテスト装置でログイン画面１００に対応するユーザ操作シナリオをログイン画面１１０に適応すると、ユーザ操作シナリオは、管理者ログイン項目１１２に適応されてしまい、今回のＧＵＩアプリケーションのようにログイン画面の配置が変わった場合に対応するユーザ操作シナリオを適応できない場合がある。
【００１８】
従来のＧＵＩテスト装置の場合は、このような場合には、新たにユーザの操作の手順をもう一度入力させて対応するか、もしくはユーザ操作シナリオのソースコードをバージョンアップしたＧＵＩアプリケーションのＧＵＩコンポーネント（この場合、作業者ログイン画面１１１）に対応するコードに変更する必要があった。
【００１９】
上記課題を解決するための、本発明の実施の形態を図面を参照して説明する。
【００２０】
次に、図２を参照して、図１に示したＧＵＩテスト装置２００のハードウェア構成について説明する。
【００２１】
図２は、本発明の実施形態における各種装置のハードウェア構成を示す図である。
【００２２】
ＣＰＵ２０１は、システムバス２０４に接続される各デバイスやコントローラを統括的に制御する。
【００２３】
また、ＲＯＭ２０２あるいは外部メモリ２１１には、ＣＰＵ２０１の制御プログラムであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  ／  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）やオペレーティングシステムプログラム（以下、ＯＳ）や、各サーバ或いは各ＰＣの実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。ＲＡＭ２０３は、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する。
【００２４】
ＣＰＵ２０１は、処理の実行に際して必要なプログラム等をＲＡＭ２０３にロードして、プログラムを実行することで各種動作を実現するものである。
【００２５】
また、入力コントローラ（入力Ｃ）２０５は、キーボード２０９や不図示のマウス等のポインティングデバイスからの入力を制御する。
【００２６】
ビデオコントローラ（ＶＣ）２０６は、ディスプレイ２１０等の表示器への表示を制御する。表示器はＣＲＴでも良いし、液晶ディスプレイでも構わない。
【００２７】
メモリコントローラ（ＭＣ）２０７は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク（ＨＤ）やフレキシブルディスク或いはＰＣＭＣＩＡカードスロットにアダプタを介して接続されるコンパクトフラッシュ（登録商標）メモリ等の外部メモリ２１１へのアクセスを制御する。
【００２８】
通信Ｉ／Ｆコントローラ（通信Ｉ／ＦＣ）２０８は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、ＴＣＰ／ＩＰを用いたインターネット通信等が可能である。
【００２９】
なお、ＣＰＵ２０１は、例えばＲＡＭ２０３内の表示情報用領域へアウトラインフォントの展開（ラスタライズ）処理を実行することにより、ディスプレイ２１０上での表示を可能としている。また、ＣＰＵ２０１は、ディスプレイ２１０上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【００３０】
本発明を実現するためのプログラムは外部メモリ２１１に記録されており、必要に応じてＲＡＭ２０３にロードされることによりＣＰＵ２０１によって実行されるものである。さらに、本発明で生成されるプログラムやプロキシクラスファイル、プログラムが用いる定義ファイル及び各種情報テーブルは外部メモリ２１１に格納されており、これらについての詳細な説明は後述する。
【００３１】
なお、図１の構成は一例であり、用途や目的に応じて様々な構成例があることは云うまでもない。その他の構成例として、ＧＵＩテスト装置が、ネットワークと接続され、通信可能な不図示のパーソナルコンピュータ等の情報処理装置からプログラム生成命令を受けることによって、プログラムの生成を行うことも可能である。
【００３２】
すなわち、本発明の機能が実現されるものであれば、単体の機器であっても、複数の機器からなるシステムであっても、ネットワークを介して処理が行われるシステムであっても本発明を適用することができる。
【００３３】
また、ここで、ハードディスクドライブ（ＨＤＤ）等の外部メモリ２１１に記憶された情報は、それぞれデータベース（ＤＢ）等に格納されていても良い。
【００３４】
次に、図３を参照して、図１に示したＧＵＩテスト装置２００のソフトウェア構成について説明する。
【００３５】
図３は、本発明の実施形態におけるＧＵＩテスト装置２００のソフトウェア構成を示す図である。
【００３６】
図３のＧＵＩテスト装置２００は、ＧＵＩアプリケーション３０１を有しており、このＧＵＩアプリケーションをユーザが定義したシナリオ（ユーザ操作シナリオ）に則ってテストを行い、ＧＵＩアプリケーションが正常に動作するかを確認する装置である。なお、以下の実施例では、ＧＵＩアプリケーションはＧＵＩテスト装置が有している構成で記載しているが、ＧＵＩアプリケーションは他のサーバなどが有していて、ネットワーク経由でＧＵＩのみをＧＵＩテスト装置でテストする構成でも良い。
【００３７】
なお、ＧＵＩアプリケーションとして以下の実施例では、旧バージョンのソフトウェアと新バージョンのソフトウェアということで２つのバージョンを有するアプリケーションを考慮しているが、必ずしも新旧のバージョンのソフトウェアである必要はなく。ユーザが定義したシナリオ（ユーザ操作シナリオ）が同じになるべき入力項目を有するソフトウェアであれば、新旧は問わない。
【００３８】
また、ＧＵＩテスト装置２００は、ユーザ操作シナリオ生成部３０２を有していて、ユーザが一度実施したテストシナリオを自動的に生成し、ユーザ操作シナリオ記憶部３０３に記憶する。
【００３９】
また、ＧＵＩテスト装置２００は、ユーザ操作シナリオ取得部３０４を有しており、ユーザ操作シナリオ記憶部３０３で記憶されたユーザ操作シナリオを取得する。
【００４０】
また、ＧＵＩテスト装置２００は、修正ＧＵＩ項目受付部３０５を有しており、ＧＵＩアプリケーション３０１によりディスプレイ２１０に表示された新バージョンのソフトウェアについて、旧バージョンのソフトウェアと同じユーザ操作シナリオを実行する項目の指定を受け付ける。
【００４１】
また、ＧＵＩテスト装置２００は、ユーザ操作シナリオ修正箇所選択部３０６を有しており、ユーザ操作シナリオ取得部３０４で取得したユーザ操作シナリオのうち、新バージョンのソフトウェアに当てはめる操作箇所の選択をユーザから受け付ける。
【００４２】
また、ＧＵＩテスト装置２００は、ユーザ操作シナリオ差分記憶部３０７を有しており、ユーザ操作シナリオ取得部３０４で取得した旧バージョンのソフトウェアのユーザ操作シナリオの操作を、修正ＧＵＩ項目受付部３０５で受け付けた新バージョンのソフトウェアのＧＵＩ項目に対するユーザ操作シナリオの操作へ置換するための差分情報を記憶している。
【００４３】
また、ＧＵＩテスト装置２００は，ユーザ操作シナリオ置換部３０８を有し、ユーザ操作シナリオ差分記憶部３０７で記憶した差分情報を、修正ＧＵＩ項目受付部３０５で受け付けた新バージョンのソフトウェアのＧＵＩ項目に対するユーザ操作シナリオの操作へ置換している。
【００４４】
また、ＧＵＩテスト装置２００は、ＧＵＩテスト部３０９を有し、ユーザ操作シナリオ置換部３０８で置換したユーザ操作シナリオやユーザ操作シナリオ生成部３０２で生成したユーザ操作シナリオなどに則ってＧＵＩアプリケーションのテストを実行する。
【００４５】
次に、ＧＵＩテスト装置２００の基本的な処理フローについて、図４を参照して説明する。
【００４６】
図４は、本発明の実施形態におけるＧＵＩテスト装置２００のユーザ操作シナリオ生成の基本的な処理フローを示す図である。なお、図４のフローチャートはＧＵＩテスト装置２００のＣＰＵ２０１により実行されるものであり、図中のＳ４０１からＳ４０９はそれぞれの処理ステップを示す。
【００４７】
図４のフローチャートは、ＧＵＩテスト装置２００において、テストユーザがＧＵＩアプリケーションのユーザ操作シナリオを生成しようとする際に開始される。
【００４８】
図４のステップＳ４０１において、開発者ユーザはＧＵＩテストプログラムを起動すると、ＧＵＩテスト装置２００のＣＰＵ２０１は、図１０のＵＩ画面１０００のような起動画面を生成し、ディスプレイ２１０に表示する。
【００４９】
図１０は、本発明のＧＵＩテスト装置２００における処理画面イメージの一例を示す模式図である。
【００５０】
次に、図４のステップＳ４０２において、開発者ユーザはＧＵＩテストプログラムを実施する対象のソフトウェア（アプリケーション）を起動する。起動されたＧＵＩアプリケーションの例を図１０の１０１０を参照して説明する。
【００５１】
図１０の１０１０は、ユーザのログイン画面の例である。ユーザＩＤ入力欄「ＩＤ」１０１１にユーザＩＤを入力し、パスワード入力欄「Ｐａｓｓｗｏｒｄ」１０１２にユーザＩＤに対応するパスワードを入力、「ＯＫ」ボタン１０１３を押下すると、ＧＵＩアプリケーションのログインプログラムが、端末のＣＰＵやサーバにユーザＩＤとパスワードを送信し、端末のＣＰＵやサーバが認証確認を行う。認証ＯＫであれば、次のプログラムやアプリケーションへ移行するＧＵＩアプリケーションの例である。図４のフローチャートの説明に戻る。
【００５２】
次に図４のステップＳ４０３において、開発者ユーザはステップＳ４０２で起動されたＧＵＩアプリケーションのテストする項目を選択する。ＧＵＩアプリケーションのテストする項目を選択する例を図１０の１０１０を参照して説明する。
【００５３】
図１０の１０１０の例において、開発者ユーザは、ユーザＩＤ入力欄「ＩＤ」１０１１にユーザＩＤを入力すると、オートコンプリート機能によりパスワード入力欄「Ｐａｓｓｗｏｒｄ」１０１２に自動的にユーザＩＤに対応した値が入力される機能をテストする。
【００５４】
図１０の１０１０がディスプレイ２１０に表示されている状態で図示しないマウスなどにより、マウスポインタ１０１４を図１０の１０１０内のように移動させ、クリックもしくはＣＴＲＬキーなどを押下すると、ＧＵＩテスト装置２００のＣＰＵ２０１は、これからテストするＧＵＩアプリケーションが何で、どのコンポーネント（テキスト入力欄やボタンなど）が選択されたかを認識する（ステップＳ４０４）。ステップＳ４０３とステップＳ４０４を図５を参照して説明する。
【００５５】
図５は、本発明の実施形態におけるＧＵＩテスト装置２００のＧＵＩテストプログラムの部品認識の基本的な処理フローを示す図である。なお、図５のフローチャートはＧＵＩテスト装置２００のＣＰＵ２０１により実行されるものであり、図中のＳ５０１からＳ５０８はそれぞれの処理ステップを示す。
【００５６】
図５のフローチャートは、図４のステップＳ４０３の処理に移行すると開始される。
【００５７】
まず、ステップＳ５０１において、ＧＵＩテスト装置のＣＰＵ２０１は、マウスカーソルのディスプレイ２１０上での位置を取得し、ステップＳ５０２において、ステップＳ５０１上で取得した位置にある最も上にある（もっとも表面にある）部品情報を取得する。部品情報を取得した例を図１１を参照して説明する。
【００５８】
図１１は、本発明の実施形態におけるＧＵＩテスト装置２００のＧＵＩテストプログラムが生成するデータ構造の一例を示す模式図である。
【００５９】
図１１の１１００は一つのＧＵＩ操作に対応する操作データ１１０１と制御データ１１０２を有し、操作データ１１０１は、操作するコンポーネントの特定（ターゲット１１０３）やテストの際に操作される値（操作１１０４）を記憶したデータであり、制御データ１１０２は、操作データの操作ＩＤ１１０５の実行順序を制御する順番を記憶する。
【００６０】
図５のステップＳ５０２において、取得する部品情報の例が、図１１の１１０６の範囲に記述されている。記述の例を簡単に説明する。
【００６１】
１１０６内に記載されている『ＣＬＡＳＳ：ＷｉｎｄｏｕｓＦｏｒｍ．ＥＤＩＴ』とは、マウスで指定されたコンポーネントが編集可能なクラスであり、『ＴＹＰＥ：Ｅｄｉｔ』とは、ユーザが編集可能な項目タイプであることを示す。『ＮＵＭ：１』とは、マウスで指定されたコンポーネントが親コンポーネントの中で何回目に現れたかを示す。図１０の１０１０におけるマウスポインタ１０１４で指定されたテキスト入力項目は「テストアプリケーション」１０１０において最初に表示されているテキスト入力項目、すなわち『ＴＹＰＥ：Ｅｄｉｔ』項目タイプであるため、『ＮＵＭ：１』と指定されている。図５のフローチャートの説明に戻る。
【００６２】
図５のステップＳ５０２において、ＧＵＩテスト装置２００のＣＰＵ２０１は、マウスカーソルの位置の最も上にある部品情報を取得すると、ステップＳ５０３において、ＧＵＩテスト装置２００のＣＰＵ２０１は、取得部品情報がデスクトップになるまで、親コンポーネントを手繰るルーチンに入る。
【００６３】
次に、ステップＳ５０４において、ＧＵＩテスト装置２００のＣＰＵ２０１は、取得した部品情報を階層構造の一階層として記憶する。具体的には、図１１の１１０６のようなイメージでデータを階層構造に記憶する。
【００６４】
次に、ステップＳ５０５において、ＧＵＩテスト装置２００のＣＰＵ２０１は、ステップＳ５０４で取得したコンポーネントの親コンポーネントを次に取得する部品とし、ステップＳ５０６においてステップＳ５０３からのループを繰り返す。ステップＳ５０３からステップＳ５０６の処理を繰り返し、コンポーネントの『ＴＹＰＥ：Ｄｅｓｋｔｏｐ』（例：１１０７）となるまで階層構造に記憶する。
【００６５】
次に、ステップＳ５０３からＳ５０６のループが終了すると、ステップＳ５０７へと処理を移行し、ステップＳ５０７において、ＧＵＩテスト装置２００のＣＰＵ２０１は、図１０のＧＵＩテストプログラム内のＵＩ画面１０００に１００１のようなツリー構造にコンポーネントを配置した図を表示する。その際にマウスで指定されたコンポーネントは１００２のように強調されて表示する。
【００６６】
次に、ステップＳ５０８において、ＧＵＩテスト装置２００のＣＰＵ２０１は、全コンポーネントの操作のうち、マウスで指定されたコンポーネントで操作可能な操作（例えば、「文字入力」や「マウスクリック」、「値設定」など）を図１０のＧＵＩテストプログラム内のＵＩ画面１０００に１００３のようなボタンとして配置し、ユーザが選択できるように表示する。１００３は全コンポーネントの操作を表示しており、その中でもステップＳ４０３でマウスにより指定されたコンポーネントの操作可能な操作のみアクティブ化して表示している。アクティブ化しているボタンの例として、１００４の「文字入力」や１００８の「マウスクリック」などがある。以上で図５のフローチャートの処理を終わり、図４のフローチャートの説明に戻る。
【００６７】
図４のステップＳ４０４において、ステップＳ４０３でマウスにより指定されたコンポーネント（部品）で操作可能な操作を１００３のようにボタンで表示している状態で、ステップＳ４０５の処理に移行する。ステップＳ４０５において、開発者ユーザは、テストするべき操作を１００３のボタンを選ぶことにより、ＧＵＩテスト装置２００のＣＰＵ２０１は、ステップＳ４０３でマウスにより指定された部品でテストするべき操作を受け付ける。
【００６８】
次に、ステップＳ４０６へと処理を移行する。ステップＳ４０６の詳細な処理を図６を参照して説明する。
【００６９】
図６は、本発明の実施形態におけるＧＵＩテスト装置２００のＧＵＩテストプログラムの部品操作認識の基本的な処理フローを示す図である。なお、図６のフローチャートはＧＵＩテスト装置２００のＣＰＵ２０１により実行されるものであり、図中のＳ６０１からＳ６０７はそれぞれの処理ステップを示す。
【００７０】
図６のフローチャートは、図４のステップＳ４０６の処理に移行すると開始される。
【００７１】
まず、ステップＳ６０１において、ＧＵＩテスト装置のＣＰＵ２０１は、ステップＳ４０５でユーザから選択された操作に情報が必要かどうかを確認する。ステップＳ６０１での情報とは、例えば、文字入力項目に対する文字入力やドロップダウン項目におけるリスト選択などである。逆に、情報が必要ではないコンポーネントの操作として、ラジオボタンやチェックボックスなどがある。
【００７２】
次に、ステップＳ６０２において、ＧＵＩテスト装置２００のＣＰＵ２０１は、ステップＳ４０５でユーザから選択された操作に情報が必要かどうかの判断をする。ユーザから選択された操作に情報が必要ではないと判断された場合はステップＳ６０４へと処理を移行し、ユーザから選択された操作に情報が必要と判断された場合は、ステップＳ６０３へと処理を移行する。
【００７３】
ステップＳ６０３では、ユーザからの入力が必要になるので、ＧＵＩテスト装置２００のＣＰＵ２０１は、図１０の１００５のような入力画面を表示し、ユーザからの入力を促す。図１０の１００５の例では、文字入力項目であり、１００６欄に文字を入力（例えばユーザ名がｔｅｓｔであれば、「ｔｅｓｔ」と入力）する。その後、ＯＫボタン１００７を押下すると、入力された値をＧＵＩテスト装置２００のＲＡＭ２０３などに記憶する。以上の処理が失敗なく実行できれば、ステップＳ６０６において、図１１の１１０４のようなデータが作成される。１１０４には、１００５の例では、文字入力操作であるので『ＫＩＮＤ：ＩＮＰＵＴ』となり、具体的な入力値として『ＶＡＬＵＥ：ｔｅｓｔ』が作成される。
【００７４】
次に、ステップＳ６０４において、ＧＵＩテスト装置２００のＣＰＵ２０１は、ステップＳ４０３でユーザにより指定されたＧＵＩアプリケーションの部品（コンポーネント）に、ステップＳ４０５で指定された操作と、必要であればステップＳ６０３で入力された値を使用して、テストするべきＧＵＩアプリケーションに操作を実行もしくは値を入力する。
【００７５】
次に、ステップＳ６０５において、ＧＵＩテスト装置２００のＣＰＵ２０１は、ステップＳ６０４にて実行したＧＵＩアプリケーションの結果を取得し、操作が成功したか失敗したかを判断する。操作が成功した場合は、次にステップＳ６０６の処理へと移行し、操作が失敗した場合は、ステップＳ６０７の処理へと移行する。
【００７６】
ステップＳ６０６において、ＧＵＩテスト装置２００のＣＰＵ２０１は、ステップＳ４０４の部品認識処理で認識された部品を図１１の１１００内の「ターゲット」１１０８として、ステップＳ４０６の部品操作処理により指定された操作を１１００内の「操作」１１０９とする操作データを作成し、図６の処理を終える。
【００７７】
一方、ステップＳ６０７へと処理が移行された場合、操作失敗ダイアログを表示し、図６の処理を終える。図４のフローチャートの説明に戻る。
【００７８】
図４のステップＳ４０６において、部品操作、すなわちユーザ操作シナリオの一部分が実行されると、その実行結果を図６のステップＳ６０５の処理から取得し、次のステップＳ４０７において、ＧＵＩテスト装置２００のＣＰＵ２０１は、ステップＳ４０６の処理が失敗したかどうかを判断する。ステップＳ４０６の処理が成功していれば、次のステップＳ４０８へと移行し、ステップＳ４０６の処理が失敗していれば、ステップＳ４０５の処理、もしくはステップＳ４０３の処理へと移行する。図４では、ユーザのユーザ操作シナリオの操作ミスを想定して、ステップＳ４０５の処理へ戻っているが、ユーザのユーザ操作シナリオの部品指定ミスを想定して、ステップＳ４０３の処理へ戻すようにしてもよい。
【００７９】
ステップＳ４０７で失敗した場合の処理を分けることにより、ユーザ操作シナリオ作成時に実行できないシナリオを生成しないようにする効果がある。
【００８０】
次にステップＳ４０８において、全ての操作が終了したかをユーザに判断させるために、ＧＵＩテスト装置２００のＣＰＵ２０１は、図示しない操作を継続するか終了するかを入力する画面を生成し、ユーザの入力を待つ。ステップＳ４０８において、操作が終了したと判断された場合はステップＳ４０９へと処理を移行し、一方、ユーザにより操作が終了していないと判断された場合はステップＳ４０３まで処理を戻してユーザ操作シナリオの生成を続行する。操作が終了しないで、継続して操作を受け付ける場合を、図１０および図１２を参照して説明する。
【００８１】
図１２は、本発明の実施形態におけるＧＵＩテスト装置２００のＧＵＩテストプログラムが生成するデータ構造の一例を示す模式図である。
【００８２】
図１２の１２００は、ユーザ操作シナリオの一例であり、ステップＳ４０９が終了した段階で作成されるデータ構造になる。
【００８３】
図１２の１２０１は図１１の１１００と同様に生成されるので、説明を省略する。１２０２は、図１０の１０１０において、ＩＤ欄１０１１を入力した後でＯＫボタン１０１３が押下される例として説明した図である。
【００８４】
１２０２を生成する際には、図１１の１１００と同様に、ステップＳ４０３においてマウスポインタ１０１４をユーザがＯＫボタン１０１３上に移動させ、ステップＳ４０４においてユーザ操作として、図１０の「マウスクリック」ボタン１００８を押下する。前記操作は、ＯＫボタンがＢＵＴＴＯＮクラスであり、ユーザ操作はマウスクリックによるログイン処理の呼び出しになる。従って、ターゲットとしては『ＣＬＡＳＳ：ＷｉｎｄｏｕｓＦｏｒｍ．ＢＵＴＴＯＮ』というクラスであり、『ＴＹＰＥ：Ｂｕｔｔｏｎ』より項目タイプはボタン、表示されている順番は１番目であるため、『ＮＵＭ：１』というデータが作成される。また、「操作」欄１２０４は、マウスクリックによるログイン処理の呼び出しであるので、『ＫＩＮＤ：ＩＮＶＯＫＥ』となる。
【００８５】
以上の処理を操作の数だけ繰り返す処理をステップＳ４０３からステップＳ４０８において繰り返し、操作が終了したとユーザが判断すると、ステップＳ４０９の処理へ移行する。図４のフローチャートの説明に戻る。
【００８６】
図４のステップＳ４０９において、ＧＵＩテスト装置２００のＣＰＵ２０１は、ステップＳ４０６で作成された操作データ（図１２の１２０１や１２０２）や制御データ（図１２の１２０５）を記憶する。ステップＳ４０９の処理を図７を参照して説明する。
【００８７】
図７は、本発明の実施形態におけるＧＵＩテスト装置２００のＧＵＩテストプログラムのユーザ操作シナリオを記憶する基本的な処理フローを示す図である。なお、図７のフローチャートはＧＵＩテスト装置２００のＣＰＵ２０１により実行されるものであり、図中のＳ７０１からＳ７０５はそれぞれの処理ステップを示す。
【００８８】
図７のフローチャートは、図４のステップＳ４０９の処理に移行すると開始される。
【００８９】
まず、ステップＳ７０１において、ＧＵＩテスト装置のＣＰＵ２０１は、ステップＳ４０８によって繰り返された操作回数分、ステップＳ７０２とステップＳ７０３の処理を繰り返す。
【００９０】
次に、ステップＳ７０２において、ＧＵＩテスト装置２００のＣＰＵ２０１は、ステップＳ４０５での操作に対応する操作ＩＤを付与する。具体的に図１２を参照して説明する。
【００９１】
図１２の操作ＩＤ欄１２０６に『操作１』と付与されたユニークな操作ＩＤが、１２０１の操作データに対する付与された操作ＩＤであり、同様に操作ＩＤ欄１２０７に『操作２』と付与された操作ＩＤが、１２０２の操作データに対する付与された操作ＩＤである。
【００９２】
次に、ステップＳ７０３において、ＧＵＩテスト装置２００のＣＰＵ２０１は、ステップＳ７０２で付与された操作ＩＤに対応するステップＳ６０６で作成された操作データをユーザ操作シナリオとして記憶する。具体的に図１２を参照して説明する。
【００９３】
図１２の操作ＩＤ欄１２０６が『操作１』の操作データに対しては、対応する１２０１の操作データを記憶し、操作ＩＤ欄１２０７が『操作２』の操作データに対しては、対応する１２０２の操作データを記憶する。このように、複数の操作が続く場合はユーザ操作シナリオとして、それぞれの操作データを記憶する。
【００９４】
次に、ステップＳ７０４において、ＧＵＩテスト装置２００のＣＰＵ２０１は、ステップＳ４０８によって繰り返された操作回数分、ステップＳ７０２とステップＳ７０３の処理を繰り返す。
【００９５】
次に、ステップＳ７０５において、ＧＵＩテスト装置２００のＣＰＵ２０１は、これらの操作の手順を記憶するための制御データを記憶する。具体的に図１２を参照して説明する。
【００９６】
図１２の制御データ欄１２０５には、それぞれの操作に対する処理や次の操作などが定義されている。まず、『ＴＹＰＥ：ＳＴＡＲＴ』である１２０８により操作が開始され、『ＮＥＸＴ』要素に次に遷移する操作の制御ＩＤ『制御１』などが定義される。次に制御ＩＤが『制御１』である操作として、１２０９には『ＴＹＰＥ：ＣＯＮＴＲＯＬ』が定義されている。『ＴＹＰＥ：ＣＯＮＴＲＯＬ』の場合は、『ＣＴＲＬ』タグが存在し、『ＣＴＲＬ』タグで、ステップＳ７０２で定義した操作ＩＤを入力している。１２０９の場合、『ＣＴＲＬ：操作１』と定義されているので、操作ＩＤが『操作１』である１２０６の操作をまず実行する。１２０９の操作の次は『ＮＥＸＴ：制御２』と定義されているので、次に遷移する制御ＩＤは『制御２』の１２１０である。制御ＩＤが『制御２』である１２１０の操作は、『ＣＴＲＬ：操作２』となっているので、操作ＩＤが『操作２』である１２０７の操作を実行する。その後、１２１０の操作の次は『ＮＥＸＴ：制御３』と定義されているので、次に遷移する制御ＩＤは『制御３』の１２１１である。制御ＩＤが『制御３』である１２１１の『ＴＹＰＥ』タグは『ＥＮＤ』と定義されており、『ＴＹＰＥ：ＥＮＤ』タグで一連の操作を終了する。
【００９７】
以上の図１２の１２０５の制御データの定義をステップＳ７０５の中で定義して、ユーザ操作シナリオとして記憶する。
【００９８】
なお、制御データには他にも条件分岐やタイムアウト制御、ループ制御なども記載可能である。
以上の処理により、図４のフローチャートの処理が終了する。
【００９９】
次に、ＧＵＩアプリケーションが変更（バージョンアップなど）された場合のユーザ操作シナリオの修正処理の手順を図８を参照して説明する。
【０１００】
図８は、本発明の実施形態におけるＧＵＩテスト装置２００のユーザ操作シナリオ修正の基本的な処理フローを示す図である。なお、図８のフローチャートはＧＵＩテスト装置２００のＣＰＵ２０１により実行されるものであり、図中のＳ８０１からＳ８１１はそれぞれの処理ステップを示す。
【０１０１】
図８のフローチャートは、ＧＵＩテスト装置２００において、ＧＵＩアプリケーションが変更された際に従来のユーザ操作シナリオを修正することで対応するために実施される処理である。
【０１０２】
図８のステップＳ８０１において、開発者ユーザはＧＵＩテストプログラムを起動する。ＧＵＩテスト装置２００のＣＰＵ２０１は、図１３のＵＩ画面１３００のような起動画面を生成し、ディスプレイ２１０に表示する。
【０１０３】
図１３は、本発明のＧＵＩテスト装置２００における処理画面イメージの一例を示す模式図である。
【０１０４】
次に、ステップＳ８０２において、従来作成したユーザ操作シナリオをＧＵＩテスト装置に読み込ませるため、ＧＵＩテスト装置２００のＣＰＵ２０１は、図示しないユーザ操作シナリオ読み込み画面を生成し、ユーザにより選択されたユーザ操作シナリオを読み込む。読み込んだ結果の図が図１３の１３１０である。１３１０内のボックス１３１１などは、ユーザ操作シナリオで定義された一つの操作に該当する。
【０１０５】
次に、ステップＳ８０３において、開発者ユーザは変更されたＧＵＩアプリケーションを起動する。ＧＵＩテスト装置２００のＣＰＵ２０１は、例えば、図１４の１４００のような変更されたＧＵＩアプリケーションの画面をディスプレイ２１０に表示する。
【０１０６】
図１４は、本発明のＧＵＩテスト装置２００における処理画面イメージの一例を示す模式図である。
【０１０７】
図１４の１４００は、図１で説明した１１０と同様であり、従来のログイン画面は１４０１の作業者ログイン項目に該当する。
【０１０８】
なお、ステップＳ８０２およびステップＳ８０３の処理順序はどちらが先でもかまわない。
【０１０９】
次に、ステップＳ８０４において、ＧＵＩテスト装置２００のＣＰＵ２０１は、ステップＳ８０２において取得したユーザ操作シナリオを図１３の１３１０のように表示し、開発者ユーザは、表示されたユーザ操作シナリオ１３１０から、新バージョンのソフトウェアが対応するシナリオ修正箇所（例えば、１３１１の操作）を選択する。選択された１３１１を図１５を参照して説明する。
【０１１０】
図１５は、本発明のＧＵＩテスト装置２００における処理画面イメージの一例を示す模式図である。
【０１１１】
図１５の１５００は、図１３のユーザ操作シナリオの一つの操作１３１１を拡大した図である。１５００内の１５０１である修正ボタンが押下されると、１５１０のようなＧＵＩテストプログラムの画面へと遷移する。この場合、操作可能な操作のボタン１５１１の欄は、開発者ユーザがユーザ操作シナリオで指定した操作だけになるので、操作可能な操作ボタンとしては、１５１２のように、ユーザ操作シナリオに登録された操作ボタンのみがアクティブ化されている。図８のフローチャートの説明に戻る。
【０１１２】
次に、ステップＳ８０５において、開発者ユーザは、ステップＳ８０３で起動した新バージョンのソフトウェアの操作シナリオを記録する項目を選択する。具体的に図１４を参照して説明する。
【０１１３】
図１４の１４１０は、ユーザにより選択されるログイン項目の例であり、１４１１のマウスポインタで選択された作業者ログイン項目のＩＤ入力欄１４１２が、ユーザ操作シナリオで作成されたステップＳ８０４で指定したユーザ操作シナリオの操作に該当する。従って、ＧＵＩテスト装置２００のＣＰＵ２０１は、図４のステップＳ４０４と同じように、作業者ログイン項目のＩＤ入力欄１４１２の部品を認識する（ステップＳ８０６）。ステップＳ８０６の処理は、図４のステップＳ４０４の処理と同様なので説明を省略する。なお、ステップＳ４０４との処理の違いは、図１５の１５１１で説明したとおり、ユーザ操作シナリオに則った操作のみがアクティブ化されているので、図１５の１５１２の表示と同様に、新たに認識された部品の操作に対応するボタンも、１４２１のようにアクティブ化されているボタンは一つだけとなる。図８のフローチャートの説明に戻る。
【０１１４】
次に、ステップＳ８０７において、開発者ユーザは、操作に対応するボタンを選択する。ここで、ステップＳ８０６の処理でアクティブ化されている操作に対応するボタンは一つだけ（図１４の１４２０の場合は、１４２１）なので、この唯一のボタンを開発者ユーザが押下する。なお、ステップＳ８０７においては、押下するボタンが唯一のボタンなので、ステップＳ８０７の処理を飛ばして次のステップＳ８０８の処理へ進んでも良い。
【０１１５】
次に、ステップＳ８０８において、ＧＵＩテスト装置２００のＣＰＵ２０１は、ユーザ操作シナリオに登録されている「操作」欄１１０４を新バージョンのソフトウェアに実行し、その処理結果をステップＳ８０９で判定する。ステップＳ８０９において、ステップＳ８０８の操作が失敗した場合、ステップＳ８０５へと処理を戻し、ステップＳ８０５において、新バージョンのソフトウェアの操作記録位置を再設定し直す。なお、ステップＳ８０９において、操作に失敗した場合、ステップＳ８０４に処理を移行しても良い。
【０１１６】
一方、ステップＳ８０９において、ユーザ操作シナリオに登録されている操作を新バージョンのソフトウェアに実行し、その処理結果が成功した場合は、次のステップＳ８１０へと処理を移行する。
【０１１７】
ステップＳ８１０において、ＧＵＩテスト装置２００のＣＰＵ２０１は、開発者ユーザに図示しない修正完了か否かの入力画面を表示し、ユーザ操作シナリオの修正が完了かそうでないかを判断させる。ユーザ操作シナリオの修正が終わりであれば、ステップＳ８１１へと処理を移行し、ユーザ操作シナリオの修正が継続する場合は、ステップＳ８０４へと処理を戻し、ユーザ操作シナリオの修正箇所を指定する処理を続ける。
【０１１８】
次にステップＳ８１１において、ＧＵＩテスト装置２００のＣＰＵ２０１は、修正したユーザ操作シナリオを保存する処理を行う。
ステップＳ８１１の処理を図９を参照して説明する。
【０１１９】
図９は、本発明の実施形態におけるＧＵＩテスト装置２００のユーザ操作シナリオを修正・保存する処理フローを示す図である。なお、図９のフローチャートはＧＵＩテスト装置２００のＣＰＵ２０１により実行されるものであり、図中のＳ９０１からＳ９０５はそれぞれの処理ステップを示す。
【０１２０】
図９のフローチャートは、図４のステップＳ４０９の処理に移行すると開始される。
【０１２１】
まず、ステップＳ９０１において、ＧＵＩテスト装置のＣＰＵ２０１は、ステップＳ８１０によって繰り返されたユーザ操作シナリオの修正箇所の回数分、ステップＳ９０２とステップＳ９０３の処理を繰り返す。
【０１２２】
次に、ステップＳ９０２において、ＧＵＩテスト装置２００のＣＰＵ２０１は、ステップＳ８０４で取得したユーザ操作シナリオの操作のターゲットを取得する。
【０１２３】
次に、ステップＳ９０３において、ＧＵＩテスト装置２００のＣＰＵ２０１は、ステップＳ８０５でユーザより取得した操作のターゲットを新バージョンのソフトウェア用に変更する。
【０１２４】
ここでユーザ操作シナリオのターゲットの変更を説明するために、図１６を参照して説明する。
【０１２５】
図１６は、本発明の実施形態におけるＧＵＩテスト装置２００のＧＵＩテストプログラムが生成するデータ構造の一例を示す模式図である。
【０１２６】
図１６の１６００はＧＵＩ操作に対応する操作データ（図１１の１１０１に対応）のターゲット１１０３欄のデータであり、修正前のユーザ操作シナリオの値１６０１と、修正後のユーザ操作シナリオの値１６０２に対応する。
【０１２７】
図１６の修正前ターゲット１６０１の修正該当箇所１６０３は図１１の１１０６と同様なので、説明を省略する。修正後のターゲット１６０２の修正該当箇所１６０４は、従来の操作ターゲットより１階層深い層に存在している。修正該当箇所１６０４について、『ＣＬＡＳＳ：ＷｉｎｄｏｗｓＦｏｒｍ』クラスの『ＮＡＭＥ：テストアプリケーション』内に登録している『ＴＹＰＥ：Ｐａｎｅｌ』という項目タイプの階層は、ログインのＩＤ入力欄とパスワード入力欄とをセットで１つの『Ｐａｎｅｌ』として登録している例であり、作業者ログイン項目は管理者ログイン項目の次に配置されているので、『ＮＵＭ：２』（すなわち、２番目に現れる『Ｐａｎｅｌ』）と登録する。『Ｐａｎｅｌ』の中には修正前のターゲットと同じ『ＣＬＡＳＳ：ＷｉｎｄｏｗｓＦｏｒｍ．ＥＤＩＴ』の『ＴＹＰＥ：Ｅｄｉｔ』が登録される。
修正後のユーザ操作シナリオの例として、図１７を参照して説明する。
【０１２８】
図１７は、本発明の実施形態におけるＧＵＩテスト装置２００のＧＵＩテストプログラムが生成するデータ構造の一例を示す模式図である。
【０１２９】
図１７の１７００は新バージョンのソフトウェアに対するユーザ操作シナリオの一例であり、図１２の１２００のユーザ操作シナリオを新バージョンのソフトウェアに対応して変更したものである。変更した部分は１７０１内の白抜き文字部分である。図９のフローチャートの説明に戻る。
【０１３０】
図９のステップＳ９０３が終了後、次のステップＳ９０４において、ＧＵＩテスト装置のＣＰＵ２０１は、ステップＳ８１０によって繰り返されたユーザ操作シナリオの修正箇所の回数分、ステップＳ９０２とステップＳ９０３の処理を繰り返す。
【０１３１】
その後、前述した図１７の１７００のようなユーザ操作シナリオが生成される。
【０１３２】
次に、ステップＳ９０５において、ＧＵＩテスト装置２００のＣＰＵ２０１は、ステップＳ９０２で取得した操作ターゲットと、ステップＳ９０３により生成された操作ターゲットとにより、操作ターゲットの差分を抽出し、その差分を保存する。具体的には図１６のような階層構造の１６０３を１６０４のように変更することを記憶する。ステップＳ９０５の処理をユーザ操作シナリオの修正箇所の回数分繰り返して記憶する。
【０１３３】
以上の処理により、ユーザは新バージョンのソフトウェアの修正箇所を指定するだけで、ＧＵＩテスト装置がユーザ操作シナリオのターゲットを自動的に変更し、ユーザはユーザ操作シナリオの操作データの操作欄（ユーザ入力やユーザ操作）やユーザ操作シナリオの制御データを変更する必要はなく、従来から使用していた複数のユーザ操作シナリオをそのまま利用することが出来る。
【０１３４】
次に、ステップＳ９０５で作成した操作ターゲットの差分を使用して、新バージョンのソフトウェアに対応したユーザ操作シナリオを実施する処理を図１８を参照して説明する。
【０１３５】
図１８は、本発明の実施形態におけるＧＵＩテスト装置２００の修正したユーザ操作シナリオを適応した処理フローを示す図である。なお、図１８のフローチャートはＧＵＩテスト装置２００のＣＰＵ２０１により実行されるものであり、図中のＳ１８０１からＳ１８０９はそれぞれの処理ステップを示す。
【０１３６】
図１８のフローチャートは、ＧＵＩテスト装置２００において、テストユーザがユーザ操作シナリオを新バージョンのソフトウェア用に修正し、修正後に新バージョンのソフトウェアにおいて修正したユーザ操作シナリオを実行する際に開始される。
【０１３７】
図１８のステップＳ１８０１において、開発者ユーザがＧＵＩテストプログラムを起動すると、ＧＵＩテスト装置２００のＣＰＵ２０１は、図１９のＵＩ画面１９００のような起動画面を生成し、ディスプレイ２１０に表示する。
【０１３８】
図１９は、本発明のＧＵＩテスト装置２００における処理画面イメージの一例を示す模式図であり、図１９の１９００は、ＧＵＩテストプログラム起動時に表示される画面イメージである。
【０１３９】
次に、ステップＳ１８０２において、開発者ユーザが新バージョンのソフトウェアを起動すると、ＧＵＩテスト装置２００のＣＰＵ２０１は、図１９のＵＩ画面１９１０のような新バージョンのソフトウェアの起動画面を生成し、ディスプレイ２１０に表示する。
【０１４０】
次に、ステップＳ１８０３において、開発者ユーザがＧＵＩテストプログラムの操作ターゲットの差分をＧＵＩテスト装置に読み込ませるため、ＧＵＩテスト装置２００のＣＰＵ２０１は、図示しない操作ターゲットの差分情報の入力を受け付け、操作ターゲットの差分情報を読み込む処理を行う。操作ターゲットの差分情報を取得した状態のＧＵＩテストプログラムの画面イメージを図１９の１９２０を参照して説明する。１９２０のＵＩ画面において、１９２１の『操作アドイン（Ａ）』と記載されている項目の下階層に登録されている項目１９２２が、操作ターゲットの差分情報であり、ステップＳ１８０４で読み込む旧バージョンの一つのユーザ操作シナリオと置換する操作ターゲットの差分情報のまとまりである。具体例として、図１６の１６０３を１６０４のように置換する差分情報を読み込む。
【０１４１】
次に、ステップＳ１８０４において、開発者ユーザが旧バージョンのソフトウェアのユーザ操作シナリオをＧＵＩテスト装置に読み込ませるため、ＧＵＩテスト装置２００のＣＰＵ２０１は、図示しない旧バージョンのユーザ操作シナリオの入力を受け付け、旧バージョンのユーザ操作シナリオを読み込む処理を行う。読み込むユーザ操作シナリオの例としては、例えば、図１２の１２００などである。旧バージョンのユーザ操作シナリオを取得した状態のＧＵＩテストプログラムの画面イメージを図２０を参照して説明する。
【０１４２】
図２０は、本発明のＧＵＩテスト装置２００における処理画面イメージの一例を示す模式図である。
【０１４３】
図２０の２０００は、ＧＵＩテストプログラムのユーザ操作シナリオを読み込んだ直後の画面イメージであり、ユーザ操作シナリオが２００１のように表示されている。２００１は、図１３の１３１０で示したユーザ操作シナリオと同様である。
【０１４４】
次に、図１８のステップＳ１８０５において、ＧＵＩテスト装置２００のＣＰＵ２０１は、開発者ユーザから、図２０の２０１０のような入力画面において、２０１１のようなユーザ操作シナリオ再生ボタンの押下を受け付ける。
【０１４５】
ステップＳ１８０５において、ユーザ操作シナリオ再生ボタンの押下を受け付けると、ステップＳ１８０６において、ＧＵＩテスト装置２００のＣＰＵ２０１は、ステップＳ１８０４において取得した旧バージョンのユーザ操作シナリオに、ステップＳ１８０３において取得した操作ターゲットの差分情報を当てはめて置換する。具体的には、ステップＳ１８０４で取得した旧バージョンのユーザ操作シナリオである図１２の１２００からステップＳ１８０３で取得した図１６の１６０３の部分を１６０４のように置換する。置換した結果は、図１７の１７００のような新バージョンのソフトウェアに対応したユーザ操作シナリオとなる。
【０１４６】
次に、ステップＳ１８０７において、ステップＳ１８０６で置換したユーザ操作シナリオを新バージョンのソフトウェアに対して実行（再生）する。ユーザ操作シナリオを再生した例として、図２０の２０２０を参照して説明する。
【０１４７】
図２０の２０２０は図１８のステップＳ１８０２で起動した新バージョンのソフトウェアであり、ステップＳ１８０６で置換したユーザ操作シナリオを実行（再生）した例である。作業者ログイン項目２０２１に２０２２のように『ｔｅｓｔ』と入力されているのは、ステップＳ１８０６で置換したユーザ操作シナリオ１７００を実行したためである。
【０１４８】
なお、この一連の処理でエラーが発生するかしないかを記憶した後、次の同じ操作ターゲットのユーザ操作シナリオについても同様の処理を自動的に行ってもよい。同じ操作ターゲットのユーザ操作シナリオを自動的に実行することにより、ユーザがユーザ操作シナリオをひとつひとつ選択して実行する手間を省いてテストを実施することが可能となる。
【０１４９】
以上説明したように、本発明によれば、ユーザは新バージョンのソフトウェアの修正箇所を指定するだけで、ＧＵＩテスト装置がユーザ操作シナリオのターゲットを自動的に変更し、ユーザはユーザ操作シナリオの操作データの操作欄（ユーザ入力やユーザ操作）やユーザ操作シナリオの制御データを変更する必要はなく、従来から使用していた複数のユーザ操作シナリオをそのまま利用することが出来るという効果を奏する。
【０１５０】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【０１５１】
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１５２】
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【０１５３】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【０１５４】
本実施形態におけるフローチャートに示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【０１５５】
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０１５６】
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【０１５７】
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＤＶＤ−ＲＯＭ，磁気テープ，不揮発性のメモリカード，ＲＯＭ，ＥＥＰＲＯＭ，シリコンディスク等を用いることができる。
【０１５８】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１５９】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１６０】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１６１】
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ，データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１６２】
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【０１６３】
２００  ＧＵＩテスト装置
３０１  ＧＵＩアプリケーション
３０２  ユーザ操作シナリオ生成部
３０３  ユーザ操作シナリオ記憶部
３０４  ユーザ操作シナリオ取得部
３０５  修正ＧＵＩ項目受付部
３０６  ユーザ操作シナリオ修正箇所選択部
３０７  ユーザ操作シナリオ差分記憶部
３０８  ユーザ操作シナリオ置換部
３０９  ＧＵＩテスト部
【図１】
2014067106.tif 000003
【図２】
2014067106.tif 000004
【図３】
2014067106.tif 000005
【図４】
2014067106.tif 000006
【図５】
2014067106.tif 000007
【図６】
2014067106.tif 000008
【図７】
2014067106.tif 000009
【図８】
2014067106.tif 000010
【図９】
2014067106.tif 000011
【図１０】
2014067106.tif 000012
【図１１】
2014067106.tif 000013
【図１２】
2014067106.tif 000014
【図１３】
2014067106.tif 000015
【図１４】
2014067106.tif 000016
【図１５】
2014067106.tif 000017
【図１６】
2014067106.tif 000018
【図１７】
2014067106.tif 000019
【図１８】
2014067106.tif 000020
【図１９】
2014067106.tif 000021
【図２０】
2014067106.tif 000022