説明

テスト支援装置、制御方法、及びプログラム

【課題】テスト精度の高いテスト用スクリプトを作成すると共に、テスト用スクリプト作成時に要する作業負荷を軽減することで、テスト及び評価工程における開発コストを軽減する。
【解決手段】GUI操作前画面画像生成部308及びGUI操作後画面画像生成部310によって、ユーザインタフェース操作(以下、操作)を検知した所定時間前から操作を検知した時間迄の画像ファイル(GUI操作前画面画像314)、及び操作を検知した時間から所定時間後の画像ファイル(GUI操作後画面画像316)を生成した後、検知画像解析部320によって、GUI操作前画面画像314及びGUI操作後画面画像316の画素の値の比較から、操作が行われた周辺画像ファイルを特定し、周辺画像ファイルがテスト対象アプリケーション200の画面に該当する位置座標と操作に関する操作情報とをテスト用スクリプト318として生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソフトウェア・アプリケーション、またはソフトウェア・システムのテスト自動化技術に関し、特に画面に対するユーザインタフェース操作に関するテスト自動化技術に関する。
【背景技術】
【0002】
ソフトウェアの開発工程において、テスト及び評価の工程は、時間及び費用等のコスト面で大きなウェイトを占める。また、大規模なソフトウェア開発になるに従って、テスト及び評価の工程に投入が必要とされる作業工数及び人員は、比例的に増加し、開発コスト増及び納期延期等につながる。
【0003】
開発を行ったソフトウェアのテスト及び評価が十分に行われずに、ソフトウェアを製品として出荷した後、ソフトウェアの導入先のシステムにおける運用時に障害が発生した場合、それに伴う、ソフトウェアの対応あるいは修正によって、更に、作業工数及び人員増となり、開発コスト増となってしまう。また、生活のインフラに直結するようなシステムともなれば、その影響は計り知れないものになる。
【0004】
そこで、ソフトウェアのテスト及び評価の工程の効率化を図ることで、開発コスト増を抑止するために利用されるのが、テスト自動化ソフトウェアである。
【0005】
既存のテスト自動化ソフトウェアの仕組みは、テスト対象アプリケーションでの画面に対するユーザインタフェース操作をスクリプト形式のプログラムに保存し、作成保存したスクリプトを実行することで、保存したユーザインタフェース操作を再現し、テスト及び評価の実施を効率化し、またテスト及び評価を資源化することができる。
【0006】
また、自動テストを行う上で生成したスクリプトを部品化することでさらなる効率化を実現技術が開示されている(例えば、特許文献1参照)
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2002−14845号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
自動テストを実施するには、あらかじめテスト用のスクリプトを作成する必要があるが、該スクリプトを作成するには、ユーザインタフェース操作が施された位置を、画面に対する座標値から定め、該座標値を元に作成を行っている。
【0009】
ユーザインタフェース操作が施された位置を示す座標を定めるには、「ユーザインタフェース操作が施された位置の座標を直に定める」方法と、「ユーザインタフェース操作が施された位置の周辺画像を画面から検索し、座標を導き出す」方法の2通りある。
【0010】
「ユーザインタフェース操作が施された位置の座標を直に定める」方法では、テスト用のスクリプトを実行する環境によって座標が変わる可能性があり、たとえば、テスト対象アプリケーションの表示位置がテスト用のスクリプト作成時とテスト実行時で異なる場合、座標がずれてしまい、期待通りの操作が行われず、現実的ではない。
【0011】
「ユーザインタフェース操作が施された位置の周辺画像を画面から検索し、座標を導き出す」方法では、上記のような問題は発生せず、この方法で座標を導き出すのが現実的であるが、この点については、特許文献1に記載や示唆はない。
【0012】
また、実際にテスト用のスクリプトを作成する場合、ユーザは、ユーザインタフェースを用いて対象の周辺画像(例えば、ボタンの画像)を特定した後、周辺画像をスキャンして作成しなければならない。
【0013】
具体的な例をあげると、画面を全体、もしくは対象のウィンドウをデータとして保存し、該データを画像編集用のアプリケーションソフトに貼り付けて、そこから対象とすべく周辺画像を切り取るといった手順になる。
【0014】
そして、テスト実行時には、切り取った周辺画像とテスト対象となる画面との照合を行い、切り取った周辺画像に対応する画像を用いて座標を定めて、ユーザインタフェース操作を再現する。
【0015】
従って、自動テストを行う準備段階に於いて、ユーザにとって非常に作業負荷がかかり、更に大規模なソフトウェア開発を実施する際には、操作手順の量が増えることは必至であり、テスト用のスクリプト作成の作業量も増え、開発コスト軽減を目的とするためのテスト自動化ソフトウェアが、開発コスト増といった結末を招く可能性が十分にあり得る。
【0016】
本発明では、上記課題を解決するために、よりテスト精度の高いテスト用のスクリプトを作成すると共に、テスト用のスクリプト作成時に要する作業負荷を軽減することによって、テスト及び評価工程における開発コストを軽減することが可能なテスト支援装置を提供することを目的とする。
【課題を解決するための手段】
【0017】
上記目的を達成するための第一の発明は、画面に対する操作を検知する操作検知部と、連続して録画され得られた前記画面の画像データに基づいて、前記操作検知部によって操作を検知したタイミング前の前記画像データの画素の値と前記検知したタイミング後の前記画像データの画素の値とが異なる領域を検知画像として取得する検知画像解析部と、前記操作検知部によって検知した操作に関する操作情報と前記検知画像解析部によって取得した検知画像を特定するための特定情報とを用いてテスト用スクリプトを生成するスクリプト生成部と、前記スクリプト生成部によって生成したテスト用スクリプトに基づいて、テスト対象となる画面に対して前記特定情報によって特定される画像データが該当する位置座標を定め、前記位置座標を用いて前記操作情報に関する操作を行うスクリプト実行部と、を備えたことを特徴とする。
【0018】
上記目的を達成するための第二の発明は、画面に対する操作を検知する操作検知工程と、連続して録画され得られた前記画面の画像データに基づいて、前記操作検知工程によって操作を検知したタイミング前の前記画像データの画素の値と前記検知したタイミング後の前記画像データの画素の値とが異なる領域を検知画像として取得する検知画像解析工程と、前記操作検知工程によって検知した操作に関する操作情報と前記検知画像解析工程によって取得した検知画像を特定するための特定情報とを用いてテスト用スクリプトを生成するスクリプト生成工程と、前記スクリプト生成工程によって生成したテスト用スクリプトに基づいて、テスト対象となる画面に対して前記特定情報によって特定される画像データが該当する位置座標を定め、前記位置座標を用いて前記操作情報に関する操作を行うスクリプト実行工程と、を実行することを特徴とする。
【0019】
上記目的を達成するための第三の発明は、テスト支援装置において実行されるプログラムであって、前記テスト支援装置を、画面に対する操作を検知する操作検知手段と、連続して録画され得られた前記画面の画像データに基づいて、前記操作検知手段によって操作を検知したタイミング前の前記画像データの画素の値と前記検知したタイミング後の前記画像データの画素の値とが異なる領域を検知画像として取得する検知画像解析手段と、前記操作検知手段によって検知した操作に関する操作情報と前記検知画像解析手段によって取得した検知画像を特定するための特定情報とを用いてテスト用スクリプトを生成するスクリプト生成手段と、前記スクリプト生成手段によって生成したテスト用スクリプトに基づいて、テスト対象となる画面に対して前記特定情報によって特定される画像データが該当する位置座標を定め、前記位置座標を用いて前記操作情報に関する操作を行うスクリプト実行手段と、して機能させるためのプログラム。
【発明の効果】
【0020】
本発明によれば、ユーザインタフェース操作が施された位置の周辺画像からテスト用のスクリプトにて用いる当該位置の座標値を求めてテスト用のスクリプトを自動生成することで、ソフトウェア開発におけるテスト及び評価工程における開発コストを軽減することができる、という効果を奏する。
【図面の簡単な説明】
【0021】
【図1】本発明の実施形態に係るテスト支援装置のハードウェアの概略構成を示す構成図である。
【図2】本発明の実施形態に係るテスト支援装置におけるモジュールの機能構成を示す構成図である。
【図3】本発明の実施形態に係るテスト支援装置におけるモジュールの詳細な機能の構成を示す構成図である。
【図4】本発明の実施形態に係るテスト支援装置におけるテスト用スクリプトを作成する処理を示すフローチャートである。
【図5】本発明の実施形態におけるテスト用スクリプトの生成に当たり、ユーザインタフェース操作が施された位置の周辺画像を特定する処理を示すフローチャートである。
【図6】本発明の実施形態におけるテスト用スクリプトの生成に当たり、ユーザインタフェース操作が施された位置の周辺画像の候補を選定する処理を示すフローチャートである。
【図7】本発明の実施形態におけるテスト用スクリプトの生成に当たり、ユーザインタフェース操作を示すスクリプトの生成に関する処理を示すフローチャートである。
【図8】本発明の実施形態におけるテスト用スクリプトを実行する処理を示すフローチャートである。
【図9】本発明の実施形態において、押下されたボタンを検知したことを説明するための説明図である。
【図10】本発明の実施形態において、選択されたチェックボタンを検知したことを説明するための説明図である。
【図11】本発明の実施形態において、選択されたラジオボタンを検知したことを説明するための説明図である。
【図12】本発明の実施形態において、リストからレコードが選択されたことを検知したことを説明するための説明図である。
【図13】本発明の実施形態において、コンボボックス(スクロールなしの場合)からレコードが選択されたことを検知したことを説明するための説明図である。
【図14】本発明の実施形態において、コンボボックス(スクロールありの場合)からレコードが選択されたことを検知したことを説明するための説明図である。
【図15】本発明の実施形態において、メニューからレコードが選択されたことを検知したことを説明するための説明図である。
【図16】本発明の実施形態におけるテスト用スクリプトの一例であるソースコードである。
【発明を実施するための形態】
【0022】
以下、図面を参照して、本発明の実施形態を詳細に説明する。
【0023】
図1は、本発明の実施形態に係るテスト支援装置のハードウェアの構成を示す構成図である。
【0024】
図1において、100は、作成したソフトウェアのテストを実行するコンピュータであるテスト支援装置であり、ROM102あるいは外部メモリ104には、CPU106の制御プログラムであるBIOS(Basic Input / Output System)やOS、または、テスト支援装置100の実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。
【0025】
RAM108は、CPU106の主メモリ、ワークエリア等として機能する。CPU106は、処理の実行に際して必要なプログラム等をRAM108にロードして、プログラムを実行することで各種動作を実現するものである。
【0026】
また、キーボードコントローラ(KBC)110は、キーボード112をポイントデバイスコントローラ(PDC)114はマウス116やその他のポインティングデバイスからの入力を制御する。ビデオコントローラ(VC)118は、ディスプレイ120等の表示機への表示を制御する。
【0027】
メモリコントローラ(MC)122は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HDD)やフロッピーディスク(登録商標 FD)或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュメモリ等の外部メモリ104へのアクセスを制御する。
【0028】
ROM102、CPU106、RAM108、キーボードコントローラ(KBC)110、イントデバイスコントローラ(PDC)114、ビデオコントローラ(VC)118、及びメモリコントローラ(MC)122は、システムバス124を介して接続されており、相互に制御信号の送受信を行っている。
【0029】
図2は、本発明の実施形態に係るテスト支援装置100におけるモジュールの機能構成を示す構成図である。
【0030】
テスト支援装置100は、作成したソフトウェアのテストを実行するための環境が整備されており、テスト支援装置100には、作成したソフトウェアを示すテスト対象アプリケーション200、作成したソフトウェアに対して自動テストを行う際に利用するテスト用スクリプトを自動生成するスクリプト生成モジュール202、及び生成したテスト用スクリプトを用いてテスト対象アプリケーションの自動テストを実行するスクリプト実行モジュール204から構成されている。
【0031】
図3は、本発明の実施形態に係るテスト支援装置100におけるモジュールの詳細な機能構成を示す構成図である。
【0032】
スクリプト生成モジュール202は、画面録画部300を備えており、画面録画部300は、図1に示すディスプレイ120に連続して表示される画面の動画ファイルを画面動画302としてROM102や外部メモリ104等の記録媒体に記録する。
【0033】
この場合、録画の開始を指示入力するための不図示の画面を準備し、当該画面に備えられた録画開始ボタン等がキーボード112やマウス116等のポインティングデバイスによって押下されたタイミングで録画を開始し、録画を中止する場合は、録画中止ボタン等が当該ポインティングデバイスによって押下されたタイミングで録画を中止する。
【0034】
GUI操作入力部304は、図1に示すキーボード112やマウス116等のポインティングデバイスを示しており、ユーザは、GUI操作入力部304を用いてテスト用スクリプトの生成や生成したテスト用スクリプトを実行することで、テスト対象アプリケーション200の自動テストを行う。
【0035】
また、スクリプト生成モジュール202は、GUI操作検知部306、GUI操作前画面画像生成部308、GUI操作後画面画像生成部310、及びスクリプト生成部312を備えており、GUI操作検知部306は、GUI操作入力部304、GUI操作前画面画像生成部308、GUI操作後画面画像生成部310、及びスクリプト生成部312に接続されている。
【0036】
GUI操作検知部306は、GUI操作入力部304によって入力されたキーボード112の打鍵、マウス116によるカーソルの操作等の操作情報(例えば、キーボード112であれば、リターンキーや「↓」あるいは「↑」キーの押下等のイベント情報や、マウス116を用いた場合、カーソル移動、右クリック、及び左クリック等のイベント情報)を検知した時に、GUI操作前画面画像生成部308及びGUI操作後画面画像生成部310に検知したことを示す操作検知情報を送信すると共に、スクリプト生成部312に操作情報を送信する。
【0037】
GUI操作前画面画像生成部308は、操作検知情報を受信すると、受信したタイミングより所定時間前から受信したタイミング迄に画面録画部300によって記録された画面動画302を用いて、例えばビットマップ形式の画像ファイルを生成する(つまり、受信したタイミング直前の画面動画302の1フレームを取得して画像ファイルを生成する。)。生成された画像ファイルは、GUI操作前画面画像314としてROM102や外部メモリ104等の記録媒体に記録する。
【0038】
また、GUI操作後画面画像生成部310は、操作検知情報を受信すると、受信したタイミングから所定時間後迄に画面録画部300によって記録された画面動画302を用いて、例えばビットマップ形式の画像ファイルを生成する(つまり、受信したタイミング直後の画面動画302の1フレームを取得して画像ファイルを生成する。)。生成された画像ファイルは、GUI操作後画面画像316としてROM102や外部メモリ104等の記録媒体に記録する。
【0039】
尚、GUI操作前画面画像314及びGUI操作後画面画像316が、GUI操作入力部304によって入力された操作に関連している画像ファイルであることを示すために、GUI操作前画面画像314を00001_before.bmpとして保存し、GUI操作後画面画像316を00001_after.bmpとして保存して、ファイル名に関連性があることを示す識別番号(本例では、00001を示す)を設定して保存を行う。
【0040】
スクリプト生成部312は、GUI操作検知部306によって送信された操作情報を受信し、受信した操作情報及び検知画像(詳細後述)を特定する特定情報に基づいて、テスト用スクリプト318を生成する。
【0041】
また、スクリプト生成モジュール202は、検知画像解析部320を備えており、検知画像解析部320は、スクリプト生成部312と接続されており、GUI操作前画面画像314及びGUI操作後画面画像316を取得して解析を行い、ユーザがGUI操作入力部304を用いて入力を行った位置の周辺画像ファイルを、取得して解析を行ったGUI操作前画面画像314から切出して生成し、生成された周辺画像ファイルは、検知画像322としてROM102や外部メモリ104等の記録媒体に記録する。
【0042】
尚、検知画像322を記録した記録媒体の所定領域(記録先のパス等)を特定情報としており、特定情報は、スクリプト生成部312へ送信される。
【0043】
スクリプト実行モジュール204は、スクリプト実行部324を含んで構成されており、スクリプト実行部324は、スクリプト生成部312によって生成されたテスト用スクリプト318の操作情報及び特定情報、検知画像解析部320によって生成され記録された検知画像322に基づいて、テスト対象アプリケーション200に対して自動テストを実行する。
【0044】
テスト用スクリプト318を実行させるには、実行を指示入力するための不図示の画面を準備し、当該画面に備えられたテスト開始ボタン等がキーボード112やマウス116等のポインティングデバイスによって押下されたタイミングでテスト用スクリプトを実行する。
【0045】
次に図4を用いて本発明の実施形態に係るテスト支援装置100におけるテスト用スクリプトを生成する処理を示すフローチャートである。尚、本フローチャートにおける各処理ステップは、CPU106の制御の下、実行される。
【0046】
ステップS100では、GUI操作入力部304によって、テスト対象アプリケーション200の起動指示がされたことを検知して、テスト対象アプリケーション200を起動し、次のステップS102では、画面録画部300によって、録画開始の指示入力がなされたことを検知して、ディスプレイ120に表示される画面の動画ファイルを画面動画302としてROM102や外部メモリ104等の記録媒体に記録する。
【0047】
ステップS104では、画面録画部300によって、録画中止の指示入力がなされたか否かを検知したか否かを判定し、検知した場合は、ステップS116へ処理を進め、検知しない場合は、ステップS106へ処理を進める。
【0048】
ステップS106では、GUI操作検知部306によって、GUI操作入力部304によって操作が行われたことを検知したか否かを判定し、検知した場合は、GUI操作前画面画像生成部308及びGUI操作後画面画像生成部310へ操作を検知した旨を示す操作検知情報を送信すると共に、当該操作に関する操作情報(例えば、キーボード112であれば、リターンキーや「↓」あるいは「↑」キーの押下等のイベント情報や、マウス116を用いた場合、カーソル移動、右クリック、及び左クリック等のイベント情報)をスクリプト生成部312へ送信した後、ステップS108へ処理を進め、検知しない場合は、ステップS114の後続の処理へ進める。
【0049】
ステップS108では、GUI操作前画面画像生成部308によって、ステップS106において送信された操作検知情報を受信し、受信したタイミングより所定時間前から受信したタイミング迄に画面録画部300によって記録された画面動画302を用いて、例えば、ビットマップ形式の画像ファイルを生成し(つまり、受信したタイミング直前の画面動画302の1フレームを取得して画像ファイルを生成し)、生成された画像ファイルを、GUI操作前画面画像314としてROM102や外部メモリ104等の記録媒体に記録する。
【0050】
ステップS110では、GUI操作後画面画像生成部310によって、ステップS106において送信された操作検知情報を受信し、受信したタイミングから所定時間後迄に画面録画部300によって記録された画面動画302を用いて、例えばビットマップ形式の画像ファイルを生成し(つまり、受信したタイミング直後の画面動画302の1フレームを取得して画像ファイルを生成し)、生成された画像ファイルを、GUI操作後画面画像316としてROM102や外部メモリ104等の記録媒体に記録する。尚、GUI操作前画面画像314及びGUI操作後画面画像316が関係していることを示すため、ファイル名には、関連が明示されるように識別番号を振ることで対応している。
【0051】
次にステップS112では、検知画像解析部320によって、ステップS108において記録媒体へ記録したGUI操作前画面画像314及びステップS110において記録媒体へ記録したGUI操作後画面画像316を取得して解析を行った後、ユーザがGUI操作入力部304を用いて入力を行った位置の周辺画像ファイルを、取得して解析を行ったGUI操作前画面画像314から切出して生成し、生成された周辺画像ファイルを、検知画像322としてROM102や外部メモリ104等の記録媒体の所定領域に記録する。
【0052】
尚、検知画像322を記録した記録媒体の所定領域(記録先のパス等)を特定情報として、スクリプト生成部312へ送信する。尚、本ステップにおける処理の詳細は、図5を用いて後述する。
【0053】
次にステップS114では、スクリプト生成部312によって、ステップS106において送信された操作情報及びステップS112において記録媒体へ記録した検知画像322を用いてテスト用スクリプトを生成する。
【0054】
ステップS116では、画面録画部300によって、ディスプレイ120に表示される画面の動画の記録を中止し、次のステップS118では、テスト対象アプリケーション200を停止する。
【0055】
次に、検知画像解析処理における処理の詳細について、図5に示すフローチャートを用いて説明する。尚、本フローチャートにおける各処理ステップは、CPU106の制御の下、検知画像解析部320によって実行される。
【0056】
ステップS200では、ステップS108において記録媒体へ記録したGUI操作前画面画像314及びステップS110において記録媒体へ記録したGUI操作後画面画像316を取得して解析を行った後、ユーザがGUI操作入力部304を用いて入力を行った位置の周辺画像ファイルを、取得して解析を行ったGUI操作前画面画像314から切出して生成し、生成された周辺画像ファイルのなかから、検知画像322となり得る候補を特定し、GUI操作前画面画像314から特定されたものをGUI操作前範囲画像、GUI操作後画面画像316から特定されたものをGUI操作後範囲画像として、ROM102や外部メモリ104等の記録媒体に記録する。尚、本ステップにおける処理の詳細は、図6を用いて後述する。
【0057】
次にステップS202では、ステップS200において記録媒体へ記録されたGUI操作後範囲画像がリスト状態であるか否かを判定する。リスト状態とは、例えば、図14に示すGUI操作前に示される初期状態に対して、リストが選択されると、GUI操作後1に示すようにリストに複数のレコードが隣接して表示される。
【0058】
その後、複数のレコードに対して、GUI操作後1に示すように「↓」キー等が押下されたことを検知することによって1レコード選択された場合、選択されたレコード(図面(*.vsd))がハイライト表示され、GUI操作前の画像ファイルとGUI操作後1の画像ファイルとを比較すると、差分が検知されるため検知画像322しても良いが、スクロール等の操作が行われると、リストに表示されたレコードは変化するため、GUI操作後1の画像ファイルとGUI操作後2の画像ファイルとを比較すると、差分が検知されるため、レコードを選択していないにも関わらず、複数の検知画像322が生じてしまう。
【0059】
そのため、複数の検知画像322が生じた場合は、ユーザによって、表示されたレコードのうち選択がなされていないものとして、検知画像322の生成を行わないため本ステップを実行している。
【0060】
ステップS204では、ステップS200において記録媒体に記録されたGUI操作前範囲画像を検知画像候補としてROM102や外部メモリ104等の記録媒体に記録する。
【0061】
ステップS206では、ステップS204において記録媒体へ記録した検知候補画像が複数存在するか否かを判定し、複数存在する場合は、ステップS208へ処理を進め、複数存在しない場合は、処理を終了する。本ステップにおいて検知候補画像が複数存在する場合については、図11〜図13を用いて、後述する。
【0062】
ステップS208では、ステップS204において記録媒体へ記録した検知画像候補に対応するGUI操作後範囲画像の濃淡が濃い画像を検知画像322としてROM102や外部メモリ104等の記録媒体に記録する。尚、濃淡の比較については、図9〜図15を用いて詳細を説明する。
【0063】
また、本ステップでは、検知画像322を記録した記録媒体の所定領域を特定情報としてRAM108へ記憶され、スクリプト生成部312において、テスト用スクリプト318を生成する際に、RAM108へ記憶された特定情報が用いられる。
【0064】
次に、検知範囲画像取得処理における処理の詳細について、図6に示すフローチャートを用いて説明する。尚、本フローチャートにおける各処理ステップは、CPU106の制御の下、検知画像解析部320によって実行される。
【0065】
ステップS300では、ステップS110において記録媒体へ記録したGUI操作前画面画像314の画像ファイル及びGUI操作後画面画像316の画像ファイルの各画素の値を比較する。
【0066】
この場合、ファイル名に設定された識別番号に対して同一の識別番号を有するものを比較し、ステップS302では、ステップS300において、画素の値が異なるとされた画素を線で繋ぐ。
【0067】
次のステップS304では、線で繋がれた枠が四辺形であるか否かを判定し、四辺形であると判定した場合は、ステップS306へ処理を進め、四辺形でないと判定した場合は、ステップS308へ処理を進める。
【0068】
ステップS306では、線で繋がれた四辺形を矩形(あるいは正方形)に整形する。尚、矩形(あるいは正方形)への整形の方法については、図14に示すようにGUI操作前画面900の画像ファイルとGUI操作後画面904の画像ファイルとの比較から画素の値が異なるとされた画素を線で結んだ枠902と枠906とが示されており、これらの枠は、矩形(あるいは正方形)ではないため、枠として判定された箇所を含むようにして枠908のように矩形(あるいは正方形)に整形する。
【0069】
次にステップS308では、GUI操作前画面画像314に対して、ステップS306において矩形に整形された枠をGUI操作前範囲画像(周辺画像ファイル)としてROM102や外部メモリ104等の記録媒体に記録する。
【0070】
次にステップS310では、GUI操作後画面画像316に対して、ステップS306において矩形に整形された枠をGUI操作後範囲画像(周辺画像ファイル)としてROM102や外部メモリ104等の記録媒体に記録する。
【0071】
次に、スクリプト生成処理における処理の詳細について、図7に示すフローチャートを用いて説明する。尚、本フローチャートにおける各処理ステップは、CPU106の制御の下、スクリプト生成部312によって実行される。
【0072】
ステップS400では、ステップS106においてGUI操作検知部306から送信された操作情報を受信し、受信した操作情報をRAM108に記憶し、次のステップS402では、ステップS400においてRAM108に記憶した操作情報に基づいて、画像検索処理が必要であるか否かを判定する。
【0073】
尚、画像検索処理は、ユーザがGUI操作入力部304を用いて入力を行った位置の周辺画像ファイルから検知画像322を特定して、座標を求める方法を示しており、操作情報として、キーボード112であれば、リターンキーや「↓」あるいは「↑」キーの押下等のイベント情報や、マウス116を用いた場合、右クリック、及び左クリック等のイベント情報等の画面に配置されたボタンやリストを選択する際に用いる操作が行われた場合、当該画像検索処理が必要である。
【0074】
ステップS404では、ステップS112において検知画像322が記録された記録媒体の所定領域を示すパス、つまりRAM108に記憶された特定情報を含めて画像検索処理をテスト用スクリプト318に追加する。
【0075】
ステップS406では、ステップS400においてRAM108に記憶した操作情報に関する処理をテスト用スクリプト318に追加する。
尚、生成されたテスト用スクリプトの1例を図16に示す。
【0076】
2行目に示される関数Chkimg(“C:\image.bmp”)のChkimg( )が、ステップS402に記載された画像検索処理を示しており、C:\image.bmpについては、画像検索処理に必要な検知画像322が記憶された記録媒体の所定領域を示すパス、つまり特定情報を表わしており、当関数を使って、パスによって指定された所定領域に記録された検知画像322を取得することで、検索処理を行っている。
【0077】
また、3行目に示される関数BTN(LEFT、CLICK、598、261、10)のBTN( )がステップS402に記載された操作情報を示しており、BTN( )は、マウス116を用いた際の操作を示しており、BTN(右あるいは左の何れかを示す情報、クリック等のイベントを示す情報、テスト対象アプリケーション200における画面に対するX座標、テスト対象アプリケーション200における画面に対するY座標、・・・)というように定義される。
【0078】
X座標、Y座標については、Chkimgで取得した検知画像322から、テスト対象アプリケーション200における画面に対して該当する位置を特定し、特定された位置の該画面に対する座標を設定する。
【0079】
つまり、本例によると、2行目、3行目に記載されたスクリプトでは、C:\image.bmpに記憶された検知画像322を取得し、取得した検知画像322から、テスト対象アプリケーション200における画面に対して該当する位置を特定し、特定された位置の該画面に対するX座標が、598、Y座標が、261として設定され、LEFT、つまり左のボタンが、CLICK、つまりクリックされることを示している。
【0080】
次に、テスト用スクリプトを用いてテスト対象アプリケーションに対して自動テストを実行する処理について、図8に示すフローチャートを用いて説明する。尚、本フローチャートにおける各処理ステップは、CPU106の制御の下、スクリプト実行部324によって実行される。
【0081】
まず、ステップS500では、GUI操作入力部304によって、テスト対象アプリケーション200の起動指示がされたことを検知して、テスト対象アプリケーション200を起動し、更に不図示の画面に備えられたテスト開始ボタンがGUI操作入力部304によって入力されたことを検知すると、テスト用スクリプト318が実行される。
【0082】
次にステップS502では、テスト用スクリプト318に画像検索処理が存在するか否かを判定し、存在すると判定した場合は、ステップS504へ処理を進め、存在しないと判定し、かつテスト用スクリプト318が全て実行されていない場合は、ステップS502へ処理を進める。
【0083】
ステップS504では、画像検索処理において必要とする検知画像322をステップS112において記録された記録媒体の所定領域から取得し、取得した検知画像322とテスト対象アプリケーション200における画面に対して該当する位置を特定し、ステップS506では、ステップS503において特定された位置の該画面に対する座標を取得する。
【0084】
ステップS508では、ステップS506において取得した座標に対して、テスト用スクリプト318の操作情報に基づいて、ユーザインタフェースの操作を自動で実行を行う。尚、テスト用スクリプト318の全処理を行うまで、ステップS502からステップS508までの処理を繰り返す。
【0085】
ステップS510では、テスト対象アプリケーション200を停止し、本フローチャートにおける処理を終了する。
【0086】
次に図5に示す検知画像解析処理の第1例(ボタンが押下された場合)について図9を用いて説明する。
【0087】
テスト対象アプリケーション200における画面に対してなされたユーザインタフェース操作が検知された際に、GUI操作前範囲画像をGUI操作前画面400とし、GUI操作後範囲画像をGUI操作後画面402としており、GUI操作前画面400の画像ファイルとGUI操作後画面402の画像ファイルとの画素の値との比較から枠404と枠406が特定される。従って、枠404の周辺画像ファイルを検知画像408(検知画像322とする。)とする。
【0088】
次に図5に示す検知画像解析処理の第2例(チェックボタンが押下された場合)について図10を用いて説明する。
【0089】
テスト対象アプリケーション200における画面に対してなされたユーザインタフェース操作が検知された際に、GUI操作前範囲画像をGUI操作前画面500とし、GUI操作後範囲画像をGUI操作後画面502としており、GUI操作前画面500の画像ファイルとGUI操作後画面502の画像ファイルとの各画素の値との比較から枠504と枠606が特定される。従って、枠504の周辺画像ファイルを検知画像508(検知画像322とする。)とする。
【0090】
次に図5に示す検知画像解析処理の第3例(ラジオボタンが押下された場合)について図11を用いて説明する。
【0091】
テスト対象アプリケーション200における画面に対してなされたユーザインタフェース操作が検知された際に、GUI操作前範囲画像をGUI操作前画面600とし、GUI操作後範囲画像をGUI操作後画面602としており、GUI操作前画面600の画像ファイルとGUI操作後画面602の画像ファイルとの各画素の値との比較から枠604と枠608、及び枠606と枠610との2つの組合せにて、画素の値が異なることを検知し、複数の検知候補画像が特定される。
【0092】
枠604の検知候補画像を検知候補画像612とし、枠606の検知候補画像を検知候補画像614とすると、ユーザインタフェース操作が検知された後の画像の濃淡が濃い枠614を検知画像616(検知画像322とする。)とする。
【0093】
次に図5に示す検知画像解析処理の第4例(リストに表示されたレコードを選択する場合)について図12を用いて説明する。
【0094】
テスト対象アプリケーション200における画面に対してなされたユーザインタフェース操作が検知された際に、GUI操作前範囲画像をGUI操作前画面700とし、GUI操作後範囲画像をGUI操作後画面702としており、GUI操作前画面700の画像ファイとGUI操作後画面702の画像ファイルとの各画素の値との比較から枠704と枠708と、及び枠706と枠710との2つの組合せにて、画素の値が異なることを検知し、複数の検知候補画像が特定される。
【0095】
枠704の検知候補画像を検知候補画像712とし、枠706の検知候補画像を検知候補画像714とすると、ユーザインタフェース操作が検知された後の画像の濃淡が濃い枠714を検知画像716(検知画像322とする。)とする。
【0096】
次に図5に示す検知画像解析処理の第5例(コンボボックス(スクロールなしの場合)に表示されたレコードを選択する場合)について図13を用いて説明する。
【0097】
テスト対象アプリケーション200における画面に対してなされたユーザインタフェース操作が検知された際に、GUI操作前範囲画像をGUI操作前画面800とし、GUI操作後範囲画像をGUI操作後画面802としており、GUI操作前画面800の画像ファイルとGUI操作後画面802との画像ファイルの各画素の値との比較から枠808と枠810との各画素の値が異なることを検知する。従って、枠808の周辺画像ファイルを検知画像812(検知画像322とする。)とする。
【0098】
そして、次のユーザインタフェース操作が検知された際に、GUI操作前範囲画像をGUI操作後画面802とし、GUI操作後範囲画像をGUI操作後画面804としており、GUI操作後画面802の画像ファイルとGUI操作後画面804の画像ファイルとの各画素の値との比較から枠814と枠818と、及び枠816と枠820との2つの組合せにて、画素の値が異なることを検知し、複数の検知候補画像が特定される。
【0099】
枠814の検知候補画像を検知候補画像822とし、枠816の検知候補画像を検知候補画像824とすると、ユーザインタフェース操作が検知された後の画像の濃淡が濃い枠824を検知画像826(検知画像322とする。)とする。
【0100】
GUI操作画面806については、ユーザインタフェース操作が検知されずに、枠820に表示されている内容を表示しているのみである。
【0101】
次に図5に示す検知画像解析処理の第6例(コンボボックス(スクロールありの場合)に表示されたレコードを選択する場合)について図14を用いて説明する。
【0102】
テスト対象アプリケーション200における画面に対してなされたユーザインタフェース操作が検知された際に、GUI操作前範囲画像をGUI操作前画面900とし、GUI操作後範囲画像をGUI操作後画面904としており、GUI操作前画面900の画像ファイルとGUI操作後画面904の画像ファイルとの各画素の値との比較から枠902と枠906との各画素の値が異なることを検知する。
【0103】
但し、検知された枠は、矩形(あるいは正方形)の形状をしていないため、枠908に示すように全ての枠を含むような形状で矩形(あるいは正方形)に整形する。前述の通り、テスト対象アプリケーション200における画面に対して検知画像の該当する位置を特定した後、当該位置を1組のX座標及びY座標といった座標値として求めているため、このように矩形(あるいは正方形)に整形を行っている。つまり、画像検索処理で利用する関数に応じて、整形を行っている。
【0104】
次のユーザインタフェース操作が検知された際に、GUI操作前範囲画像をGUI操作後画面904とし、GUI操作後範囲画像をGUI操作後画面912としており、GUI操作後画面904の画像ファイルとGUI操作後画面910の画像ファイルの各画素の値との比較から、GUI操作後画面904のリストに表示されている各レコードの画素の値とGUI操作後画面910のリストに表示されている各レコードの画素の値とが異なることを検知し、複数の検知候補画像が特定される。
【0105】
この場合、複数の検知候補画像が縦方向に連なっている状態、つまり、画面に対する検知候補画像の左端のX座標が同一であり、縦方向に隙間なく連なった状態、つまり1つの検知候補画像の下端のY座標と当該検知候補画像の1つ下に表示される検知候補画像の上端のY座標が同一であり、この状態を本発明の実施形態では、リスト状態としている。リスト状態であるか否かは、このように検知候補画像の左端のX座標、及び検知候補画像の上端と下端とのY座標により判定を行っている。
【0106】
このようなリスト状態においては、点線の枠912のように検知画像は存在しない(選択されたレコードは存在しない)と見做される。何故ならば、リストに表示されたレコードが選択されるということは、レコードが選択されたタイミングで、ユーザインタフェース操作が検知されるため、検知されたタイミングの前後の時間内では、必ず、GUI操作後画面904のリストに表示されたレコードとGUI操作後画面910のリストに表示されたレコードとが一致するためである。
【0107】
次のユーザインタフェース操作が検知された際に、GUI操作前範囲画像をGUI操作後画面910とし、GUI操作後範囲画像をGUI操作後画面916としており、GUI操作後画面910の画像ファイルとGUI操作後画面916の画像ファイルの各画素の値との比較から枠914と枠918との各画素の値が異なることを検知する。従って、枠914の周辺画像ファイルを検知画像920(検知画像322とする。)とする。
【0108】
GUI操作画面924については、ユーザインタフェース操作が検知されずに、枠918に表示されている内容を表示しているのみである。
【0109】
尚、テスト用スクリプト318を作成するにあたり、コンボボックス(スクロールありの場合)の場合は、リスト状態でのユーザインタフェース操作(操作情報)は、「↓」キーダウン、あるいは「↑」キーダウンを実行し、検知画像920を検索するテスト用スクリプト318を生成するようにする。
【0110】
次に図5に示す検知画像解析処理の第7例(メニューに表示された項目を選択する場合)について図15を用いて説明する。
【0111】
テスト対象アプリケーション200における画面に対してなされたユーザインタフェース操作が検知された際に、GUI操作前範囲画像をGUI操作前画面1000とし、GUI操作後範囲画像をGUI操作後画面1002としており、GUI操作前画面1000の画像ファイルとGUI操作後画面1002の画像ファイルの各画素の値との比較から枠1006と枠1008との各画素の値が異なることを検知する。従って、枠1006の周辺画像ファイルを検知画像1010とする。
【0112】
そして、次のユーザインタフェース操作が検知された際に、GUI操作前範囲画像をGUI操作後画面1002とし、GUI操作後範囲画像をGUI操作後画面1004としており、GUI操作後画面1002の画像ファイルとGUI操作後画面1004の画像ファイルの各画素の値との比較から枠1012と枠1014との各画素の値が異なることを検知する。従って、枠1012の周辺画像ファイルを検知画像1016(検知画像322とする。)とする。
【0113】
以上、本発明によれば、ユーザインタフェース操作が施された位置の周辺画像からテスト用のスクリプトにて用いる当該位置の座標値を求めてテスト用のスクリプトを自動生成することで、ソフトウェア開発におけるテスト及び評価工程における開発コストを軽減することができる。
【0114】
以上、実施形態例を詳述したが、本発明は、例えば、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。また、本発明におけるプログラムは、各処理方法をコンピュータが実行可能(読み取り可能)なプログラムであり、本発明の記憶媒体は、各処理方法をコンピュータが実行可能
なプログラムが記憶されている。
【0115】
なお、本発明におけるプログラムは、各装置の処理方法ごとのプログラムであってもよい。
【0116】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読取り実行することによっても、本発
明の目的が達成されることは言うまでもない。
【0117】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記憶した記録媒体は本発明を構成することになる。
【0118】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,DVD−ROM,磁気テープ,不揮発性のメモリカード,ROM,EEPROM,シリコンディスク等を用いることができる。
【0119】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータで稼働しているOS等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0120】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0121】
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0122】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ,データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステム、あるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【0123】
100 テスト支援装置
102 ROM
104 外部メモリ
106 CPU
108 RAM
110 KBC
112 キーボード
114 PDC
116 マウス
118 VC
120 ディスプレイ
122 MC
124 バス



