(57)【要約】【課題】  開発工程において別途手間をかけることなく、ＧＵＩプログラムからユーザ操作シナリオを自動生成する。【解決手段】ＧＵＩアプリケーションのプログラムコードを解析し、該ＧＵＩアプリケーションに用いられているＧＵＩコンポーネントを検出するプログラム解析手段１０と、各ＧＵＩコンポーネントに対して可能な操作を示す情報およびＧＵＩフレームワークの制約を示す情報とに基づいて、プログラム解析手段１０によって検出されたＧＵＩコンポーネントに対して可能な操作を特定するＧＵＩコンポーネント操作特定手段２０と、ＧＵＩコンポーネント操作特定手段２０によって特定されたＧＵＩコンポーネント操作に基づいて、テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を決定し、その旨を規定したユーザ操作シナリオを生成するユーザ操作シナリオ生成手段３０とを備える。【選択図】  図１
2010102620.tif 000002
【特許請求の範囲】
【請求項１】
テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を規定する情報であるユーザ操作シナリオを生成するユーザ操作シナリオ生成装置であって、
前記ＧＵＩアプリケーションのプログラムコードを解析し、該ＧＵＩアプリケーションに用いられているＧＵＩコンポーネントを検出するプログラム解析手段と、
各ＧＵＩコンポーネントに対して可能な操作を示す情報およびＧＵＩフレームワークの制約を示す情報とに基づいて、前記プログラム解析手段によって検出されたＧＵＩコンポーネントに対して可能な操作を特定するＧＵＩコンポーネント操作特定手段と、
前記ＧＵＩコンポーネント操作特定手段によって特定されたＧＵＩコンポーネント操作に基づいて、テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を決定し、その旨を規定したユーザ操作シナリオを生成するユーザ操作シナリオ生成手段とを備えた
ことを特徴とするユーザ操作シナリオ生成装置。
【請求項２】
テスト対象であるＧＵＩアプリケーションに用いられる可能性のある各ＧＵＩコンポーネントに対して可能な操作を示す情報およびＧＵＩフレームワークの制約を示す情報とを保持するＧＵＩコンポーネント情報保持手段を備えた
請求項１に記載のユーザ操作シナリオ生成装置。
【請求項３】
ＧＵＩコンポーネントに対して可能な操作またはＧＵＩフレームワークの制約のうち少なくともいずれかをユーザからの指示に基づき設定する操作設定手段を備えた
請求項１または請求項２に記載のユーザ操作シナリオ生成装置。
【請求項４】
プログラム解析手段は、
テスト対象であるＧＵＩアプリケーションのプログラムコードが使用しているＧＵＩライブラリを判別するＧＵＩライブラリ判別手段と、
テスト対象であるＧＵＩアプリケーションのプログラムコードから、当該ＧＵＩアプリケーションの各画面に用いられているＧＵＩコンポーネントの情報を抽出するＧＵＩコンポーネント抽出手段とを含む
請求項１から請求項３のうちのいずれか１項に記載のユーザ操作シナリオ生成装置。
【請求項５】
ユーザ操作シナリオ生成手段は、最大操作シナリオ長の範囲内において、各ＧＵＩコンポーネントに対して可能な操作を並び替えることにより生成される各手順から制約に違反するものを削除した結果残った手順を、テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順として決定する
請求項１から請求項４のうちのいずれか１項に記載のユーザ操作シナリオ生成装置。
【請求項６】
ＧＵＩフレームワークの制約を示す情報は、各画面のＧＵＩコンポーネントに対する必須操作または不許可操作を規定した操作制約を示す情報と、各画面の最大操作回数を示す情報と、各ＧＵＩコンポーネントの操作の繰り返し限度回数を示す情報のうちの少なくともいずれかを含む
請求項２または請求項３に記載のユーザ操作シナリオ生成装置。
【請求項７】
テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を規定する情報であるユーザ操作シナリオを生成するユーザ操作シナリオ生成システムであって、
テスト対象であるＧＵＩアプリケーションに用いられる可能性のある各ＧＵＩコンポーネントに対して可能な操作を示す情報およびＧＵＩフレームワークの制約を示す情報とを保持するＧＵＩコンポーネント情報保持手段と、
前記ＧＵＩアプリケーションのプログラムコードを解析し、該ＧＵＩアプリケーションに用いられているＧＵＩコンポーネントを検出するプログラム解析手段と、
各ＧＵＩコンポーネントに対して可能な操作を示す情報およびＧＵＩフレームワークの制約を示す情報とに基づいて、前記プログラム解析手段によって検出されたＧＵＩコンポーネントに対して可能な操作を特定するＧＵＩコンポーネント操作特定手段と、
前記ＧＵＩコンポーネント操作特定手段によって特定されたＧＵＩコンポーネント操作に基づいて、テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を決定し、その旨を規定したユーザ操作シナリオを生成するユーザ操作シナリオ生成手段とを備えた
ことを特徴とするユーザ操作シナリオ生成システム。
【請求項８】
テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を規定する情報であるユーザ操作シナリオを生成するためのユーザ操作シナリオ生成方法であって、
前記ＧＵＩアプリケーションのプログラムコードを解析し、該ＧＵＩアプリケーションに用いられているＧＵＩコンポーネントを検出するプログラム解析ステップと、
各ＧＵＩコンポーネントに対して可能な操作を示す情報およびＧＵＩフレームワークの制約を示す情報とに基づいて、検出されたＧＵＩコンポーネントに対して可能な操作を特定するＧＵＩコンポーネント操作特定ステップと、
特定されたＧＵＩコンポーネント操作に基づいて、テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を決定し、その旨を規定したユーザ操作シナリオを生成するユーザ操作シナリオ生成ステップとを含む
ことを特徴とするユーザ操作シナリオ生成方法。
【請求項９】
ＧＵＩコンポーネントに対して可能な操作またはＧＵＩフレームワークの制約のうち少なくともいずれかをユーザからの指示に基づき設定する操作設定ステップを含む
請求項８に記載のユーザ操作シナリオ生成方法。
【請求項１０】
テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を規定する情報であるユーザ操作シナリオを生成するためのユーザ操作シナリオ生成用プログラムであって、
コンピュータに、
前記ＧＵＩアプリケーションのプログラムコードを解析し、該ＧＵＩアプリケーションに用いられているＧＵＩコンポーネントを検出するプログラム解析処理、
各ＧＵＩコンポーネントに対して可能な操作を示す情報およびＧＵＩフレームワークの制約を示す情報とに基づいて、検出されたＧＵＩコンポーネントに対して可能な操作を特定するＧＵＩコンポーネント操作特定処理、および
特定されたＧＵＩコンポーネント操作に基づいて、テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を決定し、その旨を規定したユーザ操作シナリオを生成するユーザ操作シナリオ生成処理
を実行させるためのユーザ操作シナリオ生成用プログラム。
【請求項１１】
コンピュータに、
ＧＵＩコンポーネントに対して可能な操作またはＧＵＩフレームワークの制約のうち少なくともいずれかをユーザからの指示に基づき設定する操作設定処理を実行させる
請求項１０に記載のユーザ操作シナリオ生成用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＧＵＩアプリケーションに対するユーザ操作シナリオを生成するユーザ操作シナリオ生成装置、ユーザ操作シナリオ生成方法およびユーザ操作シナリオ生成用プログラムに関する。
【背景技術】
【０００２】
近年、ＧＵＩライブラリの複雑化や高度化に伴ない、ＧＵＩアプリケーションに対するユーザ操作のテストが非常に複雑になっている。
【０００３】
ＧＵＩアプリケーションに対するユーザ操作のテストの多くは、テスターが仕様書をもとに、ユーザ操作シナリオ（テストにおけるユーザ操作の手順を規定した情報。テスト設計）の作成を行い、テスト実施を手動または自動で行っている。一般に利用されているＧＵＩテスト自動化ツール（例えば、下記ツール１，ツール２）は、最初にテスターが手動で操作を行い、その操作を記録して再現するという回帰テストに利用されている。
【０００４】
・ツール１：ＩＢＭ  Ｒａｔｉｏｎａｌ  Ｆｕｎｃｔｉｏｎａｌ  Ｔｅｓｔｅｒ（ｈｔｔｐ：／／ｗｗｗ−０６．ｉｂｍ．ｃｏｍ／ｊｐ／ｓｏｆｔｗａｒｅ／ｒａｔｉｏｎａｌ／ｐｒｏｄｕｃｔｓ／ｔｅｓｔ／ｒｆｔ／）
・ツール２：ＨＰ  ＱｕｉｃｋＴｅｓｔ  Ｐｒｏｆｅｓｓｉｏｎａｌ  ｓｏｆｔｗａｒｅ（ｈｔｔｐ：／／ｈ１００７８．ｗｗｗ１．ｈｐ．ｃｏｍ／ｃｄａ／ｈｐｍｓ／ｄｉｓｐｌａｙ／ｍａｉｎ／ｈｐｍｓ＿ｃｏｎｔｅｎｔ．ｊｓｐ？ｚｎ＝ｂｔｏ＆ｃｐ＝１−１１−１２７−２４＾１３５２＿４０００＿３０６＿＿）
【０００５】
なお、ＧＵＩアプリケーションに対するユーザ操作のテストに用いるユーザ操作シナリオの自動生成に関連する技術として、例えば、特許文献１には、ＧＵＩの操作を自動的に行うＧＵＩテスト装置が記載されている。また、特許文献２には、プログラム作成工程で生成されるプログラムの構造等を表す情報から、システムテストの実施に際して必要な情報を自動的に作成するソフトウェア開発支援装置が記載されている。
【０００６】
【特許文献１】特開平７−８４７６５号公報
【特許文献２】特開平９−２２２３０４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、テスターが仕様書をもとに手動でユーザ操作シナリオを作成する場合には、ＧＵＩの構成変更があると作成しなおさなければならず、テストの効率化にならない場合が多い。また、属人性を排除できず、ユーザ操作シナリオの網羅性が保証されないという問題もある。
【０００８】
なお、特許文献１に記載されているＧＵＩテスト装置は、ＧＵＩの操作に対応するイベント情報を作成し、作成されるイベントの情報から実際のイベントを作成し、それをテスト対象のアプリケーションに送出することにより、テストの手間と期間とを低減することを目的としている。従って、テスト実施において効果的なユーザ操作シナリオを自動生成しようということは考慮されていない。例えば、特許文献１には、イベント情報の作成に関し、実際のＧＵＩ操作から作成したり、簡易言語にて記述させた操作記述を翻訳することにより作成することが記載されている。しかし、その実際に操作させたり操作記述をユーザに記述させるのでは、属人性が排除できない。従って、テストすべきユーザ操作の手順として網羅性が保証されないという手動でユーザ操作シナリオを生成する場合と同様の問題が生じる。
【０００９】
また、特許文献２に記載されているソフトウェア開発支援装置は、ＧＵＩアプリケーションを開発環境を使用して作成する際に記述させる付加情報を用いてテストシナリオを生成する。このため、テスト対象とするＧＵＩアプリケーションの作成時に付加情報の記述を必要とし、開発工程において別途手間がかかるという問題がある。
【００１０】
そこで、本発明は、開発工程において別途手間をかけることなく、ＧＵＩプログラムからユーザ操作シナリオを自動生成するユーザ操作シナリオ生成装置、ユーザ操作シナリオ生成方法およびユーザ操作シナリオ生成用プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明によるユーザ操作シナリオ生成装置は、テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を規定する情報であるユーザ操作シナリオを生成するユーザ操作シナリオ生成装置であって、ＧＵＩアプリケーションのプログラムコードを解析し、該ＧＵＩアプリケーションに用いられているＧＵＩコンポーネントを検出するプログラム解析手段と、各ＧＵＩコンポーネントに対して可能な操作を示す情報およびＧＵＩフレームワークの制約を示す情報とに基づいて、プログラム解析手段によって検出されたＧＵＩコンポーネントに対して可能な操作を特定するＧＵＩコンポーネント操作特定手段と、ＧＵＩコンポーネント操作特定手段によって特定されたＧＵＩコンポーネント操作に基づいて、テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を決定し、その旨を規定したユーザ操作シナリオを生成するユーザ操作シナリオ生成手段とを備えたことを特徴とする。
【００１２】
また、本発明によるユーザ操作シナリオ生成システムは、テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を規定する情報であるユーザ操作シナリオを生成するユーザ操作シナリオ生成システムであって、テスト対象であるＧＵＩアプリケーションに用いられる可能性のある各ＧＵＩコンポーネントに対して可能な操作を示す情報およびＧＵＩフレームワークの制約を示す情報とを保持するＧＵＩコンポーネント情報保持手段と、ＧＵＩアプリケーションのプログラムコードを解析し、該ＧＵＩアプリケーションに用いられているＧＵＩコンポーネントを検出するプログラム解析手段と、各ＧＵＩコンポーネントに対して可能な操作を示す情報およびＧＵＩフレームワークの制約を示す情報とに基づいて、プログラム解析手段によって検出されたＧＵＩコンポーネントに対して可能な操作を特定するＧＵＩコンポーネント操作特定手段と、ＧＵＩコンポーネント操作特定手段によって特定されたＧＵＩコンポーネント操作に基づいて、テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を決定し、その旨を規定したユーザ操作シナリオを生成するユーザ操作シナリオ生成手段とを備えたことを特徴とする。
【００１３】
本発明によるユーザ操作シナリオ生成方法は、テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を規定する情報であるユーザ操作シナリオを生成するためのユーザ操作シナリオ生成方法であって、ＧＵＩアプリケーションのプログラムコードを解析し、該ＧＵＩアプリケーションに用いられているＧＵＩコンポーネントを検出するプログラム解析ステップと、各ＧＵＩコンポーネントに対して可能な操作を示す情報およびＧＵＩフレームワークの制約を示す情報とに基づいて、検出されたＧＵＩコンポーネントに対して可能な操作を特定するＧＵＩコンポーネント操作特定ステップと、特定されたＧＵＩコンポーネント操作に基づいて、テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を決定し、その旨を規定したユーザ操作シナリオを生成するユーザ操作シナリオ生成ステップとを含むことを特徴とする。
【００１４】
本発明によるユーザ操作シナリオ生成用プログラムは、テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を規定する情報であるユーザ操作シナリオを生成するためのユーザ操作シナリオ生成用プログラムであって、コンピュータに、ＧＵＩアプリケーションのプログラムコードを解析し、該ＧＵＩアプリケーションに用いられているＧＵＩコンポーネントを検出するプログラム解析処理、各ＧＵＩコンポーネントに対して可能な操作を示す情報およびＧＵＩフレームワークの制約を示す情報とに基づいて、検出されたＧＵＩコンポーネントに対して可能な操作を特定するＧＵＩコンポーネント操作特定処理、および特定されたＧＵＩコンポーネント操作に基づいて、テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を決定し、その旨を規定したユーザ操作シナリオを生成するユーザ操作シナリオ生成処理を実行させることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、開発工程において別途手間をかけることなく、ＧＵＩプログラムからユーザ操作シナリオを自動生成することができる。結果、ＧＵＩアプリケーションに対するユーザ操作のテストを、効率的かつ効果的に行うことができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施形態を図面を参照して説明する。図１は、本発明によるユーザ操作シナリオ生成装置の構成例を示すブロック図である。図１に示すユーザ操作シナリオ生成装置１００は、プログラム解析手段１０と、ＧＵＩコンポーネント操作特定手段２０と、ユーザ操作シナリオ生成手段３０とを備えている。
【００１７】
プログラム解析手段１０は、テスト対象であるＧＵＩアプリケーションのプログラムコードを解析し、該ＧＵＩアプリケーションに用いられているＧＵＩコンポーネントを検出する。
【００１８】
ＧＵＩコンポーネント操作特定手段２０は、各ＧＵＩコンポーネントに対して可能な操作を示す情報およびＧＵＩフレームワークの制約を示す情報とに基づいて、プログラム解析手段１０によって検出されたＧＵＩコンポーネントに対して可能な操作を特定する。
【００１９】
ユーザ操作シナリオ生成手段３０は、ＧＵＩコンポーネント操作特定手段２０によって特定されたＧＵＩコンポーネント操作に基づいて、テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順を決定し、その旨を規定したユーザ操作シナリオを生成する。ユーザ操作シナリオ生成手段３０は、例えば、最大操作シナリオ長の範囲内において、各ＧＵＩコンポーネントに対して可能な操作を並び替えることにより生成される各手順から制約に違反するものを削除した結果残った手順を、テスト対象であるＧＵＩアプリケーションに対するユーザ操作の手順として決定してもよい。なお、最大操作シナリオ長は、ユーザが設定してもよいし、検出されたＧＵＩコンポーネントの数や各ＧＵＩコンポーネントの最大操作回数から求めてもよい。
【００２０】
また、図２は、本発明によるユーザ操作シナリオ生成装置の他の構成例を示すブロック図である。図２に示すように、ユーザ操作シナリオ生成装置１００は、さらに、ＧＵＩコンポーネント情報保持手段４０と、操作設定手段５０とを備えていてもよい。また、プログラム解析手段１０は、ＧＵＩライブラリ判別手段１１と、ＧＵＩコンポーネント抽出手段１２とを含んでいてもよい。
【００２１】
ＧＵＩライブラリ判別手段１１は、テスト対象であるＧＵＩアプリケーションのプログラムコードが使用しているＧＵＩライブラリを判別する。また、ＧＵＩコンポーネント抽出手段１２は、テスト対象であるＧＵＩアプリケーションのプログラムコードから、当該ＧＵＩアプリケーションの各画面に用いられているＧＵＩコンポーネントの情報を抽出する。
【００２２】
ＧＵＩコンポーネント情報保持手段４０は、テスト対象であるＧＵＩアプリケーションに用いられる可能性のある各ＧＵＩコンポーネントに対して可能な操作を示す情報およびＧＵＩフレームワークの制約を示す情報とを保持する。ＧＵＩフレームワークの制約を示す情報として、例えば、各画面のＧＵＩコンポーネントに対する必須操作または不許可操作を規定した操作制約を示す情報と、各画面の最大操作回数を示す情報と、各ＧＵＩコンポーネントの操作の繰り返し限度回数を示す情報のうちの少なくともいずれかを含む情報を保持してもよい。なお、図２に示す例では、ユーザ操作シナリオ生成装置１００がＧＵＩコンポーネント情報保持手段４０を備える例を示しているが、ＧＵＩコンポーネント情報保持手段４０は、独立したデータベースシステムとして実装されていてもよい。そのような場合には、ユーザ操作シナリオ生成装置１００とそのデータベースシステムとがアクセス可能に接続されていればよい。
【００２３】
操作設定手段５０は、ＧＵＩコンポーネントに対して可能な操作またはＧＵＩフレームワークの制約のうち少なくともいずれかをユーザからの指示に基づき設定する。
【００２４】
以下、より具体的な実施形態について説明する。図３は、本実施形態におけるユーザ操作シナリオ生成装置の構成例を示すブロック図である。図３に示すユーザ操作シナリオ生成装置１００は、プログラム解析部１０１と、ＧＵＩコンポーネント操作特定部１０２と、操作設定部１０３と、ユーザ操作シナリオ生成部１０４と、ＧＵＩコンポーネントデータベース１０５（以下、ＧＵＩコンポーネントＤＢ１０５という。）とを備えている。
【００２５】
なお、本実施形態において、プログラム解析部１０１と、ＧＵＩコンポーネント操作特定部１０２と、操作設定部１０３と、ユーザ操作シナリオ生成部１０４とは、例えば、プログラムに従って動作するＣＰＵによって実現される。また、ＧＵＩコンポーネントＤＢ１０５は、記憶装置および該記憶装置のアクセス制御を行う制御手段によって実現される。なお、操作設定部１０３は、プログラムに従って動作するＣＰＵと、ディスプレイ等の情報をユーザに提示する出力装置と、マウス，キーボード等のユーザに情報を入力させる入力装置とによって実現される場合もある。
【００２６】
なお、本実施形態におけるプログラム解析部１０１は、図１および図２に示したプログラム解析手段１０に相当する処理手段である。また、ＧＵＩコンポーネント操作特定部１０２は、図１および図２に示したＧＵＩコンポーネント操作特定手段２０に相当する処理部である。また、操作設定部１０３は、図２に示した操作設定手段５０に相当する処理部である。また、ユーザ操作シナリオ生成部１０４は、図１および図２に示したユーザ操作シナリオ生成手段３０に相当する処理部である。また、ＧＵＩコンポーネントＤＢ１０５は、図２に示したＧＵＩコンポーネント情報保持手段４０に相当する記憶部である。
【００２７】
プログラム解析部１０１は、ＧＵＩライブラリ決定機能と、ＧＵＩコンポーネント検出機能を持つ。ＧＵＩライブラリ決定機能は、入力されるＧＵＩプログラム２００のファイル拡張子やプログラムコードで使用されているＧＵＩコンポーネント名をＧＵＩコンポーネントＤＢ１０５に問合せ、使用されているＧＵＩライブラリを決定する。ＧＵＩコンポーネント検出機能は、入力されるＧＵＩプログラム２００のプログラムコードから、ＧＵＩライブラリ決定機能により決定されたＧＵＩライブラリの各コンポーネントを検出し、各画面で用いられているユーザ操作の可能なＧＵＩコンポーネントの一覧（以下、ＧＵＩコンポーネント一覧という。）を作成する。なお、ＧＵＩコンポーネント一覧は、より具体的には、検出された各画面で用いられているユーザ操作の可能なＧＵＩコンポーネントを特定可能な情報を一覧にして示す情報である。
【００２８】
ＧＵＩコンポーネント操作特定部１０２は、ＧＵＩコンポーネントＤＢ１０５と連携し、プログラム解析部１０１（より具体的には、ＧＵＩコンポーネント検出機能）が検出した各画面のＧＵＩコンポーネントについて、該ＧＵＩコンポーネントに対して可能な操作の情報を取得し、操作一覧を作成する。なお、操作一覧は、より具体的には、各々のＧＵＩコンポーネントに対して可能な操作を示す情報を一覧にして示す情報である。、
【００２９】
操作設定部１０３は、ＧＵＩコンポーネント操作特定部１０２が作成した各ＧＵＩコンポーネントの操作一覧に対して、必須操作や不許可操作といった操作制約の設定、また各画面の最大操作回数の設定や各ＧＵＩコンポーネントの操作の繰り返し限度回数の設定を行う。実際のアプリケーションでは行われることのない操作や繰り返し限度回数等を設定することにより、より精度の高い操作シナリオが生成可能となる。なお、操作設定部１０３は、ユーザ操作に応じて、このようなＧＵＩフレームワークの制約の設定を行ってもよい。
【００３０】
ユーザ操作シナリオ生成部１０４は、最終的に生成された操作一覧に基づき、ユーザ操作シナリオを生成する。ユーザ操作シナリオは各画面のＧＵＩコンポーネントに対する各操作を設定された情報をもとに並び替えることによって、シナリオとして生成する。
【００３１】
ＧＵＩコンポーネントＤＢ１０５は、各種ＧＵＩライブラリが提供しているコンポーネントに対して可能な操作や各操作の制約等を知識として保持している。例えば、Ｓｗｉｎｇライブラリ関しては以下のような知識を保持していてもよい。ＳｗｉｎｇライブラリにはＪＷｉｎｄｏｗ、ＪＬａｂｅｌ等のＧＵＩコンポーネントが存在する。各コンポーネントに対して可能操作として、クリック、ドラッグ、閉じる、マウスダウン、マウスアップ等の操作を示す情報を保持してもよい。また、マウスダウンの後にはマウスアップという操作が必ず発生するといった制約や閉じるの後はユーザ操作はできないという制約を示す情報を保持してもよい。
【００３２】
このようなＧＵＩコンポーネントＤＢ１０５と連携することにより、ＧＵＩフレームワークにおける制約のため、実際には行われることのない操作を除外することが可能となる。
【００３３】
本例では、ユーザ操作シナリオ生成装置がこれらの部位から構成され、ＧＵＩプログラム２００を入力として動作し、ユーザ操作シナリオ３００を出力する。
【００３４】
次に、本実施形態の動作について説明する。図４は、本実施形態のユーザ操作シナリオ生成装置の動作の一例を示すフローチャートである。図４に示すように、本実施形態では、例えば、ＧＵＩプログラム２００を受け取ると、プログラム解析部１０１が入力されたＧＵＩプログラム２００を解析し、ＧＵＩコンポーネントＤＢ１０５を参照して、ＧＵＩライブラリを決定する（ステップＳ１０１）。ＧＵＩライブラリは、例えば、入力されるＧＵＩプログラム２００のファイル拡張子やプログラムコードに記述されているＧＵＩコンポーネント名を指定して、ＧＵＩコンポーネントＤＢ１０５に問合せを行い、ＧＵＩライブラリの情報と一致したものを使用ＧＵＩライブラリとして決定すればよい。
【００３５】
次に、プログラム解析部１０１は、決定したＧＵＩライブラリの情報を基に、入力されたＧＵＩプログラム２００から、各画面に用いられているユーザの操作可能なＧＵＩコンポーネントを検出し、ＧＵＩコンポーネント一覧を作成する（ステップＳ１０２）。
【００３６】
プログラム解析部１０１によってＧＵＩコンポーネント一覧が作成されると、次にＧＵＩコンポーネント操作特定部１０２は、ＧＵＩコンポーネント一覧に含まれる各ＧＵＩコンポーネントについて、該ＧＵＩコンポーネントに対して可能な操作を、ＧＵＩコンポーネントＤＢ１０５より取得し、操作一覧を作成する（ステップＳ１０３）。
【００３７】
操作一覧が作成されると、操作設定部１０３は、作成された操作一覧に対して、必須操作や不許可操作といった操作制約の設定、各画面の最大操作回数、各操作の繰り返し限度回数などの設定を行う（ステップＳ１０４）。操作設定部１０３は、例えば、各画面のＧＵＩコンポーネント操作一覧に対して、必須操作や不許可操作といった操作制約の設定や各画面の最大操作回数の設定や各ＧＵＩコンポーネントの操作の繰り返し限度回数の設定をユーザが入力できるような入力手段（例えば、設定画面等）を提示し、ユーザ操作に応じて設定してもよい。
【００３８】
最後に、ユーザ操作シナリオ生成部１０４は、最終的に作成された操作一覧に基づき、各ＧＵＩコンポーネントに対して可能な操作を、上記制約のもとに並べ、ユーザ操作シナリオ３００を生成する（ステップＳ１０５）。
【００３９】
以上のように、本実施形態によれば、ＧＵＩプログラムからユーザ操作シナリオを自動生成することができる。また、ユーザ操作シナリオの生成工程から属人性を排除し、網羅的なユーザ操作シナリオを生成することができる。
【実施例１】
【００４０】
以下、具体的な例を提示して本実施形態の動作を説明する。ここでは、図５に示すＧＵＩを実現するＧＵＩアプリケーションのプログラムが入力された場合を例に用いる。また、このＧＵＩアプリケーションは、Ｊａｖａ（登録商標）  Ｓｗｉｎｇアプリケーションであり、画面が１しかないと仮定する。
【００４１】
入力として図５に示すＧＵＩを実現するプログラムコードを受け取ると、本装置では、プログラム解析部１０１がＧＵＩプログラムコードの解析を行う。まず、ＧＵＩライブラリ決定機能で入力ＧＵＩプログラム内で使用されているＧＵＩライブラリの判別を行い、使用されているＧＵＩライブラリを決定する。この例の場合、ＧＵＩライブラリ決定機能は、”＊＊＊．ｊａｖａ”というファイルを入力として受け取り、ファイル拡張子および使用されているＧＵＩコンポーネント名からＳｗｉｎｇライブラリが使用されていると判別し、テスト対象のＧＵＩアプリケーションがＪａｖａ Ｓｗｉｎｇアプリケーションであると認識する。
【００４２】
次に、ＧＵＩコンポーネント抽出機能で、Ｊａｖａ  ＳｗｉｎｇアプリケーションのＧＵＩコンポーネントを抽出する。ＧＵＩコンポーネント抽出機能は、例えば、ＧＵＩプログラムコードを順に解析し、ＧＵＩコンポートが実体化されている記述を探索することにより、ＧＵＩコンポーネントを抽出してもよい。本例では、以下のＧＵＩコンポーネントが抽出され、これを示すＧＵＩコンポーネント一覧が作成される。
１．ＪＷｉｎｄｏｗ
２．ＪＬａｂｅｌ
３．ＪＢｕｔｔｏｎ
【００４３】
次に、ＧＵＩコンポーネント操作特定部１０２が、ＧＵＩコンポーネントＤＢ１０５に問合せてＧＵＩコンポーネント一覧に含まれる各コンポーネントに対して可能な操作を取得し、操作一覧を作成する。図６は、本例において作成される操作一覧の例を示す説明図である。図６に示す例では、例えば、ＧＵＩコンポーネント「ＪＷｉｎｄｏｗ」に対しては、最小化、最大化、閉じる、クリック、ドラッグが可能操作として示されている。また、例えば、ＧＵＩコンポーネント「ＪＬａｂｅｌ」に対しては、クリックとドラッグが可能操作として示されている。また、例えば、ＧＵＩコンポーネント「ＪＢｕｔｔｏｎ」に対しては、クリックとドラッグが可能操作として示されている。なお、本例では、説明を簡単にするために、実際のＧＵＩコンポーネントに対して可能な操作とは異なる例を示している。また、画面が複数存在する場合は、図６に示す操作一覧を画面毎に複数作成すればよい。
【００４４】
次に、操作設定部１０３が、必須操作や不許可操作といった操作制約の設定、また各画面の最大操作回数、各操作の繰り返し回数の設定を行う。この設定はＧＵＩコンポーネントＤＢ１０５に事前に登録してある情報を参照して行ってもよいし、この段階（操作一覧が作成された時点）で利用者に入力手段を提示して設定させることにより行ってもよい。
【００４５】
図７は、操作設定部１０３による設定後の操作一覧の例を示す説明図である。図７に示す例では、ＧＵＩコンポーネント「ＪＷｉｎｄｏｗ」の閉じる操作の後にはユーザはどのような操作も行えないという制約があるので「閉じる」操作にＥｎｄマーク（図７における”（Ｅ）”マーク）がつけられている。また、「閉じる」操作以外の操作は不許可とし、操作一覧から削除されている。また、ＧＵＩコンポーネント「ＪＬａｂｅｌ」については、「クリック」操作は不許可として操作一覧から削除されるとともに、各操作に対する繰り返し限度回数が２回と設定されている。また、ＧＵＩコンポーネント「ＪＢｕｔｔｏｎ」については、「ドラッグ」操作は不許可として操作一覧から削除されるとともに、各操作に対する繰り返し限度回数が２回と設定されている。また、図示省略しているが、この画面の最大操作回数は３回として設定されているとする。この画面の最大操作回数は、ユーザ操作シナリオにおいて最大操作シナリオ長として用いられる。
【００４６】
以上の情報を得ると、ユーザ操作シナリオ生成部１０４は、ユーザ操作シナリオを作成する。操作一覧で示される各ＧＵＩコンポーネントの操作を上記設定した制約をもとに並べ、網羅的なシナリオを作成する。本例では、図８に示すような網羅的な１７通りのユーザ操作シナリオが生成される。
【００４７】
ユーザ操作シナリオ生成部１０４は、各操作の組み合わせの生成を、次のように行ってもよい。まず、操作一覧より最大操作シナリオ長を求める。求めた最大操作シナリオ長の範囲内における各長さでの操作を組み合わせて操作手順を生成する。操作手順の生成は、取りうる操作の単純な並び替えによって行えばよい。次に、生成した操作手順群から制約に違反するものを削除する。
【００４８】
本例の場合、最大操作シナリオ長が３であることが求まるため、シナリオ長＝１，２，３における操作シナリオを生成すればよい。図９は、ユーザ操作シナリオの生成過程の例を示す説明図である。なお、図９（ａ）は、最大操作シナリオ長に基づく操作手順の生成の例を示す説明図である。また、図９（ｂ）は、制約に基づく操作手順の削除の例を示す説明図である。例えば、図９（ａ）に示すように、まず操作シナリオ長を１に設定して、３通りの操作手順（１−１）〜（１−３）を生成する。また、操作シナリオ長を２に設定して、６通りの操作手順（２−１）〜（２−６）を生成する。また、操作シナリオ長を３に設定して、６通りの操作手順（３−１）〜（３−６）を生成する。この時点では、計１５通りの操作手順が生成される。なお、本例では、説明を簡単にするため、各操作に対する繰り返し限度回数が１回である場合を例示している。
【００４９】
次に、生成された計１５通りの操作手順に対して、制約による削除を行う。本例では、「ＪＷｉｎｄｏｗ」の「閉じる」操作に対してＥｎｄマークが設定されているので、本操作の後に操作がある操作手順、および「ＪＷｉｎｄｏｗ」の「閉じる」操作で終了していない操作手順を削除すればよい。例えば、図９（ｂ）に示すように、操作手順（１−２），（１−３），（２−１），（２−２），（２−４），（２−６），（３−１），（３−２），（３−３），（３−５）を削除すればよい。
【００５０】
なお、画面が複数ある場合には、次の画面への操作を起こす操作に画面遷移マークを設定すればよい。画面遷移マークが設定されている操作については、Ｅｎｄマークと同様に処理すればよい。ただし、画面遷移マークの場合は次の画面に移行し、各画面のユーザ操作シナリオと合成する。
【産業上の利用可能性】
【００５１】
本発明は、ＧＵＩアプリケーションに対するユーザ操作のテストを行う用途に、好適に適用可能である。
【図面の簡単な説明】
【００５２】
【図１】本発明によるユーザ操作シナリオ生成装置の構成例を示すブロック図である。
【図２】本発明によるユーザ操作シナリオ生成装置の他の構成例を示すブロック図である。
【図３】実施形態におけるユーザ操作シナリオ生成装置の構成例を示すブロック図である。
【図４】図３に示す実施形態のユーザ操作シナリオ生成装置の動作の一例を示すフローチャートである。
【図５】テスト対象となるＧＵＩアプリケーションのＧＵＩの例を示す説明図である。
【図６】操作一覧の例を示す説明図である。
【図７】操作一覧（操作設定部１０３による設定後）の例を示す説明図である。
【図８】生成されるユーザ操作シナリオの例を示す説明図である。
【図９】ユーザ操作シナリオの生成過程の一例を示す説明図である。
【符号の説明】
【００５３】
１００  ユーザ操作シナリオ生成装置
１０  プログラム解析手段
１１  ＧＵＩコンポーネント抽出手段
１２  ＧＵＩライブラリ判別手段
２０  ＧＵＩコンポーネント操作特定手段
３０  ユーザ操作シナリオ生成手段
４０  ＧＵＩ情報保持手段
５０  操作設定手段
１０１  プログラム解析部
１０２  ＧＵＩコンポーネント操作特定部
１０３  操作設定部
１０４  ユーザ操作シナリオ生成部
１０５  ＧＵＩコンポーネントデータベース（ＧＵＩコンポーネントＤＢ）
２００  ＧＵＩプログラム（ＧＵＩアプリケーションのプログラムコード）
３００  ユーザ操作シナリオ
【図１】
2010102620.tif 000003
【図２】
2010102620.tif 000004
【図３】
2010102620.tif 000005
【図４】
2010102620.tif 000006
【図５】
2010102620.tif 000007
【図６】
2010102620.tif 000008
【図７】
2010102620.tif 000009
【図８】
2010102620.tif 000010
【図９】
2010102620.tif 000011