(57)【特許請求の範囲】
【請求項１】
ウェブブラウザのウィンドウに表示されたウェブページを操作し、操作後の前記ウィンドウの表示内容を記録する試験装置であって、
エンドユーザが前記ウェブページを閲覧する際に使用する第１のウェブブラウザのウィンドウを表示させる第１ブラウザ表示部と、
前記第１のウェブブラウザとは異なる第２のウェブブラウザのウィンドウを表示させる第２ブラウザ表示部と、
前記第２のウェブブラウザのウィンドウに表示されたウェブページに対する操作を実行する操作実行部と、
を備え、
前記第２ブラウザ表示部は、前記第１のウェブブラウザのウィンドウと前記第２のウェブブラウザのウィンドウとを同じ構成にするための付加的なオブジェクトを、前記第２のウェブブラウザのウィンドウに表示させることを特徴とする試験装置。
【請求項２】
前記第１のウェブブラウザのウィンドウにアドレスバーが表示される場合に、前記第２ブラウザ表示部は、前記付加的なオブジェクトとして、前記アドレスバーに対応するサイズのボタンオブジェクトを表示させることを特徴とする請求項１に記載の試験装置。
【請求項３】
前記第２のウェブブラウザのウィンドウに表示されたウェブページについて、その全体サイズと前記ウィンドウでの表示サイズに応じて、ウェブページ全体の画像を記録するためのスクロール回数を決定し、前記ウィンドウにおけるウェブページのスクロールと、前記ウィンドウに表示されたウェブページの画像の記録とを繰り返す画面キャプチャ部をさらに備えることを特徴とする請求項１または２に記載の試験装置。
【請求項４】
ウェブブラウザのウィンドウに表示されたウェブページを操作し、操作後の前記ウィンドウの表示内容を記録する試験装置に、
エンドユーザが前記ウェブページを閲覧する際に使用する第１のウェブブラウザのウィンドウを表示させる第１ブラウザ表示機能と、
前記第１のウェブブラウザとは異なる第２のウェブブラウザのウィンドウを表示させる第２ブラウザ表示機能と、
前記第２のウェブブラウザのウィンドウに表示されたウェブページに対する操作を実行する操作実行機能と、
を実現させ、
前記第２ブラウザ表示機能は、前記第１のウェブブラウザのウィンドウと前記第２のウェブブラウザのウィンドウとを同じ構成にするための付加的なオブジェクトを、前記第２のウェブブラウザのウィンドウに表示させることを特徴とするコンピュータプログラム。
【請求項５】
ウェブブラウザのウィンドウに表示されたウェブページを操作し、操作後の前記ウィンドウの表示内容を記録する試験装置と、サーバとを備え、
前記試験装置は、
エンドユーザが前記ウェブページを閲覧する際に使用する第１のウェブブラウザのウィンドウを表示させる第１ブラウザ表示部と、
前記第１のウェブブラウザとは異なる第２のウェブブラウザのウィンドウを表示させる第２ブラウザ表示部と、
前記第２のウェブブラウザのウィンドウに表示されたウェブページに対する操作を実行する操作実行部と、
前記第１のウェブブラウザのウィンドウの構成を前記サーバへ通知する通知部と、を含み、
前記サーバは、
前記第１のウェブブラウザのウィンドウと前記第２のウェブブラウザのウィンドウとを同じ構成にするための付加的なオブジェクトを、前記第２のウェブブラウザのウィンドウに表示させるためのプログラムを生成するプログラム生成部と、
前記プログラム生成部により生成されたプログラムを前記試験装置へ提供することにより、前記試験装置における第２のウェブブラウザのウィンドウの構成を変更させるプログラム提供部と、を含むことを特徴とする試験システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理技術に関し、ウェブページを試験するための技術に関する。
【背景技術】
【０００２】
ウェブページの試験は、一般的に、そのウェブページを表示するウェブブラウザに対して入力操作を行い、操作結果を確認することにより実施される。本出願人は、複数種類のウェブブラウザ上でウェブページを試験すべき場合に、試験の効率化を実現するための技術を以下の特許文献１において提案している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１６４７８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
エンドユーザがウェブページを閲覧するために使用するウェブブラウザ（ここでは「第１のウェブブラウザ」と呼ぶ。）と、そのウェブページを試験する際に使用するウェブブラウザ（ここでは「第２のウェブブラウザ」と呼ぶ。）とが異なることがある。この場合、エンドユーザがウェブページを視認する態様と、試験時のウェブページの表示態様とが異なるものとなり、ウェブページの試験品質を低下させてしまうと本発明者は考えた。
【０００５】
本発明は発明者の上記着想にもとづきなされたものであり、その主な目的は、ウェブページの試験品質の低下を抑制するための技術を提供することである。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様の試験装置は、ウェブブラウザのウィンドウに表示されたウェブページを操作し、操作後のウィンドウの表示内容を記録する試験装置であって、エンドユーザがウェブページを閲覧する際に使用する第１のウェブブラウザのウィンドウを表示させる第１ブラウザ表示部と、第１のウェブブラウザとは異なる第２のウェブブラウザのウィンドウを表示させる第２ブラウザ表示部と、第２のウェブブラウザのウィンドウに表示されたウェブページに対する操作を実行する操作実行部と、を備える。第２ブラウザ表示部は、第１のウェブブラウザのウィンドウと第２のウェブブラウザのウィンドウとを同じ構成にするための付加的なオブジェクトを、第２のウェブブラウザのウィンドウに表示させる。
【０００７】
本発明の別の態様は、試験システムである。この試験システムは、ウェブブラウザのウィンドウに表示されたウェブページを操作し、操作後のウィンドウの表示内容を記録する試験装置と、サーバとを備え  試験装置は、エンドユーザがウェブページを閲覧する際に使用する第１のウェブブラウザのウィンドウを表示させる第１ブラウザ表示部と、第１のウェブブラウザとは異なる第２のウェブブラウザのウィンドウを表示させる第２ブラウザ表示部と、第２のウェブブラウザのウィンドウに表示されたウェブページに対する操作を実行する操作実行部と、第１のウェブブラウザのウィンドウの構成をサーバへ通知する通知部と、を含む。サーバは、第１のウェブブラウザのウィンドウと第２のウェブブラウザのウィンドウとを同じ構成にするための付加的なオブジェクトを、第２のウェブブラウザのウィンドウに表示させるためのプログラムを生成するプログラム生成部と、プログラム生成部により生成されたプログラムを試験装置へ提供することにより、試験装置における第２のウェブブラウザのウィンドウの構成を変更させるプログラム提供部と、を含む。
【０００８】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明によれば、ウェブページの試験品質の低下を抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】自動試験ＡＰのソフトウェアスタックの概念図である。
【図２】自動試験ＡＰによるウェブページ試験の仕組みを説明する図である。
【図３】実施の形態の試験システムの構成を示す図である。
【図４】図３のタブレットＰＣの機能構成を示すブロック図である。
【図５】標準ブラウザのウィンドウを示す図である。
【図６】デフォルトの試験用ブラウザのウィンドウを示す図である。
【図７】試験用ブラウザ用の改変プログラムを示す図である。
【図８】改変プログラム適用後の試験用ブラウザのウィンドウを示す図である。
【図９】操作実行部の処理を説明するための概念図である。
【図１０】操作実行部の処理を説明するための概念図である。
【図１１】図３の管理サーバの機能構成を示すブロック図である。
【図１２】自動試験システム動作を示すフローチャートである。
【図１３】図１２のＳ１０のウェブブラウザ起動処理を詳細に示すフローチャートである。
【図１４】図１２のＳ１２のウェブページ取得処理を詳細に示すフローチャートである。
【図１５】図１２のＳ１４の画面要素操作処理を詳細に示すフローチャートである。
【図１６】試験対象のウェブページを模式的に示す図である。
【図１７】図１６のウェブページのプログラムコードを示す図である。
【図１８】図１２のＳ１６の画面キャプチャ処理を詳細に示すフローチャートである。
【図１９】図１２のＳ２０のキャプチャ画像提供処理を詳細に示すフローチャートである。
【図２０】図１６のウェブページのプログラムコードを示す図である。
【発明を実施するための形態】
【００１１】
本実施の形態では、Ａｎｄｒｏｉｄ（商標または登録商標）ＯＳ（Operating System）が搭載されたタブレットＰＣ上においてウェブページの自動試験を実行するアプリケーション（以下、「自動試験ＡＰ」とも呼ぶ。）を提案する。図１は、自動試験ＡＰ３００のソフトウェアスタックの概念図である。自動試験ＡＰ３００は、ＡｎｄｒｏｉｄＯＳに対応したオープンソースソフトウェアであるＳｅｌｅｎｉｕｍ２．０を基盤とする。オープンソース拡張クラス３０４は、Ｓｅｌｅｎｉｕｍ２．０の機能を修正・追加するクラス群である。例えば、サイドバーの隠蔽や不要なダイアログを非表示とする等の機能を提供する。
【００１２】
汎用部品３０６は、画面キャプチャによる画像取得や、ウェブページのロード待ち処理等、ウェブページの自動試験実行時に必要となる汎用的な部品（クラス群）である。画面操作共通部品３０８は、ウェブページに配置されたボタンやテキストエリア等の各種オブジェクトに対する操作部品（クラス群）である。後述のアクションクラスは、典型的に汎用部品３０６や画面操作共通部品３０８（が提供する関数・メソッド）を呼び出す。これらは自動試験ツールとしての資産と言え、Ｓｅｌｅｎｉｕｍ２．０やＡｎｄｒｏｉｄＯＳの更新・発展に応じて拡張される。
【００１３】
アクションクラス３１０は、ウェブページに配置されたボタンやテキストフィールド等の各種オブジェクトへの操作内容を保持するクラス群であり、典型的には画面単位（すなわちウェブページ単位）に作成される。アクションクラス３１０で規定される他の操作としては、試験対象のウェブページを取得して画面表示させる操作やウェブブラウザ画面（すなわちウェブブラウザのウィンドウに表示されたウェブページ画像）の縦もしくは横のスクロール操作、ウェブブラウザ画面のキャプチャ操作等がある。
【００１４】
データクラス３１２は、テストケース毎に定められる画面操作情報（例えばボタンに対する押下操作の有無や、テキストフィールドに対する入力文字を示す情報）を保持するクラス群であり、典型的にはテストケース毎に作成される。シナリオクラス３１４は、アクションクラスとデータクラスとを組み合わせ、これらをテストケースとして保持する。これらは試験スクリプトとしての資産と言え、試験を実施するアプリチームが試験対象の画面（ウェブページ）に応じて適宜開発する。
【００１５】
実施の形態の自動試験ＡＰ３００は、図１の自動試験ツールと試験スクリプトを包含するものである。なお図１には不図示であるが、自動試験ＡＰ３００は、自動試験ツールと試験スクリプトとを連携させ、ウェブページの試験を統括的に制御するクラス群（いわゆる試験実行エンジン）を含む。
【００１６】
またＳｅｌｅｎｉｕｍ２．０は、ウェブページの試験に使用するウェブブラウザであるＷｅｂＶｉｅｗ（以下、「試験用ブラウザ」とも呼ぶ。）を内包し、試験対象として指定されたウェブページをその試験用ブラウザに表示させる。またＳｅｌｅｎｉｕｍ２．０は、試験用ブラウザに表示させたウェブページを操作するための関数を外部（後述の操作実行部４４等）から呼び出し可能に公開する。
【００１７】
例えば、画面操作共通部品３０８や汎用部品３０６のクラス群が、Ｓｅｌｅｎｉｕｍ２．０が提供する関数を呼び出すと、Ｓｅｌｅｎｉｕｍ２．０は、呼び出された関数に対応する試験用ブラウザのＡＰＩを呼び出す。これにより、ユーザが指定した操作（典型的にはウェブページに配置された各種オブジェクトに対する入力操作）を、試験用ブラウザを介して試験対象のウェブページに対して実行する。すなわち典型的な関数呼び出し関係は、アクションクラス→画面操作共通部品３０８や汎用部品３０６→Ｓｅｌｅｎｉｕｍ２．０の公開関数→試験用ブラウザＡＰＩとなる。
【００１８】
またＳｅｌｅｎｉｕｍ２．０は、ウェブページの表示画面（試験用ブラウザに表示されたウェブページの画像）をキャプチャするための関数も公開する。なお、Ｓｅｌｅｎｉｕｍ２．０によるウェブページの操作の一部は、Ｓｅｌｅｎｉｕｍ２．０が、ＯＳが提供する関数をさらに呼び出すことにより実現される。
【００１９】
ここで図２を参照して、自動試験ＡＰ３００によるウェブページ試験の仕組みを概説する。図２（ａ）は試験対象のウェブページ１１０の表示画面を模式的に示し、図２（ｂ）はウェブページ１１０のＨＴＭＬプログラム１２０を示す。ウェブページ１１０のテキストフィールド１１２はＨＴＭＬプログラム１２０のコード１２２に対応し、ウェブページ１１０のボタン１１４はＨＴＭＬプログラム１２０のコード１２４に対応する。
【００２０】
図２（ｃ）は、ウェブページ１１０に対する操作種別を定めたアクションクラス１３０のコードを示す。アクションクラス１３０は、「（操作対象オブジェクトの識別情報）．画面操作共通部品３０８やアクションクラス３１０が提供する関数名（入力データ等の引数）」の形式で操作種別を規定する。図２（ｄ）は、ウェブページ１１０に対する操作での入力内容を定めたデータクラス１４０を示す。データクラス１４０は、アクションクラス１３０での関数呼び出し時の引数を規定している。
【００２１】
具体的には、図２（ｃ）のコード１３２は、画面操作共通部品３０８のｓｅｔＫｅｙ関数を呼び出し、図２（ｄ）のコード１４２が定める「１２３４」を、ウェブページ１１０のテキストフィールド１１２へ入力する操作を規定している。なお、ｓｅｔＫｅｙ関数の呼び出しを受け付けた画面操作共通部品３０８は、ｓｅｔＫｅｙ関数に対応するＳｅｌｅｎｉｕｍ２．０が提供する関数を呼び出す。また図２（ｃ）のコード１３４は、画面操作共通部品３０８のｃｌｉｃｋ関数を図２（ｄ）のコード１４４が定める「ＯＮ」を引数として呼び出すことにより、ウェブページ１１０のボタン１１４をクリックする操作を規定している。
【００２２】
実施の形態の自動試験ＡＰは、Ｓｅｌｅｎｉｕｍ２．０の機能を拡充してウェブページの試験効率の向上・試験品質の向上を実現する。その主な特徴を３点説明する。
（特徴１）ウェブページに配置された所定のオブジェクト（例えば、テキストフィールドやテキストエリア、プルダウンリスト等、以下「特殊オブジェクト」とも呼ぶ。）に対して試験データを設定すべき場合に、ウェブページのＤＯＭ（Document Object Model）ツリーを操作することにより試験データを直接設定する。
【００２３】
Ｓｅｌｅｎｉｕｍ２．０は、これらの特殊オブジェクトを操作するための関数を提供しており、内部的にＳｅｌｅｎｉｕｍ２．０はＯＳが提供する操作関数を呼び出す。しかし、ＯＳの操作関数を利用する方式は試験効率の面で問題があった。すなわち、ＯＳの操作関数を呼び出す方式では、テキストフィールドやテキストエリア等への文字入力の際にソフトウェアキーボードが表示され、ソフトウェアキーボードを介して文字入力がなされるため、文字入力に時間を要してしまう。本来、試験で確認すべきことは文字入力後（さらにボタン押下後）の画面表示の変化（例えば別のウェブページへの遷移）であり、文字入力そのものの成否ではないため、文字入力に長時間を要することは望ましくない。またプルダウンリストの操作時には、選択可能項目のリストを展開表示した際に処理が停止してしまうこともあった。
【００２４】
ここで自動試験ＡＰによる試験対象・正常性の確認対象は、あくまでウェブページであり、またウェブページを提供するウェブサーバであり、ソフトウェアキーボードやプルダウンリスト（を用いたデータ入力可否の確認）ではない。したがって、これらの部品を用いたデータ入力処理は経由しなくても、ウェブページやウェブサーバの挙動（例えばデータ入力後のウェブページの表示内容の変化）を確認するという試験目的は達成できる。
【００２５】
そこで自動試験ＡＰは、ウェブページの操作対象オブジェクトに対するＯＳが提供する操作関数であり、データ設定のためのＧＵＩオブジェクトを一旦表示させた上で操作対象オブジェクトにデータを設定する操作関数を呼び出すことを抑制する。この操作関数は、画面や画面内の入力フィールドに対するデータ入力のための、ＡｎｄｒｏｉｄＯＳが提供するネイティブ部品であるとも言える。自動試験ＡＰは、ＯＳが提供する操作関数を呼び出す代わりに、ウェブページのＤＯＭツリーにおけるオブジェクトの要素値を直接編集し、オブジェクトへ試験データを直接設定する。言い換えれば、タブレットＰＣ１２のメモリに展開された操作対象のオブジェクトのデータに対して、入力文字列や選択項目等の試験データを直接設定する。例えば、このようなＤＯＭツリー操作機能が、図２（ｃ）で示したｓｅｔＫｅｙ関数に実装される。これにより、ソフトウェアキーボードを使用することなく文字入力操作を実現し、またプルダウンリストを展開させることなく項目選択操作を実現し、それらの操作に要する時間を短縮することにより試験効率を向上させる。
【００２６】
（特徴２）試験用ブラウザのウィンドウを、タブレットＰＣの標準ブラウザのウィンドウと同じ構成になるよう調整する。なおウィンドウは、ウェブブラウザ等のアプリケーションの処理結果をディスプレイに表示させるための画面と言え、アプリケーションの処理結果を描画するためにＯＳが（アプリケーションに）提供するＧＵＩ部品、表示領域であるとも言える。
【００２７】
タブレットＰＣを使用するエンドユーザは、タブレットＰＣにおいて通常使用するブラウザ（いわゆる既定のブラウザ）として設定されたウェブブラウザ（以下、「標準ブラウザ」と呼ぶ。）を使用してウェブページを閲覧することが一般的である。標準ブラウザは、ＡｎｄｒｏｉｄＯＳがデフォルトで使用するウェブブラウザとも言える。その一方、Ｓｅｌｅｎｉｕｍ２．０に組み込まれた試験用ブラウザは標準ブラウザと異なる。そのため、標準ブラウザのウィンドウの構成と試験用ブラウザのウィンドウのデフォルトの構成は異なる。ウェブページの自動試験では、エビデンスとしてウェブページの表示画面をキャプチャするが、その画面キャプチャ画像が、エンドユーザが実際にウェブページを閲覧する際の画面と異なっていると試験の品質が低下してしまうことがある。
【００２８】
そこで自動試験ＡＰは、試験用ブラウザのウィンドウを標準ブラウザのウィンドウの構成とあわせるように、試験用ブラウザのウィンドウのレイアウトを調整する。例えば、標準ブラウザのウィンドウに表示される一方、試験用ブラウザのウィンドウには表示されないアドレスバーと同じサイズの付加的なオブジェクト（例えばボタンオブジェクト）を試験用ブラウザのウィンドウに表示させる。これにより、試験用ブラウザのウィンドウを、タブレットＰＣの標準ブラウザのウィンドウと同じ構成とし、ウェブページの表示態様を同じものにできる。この結果、試験のエビデンスとしての画面キャプチャ画像が、エンドユーザが標準ブラウザを使用してウェブページを閲覧する際のウェブページの見え方を反映したものとなり、試験の品質低下を抑制することができる。
【００２９】
また、Ａｎｄｒｏｉｄ端末の種類が異なると、各端末で標準的に用いられるウェブブラウザの種類も異なることがあり、各端末でウェブブラウザ（のウィンドウ）のレイアウトが異なることもある。さらにまた、ウェブページは複数種類のＡｎｄｒｏｉｄ端末で表示がサポートされる必要もあり、この場合、複数種類のＡｎｄｒｏｉｄ端末においてウェブページが試験されることもある。このような背景を踏まえ、本発明者は、複数種類のＡｎｄｒｏｉｄ端末に亘り、各端末で異なるウェブブラウザ（のウィンドウ）のレイアウトを吸収するための仕組みは重要であると考える。
【００３０】
（特徴３）アクションクラスにて操作対象として指定されたオブジェクトが、ウェブページにおいて操作可能な状態か否かを確認し、操作可能な状態である場合に、そのオブジェクトに対する操作を実行する。
【００３１】
本発明者は、ウェブサーバからのウェブページデータの取得自体は完了しても、そのウェブページに配置されたオブジェクトのロードは未完了なことがあることを知見した。例えば、ウェブサーバからのウェブページデータの取得とは非同期の処理がウェブページでなされる場合に、その非同期処理が完了して初めて操作対象オブジェクトの操作が可能になることがある。本来、試験で確認すべきことはオブジェクトに対する操作後の画面表示の変化（例えば別のウェブページへの遷移）であり、オブジェクトに対する操作の成否そのものではなく、オブジェクトのロード未完了に起因するエラーの発生は望ましくない。また、オブジェクトのロード未完了に起因するエラーが発生した場合、本来の試験目的を達成するために試験のやり直しが必要となり、試験効率の低下を招くことがある。
【００３２】
そこで自動試験ＡＰは、操作対象として指定されたオブジェクトが操作可能な状態であるか否かをＤＯＭツリーにアクセスして確認し、操作可能な状態であることを条件として、そのオブジェクトを操作する。これにより、オブジェクトのロード未完了に起因するエラーの発生を抑制して試験効率の低下を抑制する。
【００３３】
また、自動試験ＡＰが操作対象オブジェクトの状態を自動判定し、適切なタイミングで操作することにより、試験担当者は操作対象オブジェクトに対する厳密な操作タイミングを意識することなくアクションクラスを実装できる。例えば、操作対象オブジェクトが操作可能な状態になるまで待機する等のコードを個々のアクションクラスに実装する必要がなく、また、操作対象オブジェクトのロードタイミングにしたがって個々のアクションクラスのコードに修正が発生することを抑制できる。
【００３４】
具体例は後述するが、ウェブページのプログラムにおいて、ウェブサーバからウェブページを取得する処理とは非同期に実行される処理（外部との通信処理や描画処理等）が実装されることがある。例えば、ウェブページのリロードを伴わずにサーバとＸＭＬ形式のデータのやり取りするＡｊａｘコード等である。このような非同期処理が実行される場合、ウェブページのロード自体は完了しても、操作対象オブジェクトのロードが未完了の可能性がある。特徴３によると、オブジェクト操作時に、そのオブジェクトが操作可能な状態か否かを確認するため、ウェブページで非同期処理が実行される場合にも、オブジェクトのロード未完了に起因するエラーの発生を抑制できる。また上述したように、試験担当者は非同期処理における操作対象オブジェクトの状態を意識することなくアクションクラスを実装でき、非同期処理の影響によりアクションクラスのコードに修正が発生することを抑制できる。
【００３５】
図３は、実施の形態の試験システムの構成を示す。自動試験システム１００は、試験対象となるウェブページを提供するウェブサーバ１０と、タブレットＰＣ１２で総称されるタブレットＰＣ１２ａ、タブレットＰＣ１２ｂ、タブレットＰＣ１２ｃと、管理サーバ１４を備える。これらの装置は、ＬＡＮ・ＷＡＮ・インターネット等を含む通信網１６を介して接続される。
【００３６】
タブレットＰＣ１２は、ＡｎｄｒｏｉｄＯＳを搭載した携帯型の情報処理装置である。タブレットＰＣ１２はウェブページの試験装置として動作し、シナリオクラスの定義にしたがって試験対象となる１以上のウェブページをウェブサーバ１０から取得し、各ウェブページに対する操作を実行する。
【００３７】
管理サーバ１４は、タブレットＰＣ１２におけるウェブページ試験を管理する情報処理装置であり、タブレットＰＣ１２ａ〜タブレットＰＣ１２ｃのそれぞれで記録されたウェブページのキャプチャ画像を一括して保持する。また、試験用ブラウザの表示態様を標準ブラウザの表示態様に対応させるためのプログラムであり、タブレットＰＣ１２ａ〜タブレットＰＣ１２ｃそれぞれの標準ブラウザに応じて個々にカスタマイズしたプログラムを各タブレットＰＣ１２へ提供する。
【００３８】
図４は、図３のタブレットＰＣ１２の機能構成を示すブロック図である。タブレットＰＣ１２は、入力装置２０と、ディスプレイ２１と、ＯＳ部２２と、アプリケーション部２４を備える。
【００３９】
本明細書のブロック図において示される各ブロックは、ハードウェア的には、コンピュータのＣＰＵをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。例えばアプリケーション部２４の各機能ブロックは、プログラムモジュールと記録媒体に格納され、タブレットＰＣ１２のストレージへインストールされ、タブレットＰＣ１２のメインメモリに読み込まれてもよい。そしてＣＰＵにより実行されることで、各機能ブロックの機能が発揮されてもよい。他のブロック図についても同様である。
【００４０】
入力装置２０は例えばタッチパネルであり、ディスプレイ２１は例えば液晶ディスプレイや有機ＥＬディスプレイである。ＯＳ部２２はＡｎｄｒｏｉｄＯＳの機能を提供し、例えばタブレットＰＣ１２の動作を統括的に制御する。またＯＳ部２２は、入力装置２０やディスプレイ２１等のハードウェアとアプリケーション部２４との仲介機能も提供する。
【００４１】
アプリケーション部２４は、タブレットＰＣ１２にインストールされたアプリケーションプログラムの機能を提供する。アプリケーション部２４は、標準ブラウザ２６と自動試験部２８を含む。
【００４２】
標準ブラウザ２６は、タブレットＰＣ１２において既定のウェブブラウザとして設定されたウェブブラウザである。例えば、タブレットＰＣ１２に当初からインストールされたウェブブラウザ（Ｗｅｂｋｉｔ系ブラウザ等）であってもよい。また、タブレットＰＣ１２のユーザが既定のウェブブラウザとして指定した任意のウェブブラウザであってもよい。標準ブラウザ２６は、標準ブラウザのウィンドウをディスプレイ２１に表示させる標準ブラウザ表示部としても機能する。
【００４３】
図５は、標準ブラウザ２６のウィンドウを示す。同図は、標準ブラウザ２６のウィンドウをタブレットＰＣ１２のディスプレイ２１に表示させた状態であり、また検索サイトのＵＲＬを指定して、検索サイトのウェブページを表示させた状態を示している。標準ブラウザ２６のウィンドウは、ウェブページのタイトルを表示するタイトルバー１６０と、ウェブページのＵＲＬや操作用の各種アイコンを表示するアドレスバー１６２と、コンテンツ領域１６４を含む。コンテンツ領域１６４は、ウェブページのＨＴＭＬコードやＪＡＶＡスクリプトコード等にもとづくテキストやフォーム等の表示領域である（「ＪＡＶＡスクリプト」は登録商標）。
【００４４】
図５（ａ）は、初期の表示状態を示している。図５（ｂ）は、図５（ａ）のウィンドウに対する下スクロール操作が受け付けられたとき、言い換えれば、図５（ａ）のウェブページを下スクロールさせたときの表示状態を示している。図５（ｂ）で示すように、標準ブラウザ２６のウィンドウでは、下スクロール操作に伴って、初期はフルサイズで表示したアドレスバー１６２を徐々に非表示状態に移行させる。
【００４５】
図４に戻り、自動試験部２８は上述の自動試験ＡＰに対応する。自動試験部２８は、標準ブラウザ情報通知部３０と、試験用ブラウザ更新部３２と、試験支援部３４と、試験データ保持部４２と、操作実行部４４と、キャプチャ画像保持部５０と、画面キャプチャ部５２と、キャプチャ画像提供部５４を含む。試験支援部３４はＳｅｌｅｎｉｕｍ２．０に対応する機能ブロックである。試験支援部３４は、試験用ブラウザ３６と、ブラウザ表示部３７と、ページ管理部３８と、ページ操作仲介部４０を含む。
【００４６】
試験用ブラウザ３６は、Ｓｅｌｅｎｉｕｍ２．０がウェブページの試験に使用するために内包するウェブブラウザ（典型的にはＷｅｂＶｉｅｗ）である。試験用ブラウザ３６は、アクションクラスで指定された試験対象のウェブページのデータ（ＨＴＭＬプログラムやＪＡＶＡスクリプトプログラム、ＣＳＳ、画像等）をウェブサーバ１０から取得する。ブラウザ表示部３７は、試験用ブラウザ３６のウィンドウの構成（タイトルバーのレイアウト等）を定めたプログラムにしたがって、試験用ブラウザ３６のウィンドウをディスプレイ２１に表示させる。試験用ブラウザ３６は、そのウィンドウのコンテンツ領域にウェブページを描画する。
【００４７】
図６は、デフォルトの試験用ブラウザ３６のウィンドウを示す。同図は、デフォルトの試験用ブラウザ３６のウィンドウをタブレットＰＣ１２のディスプレイ２１に表示させた状態であり、また図５と同様に検索サイトのＵＲＬを指定して、検索サイトのウェブページを表示させた状態を示している。デフォルトの試験用ブラウザ３６のウィンドウは、タイトルバー１７０とコンテンツ領域１７２を含むがアドレスバーを含まない。またタイトルバー１７０の縦サイズは、標準ブラウザのタイトルバー１６０よりも小さい。
【００４８】
図６（ａ）は初期の表示状態を示している。図６（ｂ）は、図６（ａ）のウィンドウに対する下スクロール操作が受け付けられたとき、言い換えれば、図６（ａ）のウェブページを下スクロールさせたときの表示状態を示している。上述したように試験用ブラウザ３６のウィンドウにはアドレスバーが表示されないため、図５のコンテンツ領域１６４と図６のコンテンツ領域１７２のサイズが異なり、その結果、画面表示されるウェブページの範囲（サイズ）も異なるものとなる。
【００４９】
図４に戻り、ページ管理部３８は、タブレットＰＣ１２のメインメモリに展開されたウェブページのデータを、木構造形式で表現したデータ（具体的にはＤＯＭツリー）を保持する。このＤＯＭツリーは、ウェブページに配置されたボタンやテキストフィールド等のオブジェクトを要素として保持し、テキストフィールドやプルダウンリストに対する設定データ（入力文字列や選択項目等）を各要素の値（要素値）として保持する。
【００５０】
ページ操作仲介部４０は、試験用ブラウザ３６を操作するための関数としてＳｅｌｅｎｉｕｍ２．０が外部に公開する関数が呼び出された場合、その関数に対応する試験用ブラウザ３６のＡＰＩを呼び出すことにより、試験用ブラウザ３６を操作する。ページ操作仲介部４０は、例えばＳｅｌｅｎｉｕｍ２．０が内包するＳｅｌｅｎｉｕｍＷｅｂＤｒｉｖｅｒである。
【００５１】
標準ブラウザ情報通知部３０は、試験用ブラウザ３６の起動時に、所定の記憶領域に格納された試験用ブラウザ更新フラグを確認する。そのフラグが試験用ブラウザ３６の「未更新」（すなわちデフォルト状態）を示す場合、標準ブラウザ情報通知部３０は、標準ブラウザ２６のウィンドウの構成を示す情報を標準ブラウザ２６から取得する。この情報は、タイトルバー１６０の縦サイズとアドレスバー１６２の縦サイズの情報を含む。例えば、標準ブラウザ情報通知部３０は、標準ブラウザ２６のソースコードの記載内容にしたがって、上記サイズを特定してもよい。標準ブラウザ情報通知部３０は、標準ブラウザ２６のウィンドウの構成を示す情報を管理サーバ１４へ送信する。
【００５２】
後述するように管理サーバ１４は、標準ブラウザ２６のウィンドウの構成にしたがって試験用ブラウザ用の改変プログラムを生成する。試験用ブラウザ更新部３２は、管理サーバ１４から試験用ブラウザ用の改変プログラムを取得し、後述の試験用ブラウザ３６およびブラウザ表示部３７のオリジナルプログラムを改変プログラムにより上書き更新する（置き換える）。そして試験用ブラウザ更新フラグを「更新済」へ変更する。なお、タブレットＰＣ１２において標準ブラウザ（すなわち既定のウェブブラウザ）が変更された場合、試験用ブラウザ更新フラグは再度「未更新」へ戻される。
【００５３】
図７は、試験用ブラウザ用の改変プログラムを示す。図７（ａ）は試験用ブラウザ３６のオリジナルコードを修正した、試験用ブラウザ３６を更新するための改変プログラム１８０を示している。図７（ａ）のタイトルバー設定コード１８２は、試験用ブラウザ３６のウィンドウにおけるタイトルバー１７０の縦サイズを、標準ブラウザ２６のウィンドウにおけるタイトルバー１６０の縦サイズと同じにするよう改変したものである。
【００５４】
図７（ｂ）はブラウザ表示部３７（具体的にはＳｅｌｅｎｉｕｍ２．０におけるブラウザウィンドウのレイアウト定義プログラム）のオリジナルコードを修正した、ブラウザ表示部３７を更新するための改変プログラム１８４を示している。実施の形態の改変プログラム１８４は、試験用ブラウザ３６のウィンドウに、アドレスバーの代替としてボタンオブジェクトを配置するよう改変したものである。このボタンオブジェクトを以下、「擬似アドレスバー」とも呼ぶ。擬似アドレスバー設定コード１８６では、擬似アドレスバーのサイズを、標準ブラウザ２６のウィンドウにおけるアドレスバー１６２のサイズと同じにするよう設定している。
【００５５】
図８は、改変プログラム適用後の試験用ブラウザ３６のウィンドウを示す。同図は、図７の改変プログラム適用後の試験用ブラウザ３６およびブラウザ表示部３７により表示される試験用ブラウザ３６のウィンドウの構成を示している。図８（ａ）は初期の表示状態を示している。図８（ｂ）は、図８（ａ）のウィンドウに対する下スクロール操作が受け付けられたとき、言い換えれば、図８（ａ）のウェブページを下スクロールさせたときの表示状態を示している。
【００５６】
図５、図６、図８を比較すると、改変プログラム適用後の試験用ブラウザ３６のウィンドウでは、タイトルバーのサイズがデフォルト時よりも拡大されて標準ブラウザと同じサイズに調整されている（調整タイトルバー１７４）。また、標準ブラウザのウィンドウにおけるアドレスバー１６２と同じサイズの擬似アドレスバー１７６（ボタンオブジェクト）が付加されている。これにより、試験用ブラウザ３６使用時に一時に画面表示されるウェブページの範囲（サイズ）は、標準ブラウザ２６使用時と同じになる。
【００５７】
図４に戻り、試験データ保持部４２は、ウェブページに対する試験内容を定めた試験データ（図１のシナリオクラス３１４）を保持する。すなわち、ウェブページ単位（画面単位）に作成されたアクションクラス３１０と、試験パターン単位に作成されたデータクラス３１２を保持する。
【００５８】
操作実行部４４は、自動試験ＡＰの試験実行エンジンとしての機能を提供し、また図１の画面操作共通部品３０８および汎用部品３０６の機能も提供する。基本的に操作実行部４４は、画面操作共通部品３０８および汎用部品３０６として提供する関数、すなわちウェブページ（に配置された各種オブジェクト）に対する操作関数がアクションクラスにおいて呼び出されると、その操作関数に対応したページ操作仲介部４０（Ｓｅｌｅｎｉｕｍ２．０）が提供する関数を呼び出す。ページ操作仲介部４０は、呼び出された関数に応じて試験用ブラウザ３６を操作し、またＯＳ部２２が提供する関数を適宜呼び出すことにより、ウェブページ（に配置された各種オブジェクト）を操作する。
【００５９】
ここで操作実行部４４の特徴的な構成を説明する。図９は、操作実行部４４の処理を説明するための概念図である。図９（ａ）は試験対象のウェブページを示しており、このウェブページはキーワードを入力すべきテキストフィールド１９０と、キーワード入力後に押下されるべきボタン１９２を含む。このウェブページの試験内容を規定するアクションクラスでは、（１）テキストフィールド１９０へのキーワード入力、（２）ボタン１９２のクリック、（３）画面キャプチャ、が規定されている。この試験の目的は、上記の（１）（２）による画面表示内容の変化が正しいかを確認するものである。
【００６０】
ところでＳｅｌｅｎｉｕｍ２．０が提供する文字入力関数を利用する場合、Ｓｅｌｅｎｉｕｍ２．０の文字入力関数はＯＳ部２２が提供する文字入力関数を呼び出す。ＯＳ部２２が提供する文字入力関数は、ソフトウェアキーボード１９４を一旦表示させ、ソフトウェアキーボード１９４を介してテキストフィールド１９０へ文字列を入力する。したがって、試験での本来の確認目的でない、ウェブページのオブジェクトへの文字入力が完了するまでに時間を要してしまう。
【００６１】
そこで操作実行部４４は、テキストフィールド１９０への文字列入力関数が呼び出されると、Ｓｅｌｅｎｉｕｍ２．０の文字入力関数（さらにＯＳの文字列入力関数）を呼び出すことに代えて、ページ管理部３８が保持するウェブページのＤＯＭツリーへアクセスする。そして、文字列入力対象のオブジェクトの要素値として入力文字列を直接設定する。図９（ｂ）は、図９（ａ）のＨＴＭＬコードを示している。コード１９６で示すように、テキストフィールド１９０の要素「value」の値として、試験で入力すべき文字列を直接設定する。setAttributeメソッドを使用してvalue属性の値を設定してもよい。
【００６２】
図１０も、操作実行部４４の処理を説明するための概念図である。図１０（ａ）は試験対象のウェブページを示しており、このウェブページはユーザがプランを選択するべきプルダウンリスト２００と、プラン選択後に押下されるべきボタン２０２を含む。なお、プルダウンリスト２００は、プルダウンメニューやドロップダウンリスト、セレクトボックスとも呼ばれる。このウェブページの試験内容を規定するアクションクラスでは、（１）プルダウンリスト２００での項目選択、（２）ボタン２０２のクリック、（３）画面キャプチャ、が規定されている。この試験の目的も、上記の（１）（２）による画面表示内容の変化が正しいかを確認するものである。
【００６３】
ところでＳｅｌｅｎｉｕｍ２．０が提供する項目選択関数を利用する場合、Ｓｅｌｅｎｉｕｍ２．０の項目選択関数はＯＳ部２２が提供する項目選択関数を呼び出す。ＯＳ部２２が提供する項目選択関数は、プルダウンリスト２００を展開させ、複数の選択候補の中から特定の項目をユーザに選択させるためのリストを表示させる。したがって、試験での本来の確認目的でない、プルダウンリスト２００での項目選択が完了するまでに時間を要してしまっていた。また、プルダウンリスト２００が展開された際に、以降の操作が停止してしまうこともあった。
【００６４】
そこで操作実行部４４は、プルダウンリスト２００への項目選択関数が呼び出されると、Ｓｅｌｅｎｉｕｍ２．０の項目選択関数（さらにＯＳの項目選択関数）を呼び出すことに代えて、ページ管理部３８が保持するウェブページのＤＯＭツリーへアクセスする。そして、項目選択入力対象のオブジェクトの要素値として選択項目を直接設定する。図１０（ｂ）は、図１０（ａ）のＨＴＭＬコードを示している。例えば、コード２０４で示すように、プルダウンリスト２００の選択項目「プランＢ」の属性値として「Selected」を直接設定する。setAttributeメソッドを使用してoptionの属性値を設定してもよい。
【００６５】
例えば、図１の画面操作共通部品３０８が提供するプルダウンリスト操作関数は、引数１としてプルダウンリストのＨＴＭＬ文書内でのＩＤを指定し、引数２として選択すべき項目値を指定するものであってよい。このとき、操作実行部４４は、ページ管理部３８が保持するＤＯＭツリーから、引数１のＩＤをキーとして要素オブジェクトを取得する。そして、その要素オブジェクトからプルダウンリスト内の選択可能項目を取得して引数２の項目値と比較する。引数２の項目値と一致する選択可能項目が検出された場合、ＤＯＭツリーを操作して、その選択可能項目のステータスを選択状態（Selected）に書き換え、プルダウンリストの表示項目をその選択可能項目に書き換える。
【００６６】
また操作実行部４４は、ページ取得部４６と操作可否判定部４８を含む。ページ取得部４６は、ページ操作仲介部４０を介して、試験用ブラウザ３６に試験対象ウェブページをウェブサーバ１０から取得して表示させる。ページ取得部４６は、ページ管理部３８が保持するＤＯＭツリーにアクセスし、取得対象のウェブページ（ＨＴＭＬ）の「ReadyState」属性を１回以上取得する。そして、その属性値が完了（Status:complete）を示す場合に、ウェブページの取得（メモリへのロード）処理が完了したと判定する。
【００６７】
操作可否判定部４８は、アクションクラスにおいて操作対象として指定されたオブジェクトが、操作可能な状態であるか否かを判定する。具体的には、操作可否判定部４８は、ページ管理部３８が保持するＤＯＭツリーにアクセスし、操作対象オブジェクトに対応する要素がＤＯＭツリーに存在するか否かを判定する。そして当該要素が存在する場合に、オブジェクトが操作可能な状態であると判定する。操作実行部４４は、ページ取得部４６が、ウェブページの取得処理が完了したと判定し、かつ、操作可否判定部４８が、操作対象オブジェクトが操作可能な状態であると判定した場合に、ウェブページに配置された各種オブジェクトへの操作を実行する。
【００６８】
キャプチャ画像保持部５０は、画面キャプチャ部５２により取得された画面キャプチャ画像、すなわち、試験用ブラウザ３６のウィンドウに表示されたウェブページの画像のデータを保持する記憶領域である。
【００６９】
画面キャプチャ部５２は、試験用ブラウザ３６のウィンドウに表示されたウェブページの画像データを取得し、取得した画像データをキャプチャ画像保持部５０へ格納する。ここでウェブページが縦スクロールもしくは横スクロール可能な場合、言い換えれば、試験対象のウェブページにおいて画面に非表示の領域が存在する場合、画面キャプチャ部５２は、画面キャプチャと画面スクロールを繰り返し、当初非表示となった領域を含むウェブページの全体の画像を取得する。すなわち、１画面に収まりきらないウェブページについては複数枚のキャプチャ画像に分割して、ウェブページの全領域の画像を取得する。この態様によると、１画面に収まりきらないサイズのウェブページであっても、その全領域のキャプチャ画像を記録でき、試験の品質を向上させることができる。
【００７０】
また画面キャプチャ部５２は、試験対象のウェブページが、縦もしくは横スクロール可能なエレメントを含む場合、言い換えれば、ウェブページに配置されたエレメントにおいて画面に非表示の領域が存在する場合、そのエレメントを含む画面のキャプチャと、エレメントのスクロールを繰り返し、当初非表示となった領域を含むエレメント全体の画像を取得する。すなわち、１画面に収まりきらないエレメントについては複数枚のキャプチャ画像に分割して、エレメントの全領域の画像を取得する。この態様によると、１画面に収まりきらないサイズのエレメントであっても、その全領域のキャプチャ画像を記録でき、試験の品質を向上させることができる。
【００７１】
キャプチャ画像提供部５４は、ＡＤＢ（Android Debug Bridge）コマンドを使用して、キャプチャ画像保持部５０に格納された１以上の画像データ（すなわちウェブページのキャプチャ画像およびエレメントのキャプチャ画像）を管理サーバ１４へ送信する。
【００７２】
図１１は、図３の管理サーバ１４の機能構成を示すブロック図である。管理サーバ１４は、原本プログラム保持部６０と、標準ブラウザ情報取得部６２と、プログラム改変部６４と、改変プログラム提供部６６と、キャプチャ画像保持部６８と、キャプチャ画像取得部７０を含む。
【００７３】
原本プログラム保持部６０は、タブレットＰＣ１２（タブレットＰＣ１２ａ〜タブレットＰＣ１２ｃ）の試験用ブラウザ３６およびブラウザ表示部３７のオリジナルのプログラムコードを保持する。これらのプログラムは、タブレットＰＣ１２における試験用ブラウザ３６のウィンドウの構成を、標準ブラウザ２６のウィンドウの構成と同じにするために改変が必要となるプログラムと言える。標準ブラウザ情報取得部６２は、タブレットＰＣ１２ａ〜タブレットＰＣ１２ｃそれぞれの標準ブラウザ情報通知部３０により通知された標準ブラウザ２６のウィンドウの構成を示す情報を取得する。
【００７４】
プログラム改変部６４は、標準ブラウザ２６のウィンドウの構成にしたがって、原本プログラム保持部６０が保持するオリジナルプログラムを改変する。具体的には、試験用ブラウザ３６のウィンドウにおけるタイトルバーの縦サイズを、標準ブラウザ２６のウィンドウにおけるタイトルバーの縦サイズと同じにするよう改変した試験用ブラウザ３６のプログラムコード（例えば図７（ａ））を生成する。またプログラム改変部６４は、試験用ブラウザ３６のウィンドウに、アドレスバーの代替としてボタンオブジェクトを配置するよう改変したブラウザ表示部３７のプログラムコード（例えば図７（ｂ））を生成する。タブレットＰＣ１２ａ〜タブレットＰＣ１２ｃのそれぞれから取得された標準ブラウザの構成が異なる場合、プログラム改変部６４はタブレットＰＣ１２ａ〜タブレットＰＣ１２ｃのそれぞれに対して異なる改変プログラムを生成する。
【００７５】
改変プログラム提供部６６は、プログラム改変部６４により生成された試験用ブラウザのための改変プログラムをタブレットＰＣ１２ａ〜タブレットＰＣ１２ｃのそれぞれへ送信する。そして、各タブレットＰＣ１２が保持する試験用ブラウザ３６およびブラウザ表示部３７のオリジナルのプログラムを改変プログラムで置き換えさせる。この態様によると、タブレットＰＣ１２ａ〜タブレットＰＣ１２ｃのそれぞれで設定された標準ブラウザの種類に応じた試験用ブラウザの改変プログラムを各タブレットＰＣ１２へ提供できる。そして、各タブレットＰＣ１２において試験用ブラウザのウィンドウの表示態様が、各タブレットＰＣ１２の標準ブラウザのウィンドウと同じになるよう自動設定できる。
【００７６】
キャプチャ画像保持部６８は、タブレットＰＣ１２ａ〜タブレットＰＣ１２ｃのそれぞれにおけるウェブページの試験で記録された画面キャプチャ画像を一括して保持する記憶領域である。キャプチャ画像保持部６８に保持された画面キャプチャ画像は、ウェブページの試験担当者や管理者により適宜参照されてよい。例えば管理サーバ１４は、タブレットＰＣ１２ａ〜タブレットＰＣ１２ｃのそれぞれで記録された画面キャプチャ画像を比較可能に表示させるキャプチャ画像表示部をさらに備えてもよい。キャプチャ画像表示部は、同一のテストケースについて各タブレットＰＣ１２で記録された画像を並べてディスプレイに表示させてもよい。
【００７７】
キャプチャ画像取得部７０は、ＡＤＢコマンドを使用して、タブレットＰＣ１２ａ〜タブレットＰＣ１２ｃのそれぞれで記録されたウェブページの画面キャプチャ画像を各タブレットＰＣ１２から取得し、キャプチャ画像保持部６８に格納する。
【００７８】
以上の構成による自動試験システム１００の動作を以下説明する。
図１２は、自動試験システム１００の動作を示すフローチャートである。タブレットＰＣ１２は、自動試験ＡＰ起動時に試験用ブラウザ３６を起動する（Ｓ１０）。そして、試験対象のウェブページをウェブサーバ１０から取得して試験用ブラウザ３６のウィンドウに表示させる（Ｓ１２）。タブレットＰＣ１２は、ウェブページに配置された各種オブジェクト（ボタンやテキストエリア等の各種エレメント）に対する操作を実行し（Ｓ１４）、ウェブページに対する画面キャプチャ処理を実行する（Ｓ１６）。なお、Ｓ１２〜Ｓ１６の処理は、アクションクラスに規定された順序で実行される。管理サーバ１４からキャプチャ画像の提供要求を受け付けると（Ｓ１８のＹ）、タブレットＰＣ１２は記録した画面キャプチャ画像を管理サーバ１４へ提供する（Ｓ２０）。キャプチャ画像の提供要求を受け付けなければ（Ｓ１８のＮ）、Ｓ２０をスキップする。
【００７９】
図１３は、図１２のＳ１０のウェブブラウザ起動処理を詳細に示す。試験用ブラウザ更新フラグが未更新を示す場合（Ｓ３０のＮ）、タブレットＰＣ１２の標準ブラウザ情報通知部３０は、標準ブラウザ２６のウィンドウの構成を管理サーバ１４へ通知する（Ｓ３２）。管理サーバ１４は、標準ブラウザ２６のウィンドウの構成に即して試験用ブラウザ３６およびブラウザ表示部３７の更新プログラムを生成し、タブレットＰＣ１２の試験用ブラウザ更新部３２は、その更新プログラムを取得する（Ｓ３４）。そして試験用ブラウザ更新部３２は、試験用ブラウザ３６およびブラウザ表示部３７のオリジナルプログラムを管理サーバ１４から取得した更新プログラムで置き換える（Ｓ３６）。試験用ブラウザ更新フラグが更新済みを示す場合は（Ｓ３０のＹ）、Ｓ３２〜Ｓ３６をスキップする。ブラウザ表示部３７は、標準ブラウザ２６のウィンドウの構成と同態様の、試験用ブラウザ３６のウィンドウをディスプレイ２１に表示させる（Ｓ３８）。
【００８０】
図１４は、図１２のＳ１２のウェブページ取得処理を詳細に示す。アクションクラスにおいてウェブページの取得関数が呼び出された場合、タブレットＰＣ１２のページ取得部４６は、呼び出し時の引数として指定されたタイムアウト値を取得する。そして、タイムアウト時刻＝現在時刻（システム時刻）＋タイムアウト値として、タイムアウト時刻を決定する（Ｓ４０）。ページ取得部４６は、ページ操作仲介部４０および試験用ブラウザ３６を介して、試験対象のウェブページの提供要求をウェブサーバ１０へ送信する。現在時刻がタイムアウト時刻に未達であれば（Ｓ４４のＮ）、ページ取得部４６は、ページ管理部３８が保持する試験対象ウェブページのＤＯＭツリーにおけるReadySate値を取得する（Ｓ４６）。
【００８１】
ReadyState値が完了を示す期待値と合致する場合（Ｓ４８のＹ）、ページ取得部４６は、ウェブページのロード（メモリへの読み込み）が完了したと判定する。そして、アクションクラスにおいて次に定義された試験操作の処理や、ロードされたウェブページに対する操作を定めた別のアクションクラスの処理等の次処理へ移行する（Ｓ５０）。ReadyState値が完了を示す期待値と不一致の場合（Ｓ４８のＮ）、０．１秒待機後にＳ４４へ戻る（Ｓ５２）。現在時刻がタイムアウト時刻を途過した場合（Ｓ４４のＹ）、ページ取得部４６は、ウェブページのロードエラーを示すエラーログを所定の記憶領域へ記録し、本試験処理を終了する（Ｓ５４）。
【００８２】
図１５は、図１２のＳ１４の画面要素操作処理を詳細に示す。リトライ回数が予め定められた規定回数以下の場合（Ｓ６０のＹ）、操作可否判定部４８は、アクションクラスで指定された操作対象オブジェクトの要素値を取得する（Ｓ６２）。例えば、DOMDocumentオブジェクトのgetElementByID（引数はアクションクラスで指定されたＩＤ）や、getElementByTagName（引数はアクションクラスで指定されたタグ名）を呼び出すことにより要素値を取得してもよい。要素値が有意な所定値の場合、例えば非nullのオブジェクトとして取得された場合（Ｓ６４のＮ）、操作可否判定部４８は操作対象のオブジェクトが操作可能な状態になったと判定し、その旨を操作実行部４４へ通知する。要素値がnullの場合は（Ｓ６４のＹ）、一定時間（０．１秒等）待機した後、リトライ回数をインクリメントしてＳ６０へ戻る（Ｓ６６）。リトライ回数が規定回数を超過すると（Ｓ６０のＮ）、操作可否判定部４８は、オブジェクトのロードエラーを示すエラーログを所定の記憶領域へ記録し、本試験処理を終了する（Ｓ６８）。
【００８３】
操作実行部４４は、操作対象オブジェクトが操作可能な状態と判定され、その操作対象オブジェクトがＤＯＭツリーを直接操作すべき特殊オブジェクトの場合（Ｓ７０のＹ）、ページ管理部３８が保持するＤＯＭツリーの操作関数を呼び出すことにより、データクラスが規定する試験データをメモリのオブジェクトデータへ直接設定する（Ｓ７２）。言い換えれば、ＯＳが提供するオブジェクトの操作関数を直接的もしくは間接的に呼び出すことに代えて、ＤＯＭツリーを直接操作する。操作対象が特殊オブジェクトでなければ（Ｓ７０のＮ）、操作実行部４４は、アクションクラスで指定された関数に対応するＳｅｌｅｎｉｕｍ２．０の操作関数を呼び出す（Ｓ７４）。
【００８４】
特殊オブジェクトは、ＯＳが提供するオブジェクトの操作関数を呼び出した場合にソフトウェアキーボードが表示される結果、データ設定に長時間を要してしまうテキストフィールドやテキストボックス等である。また、選択可能項目を展開表示させた場合に操作処理が停止することがあり、また項目選択に長時間を要してしまうプルダウンリストやセレクトボックス等である。ＤＯＭツリーの操作としては、例えば、DOMDocumentオブジェクトからgetElementByID等によりDOMElemntオブジェクトを取得し、そのオブジェクトに対してsetAttribute（引数は試験データ）を呼び出すことにより、特殊オブジェクトへ試験データを設定してもよい。
【００８５】
図１６は、試験対象のウェブページを模式的に示す。図１６（ａ）のウェブページにて展開リンク２１０がクリックされると、図１６（ｂ）で示すように、閉じるリンク２１４を含む動的表示コンテンツ２１２が表示される。図１７は、図１６のウェブページのプログラムコードを示す。図１７のアンカータグ２２０は図１６（ａ）の展開リンク２１０に対応し、ｄｄタグ２２２は図１６（ｂ）の動的表示コンテンツ２１２に対応し、アンカータグ２２４は図１６（ｂ）の閉じるリンク２１４に対応する。この動的表示コンテンツ２１２の表示処理（すなわちアンカータグ２２０のクリックをトリガとした非表示状態から表示状態への切替処理）は、ウェブサーバ１０からのウェブページの取得処理自体とは非同期の処理として実行される。
【００８６】
ここでアクションクラスにおいて、（第１操作）展開リンク２１０のクリック、（第２操作）閉じるリンク２１４のクリック、が規定されることとする。既述したように、動的表示コンテンツ２１２は、第１操作をトリガに描画されるものであり、その描画処理が完了しないうちは閉じるリンク２１４のクリックはできず、仮に閉じるリンク２１４のクリック操作を実行した場合、エラーが発生してしまう。
【００８７】
そこで実施の形態の操作可否判定部４８は、図１５のＳ６２で示したように、操作対象のオブジェクトがＤＯＭツリーに存在するか否か、言い換えれば、操作対象のオブジェクトがウェブページのデータとしてメモリにロード済みか否かを判定する。図１６および図１７の例では、文字列「閉じる」を要素値とするアンカータグ要素がＤＯＭツリーに存在する（非nullのオブジェクトとして取得される）場合に、閉じるリンク２１４を操作可能と判定する。これにより、操作対象のオブジェクトのロードが未完了であることに起因するエラーの発生を回避できる。
【００８８】
図１８は、図１２のＳ１６の画面キャプチャ処理を詳細に示す。タブレットＰＣ１２の画面キャプチャ部５２は、試験対象ウェブページの全体サイズ、すなわち試験用ブラウザ３６のウィンドウに表示された領域と非表示の（隠れた）領域の両方を含むサイズを取得する。また画面キャプチャ部５２は、試験用ブラウザ３６のウィンドウに表示された画面表示サイズ、すなわち試験用ブラウザ３６のウィンドウに表示された領域のサイズであり、非表示の（隠れた）領域を含まないサイズを取得する（Ｓ８０）。画面キャプチャ部５２は、これらのサイズをＪＡＶＡスクリプトの関数により取得してもよい。例えばウェブページの全体サイズとして、document.documentElement.scrollWidth（横サイズ）・document.documentElement.scrollHeight（縦サイズ）を取得してもよい。またウェブページの画面表示サイズとして、document.documentElement.clientWidth（横サイズ）・document.documentElement.clientHeight（縦サイズ）を取得してもよい。
【００８９】
続いて画面キャプチャ部５２は、試験対象ウェブページの全体サイズと画面表示サイズから横スクロール回数および縦スクロール回数を決定する（Ｓ８２）。具体的には、試験対象ウェブページの全体サイズを画面表示サイズで割り、端数を＋１としてカウントする。そして画面キャプチャ部５２は、ウェブページを表示した試験用ブラウザ３６のウィンドウを画面キャプチャして、その画像データをキャプチャ画像保持部５０へ格納する（Ｓ８４）。スクロール回数に未達であれば（Ｓ８６のＮ）、試験用ブラウザ３６のウィンドウに対して横スクロール操作もしくは縦スクロール操作を実行し（Ｓ８８）、Ｓ８４に戻る。例えば、画面キャプチャ→横スクロール→画面キャプチャ→横スクロール、を繰り返して横スクロールが上限に達すると、横を初期位置に戻すとともに一度縦スクロールさせ、再度、画面キャプチャ→横スクロール→・・・を繰り返し、縦スクロールが上限に達するまで画面キャプチャ画像を取得する。
【００９０】
ウェブページ全体の画面キャプチャ終了後（Ｓ８６のＹ）、画面キャプチャ部５２は、ウェブページのプログラムコードを参照して、ウェブページにスクロール可能なオブジェクト（例えばテーブルやテキストエリア、スクロールリスト等の要素）が配置されているか否かを特定する（Ｓ９０）。スクロール可能オブジェクトが配置されている場合、画面キャプチャ部５２は、そのオブジェクトの全体サイズ（試験用ブラウザ３６のウィンドウに表示された領域と非表示の（隠れた）領域の両方を含むサイズ）と、試験用ブラウザ３６のウィンドウに表示された画面表示サイズとを取得する（Ｓ９２）。ウェブページのサイズの取得と同様に、ＪＡＶＡスクリプトの関数や属性値、ＤＯＭツリーの属性値からこれらのサイズを取得してもよい。
【００９１】
続いて画面キャプチャ部５２は、Ｓ８２と同様に、スクロール可能オブジェクトの全体サイズと画面表示サイズから、そのオブジェクトの横スクロール回数および縦スクロール回数を決定する（Ｓ９４）。そして画面キャプチャ部５２は、スクロール可能オブジェクトを表示した試験用ブラウザ３６のウィンドウを画面キャプチャして、その画像データをキャプチャ画像保持部５０へ格納する（Ｓ９６）。スクロール回数に未達であれば（Ｓ９８のＮ）、スクロール可能オブジェクトに対して横スクロール操作もしくは縦スクロール操作を実行し（Ｓ１００）、Ｓ９６に戻る。スクロール回数が上限に達すると（Ｓ９８のＹ）、本図のフローを終了する。
【００９２】
図１９は、図１２のＳ２０のキャプチャ画像提供処理を詳細に示す。図１９には不図示であるが、管理サーバ１４は、現在時刻を取得し、ｙｙｙｙＭＭｄｄＨＨｍｍｓｓの形式でキャプチャ画像を格納するディレクトリをキャプチャ画像保持部６８に作成しておく。なおタブレットＰＣ１２ａ〜タブレットＰＣ１２ｃそれぞれの識別情報をディレクトリ名に付加し、それぞれの端末用のディレクトリを作成してもよい。この場合、タブレットＰＣ１２ａ〜タブレットＰＣ１２ｃのそれぞれから取得した画面キャプチャ画像を、それぞれの端末用のディレクトリに振分けて保持してもよい。
【００９３】
タブレットＰＣ１２のキャプチャ画像提供部５４は、管理サーバ１４のキャプチャ画像取得部７０からキャプチャ画像提供要求を受け付けると、キャプチャ画像保持部５０に保持された転送対象ファイル名の一覧を取得するＡＤＢコマンドを作成する（Ｓ１１０）。そして、キャプチャ画像保持部５０の画像格納ディレクトリを指定し（Ｓ１１２）、Ｓ１１０で作成したＡＤＢコマンドを自動試験ＡＰの実行プロセスとは異なる外部プロセスとして実行する（Ｓ１１４）。そして、転送対象となる１以上のファイル名が文字コードＭＳ９３２（すなわち管理サーバ１４における文字コード）で記録されたファイル名一覧をＯＳ部２２から取得する（Ｓ１１６）。
【００９４】
続いてキャプチャ画像提供部５４は、Ｓ１１６で取得されたファイル名を指定したコマンドであり、キャプチャ画像保持部５０に保持された転送対象ファイルを管理サーバ１４へ転送するＡＤＢコマンドを作成する（Ｓ１１８）。そして、キャプチャ画像保持部５０の画像ディレクトリを指定し（Ｓ１２０）、Ｓ１１８で作成したＡＤＢコマンドを自動試験ＡＰの実行プロセスとは異なる外部プロセスとして実行する（Ｓ１２２）。そして、ＭＳ９３２の文字コードでファイル名が付与された転送対象ファイルを、ＯＳ部２２を介して管理サーバ１４へ送信させる（Ｓ１２４）。
【００９５】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下変形例を示す。
【００９６】
第１の変形例を説明する。
上記実施の形態において操作可否判定部４８は、ウェブページに配置された操作対象オブジェクトがＤＯＭツリー上に存在するか否かを確認することにより、そのオブジェクトに対する操作が可能な状態か否かを判定することとした。例えば、図１６および図１７で示したウェブページでは、２番目の操作の対象である閉じるリンク２１４のタグを指定して、ＤＯＭツリーにおけるそのタグの要素オブジェクトが非nullであることを条件として、閉じるリンク２１４を操作した。変形例として、操作可否判定部４８は、アクションクラスにおいて第１操作とそれに続く第２操作が規定されているとき、第１操作に伴うウェブページ内の処理が最後まで完了したか否かを確認することにより、第２操作の対象のオブジェクトに対する操作が可能な状態か否かを判定してもよい。
【００９７】
図２０は、図１６のウェブページのプログラムコードを示す。同図は、図１７のＨＴＭＬコードのhead部で定義されたＪＡＶＡスクリプトコード（図２０（ａ））と、ＣＳＳコード（図２０（ｂ））を示している。操作可否判定部４８は、ＨＴＭＬコードのhead部で規定されたＪＡＶＡスクリプトファイル、ＣＳＳファイル、画像ファイル等を参照する。操作可否判定部４８は、試験対象のウェブページに関連するそれらのプログラムコードを参照し、第１の操作に伴い実行される処理をトレースすることにより、第１の操作に伴う処理が最後まで完了した場合のＤＯＭツリー上の要素値（期待値）を特定する。そして、第１の操作を実行後のウェブページの要素値が、その期待値と整合するか否かを判定し、整合する場合に第２の操作が可能な状態と判定する。不整合であれば、図１５のＳ６４のＹ・Ｓ６６と同様に、ウェブページの要素値と期待値との比較処理をリトライする。
【００９８】
図１６、図１７、図２０を参照して具体例を示す。なお、図２０（ａ）のＪＡＶＡスクリプトは、ＩＤが「outline」となるタグ内のｄｔタグがクリックされると、「open」というクラス名のＣＳＳを適用することを定めている。また、図２０（ｂ）のＣＳＳは、ＩＤが「outline」となるタグ内のｄｔタグとｄｄタグのＣＳＳを定義しており、「display:none」で非表示、「display:block」で表示と定義している。ここでもアクションクラスにおいて、（第１操作）図１６（ａ）の展開リンク２１０のクリック、（第２操作）図１６（ｂ）の閉じるリンク２１４のクリック、が規定されることとする。
【００９９】
操作可否判定部４８は、操作実行部４４が第１操作を実行する前に、第１操作に伴うプログラム内の一連の処理を特定する。この例では、第１操作としての図１７のアンカータグ２２０のクリックに伴い、図２０（ａ）のコード２３０が実行され、続いて図２０（ｂ）のコード２３２が実行されて、最終的に属性「style」の属性値として「display:block」が設定されることを特定する。すなわち、属性「style」の属性値「display:block」を期待値として特定する。操作可否判定部４８は、操作実行部４４による第１操作の実行後、ページ管理部３８が保持するDOMDocumetオブジェクトに対してgetElementByTagName("outline")を呼び出し、さらにDOM.getElementAttribute(outlineタグオブジェクト,"style")を呼び出して、属性「style」の属性値（すなわち上記の要素値）を取得する。操作可否判定部４８は、取得した属性値に「display:block」が含まれるか否かを判定し、含まれれば第１操作に伴う一連の処理が完了したと判定し、第２操作を実行可能と判定する。
【０１００】
この変形例によると、試験対象のウェブページに対する第１操作とそれに続く第２操作が規定されているとき、第１操作に伴うウェブページ内の処理が最後まで完了したことを条件として第２操作を実行する。これにより、第２操作対象のオブジェクトのロード未完了に起因するエラーの発生を抑制できる。
【０１０１】
なお操作可否判定部４８は、試験対象のウェブページに対する第１操作とそれに続く第２操作が規定されているとき、実施の形態の条件と、第１の変形例の条件の両方が充足されたことを条件として、第２操作対象のオブジェクトに対する操作が可能な状態と判定してもよい。実施の形態の方式では、第２操作対象のオブジェクトのロードは完了したものの、第１操作が完了したことは確定できない。その一方、第１の変形例の方式では、第１操作が完了したことは確定できるものの、第２操作対象のオブジェクトのロードが完了したかは確定できない。したがって、これら２つの方式を組み合わせることにより、第１操作が完了し、かつ、第２操作対象のオブジェクトのロードが完了したことを条件として第２操作を実行することとなり、ウェブページの試験においてウェブページに配置されたオブジェクトの操作可否を一層適切に決定できる。
【０１０２】
第２の変形例を説明する。
上記実施の形態では、試験用ブラウザのための改変プログラムを管理サーバ１４が作成することとした。変形例として、タブレットＰＣ１２の内部で改変プログラムを作成してもよい。この場合、タブレットＰＣ１２は、実施の形態において管理サーバ１４の機能ブロックとして説明した原本プログラム保持部６０およびプログラム改変部６４をさらに備えてもよい。そして、自動試験部２８の内部において標準ブラウザ情報通知部３０→プログラム改変部６４→試験用ブラウザ更新部３２と連携してもよい。
【０１０３】
第３の変形例を説明する。
上記実施の形態では、ウェブページに配置されたオブジェクトのうち、ＯＳが提供する操作関数を呼び出すことを抑制する特殊オブジェクトの例として、テキストフィールドやテキストエリア、プルダウンリストを示した。しかし、本発明の技術思想はこれらのオブジェクトに限定されるものではない。すなわち、ＯＳが提供する操作関数を呼び出してデータを設定すると試験効率が低下すると想定されるオブジェクトであり、ＤＯＭツリーを操作して直接データを設定した方が効率的と想定されるオブジェクト全般に適用可能である。例えば、ラジオボタンやチェックボックス、アラートダイアログに対する試験データの入力や設定に適用されてもよい。
【０１０４】
請求項に記載の各構成要件が果たすべき機能は、実施の形態および変形例において示された各構成要素の単体もしくはそれらの連係によって実現されることも当業者には理解されるところである。
【符号の説明】
【０１０５】
１２  タブレットＰＣ、  １４  管理サーバ、  ２６  標準ブラウザ、  ２８  自動試験部、  ３０  標準ブラウザ情報通知部、  ３２  試験用ブラウザ更新部、  ３４  試験支援部、  ３６  試験用ブラウザ、  ３７  ブラウザ表示部、  ３８  ページ管理部、  ４０  ページ操作仲介部、  ４４  操作実行部、  ４６  ページ取得部、  ４８  操作可否判定部、  ５２  画面キャプチャ部、  ５４  キャプチャ画像提供部、  ６２  標準ブラウザ情報取得部、  ６４  プログラム改変部、  ６６  改変プログラム提供部、  ７０  キャプチャ画像取得部、  １００  自動試験システム。
【図１】
0005639127.tif 000002
【図２】
0005639127.tif 000003
【図３】
0005639127.tif 000004
【図４】
0005639127.tif 000005
【図５】
0005639127.tif 000006
【図６】
0005639127.tif 000007
【図７】
0005639127.tif 000008
【図８】
0005639127.tif 000009
【図９】
0005639127.tif 000010
【図１０】
0005639127.tif 000011
【図１１】
0005639127.tif 000012
【図１２】
0005639127.tif 000013
【図１３】
0005639127.tif 000014
【図１４】
0005639127.tif 000015
【図１５】
0005639127.tif 000016
【図１６】
0005639127.tif 000017
【図１７】
0005639127.tif 000018
【図１８】
0005639127.tif 000019
【図１９】
0005639127.tif 000020
【図２０】
0005639127.tif 000021