【特許請求の範囲】
【請求項1】
画面に対する操作を検知する操作検知部と、
連続して録画され得られた前記画面の画像データに基づいて、前記操作検知部によって操作を検知したタイミング前の前記画像データの画素の値と前記検知したタイミング後の前記画像データの画素の値とが異なる領域を検知画像として取得する検知画像解析部と、
前記操作検知部によって検知した操作に関する操作情報と前記検知画像解析部によって取得した検知画像を特定するための特定情報とを用いてテスト用スクリプトを生成するスクリプト生成部と、
前記スクリプト生成部によって生成したテスト用スクリプトに基づいて、テスト対象となる画面に対して前記特定情報によって特定される画像データが該当する位置座標を定め、前記位置座標を用いて前記操作情報に関する操作を行うスクリプト実行部と、
を備えたことを特徴とするテスト支援装置。
【請求項2】
前記検知画像解析部は、前記異なる領域が複数存在する場合は、前記タイミング後の検知画像の濃淡の濃い検知画像を検知画像として取得することを特徴とする請求項1に記載のテスト支援装置。
【請求項3】
前記検知画像解析部は、前記異なる複数の領域が隣接して存在する場合は、前記検知画像の取得を行わないことを特徴とする請求項1または2に記載のテスト支援装置。
【請求項4】
画面に対する操作を検知する操作検知工程と、
連続して録画され得られた前記画面の画像データに基づいて、前記操作検知工程によって操作を検知したタイミング前の前記画像データの画素の値と前記検知したタイミング後の前記画像データの画素の値とが異なる領域を検知画像として取得する検知画像解析工程と、
前記操作検知工程によって検知した操作に関する操作情報と前記検知画像解析工程によって取得した検知画像を特定するための特定情報とを用いてテスト用スクリプトを生成するスクリプト生成工程と、
前記スクリプト生成工程によって生成したテスト用スクリプトに基づいて、テスト対象となる画面に対して前記特定情報によって特定される画像データが該当する位置座標を定め、前記位置座標を用いて前記操作情報に関する操作を行うスクリプト実行工程と、
を実行することを特徴とするテスト支援装置の制御方法。
【請求項5】
テスト支援装置において実行されるプログラムであって、
前記テスト支援装置を、
画面に対する操作を検知する操作検知手段と、
連続して録画され得られた前記画面の画像データに基づいて、前記操作検知手段によって操作を検知したタイミング前の前記画像データの画素の値と前記検知したタイミング後の前記画像データの画素の値とが異なる領域を検知画像として取得する検知画像解析手段と、
前記操作検知手段によって検知した操作に関する操作情報と前記検知画像解析手段によって取得した検知画像を特定するための特定情報とを用いてテスト用スクリプトを生成するスクリプト生成手段と、
前記スクリプト生成手段によって生成したテスト用スクリプトに基づいて、テスト対象となる画面に対して前記特定情報によって特定される画像データが該当する位置座標を定め、前記位置座標を用いて前記操作情報に関する操作を行うスクリプト実行手段と、
して機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2012−103786(P2012−103786A)
【公開日】平成24年5月31日(2012.5.31)
【国際特許分類】
【出願番号】特願2010−249796(P2010−249796)
【出願日】平成22年11月8日(2010.11.8)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.コンパクトフラッシュ
【出願人】(390002761)キヤノンマーケティングジャパン株式会社 (656)
【出願人】(312000206)キヤノンMJアイティグループホールディングス株式会社 (259)
【出願人】(301015956)キヤノンソフトウェア株式会社 (364)
【Fターム(参考)】