(57)【特許請求の範囲】
【請求項１】
テスト対象となる対象プログラムの実行に応じて表示手段に表示された第１の画像を取得する第１の取得手段と、
前記第１の画像の部分画像であって、正解画像に対応する画像である対象画像を特定する第１の特定情報を指定することで、前記対象画像が描画された前記表示手段における位置及びサイズをブラウザに問い合わせる第１の問い合わせ手段と、
前記ブラウザが前記第１の特定情報により特定される前記対象画像を実際に描画した、前記表示手段における位置及びサイズを、前記ブラウザから受け取る第１の受け取り手段と、
前記第１の受け取り手段が受け取った位置及びサイズに基づいて、前記第１の画像から前記対象画像を抽出する対象画像抽出手段と、
前記対象画像と前記正解画像とが一致するか否かを判定する判定手段と、
前記判定手段による判定結果を表示する表示処理手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記判定手段は、前記ブラウザにより描画された前記対象画像に余白領域が生じた場合に、前記余白領域を除いた前記対象画像の一部と前記正解画像とが一致するか否かを判定し、一致した場合に、前記対象画像と前記正解画像とが一致すると判定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記判定手段は、前記ブラウザにより描画された前記対象画像に含まれる余白領域のサイズが前記ブラウザにより描画された前記正解画像に含まれる余白領域のサイズから変化した場合に、前記余白領域を除いた前記対象画像の一部と、前記余白領域を除いた前記正解画像の一部とが一致するか否かを判定し、一致した場合に、前記対象画像と前記正解画像とが一致すると判定することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記判定手段は、前記ブラウザにより描画された前記正解画像にマスク領域が含まれ、かつ前記ブラウザにより描画された前記対象画像にマスク領域が含まれる場合に、前記マスク領域を除いた前記対象画像の一部と前記マスク領域を除いた前記正解画像の一部とが一致するか否かを判定し、一致した場合に、前記対象画像と前記正解画像とが一致すると判定することを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記正解画像に含まれるマスク領域を特定する第２の特定情報及び前記対象画像に含まれるマスク領域を特定する第３の特定情報を指定することで、前記正解画像に含まれるマスク領域及び前記対象画像に含まれるマスク領域の前記表示手段における位置及びサイズをブラウザに問い合わせる第２の問い合わせ手段と、
前記ブラウザが前記正解画像のマスク領域及び前記対象画像のマスク領域を実際に描画した、前記表示手段における位置及びサイズを前記ブラウザから受け取る第２の受け取り手段と、
前記第２の受け取り手段が受け取った位置及びサイズに基づいて、前記正解画像のマスク領域及び前記対象画像のマスク領域を特定する特定手段と
をさらに有することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
正解プログラムの実行に応じて前記表示手段に表示された第２の画像を取得する第２の取得手段と、
前記第２の画像の部分画像である正解画像を特定する第４の特定情報を指定することで、前記正解画像が描画された前記表示手段における位置及びサイズをブラウザに問い合わせる第３の問い合わせ手段と、
前記ブラウザが前記第４の特定情報により特定される前記正解画像を実際に描画した、前記表示手段における位置及びサイズを前記ブラウザから受け取る第３の受け取り手段と、
前記第３の受け取り手段が受け取った位置及びサイズに基づいて、前記第２の画像から前記正解画像を抽出する正解画像抽出手段と
をさらに有することを特徴とする請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
前記第１の問い合わせ手段は、前記第１の特定情報としての、前記対象画像を識別する第１の識別子を指定することで、前記対象画像が描画された位置及びサイズをブラウザに問い合わせ、
前記第３の問い合わせ手段は、前記第４の特定情報としての、前記正解画像を識別する第２の識別子を指定することで、前記正解画像が描画された位置及びサイズをブラウザに問い合わせることを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記第１の問い合わせ手段は、前記第１の特定情報としての、前記対象画像の属性を指定することで、前記対象画像が描画された位置及びサイズを前記ブラウザに問い合わせ、
前記第３の問い合わせ手段は、前記第４の特定情報としての、前記正解画像の属性を指定することで、前記正解画像が描画された位置及びサイズを前記ブラウザに問い合わせることを特徴とする請求項６に記載の情報処理装置。
【請求項９】
前記第１の問い合わせ手段は、前記第１の特定情報としての、前記対象画像の前記対象プログラム中の構造化文書の位置を示す情報を指定することで、前記対象画像が描画された位置及びサイズを前記ブラウザに問い合わせ、
前記第３の問い合わせ手段は、前記第４の特定情報としての、前記正解画像の前記対象プログラム中の構造化文書の位置を示す情報を指定することで、前記対象画像が描画された位置及びサイズを前記ブラウザに問い合わせることを特徴とする請求項６に記載の情報処理装置。
【請求項１０】
前記判定手段は、前記対象画像と前記正解画像の各画素の比較結果に基づいて、前記対象画像と前記正解画像とが一致するか否かを判定することを特徴とする請求項１乃至９の何れか１項に記載の情報処理装置。
【請求項１１】
前記判定手段は、前記対象画像から検出されたエッジと前記正解画像から検出されたエッジの比較結果に基づいて、前記対象画像と前記正解画像とが一致するか否かを判定することを特徴とする請求項１乃至９の何れか１項に記載の情報処理装置。
【請求項１２】
前記判定手段は、複数の対象画像それぞれに対して予め設定された異なる判定条件に従い、各対象画像と正解画像とが一致するか否かを判定することを特徴とする請求項１乃至１１の何れか１項に記載の情報処理装置。
【請求項１３】
テスト対象となる対象プログラムの実行に応じて表示手段に表示された第１の画像を取得する第１の取得ステップと、
前記第１の画像の部分画像であって、正解画像に対応する画像である対象画像を特定する第１の特定情報を指定することで、前記対象画像が描画された前記表示手段における位置及びサイズをブラウザに問い合わせる第１の問い合わせステップと、
前記ブラウザが前記第１の特定情報により特定される前記対象画像を実際に描画した、前記表示手段における位置及びサイズを、前記ブラウザから受け取る第１の受け取りステップと、
前記第１の受け取りステップにおいて受け取った位置及びサイズに基づいて、前記第１の画像から前記対象画像を抽出する対象画像抽出ステップと、
前記対象画像と前記正解画像とが一致するか否かを判定する判定ステップと、
前記判定ステップにおける判定結果を表示する表示処理ステップと
を含むことを特徴とする情報処理方法。
【請求項１４】
コンピュータを、
テスト対象となる対象プログラムの実行に応じて表示手段に表示された第１の画像を取得する第１の取得手段と、
前記第１の画像の部分画像であって、正解画像に対応する画像である対象画像を特定する第１の特定情報を指定することで、前記対象画像が描画された前記表示手段における位置及びサイズをブラウザに問い合わせる第１の問い合わせ手段と、
前記ブラウザが前記第１の特定情報により特定される前記対象画像を実際に描画した、前記表示手段における位置及びサイズを、前記ブラウザから受け取る第１の受け取り手段と、
前記第１の受け取り手段が受け取った位置及びサイズに基づいて、前記第１の画像から前記対象画像を抽出する対象画像抽出手段と、
前記対象画像と前記正解画像とが一致するか否かを判定する判定手段と、
前記判定手段による判定結果を表示する表示処理手段と
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年ＧＵＩが充実してきており、コンピュータプログラムの実行結果を画像で出力する技術も知られている。また、従来から、コンピュータのシステム開発等に際して、システムが正常に動作するかどうか確認するためのテストが行われている。テストの実行には、テストのための準備、テストの実施、結果の確認等テスト管理者に負荷がかかるという問題があった。そこで、近年では、画像比較による簡易テストが行われるようになってきている。特許文献１には、画像比較によりコンピュータプログラムの実行結果を検証する技術が開示されている。特許文献１の技術では、コンピュータプログラムの実行により生成された２つの画像それぞれから指定されたマスク領域を除外した上で、画像比較が行われ、比較結果が表示される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１３４４０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、テストの対象プログラムにより表示された画像中の部分画像と正解プログラムにより表示された画像中の部分画像が一致するものの、その表示位置が異なる場合も想定される。このような場合には、部分画像は一致するとみなし、プログラムは正常に動作していると判定したい場合もある。
【０００５】
本発明はこのような問題点に鑑みなされたもので、画像の描画に係る記述を含むプログラムの検証を適切に実行することを目的とする。
【課題を解決するための手段】
【０００６】
そこで、本発明は、情報処理装置であって、テスト対象となる対象プログラムの実行に応じて表示手段に表示された第１の画像を取得する第１の取得手段と、前記第１の画像の部分画像であって、正解画像に対応する画像である対象画像を特定する第１の特定情報を指定することで、前記対象画像が描画された前記表示手段における位置及びサイズをブラウザに問い合わせる第１の問い合わせ手段と、前記ブラウザが前記第１の特定情報により特定される前記対象画像を実際に描画した、前記表示手段における位置及びサイズを、前記ブラウザから受け取る第１の受け取り手段と、前記第１の受け取り手段が受け取った位置及びサイズに基づいて、前記第１の画像から前記対象画像を抽出する対象画像抽出手段と、前記対象画像と前記正解画像とが一致するか否かを判定する判定手段と、前記判定手段による判定結果を表示する表示処理手段とを有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、画像の描画に係る記述を含むプログラムの検証を適切に実行することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、テスト装置のハードウェア構成を示す図である。
【図２】図２は、検証処理を示すフローチャートである。
【図３】図３は、正解プログラム及び対象プログラムの実行に係る処理の説明図である。
【図４】図４は、テスト結果の表示例を示す図である。
【図５】図５は、テスト結果の他の表示例を示す図である。
【図６】図６は、エッジ検出を用いた場合の、テスト結果の表示例を示す図である。
【図７】図７は、判定条件の説明図である。
【図８】図８は、判定条件の説明図である。
【図９】図９は、判定条件の説明図である。
【図１０】図１０は、判定条件の説明図である。
【図１１】図１１は、判定条件の説明図である。
【図１２】図１２は、第２の実施形態に係る検証処理を示すフローチャートである。
【図１３】図１３は、第３の実施形態に係る検証処理を示すフローチャートである。
【図１４】図１４は、正解部分画像群と対象部分画像群の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について図面に基づいて説明する。
【００１０】
本実施形態に係るテスト装置１００は、テスト対象のプログラムが正常に動作するか否かをテスト（検証）する装置である。以下、テスト対象プログラムを対象プログラムと称することとする。テスト装置１００は、対象プログラムに対して予め準備された正解プログラム及び対象プログラムそれぞれを実行し、各プログラムから得られた画像を比較する。この際、各プログラムから得られた画像全体で比較するのではなく、部分画像単位で画像比較を行うものとする。なお、テスト装置１００は、例えばバージョンアップ後のプログラムを対象プログラムとする場合には、バージョンアップ前のプログラムを正解プログラムとして利用することができる。なお、本実施形態に係るテスト装置１００がテスト対象とする対象プログラムと、これに対応する正解プログラムは、画像を表示する処理を含むものとする。
【００１１】
図１は、情報処理装置としてのテスト装置１００のハードウェア構成を示す図である。テスト装置１００は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ＨＤＤ１０４と、表示部１０５と、入力部１０６とを有している。ＣＰＵ１０１は、ＲＯＭ１０２に記憶された制御プログラムを読み出して各種処理を実行する。ＲＡＭ１０３は、ＣＰＵ１０１の主メモリ、一時記憶領域として用いられる。ＨＤＤ１０４は、画像データや各種プログラム等各種情報を記憶する。表示部１０５は、各種情報を表示する。入力部１０６は、キーボードやマウスを有し、ユーザによる各種操作を受け付ける。なお、後述するテスト装置１００の機能や処理は、ＣＰＵ１０１がＲＯＭ１０２又はＨＤＤ１０４に格納されているプログラムを読み出し、このプログラムを実行することにより実現されるものである。
【００１２】
図２は、テスト装置１００による検証処理を示すフローチャートである。ここで、検証処理は、テスト装置１００のコンピュータが検証プログラムを実行することにより実現される処理である。Ｓ２００において、ＣＰＵ１０１は、対象プログラム及び正解プログラムの実行を開始する。なお、ＣＰＵ１０１は、例えば、入力部１０６を介して、ユーザから開始指示を受け付けた場合に、対象プログラム及び正解プログラムの実行を開始する。
【００１３】
対象プログラム及び正解プログラムは、画像の描画に係る記述を含み、この記述に係る描画命令の実行は、ブラウザアプリケーション（以下、単にブラウザと称する）により行われる。すなわち、ＣＰＵ１０１は、対象プログラムを実行することにより、ブラウザを利用して、表示部１０５に画像を表示する。同様に、ＣＰＵ１０１は、正解プログラムを実行することにより、ブラウザを利用して、表示部１０５に画像を表示する。以下、対象プログラムを実行することにより描画、表示された画像を対象全体画像と称することとする。また、正解プログラムを実行することにより描画、表示された画像を正解全体画像と称することとする。なお、対象プログラム及び正解プログラムの実行タイミングは、特に限定されるものではなく、いずれか一方を先に実行してもよく、同時に実行してもよい。
【００１４】
図３は、正解プログラム及び対象プログラムの実行に係る処理の説明図である。正解プログラム３００が実行されると、ブラウザは、正解プログラム３００中のＨＴＭＬテキスト３１０を解釈し、ＯＳ（オペレーションシステム）に描画命令を送る。これに対し、ＯＳがＨＴＭＬテキスト３１０に対応する画像、すなわち正解全体画像３２０を描画する。図３の例では、正解全体画像３２０は、部分画像３２１，３２２，３２３を含んでいる。ここで、部分画像３２１，３２２，３２３は、ＨＴＭＬテキスト３１０において、画像ＩＤ「００１」，「００２」,「００３」に対応付けられた記述３１１，３１２，３１３に対応して描画された画像である。
【００１５】
同様に、対象プログラム３３０が実行されると、ブラウザは、対象プログラム３３０中のＨＴＭＬテキスト３４０を解釈し、ＯＳ（オペレーションシステム）に描画命令を送る。これに対し、ＯＳがＨＴＭＬテキスト３４０に対応する画像、すなわち対象全体画像３５０を描画する。図３の例では、対象全体画像３５０は、部分画像３５１，３５２，３５３を含んでいる。ここで、部分画像３５１，３５２，３５３は、ＨＴＭＬテキスト３４０において、画像ＩＤ「００１」，「００２」,「００３」に対応付けられた記述３４１，３４２，３４３に対応して描画された画像である。
【００１６】
さらに、本実施形態においては、正解全体画像及び対象全体画像のうち、検証対象、すなわち比較対象となる部分画像は、検証プログラムにおいて、予め定義されているものとする。本実施形態においては、検証プログラムにおいて、検証対象の部分画像を特定するための情報、すなわち特定情報として、画像ＩＤが定義されている。これは、画像ＩＤに対応付けられた記述に従い描画された部分画像が検証対象として設定されていることを意味する。例えば、図３に示すように検証プログラムにおいて、画像ＩＤ「００１」，「００３」が定義されている場合には、正解全体画像中の部分画像３２１，３２３及び対象全体画像中の部分画像３５１，３５３がそれぞれ検証対象の部分画像となる。なお、以下、正解全体画像中の検証対象の部分画像を、正解部分画像と称することとし、対象全体画像中の検証対象の部分画像を、対象部分画像と称することとする。
【００１７】
さらに、同一の画像ＩＤにより特定される正解部分画像と対象部分画像が比較対象、すなわち両画像が一致するか否かの判定対象の組となる。すなわち、図３の例では、正解部分画像３２１と、対象部分画像３５１が組となり、正解部分画像３２３と、対象部分画像３５３が組となる。なお、正解部分画像及び対象部分画像の画像単位は実施形態に限定されるものではない。例えば、部分画像３２１と部分画像３２２が合体した画像が１つの正解部分画像として検証プログラムにおいて定義されていてもよい。
【００１８】
本実施形態においては、正解プログラム及び対象プログラムにおいて、正解部分画像と、この正解部分画像と同等となるはずの対象部分画像には、同一の画像ＩＤが割り当てられている場合を例に説明を行うが、異なる画像ＩＤが対応付けられた正解部分画像と対象部分画像を比較することにより検証を行う必要がある場合もある。この場合には、対象プログラムの作成者や検証者等が、検証プログラムにおいて、正解部分画像及び対象部分画像として異なる画像ＩＤを定義しておけばよい。なお、本実施形態においては、対象部分画像及び正解部分画像が比較対象となる画像であり、それぞれ対象画像及び正解画像の一例である。また、画像ＩＤは、画像を識別する識別子の一例である。
【００１９】
図２に戻り、ＣＰＵ１０１は、Ｓ２００の処理の後、処理をＳ２０１へ進める。Ｓ２０１において、ＣＰＵ１０１は、表示部１０５に表示された正解全体画像のスクリーンショット及び対象全体画像のスクリーンショットをそれぞれ正解全体画像及び対象全体画像として取得する。
【００２０】
次に、Ｓ２０２において、ＣＰＵ１０１は、正解全体画像から、検証プログラムにおいて定義されている画像ＩＤにより特定される部分画像を正解部分画像として抽出する（正解画像抽出処理）。同様に、ＣＰＵ１０１は、対象全体画像から、検証プログラムにおいて定義されている画像ＩＤにより特定される部分画像を対象部分画像として抽出する（対象画像抽出処理）。
【００２１】
以下、正解全体画像から正解部分画像を抽出する処理について詳述する。ＣＰＵ１０１は、ブラウザに対し、画像ＩＤを指定して正解部分画像の位置及びサイズを問い合わせる。これに対し、ブラウザは、再び正解プログラムの描画命令を実行し、指定された画像ＩＤに対応付けられたＨＴＭＬテキストの記述に基づいて描画した領域の位置及びサイズを特定する。なお、ここで特定される位置及びサイズの座標系は、Ｓ２０１において取得したスクリーンショット上の位置及びサイズの座標系と一致するものとする。また、ブラウザは、正解部分画像の領域として、長方形又は正方形の領域を特定するものとする。そして、ブラウザは、特定した位置及びサイズを示す情報として、正解部分画像の領域の左上の頂点と、縦及び横の長さを示す情報をＣＰＵ１０１に返す。ＣＰＵ１０１は、ブラウザから受け取った位置及びサイズに基づいて、Ｓ２０１において取得した正解全体画像から正解部分画像を抽出する。
【００２２】
例えば、図３の例では、ＣＰＵ１０１は、ブラウザに対し、画像ＩＤ「００１」、「００３」を指定した問い合わせを行い、ブラウザは、画像ＩＤ「００１」、「００３」に対応する正解プログラムの記述３１１、３１３に従い描画した部分画像３２１，３２３の領域を特定し、各部分画像３２１，３２３の領域の位置及びサイズを特定し、これをＣＰＵ１０１に返す。そして、ＣＰＵ１０１は、正解全体画像３２０から、部分画像３２１，３２３を抽出する。
【００２３】
なお、正解部分画像の領域の位置及びサイズを示す情報は、実施形態に限定されるものではない。他の例としては、部分画像情報は、対頂点（２点）の位置を示す情報でもよい。また、ブラウザが正解部分画像を描画した領域として特定する領域の形状は、実施形態に限定されるものではない。他の例としては、ブラウザは、正解部分画像の領域として、円形や三角形の領域を特定してもよい。ブラウザは、円形の領域を特定した場合、その位置及びサイズを示す情報として、円の中心位置と半径を示す情報をＣＰＵ１０１に返せばよい。また、ブラウザは、三角形の領域を特定した場合、その位置及びサイズを示す情報として、３点の位置を示す情報をＣＰＵ１０１に返せばよい。
【００２４】
以上、Ｓ２０２において正解全体画像から正解部分画像を抽出する処理について説明したが、対象全体画像から対象部分画像を抽出する処理は、正解全体画像から正解部分画像を抽出する処理と同様である。
【００２５】
このように、ＣＰＵ１０１は、検証プログラムにおいて定義された画像ＩＤを検索キーとして、正解プログラムのＨＴＭＬテキストの記述のうち、画像ＩＤに対応付けられた記述に従い描画された部分画像（領域）を正解部分画像として抽出する。同様に、ＣＰＵ１０１は、検証プログラムにおいて定義された画像ＩＤを検索キーとして、対象プログラムのＨＴＭＬテキストの記述のうち、画像ＩＤに対応付けられた記述に従い描画された部分画像（領域）を対象部分画像として抽出する。したがって、テスト装置１００は、対象全体画像における対象部分画像の位置が正解全体画像における正解部分画像の位置と異なる場合においても、対応する部分画像同士を正しく抽出することができる。
【００２６】
図２に戻り、Ｓ２０２の処理の後、Ｓ２０３においてＣＰＵ１０１は、Ｓ２０２において抽出された、同一の画像ＩＤに対応する対象部分画像と正解部分画像を組として１つ選択する。図３の例においては、例えば、正解部分画像３２１と、対象部分画像３５１とが組として選択される。次に、Ｓ２０４において、ＣＰＵ１０１は、Ｓ２０３において選択された対象部分画像と正解部分画像とを比較し、両画像が一致するか否かを判定する。そして、ＣＰＵ１０１は、両画像が一致する場合には（Ｓ２０４でＹｅｓ）、処理をＳ２０６へ進める。ＣＰＵ１０１は、両画像が一致しない場合には（Ｓ２０４でＮｏ）、処理をＳ２０５へ進める。
【００２７】
ＣＰＵ１０１は、両画像の対応するピクセル毎の画素値をそれぞれ比較し、比較結果に基づいて、両画像が一致するか否かを判定する。ＣＰＵ１０１は、ピクセル毎の画素値の比較において、画素値の差分が閾値未満であれば、両ピクセルが一致すると判定し、対応するすべてのピクセルの画素値が一致する場合に両画像が一致すると判定する。画素値の差分がある程度生じていても、一致とみなしてもよいような場合もある。このような場合には、比較的大きい値を閾値として設定すればよい。このように、両画像を一致と判定するための基準は、ユーザが要求する結果に応じて、自由に設定することができる。
【００２８】
また、他の例としては、ＣＰＵ１０１は、両画素が一致すると判定されたピクセル数が閾値以上の場合に、両画像が一致すると判定してもよい。また、他の例としては、ＣＰＵ１０１は、画素値の比較の前に、正解部分画像及び対象部分画像のノイズ除去を行ってもよい。
【００２９】
Ｓ２０５において、ＣＰＵ１０１は、対象部分画像のうち正解部分画像に一致しない不一致部分に対し、強調処理を施す。同様に、ＣＰＵ１０１は、正解部分画像のうち対応する対象部分画像に一致しない不一致部分に対し強調処理を施す。本実施形態においては、ＣＰＵ１０１は、不一致部分を囲う強調枠を重畳表示する。但し、強調処理は、ユーザが不一致部分を容易に特定できるように、他の部分と区別可能な表示形態に変更するような処理であればよく、具体的な処理は、実施形態に限定されるものではない。強調表示の他の例としては、不一致部分の表示色を変更する処理が挙げられる。
【００３０】
次に、Ｓ２０６において、ＣＰＵ１０１は、Ｓ２０２において抽出されたすべての対象部分画像と正解部分画像の組についてＳ２０４、Ｓ２０５の処理が完了しているか否かを確認する。ＣＰＵ１０１は、すべての組について処理が完了している場合には（Ｓ２０６でＹｅｓ）、処理をＳ２０７へ進める。ＣＰＵ１０１は、未処理の組が存在する場合には（Ｓ２０６でＮｏ）、処理をＳ２０３へ進める。この場合、Ｓ２０３において、ＣＰＵ１０１は、未処理の組を選択し、以降の処理を継続する。
【００３１】
Ｓ２０７において、ＣＰＵ１０１は、判定結果をテスト結果として表示する（表示処理）。本実施形態においては、ＣＰＵ１０１は、不一致部分が検出された場合には、テスト結果として、強調処理後の対象全体画像及び正解全体画像を表示する。また、ＣＰＵ１０１は、不一致部分が検出されなかった場合には、テスト結果として、強調処理の行なわれていない、対象全体画像及び正解全体画像を表示する。なお、ＣＰＵ１０１は、Ｓ２０７において、対象部分画像における不一致部分をユーザが識別できる画像を表示できればよく、例えば、対象部分画像と正解部分画像のみを表示してもよい。また、他の例としては、ＣＰＵ１０１は、対象部分画像のみ、又は不一致部分を示す対象部分画像のみを表示してもよい。また、他の例としては、対象全体画像及び正解全体画像と共に、対象部分画像及び正解部分画像の両方を表示してもよい。
【００３２】
図４は、テスト結果の表示例を示す図である。表示部１０５には、テスト結果を示すテスト結果画面４００が表示される。テスト結果画面４００の左側には、正解全体画像４１０が表示され、テスト結果画面４００の右側には、対象全体画像４２０が表示されている。図４の例においては、３か所の不一致部分が検出されており、各不一致部分には、強調枠が重畳表示されている。正解全体画像４１０中の強調枠４１１と、対象全体画像４２０の強調枠４２１は、対応する不一致部分に対して重畳されたものである。強調枠４１１，４２１に対応する領域においては、両画像間で＜／ｂｕｔｔｏｎ＞のフォントが異なっている。正解全体画像４１０には、他に強調枠４１２，４１３が表示され、対象全体画像４２０には、強調枠４１２，４１３それぞれに対応する強調枠４２２，４２３が表示されている。強調枠４１２，４２２に対応する領域においては、「ｃｏｎｔｅｎｔ内のボタン」の位置が異なっている。また、強調枠４１２に対応する領域中の「ｃｏｎｔｅｎｔの外のボタン」が強調枠４２２に対応する領域にはない点でも異なっている。また、強調枠４１３，４２３に対応する領域においては、強調枠４１３に対応する領域において「ここに」と表示されているのに対し、強調枠４２３に対応する領域において「こここ」と表示されている点で両画像が異なっている。このように、強調枠が表示されるので、ユーザは、不一致部分を容易に特定することができる。
【００３３】
図５は、テスト結果の他の表示例を示す図である。表示部１０５には、テスト結果を示すテスト結果画面５００が表示される。テスト結果画面５００上には、ユーザ操作に応じて左右に移動可能なバー５０１が重畳表示されている。そして、バー５０１の右側には、対象全体画像５２０が表示され、バー５０１の左側には、正解全体画像５１０が表示される。図５の表示例においては、バー５０１を移動することにより、視線を移動させることなく、正解全体画像５１０と対象全体画像５２０の不一致の内容を確認することができる。なお、テスト結果画面５００においても、不一致部分には、強調枠が重畳表示されている。
【００３４】
以上のように、本実施形態に係るテスト装置１００は、対象プログラムから得られた対象画像と正解画像との比較を、部分画像単位で行うことができる。したがって、正解全体画像における正解部分画像の位置と、対象全体画像における対象部分画像の位置が異なる場合であっても、正解部分画像と対象部分画像が一致している場合には、両画像は一致すると判定することができる。テストケースによっては、対応する正解部分画像と対象部分画像の画像同士が一致しさえすれば、位置がずれていても画像が一致すると判定したい場合もある。本実施形態においては、このようなケースにおいては、位置によらず、画像同士の比較により一致不一致の判定を行うことができる。
【００３５】
本実施形態に係るテスト装置１００の第１の変更例としては、Ｓ２０４において、ＣＰＵ１０１は、画素値の比較に替えて、正解部分画像及び対象部分画像それぞれから検出されたエッジの比較を行ってもよい。具体的には、ＣＰＵ１０１は、対象部分画像及び正解部分画像それぞれにおいてエッジ検出を行い、２つのエッジ画像を得る。ここで、エッジ画像とは、画像から検出されたエッジを示す画像である。そして、ＣＰＵ１０１は、２つのエッジ画像を比較し、両画像が一致する場合に、対象部分画像と正解部分画像が一致すると判定すればよい。
【００３６】
図６は、エッジ検出を用いた場合の、テスト結果の表示例を示す図である。図６（ａ）（ｂ）に示すように、２つのエッジ画像を重畳表示する。これにより、２つのエッジ画像において、エッジが一致する部分は、１つのエッジ画像が表示され、エッジが一致しない部分は、それぞれのエッジ画像が表示されることとなる。したがって、ユーザは、不一致部分を容易に特定することができる。さらに、ＣＰＵ１０１は、一致部分のエッジの表示色を黒、不一致部分のうち正解全体画像のエッジの表示色を青、不一致部分のうち対象全体画像のエッジの表示色を赤としてもよい。これにより、一致部分と不一致部分をより明確に示すことができる。
【００３７】
第３の変更例としては、検証プログラムにおいて、検証対象の正解部分画像及び対象部分画像の特定情報として、画像ＩＤにかえて、ＨＴＭＬテキストの構造における位置が定義されていてもよい。ここで、ＨＴＬＭテキストは構造化文書の一例である。この場合、ＣＰＵ１０１は、ＨＴＭＬテキストの構造における位置を指定して正解部分画像及び対象部分画像の位置及びサイズを問い合わせる。これに対し、ブラウザは、指定された位置の記述に基づいて描画した領域の位置及びサイズを特定する。そして、ブラウザは、特定した位置及びサイズを示す情報をＣＰＵ１０１に返せばよい。対象部分画像についても同様である。
【００３８】
第４の変更例としては、ＣＰＵ１０１は、対象プログラムを実行する度に、対応する正解プログラムを実行しなくともよい。例えば、既に、正解プログラムが実行され、正解全体画像を取得し、正解部分画像を抽出している場合には、ＣＰＵ１０１は、検証処理においては、対象プログラムのみを実行し、対象全体画像の取得、対象部分画像の抽出を行えばよい。
【００３９】
第５の変更例としては、対象部分画像と比較される画像は、部分画像に限定されるものではない。例えば、対象プログラムの実行により、特定の画像が表示できるか検証する場合においては、予め準備された特定の画像と、対象全体画像から抽出された対象部分画像とを比較すればよい。すなわち、この場合には、特定の画像（全体画像）が正解画像となる。
【００４０】
（第２の実施形態）
次に、第２の実施形態に係るテスト装置１００について説明する。第２の実施形態に係るテスト装置１００は、対象部分画像と正解部分画像の比較において、両画像が一致すると判定するための判定条件を複数有し、対象部分画像毎に異なる判定条件に従い両画像の一致不一致を判定することができる。以下、第２の実施形態に係るテスト装置１００について、第１の実施形態に係るテスト装置１００と異なる点について説明する。
【００４１】
まず、第２の実施形態に係るテスト装置１００が適用可能な判定条件について説明する。本実施形態に係るテスト装置１００は、以下に示す判定条件を対象部分画像に割り当てることができる。
【００４２】
１つ目の判定条件は、第１の実施形態において説明したように、組となる対象部分画像と正解部分画像とが全体として一致した場合に、両画像が一致すると判定するものである。なお、第１の実施形態において説明したように、テスト装置１００は、一致と判定するための条件（例えば、一致と判定する画素値の差分の閾値等）が異なる判定条件も設定可能とする。
【００４３】
２つ目の判定条件は、対象全体画像において、１つの対象部分画像がスクロール表示される場合に、スクロール表示により実現する対象部分画像全体と正解部分画像とを比較し、両画像が一致するか否かを判定するものである。図７は、２つ目の判定条件の説明図である。このように、対象部分画像が１つの対象全体画像から得られない場合には、ＣＰＵ１０１は、対象部分画像「ｃ」の一部である「ｃ１」が表示された対象全体画像７００から、「ｃ１」の部分を抽出する。また、ＣＰＵ１０１は、対象部分画像の「ｃ」の「ｃ１」以外の部分である「ｃ２」が表示された対象全体画像７１０から、「ｃ２」の部分を抽出する。そして、ＣＰＵ１０１は、抽出した部分を結合することにより、対象部分画像「ｃ」を得る。
【００４４】
なお、正解全体画像において、１つの正解部分画像がスクロール表示されている場合、テスト装置１００は、スクロール表示により実現する正解画像全体と対象部分画像とを比較する判定条件も設定可能とする。また、正解全体画像及び対象全体画像がスクロール表示されている場合、テスト装置１００は、スクロール表示により実現する正解部分画像の全体と、対象部分画像の全体とを比較する判定条件も設定可能とする。
【００４５】
３つ目の判定条件は、対象部分画像の一部と正解部分画像が一致する場合に、両画像が一致すると判定するものである。３つ目の判定条件の１つとしては、対象部分画像のうち下側の領域を除く領域と、対応する正解部分画像とが一致する場合に、両画像が一致すると判定するものがある。図８は、この判定条件の説明図である。このように、対象部分画像「ｄ」が他の部分画像ｅが縦方向に拡大したのに伴い拡大したとする。この場合、対象部分画像「ｄ」は、領域８２０に描画され、その下の領域８２１は余白となることがある。この場合、ＣＰＵ１０１は、正解部分画像「Ｄ」と対象部分画像「ｄ」の各画素を上から順に比較し、正解部分画像「Ｄ」のすべての画素との比較が終わった時点で、両画像が一致するか否かを判定する。これにより、下側にサイズがわからない余白が生じた場合であっても、対象部分画像「ｄ」と正解部分画像「Ｄ」との比較により両画像が一致か否かを判定することができる。
【００４６】
なお、テスト装置１００は、対象部分画像の上部、右側、左側に余白が生じる場合においても、これらの余白のサイズに関わらず、両画像が一致するか否かを判定するような判定条件も設定可能とする。
【００４７】
また、逆に、正解部分画像に余白が含まれていたのに対し、対応する対象部分画像において、余白がなくなる場合がある。このような場合に対応し、ＣＰＵ１０１は、正解部分画像の上部、右側、左側に余白が生じる場合においても、これらの余白のサイズに関わらず、両画像が一致するか否かを判定するような判定条件も設定可能とする。
【００４８】
４つ目の判定条件は、２つの対象部分画像の間の余白のサイズが変化している場合に、余白を除いた上で２つの対象部分画像を対応する正解部分画像と比較し、一致か否かを判定するものである。図９は、４つ目の判定条件の説明図である。正解全体画像９００中の正解部分画像「Ｆ」と「Ｇ」の間の余白が対象全体画像９１０において、正解部分画像「Ｈ」から対象部分画像「ｈ」に拡大したのに伴い、正解部分画像「Ｆ」と「Ｇ」の間の余白９０１が余白９１１に拡大したとする。この場合においても、テスト装置１００は、余白を除いた（トリミングした）上で、正解部分画像「Ｆ」と「Ｇ」の画像と、対象部分画像「ｆ」と「ｇ」の画像とを比較する。これにより、余白を無視した一致判定を行うことができる。
【００４９】
５つ目の判定条件は、正解部分画像と対象部分画像の一部の領域が不一致であっても両画像が一致すると判定するものである。図１０は、５つ目の判定条件の説明図である。正解部分画像１０００の領域「Ｊ」と、これに対応する対象部分画像の１０１０の領域「ｊ」には、例えばログイン日時等、プログラム実行毎に異なる情報が表示されるとする。この場合、ＣＰＵ１０１は、これら領域「Ｊ」と領域「ｊ」をマスク領域として、マスク領域以外の正解部分画像「Ｉ」と対象部分画像「ｉ」とが一致した場合に、両画像が一致と判定する。なお、マスク領域は、対象部分画像等と同様に、プログラムにおいて画像ＩＤに対応付けられているものとする。したがって、ＣＰＵ１０１は、ブラウザに問い合わせることにより、マスク領域を特定することができる。なお、他の例としては、ＣＰＵ１０１は、マスク領域「Ｊ」，「ｊ」の画素をすべて黒画素とするなど等しい画素とした上で、マスク領域を含む正解部分画像「Ｉ」と対象部分画像「ｉ」との一致判定を行ってもよい。
【００５０】
６つ目の判定条件は、マスク領域のサイズが変化している場合においても、マスク領域を除いた上で、対象部分画像と正解部分画像とを比較するものである。図１１は、６つ目の判定条件の説明図である。正解全体画像１１００の正解部分画像「Ｋ」のマスク領域「Ｌ」に対応する、対象全体画像１１１０のマスク領域「ｌ」が部分画像「ｍ」の縦方向への拡大に伴い拡大したとする。この場合においても、テスト装置１００は、正解部分画像「Ｋ」からマスク領域「Ｌ」を除いた部分と、対象部分画像「ｋ」からマスク領域「ｌ」を除いた部分とを比較する。これにより、マスク領域を無視した一致判定を行うことができる。テスト装置１００は、上述のようにマスク領域についても、画像ＩＤをキーとしてその領域を特定するため、このように、マスク領域のサイズが変化した場合であっても、サイズ変化後のマスク領域を正しく特定することができる。
【００５１】
本実施形態に係るテスト装置１００においては、対象部分画像に対し、対象全体画像単位で、上述の判定条件のうち一の判定条件を設定することができる。また、テスト装置１００は、対象全体画像に含まれる複数の対象部分画像それぞれに対し、異なる判定条件を設定することができる。なお、検証処理の実行前に、既に各対象部分画像への判定条件の設定が完了しているものとする。また、各対象部分画像への判定条件の設定は、例えば、ユーザ操作に応じて、ＣＰＵ１０１が、画像ＩＤに対応付けて判定条件を例えばＲＯＭ１０２に記録することにより行われる。また、他の例としては、検証プログラムにおいて、検証対象の特定情報としての画像ＩＤに対応付けて判定条件が定義されていてもよい。
【００５２】
図１２は、第２の実施形態に係るテスト装置１００による検証処理を示すフローチャートである。なお、第１の実施形態に係る検証処理（図２）の各処理と同一の処理には同一の番号を付している。Ｓ２０３において、部分画像の組を選択した後、ＣＰＵ１０１は、処理をＳ１２００へ進める。そして、Ｓ１２００において、ＣＰＵ１０１は、選択された対象部分画像に対して設定されている判定条件を特定する。その後、ＣＰＵ１０１は、処理をＳ２０４に進める。そして、Ｓ２０４において、ＣＰＵ１０１は、Ｓ１２００において特定された判定条件に従い、両画像が一致するか否かを判定する。なお、第２の実施形態に係るテスト装置１００のこれ以外の構成及び処理は、第１の実施形態に係るテスト装置１００の構成及び処理と同様である。以上のように、第２の実施形態に係るｑ１０１は、複数の対象部分画像それぞれを異なる判定条件に従い、正解部分画像と一致するか否かを判定することができる。
【００５３】
（第３の実施形態）
次に、第３の実施形態に係るテスト装置１００について説明する。第３の実施形態に係るテスト装置１００において実行される検証プログラムにおいては、検証対象の特定情報として、クラスが定義されている。そして、ＣＰＵ１０１は、対象プログラムのＨＴＭＬテキストの記述のうち、検証プログラムにおいて定義されたクラスに対応付けられた記述に従い描画された複数の正解部分画像からなる正解部分画像群を抽出する。同様に、ＣＰＵ１０１は、対象プログラムのＴＨＭＬテキストの記述のうち、検証プログラムにおいて定義されたクラスに対応付けられた記述に従い描画された複数の対象部分画像からなる対象部分画像群を抽出する。ここで、クラスは、属性の一例である。以下、第３の実施形態に係るテスト装置１００について、他の実施形態に係るテスト装置１００と異なる点について説明する。
【００５４】
図１３は、第３の実施形態に係るテスト装置１００による検証処理を示すフローチャートである。なお、第１の実施形態に係る検証処理（図２）の各処理と同一の処理には同一の番号を付している。Ｓ２０１の処理の後、ＣＰＵ１０１は、処理をＳ１３００へ進める。Ｓ１３００において、ＣＰＵ１０１は、正解全体画像から、予め定められたクラスにより特定される部分画像を正解部分画像として抽出する。ＣＰＵ１０１はまた、正解部分画像を抽出する際に参照したクラスと同一のクラスにより特定される部分画像を対象部分画像として対象全体画像から抽出する。
【００５５】
次に、Ｓ１３０１において、ＣＰＵ１０１は、Ｓ１３００において抽出された各対象部分画像とＳ１３００において抽出された正解部分画像とを比較することにより、各対象部分画像と対になる正解部分画像を特定する。ＣＰＵ１０１は、Ｓ１３００において抽出したすべての対象部分画像と正解部分画像が対になったか否かを確認する。ＣＰＵ１０１は、正解部分画像を全探索することにより、各対象部分画像と対になる正解部分画像を検出する。
【００５６】
例えば、図１４に示すように、正解全体画像１４００から、正解部分画像「Ｎ」、「Ｏ」、「Ｐ」を含む正解部分画像群が抽出され、対象全体画像１４１０から、対象部分画像「ｎ」、「ｐ」、「ｏ」を含む対象部分画像群が抽出されたとする。この場合、ＣＰＵ１０１は、まず対象部分画像「ｐ」と対になる正解部分画像を検索する。すなわち、ＣＰＵ１０１は、３つの正解部分画像のうち一の部分画像を選択する。例えば、正解部分画像「Ｎ」を選択した場合、ＣＰＵ１０１は、対象部分画像「ｐ」と正解部分画像「Ｎ」とを比較する。両画像が一致しない場合、ＣＰＵ１０１は、正解部分画像「Ｏ」を選択し、再び両画像が一致しない場合、正解部分画像「Ｐ」を選択する。そして、ＣＰＵ１０１は、対象部分画像「ｐ」と正解部分画像「Ｐ」が一致すると、両画像が対になると判断する。同様の処理により、ＣＰＵ１０１は、対象部分画像「ｏ」、「ｎ」と対になる正解部分画像を検索する。
【００５７】
ＣＰＵ１０１は、Ｓ１３００において抽出されたすべての対象部分画像及び正解部分画像が対になった場合には（Ｓ１３０１でＹｅｓ）、処理をＳ１３０３へ進める。ＣＰＵ１０１は、対にならない対象部分画像及び対にならない正解部分画像の少なくとも一方が存在する場合は（Ｓ１３０１でＮｏ）、処理をＳ１３０２へ進める。ここで、対にならない場合とは、対象部分画像と正解部分画像の一部又は全部が一致しない場合と、対象部分画像と正解部分画像の数が一致せず、対応する部分画像（対象部分画像又は正解部分画像）が存在しない場合が挙げられる。
【００５８】
Ｓ１３０２において、ＣＰＵ１０１は、不一致部分に強調処理を施す。例えば、対象部分画像と正解部分画像の一部又は全部が一致しない場合には、ＣＰＵ１０１は、一致しない部分又は画像全体を不一致部分とし、この部分に強調処理を施す。また、対象部分画像と正解部分画像の数が一致しない場合には、ＣＰＵ１０１は、対になる部分画像が見つからなかった部分画像（対象部分画像又は正解部分画像）を不一致部分とし、この部分に強調処理を施す。なお、第３の実施形態に係るテスト装置１００のこれ以外の構成及び処理は、他の実施形態に係るテスト装置１００の構成及び処理と同様である。
【００５９】
なお、本実施形態において説明したテスト装置１００は、ネットワークを介して接続された複数の装置からなるシステムにより実現されてもよい。すなわち、テスト装置１００による検証プログラム、正解プログラム及び対象プログラムの実行は、それぞれ異なる装置により実行されていてもよい。また、プログラムの実行、画像表示、画像ファイルの保存は、それぞれ異なる装置により行われてもよい。
【００６０】
以上、上述した各実施形態によれば、画像の描画に係る記述を含むプログラムの検証を適切に実行することができる。
【００６１】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００６２】
１００  テスト装置
１０１  ＣＰＵ
１０５  表示部
【図１】
0006491959.tif 000002
【図２】
0006491959.tif 000003
【図３】
0006491959.tif 000004
【図４】
0006491959.tif 000005
【図５】
0006491959.tif 000006
【図６】
0006491959.tif 000007
【図７】
0006491959.tif 000008
【図８】
0006491959.tif 000009
【図９】
0006491959.tif 000010
【図１０】
0006491959.tif 000011
【図１１】
0006491959.tif 000012
【図１２】
0006491959.tif 000013
【図１３】
0006491959.tif 000014
【図１４】
0006491959.tif 000015