(57)【要約】      （修正有）【課題】ＧＵＩを備えたプログラムのテストにおいて、画面設計に変更があった場合でも、適切にテスト工程を自動化する。【解決手段】画面部品と対応するカラーマーカー３０１、３０２をテスト対象画面に表示させ、カラーマーカー中の画面部品識別子と画面部品の座標とを対応付けて記録し、テスト実行プログラムがカラーマーカーの位置を識別するすることで、テストスクリプト内で直接的に画面座標値を指定することなく正しいユーザー操作を再現することを可能とする。【選択図】図３
2017219978.tif 000002
【特許請求の範囲】
【請求項１】
画面データを読み込むステップと、
読み込まれた前記画面データからカラーマーカーの識別パターンを探索するステップと、
前記カラーマーカーと対応する画面部品の識別子と座標とを対応付けて保存するステップと、
前記保存された画面部品の識別子と座標に基づいて、テスト・スクリプト内の画面部品の識別子を座標に変換するステップとを含む、
コンピューターにより実行されるコンピューター・プログラムの自動テスト方法。
【請求項２】
画面データを読み込むステップと、
読み込まれた前記画面データからカラーマーカーの識別パターンを探索するステップと、
前記カラーマーカーと対応する画面部品の識別子と座標とを対応付けて保存するステップと、
前記保存された画面部品の識別子と座標に基づいて、ユーザーによる画面部品への操作を識別子をパラメーターとしてテスト・スクリプトとして保存するステップとを含む、
コンピューターにより実行されるコンピューター・プログラムの自動テスト方法。
【請求項３】
（テスト再生時のプログラムクレーム）
画面データを読み込む手順と、
読み込まれた前記画面データからカラーマーカーの識別パターンを探索する手順と、
前記カラーマーカーと対応する画面部品の識別子と座標とを対応付けて保存する手順と、
前記保存された画面部品の識別子と座標に基づいて、テスト・スクリプト内の画面部品の識別子を座標に変換する手順とをコンピューターに実行させる、
コンピューター・プログラムの自動テスト・プログラム。
【請求項４】
画面データを読み込む手順と、
読み込まれた前記画面データからカラーマーカーの識別パターンを探索する手順と、
前記カラーマーカーと対応する画面部品の識別子と座標とを対応付けて保存する手順と、
前記保存された画面部品の識別子と座標に基づいて、ユーザーによる画面部品への操作を識別子をパラメーターとしてテスト・スクリプトとして保存する手順とを
コンピューター・プログラムの自動テスト・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、コンピューター・プログラムの自動テストの方法およびプログラム、特に、ＧＵＩ（グラフィカルユーザーインターフェース）を備えたプログラムの効率的なテストための方法およびプログラムに関する。
【背景技術】
【０００２】
ソフトウェア（コンピューター・プログラム）開発においてテストは重要な工程であり、ソフトウェアの品質と開発効率性向上のためにはテスト工程を可能な限り自動化することが好ましい。
【０００３】
プログラムのテスト行程の自動化のために、プログラムに対するユーザーの一連の入力操作を記録し、スクリプト化（シナリオ化）して、自動的に反復実行可能にするための技術（自動操作エージェント）は公知である。
【０００４】
ＧＵＩを備えたプログラムのテスト自動化においては、ユーザーのマウスやキーボード入力操作や画面確認操作を記録して、反復実行させることが必要となるが、単にマウスのポインターの座標情報を記録するだけでは、対象プログラムのその後の画面設計の変更によりボタンや入力フィールドの位置が変わった場合に、スクリプト化されたユーザー操作の適切な再現が行なえなくなるという問題があった。
【０００５】
この問題を解決するために、ＧＵＩにおけるボタンなどの画面部品（ボタンや入力フィールド）が持つ識別子（内部ＩＤやキャプション）を取得し、画面座標ではなく識別子に基づいたユーザー操作の再現を行なうことで、画面部品の画面上の位置に依存せずに自動テストを行なう方法が知られている。しかし、ＧＵＩにおける画面部品の識別子を読み出す方法は、オペレーティング・システム等の環境により異なるためマルチプラットフォームへの対応が困難であること、また、たとえば画面がウェブブラウザーに表示されている場合等、動作環境によっては識別子の取得が困難または不可能であることといった問題があった。
【０００６】
この課題に対応するために、マウス操作の対象となるＧＵＩ部品の周辺の画像を保存しておくことにより、変更後の画面上で当該画像をサーチし、変更後の位置を獲得するという技術が提案されている（特許文献１および特許文献２）。しかし、当該技術には複雑な画像処理が必要であることから、よりシンプルな技術で同様の目的を達成できることが望ましい。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−３２０９９特許公開公報
【特許文献２】特開２０１５−００５２４５特許公開公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＧＵＩを備えたプログラムのテストにおいて、画面設計に変更があった場合でも、適切にテスト工程を自動化できる方法およびプログラムを提供する。
【課題を解決するための手段】
【０００９】
本願発明は、画面データを読み込むステップと、読み込まれた前記画面データからカラーマーカーの識別パターンを探索するステップと、前記カラーマーカーと対応する画面部品の識別子と座標とを対応付けて保存するステップと、前記保存された画面部品の識別子と座標に基づいて、テスト・スクリプト内の画面部品の識別子を座標に変換するステップとを含む、コンピューター・プログラムの自動テスト方法を提供することで上記課題を解決する。
【００１０】
また、本願発明は、画面データを読み込むステップと、読み込まれた前記画面データからカラーマーカーの識別パターンを探索するステップと、前記カラーマーカーと対応する画面部品の識別子と座標とを対応付けて保存するステップと、前記保存された画面部品の識別子と座標に基づいて、ユーザーによる画面部品への操作を識別子をパラメーターとしてテスト・スクリプトとして保存するステップとをコンピューター・プログラムの自動テスト方法を提供することで上記課題を解決する。
【００１１】
また、本願発明は、画面データを読み込む手順と、読み込まれた前記画面データからカラーマーカーの識別パターンを探索する手順と、前記カラーマーカーと対応する画面部品の識別子と座標とを対応付けて保存する手順と、前記保存された画面部品の識別子と座標に基づいて、テスト・スクリプト内の画面部品の識別子を座標に変換する手順とをコンピューターに実行させる、コンピューター・プログラムの自動テスト・プログラムを提供することで上記課題を解決する。
【００１２】
また、本願発明は、画面データを読み込む手順と、読み込まれた前記画面データからカラーマーカーの識別パターンを探索する手順と、前記カラーマーカーと対応する画面部品の識別子と座標とを対応付けて保存する手順と、前記保存された画面部品の識別子と座標に基づいて、ユーザーによる画面部品への操作を識別子をパラメーターとしてテスト・スクリプトとして保存する手順とをコンピューター・プログラムの自動テスト・プログラムを提供することで上記課題を解決する。
【発明の効果】
【００１３】
ＧＵＩを備えたプログラムのテストにおいて、画面設計に変更があった場合でも、適切にテスト工程を自動化できる方法およびプログラムが提供される。
【図面の簡単な説明】
【００１４】
【図１】本願発明に係るプログラム・テスト・システムの実施例の全体構成である。
【図２】本願発明に係るテスト・スクリプトの例である。
【図３】本願発明に係るプログラム・テスト・システムで使用される実施例の画面例である。
【図４】本願発明に係るテスト実行プログラムのユーザー操作記録の処理フローの一例である。
【図５】本願発明に係るテスト実行プログラムのユーザー操作再生の処理フローの一例である。
【発明を実施するための形態】
【００１５】
以下に図を参照しながら本願発明の実施例である情報システムについて説明する。当該情報システムは一般的なコンピューター上で稼働し、その上で実行されるプログラムの自動テスト工程の効率性を著しく向上させるものである。
【００１６】
図１に本願発明に係るプログラム・テスト・システムの実施例の全体構成を示す。テスト対象プログラム（１０１）は本願発明による自動テストの対象となるプログラムである。テスト対象プログラム（１０１）は開発中のプログラムであることからその画面設計が頻繁に変更されることが多い。テスト対象プログラム（１０１）は画面表示ライブラリ（１０２）を使用して、コンピューターの画面（１０３）にボタンや入力フィールドなどの画面部品を表示し、ユーザーからのマウスやキーボードによる入力操作を受付ける。加えて、画面表示ライブラリ（１０２）は、画面部品の周囲または隣等にその画面部品を識別するためのカラーマーカー（詳細は後述する）の表示を行なう機能を提供する。
【００１７】
テスト実行プログラム（１０４）は、保存されたテスト・スクリプト（１０５）にしたがってテストを反復実行するためのプログラムである。テスト実行プログラム（１０４）は、画面（１０３）に対するユーザーからのマウスやキーボードによる入力操作をエミュレートし、テスト対象プログラム（１０１）はそれをあたかもユーザーによる操作であるとして受付け、処理を行なう。加えて、テスト実行プログラム（１０４）は、画面（１０３）上に正しい表示が行なわれたかどうかを確認する機能を備えていることが望ましい。これにより、人手を介すことなくテスト対象プログラム（１０１）のテストを反復実行できる。
【００１８】
テスト・スクリプト（１０５）は、典型的には、テスト対象プログラム（１０１）が表示する画面（１０３）を人間が操作した際のマウスの動きやクリック操作を記録（キャプチャー）することより作成されるが、テキストエディター等により人手で作成・編集できるようにしてもよい。
【００１９】
画面部品識別子・座標対応表（１０６）は、画面部品の識別子とその画面上の位置を対応させて記録するための記憶手段であり、テスト対象プログラム（１０１）の画面設計の変更に伴い、テスト実行プログラム（１０４）により更新される。
【００２０】
図２にテスト・スクリプト（１０５）の一例を示す。スクリプトにしたがって、テスト実行プログラム（１０４）が、画面（１０３）に対する操作（人間による操作のエミュレート）を行なう際には、当然ながら、意図した画面部品（ボタンや入力フィールド）に対する操作を行なえることが必要である。もし画面部品の識別を画面中の座標値によって行なうと、テスト対象プログラム（１０１）の画面設計の変更により画面部品の位置が移動した場合に、意図した画面部品への操作が行なえなくなってしまいユーザー操作を正確に再現できなくなってしまうため、テスト・スクリプト（１０５）内では座標値ではなく、画面部品の識別子により画面部品を識別する。図２の例（２０２の箇所）では"maker_textBox1"という識別子を有するテキストボックス等を画面座標ではなく識別子で識別している。そして、Mouse.DoubleClick およびKeyboard.SendKeysというメソッドにより当該テキストボックスに対するマウスのダブルクリックとキー入力をエミュレートしている。
【００２１】
図３にテスト対象プログラム（１０１）の画面（１０３）の一例を示す（実際にはカラー画面を使用することが望ましい）。当該画面中の、テストにおいて操作・入力対象となる画面部品には、複数のピクセルの色によって情報をコード化した目印（カラーマーカー）が対応しており、画面表示ライブラリ（１０２）によって、当該画面部品の近隣に表示される。カラーマーカーの形状とそれが識別する画面部品の位置関係は、プログラムの設計段階における事前の取り決めにより決定されるが、たとえば、画面部品を構成する画面領域の一辺（たとえば、下辺）（３０１）、あるいは、画面領域の長方形を囲む形状（３０２）であってよい。カラーマーカーの幅（または高さ）はきわめて小さい（典型的には１ドット）ことが望ましい。こうすることにより、プログラムが本番利用される際の本来の画面レイアウトや動作に影響を与えることなく、テスト段階でカラーマーカーを画面中に表示できる。カラーマーカーの表示・非表示は、テスト対象プログラム（１０１）からの画面表示ライブラリ（１０２）呼び出し時のパラメーター指定で切り替えられることが望ましい。テスト対象プログラム（１０１）内でテスト版であることを示すフラグを定義しておき、そのフラグの値によりカラーマーカーの表示・非表示を切替えるコーディングを行なうことが望ましい。こうすることで、カラーマーカーを表示した状態でテストを行ない、テスト・フラグの定義部分のみを変更して再コンパイルを行なうことで、画面にカラーマーカーが表示されないテスト済本番用プログラムをビルドすることができる。
【００２２】
カラーマーカーには、ドットの色によって必要な情報がエンコードされている。当該情報には、一つ以上の識別パターン（画面に表示された他の画像と誤認識しないためのユニークなパターン）、および、対応する画面部品を識別するための識別子データが含まれる。具体的な値はプログラムの設計段階における事前の取り決めにより決定される。加えて、ＣＲＣなどのデータ正当性チェックを行なうためのデータも含まれることが望ましい。使用されるグラフィック表示のハードウェアやドライバー・ソフトウェアの実装によっては画面ピクセルのカラー値とテスト実行プログラム（１０４）がシステムのＡＰＩ経由で読み取ったカラー値が完全に一致するとは限らないので、カラーマーカーの各ピクセルが取り得るカラー値としては互いに十分な距離がある少数の値（たとえば、２５６色）を割り当てることが望ましい。
【００２３】
図４にテスト実行プログラム（１０４）の処理フロー（テスト・スクリプト作成ステップ）の例を示す。最初に、テスト実行プログラム（１０４）は、システムのＡＰＩを使用して画面（１０３）全体のデータを読取り、画面中のカラーマーカーの位置を探索する。各カラーマーカーには一つ以上の識別パターンが含まれていることから、これは単純なデータマッチ処理で行なうことができ、複雑な画像認識処理を行なう必要はない。マッチ処理においては、グラフィック表示のハードウェアやドライバー・ソフトウェアの実装によってＡＰＩ経由で読み取った画面ピクセルのカラー値がカラーマーカーとして設計上設定したカラー値と完全一致するとは限らないので、所定の閾値以内の近似値は同一として扱うロジックを採用することが望ましい。
【００２４】
次に、テスト実行プログラム（１０４）は、カラーマーカーに対応する画面部品の識別子とその座標とを対応付けて、画面部品識別子・座標対応表（１０６）に保存する。上記の処理を画面（１０３）上で認識されたすべてのカラーマーカーに対して行なう。
【００２５】
次に、テスト実行プログラム（１０４）は、ユーザーの画面操作をテスト・スクリプト（１０５）として記録（キャプチャー）する。各操作はマウスポインターの座標値ではなく、カラーマーカーにより識別される画面部品の識別子をパラメーターとして記録し、スクリプト化される。この処理の結果として図２に示したようなテスト・スクリプト（１０５）が作成される。
【００２６】
図５にテスト実行プログラム（１０４）の処理フロー（テスト実行ステップ）の例を示す。最初に、テスト実行プログラム（１０４）は、画面（１０３）全体のデータを読取り、画面中のカラーマーカーの位置を識別する（これは図４における処理と同様である）。次に、テスト実行プログラム（１０４）は、カラーマーカーに対応する画面部品の識別子とその座標とを対応付けて、画面部品識別子・座標対応表（１０６）に保存する。上記の処理を画面上のすべてのカラーマーカーに対して行なう。
【００２７】
次に、テスト実行プログラム（１０４）は、テスト・スクリプト（１０５）に基づき、テスト・スクリプト（１０５）内の画面部品識別子を画面部品識別子・座標対応表（１０６）に基づいてマウスポインターの座標に変換し、自動テストを実行する。仮にスクリプトの記録時と再生時で画面部品の位置が異なっている場合でも、カラーマーカーの探索処理と画面部品識別子・座標対応表（１０６）による変換処理によって画面部品の正しい座標が特定されるので、正確にユーザー操作の再現を行なうことができる。
【００２８】
（本願発明の技術的に顕著な効果）
本願発明により、ＧＵＩを使用するプログラムの自動テストを効率的かつ容易に行なうことができるようになる。特に、画面設計の変更が頻繁に発生するような場合のテストの効率性を向上できる。画像認識処理に依存する従来の方法と比較して、実装が容易であり、認識ミス率もきわめて小さい。画面設計の変更により、画面部品の位置が大きく変わった場合（たとえば、画面の最下部から最上部へ移動した場合）でも、確実に正しい画面部品への操作を再現できる。テスト用バージョンと本番用バージョンの切り替えは定数の定義を１箇所書き換えて再コンパイルするだけで行なうことができ、また、カラーマーカーの画面上のスペースは極小であってカラーマーカーのあるなしによる画面の相違も最小限であることから、本番環境と同じ状況でテストを行なうことができる。本番プログラムではカラーマーカーを表示する必要はないので画面設計の自由度が高い。
【図１】
2017219978.tif 000003
【図２】
2017219978.tif 000004
【図３】
2017219978.tif 000005
【図４】
2017219978.tif 000006
【図５】
2017219978.tif 000007
【手続補正書】
【提出日】平成28年6月6日(2016.6.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項３
【補正方法】変更
【補正の内容】
【請求項３】
画面データを読み込む手順と、
読み込まれた前記画面データからカラーマーカーの識別パターンを探索する手順と、
前記カラーマーカーと対応する画面部品の識別子と座標とを対応付けて保存する手順と、
前記保存された画面部品の識別子と座標に基づいて、テスト・スクリプト内の画面部品の識別子を座標に変換する手順とをコンピューターに実行させる、
コンピューター・プログラムの自動テスト・プログラム。