(57)【要約】      （修正有）【課題】スマートフォンアプリケーションテストに伴う作業を簡略化・自動化する。【解決手段】管理サーバー１０のアプリ管理１２０は操作イベント処理コード３７０を注入したアプリケーションをスマートフォン端末２１に送信し、インストールさせる。クライアント端末２０上でスマートフォン端末操作を実行すると、スマートフォン端末上で同等の操作が実行され、操作ログ情報がスクリプト生成手段１４０により、スクリプトファイル３２０に保存される。クライアント端末２０上でテスト実行を指示すると、端末管理１９０は、操作イベント処理コード注入済みのアプリケーションを複数のスマートフォン端末３０に送信してインストールさせ、スクリプト実行手段１５０が、スクリプトファイルからスクリプトを読み出し、端末操作情報に変換して、スマートフォン端末に送信し、スマートフォン端末では、受信した端末操作情報に基づいてアプリケーションが実行される。【選択図】図２
2017117309.tif 000002
【特許請求の範囲】
【請求項１】
スマートフォンアプリケーションのテストを管理する管理サーバーと、複数のクライアント端末と、前記管理サーバーと前記クライアント端末とを通信可能に接続するインターネット回線網と、により構成されるスマートフォンアプリケーションテスト自動化システムにおいて、
前記管理サーバーは、スマートフォンアプリケーションをテストする複数のスマートフォン端末と、前記スマートフォン端末上でのスマートフォンアプリケーションのテスト操作を前記クライアント端末上で行う端末操作手段と、テスト対象のスマートフォンアプリケーションに対するテスト操作を端末非依存の形式で記述したスクリプトを生成するスクリプト生成手段と、前記スクリプトに基づいてテスト対象のスマートフォンアプリケーションを前記複数のスマートフォン端末で実行するスクリプト実行手段と、テスト対象のスマートフォンアプリケーションの実行状況を取得する動画・静止画取得手段と、利用者のテスト操作を支援し、推論および学習機能により前記スクリプトを自動生成する人工知能手段と、を備えた
ことを特徴とするスマートフォンアプリケーションテスト自動化システム。
【請求項２】
前記人工知能手段の推論機能は、テスト対象のアプリケーションに操作イベント処理コードを注入するステップと、前記操作イベント処理コードが利用者によるテスト操作に伴うイベントを捕捉し当該テスト操作を知識として記録するステップと、当該知識に基づいて操作画面における部品を検索することにより操作画面の構造を取得するステップと、画面遷移操作を繰り返すことによりアプリケーションの全体の画面構造を取得するステップと、取得した各画面構造からテスト対象とすべき部品を選択するステップと、選択した部品に対する操作イベントを発生させ、発生したイベントに基づいて前記スクリプトを生成するステップと、により構成される
ことを特徴とする請求項１に記載のアプリケーションテスト自動化システム。
【請求項３】
前記人工知能手段の学習機能は、テスト対象のアプリケーションに操作イベント処理コードを注入するステップと、操作された部品を検索し部品情報を取得するステップと、部品操作の対象となるオブジェクトを分析し次に操作するであろう部品を抽出するステップと、抽出した部品に対する操作イベントを発生させ、前記スクリプトを生成するステップと、により構成される
ことを特徴とする請求項１または２に記載のアプリケーションテスト自動化システム。
【請求項４】
前記管理サーバーは、スマートフォンアプリケーションをスマートフォンアプリケーションが登録されたサイトからダウンロードする手段を有し、
前記人工知能手段の学習機能は、ダウンロードしたアプリケーションに操作イベント処理コードを注入し当該アプリケーションを実行するステップと、実行結果が異常終了した場合に前記操作イベント処理コードがログ情報を分析しバグ情報を知識ベースに記録するステップと、テスト対象のアプリケーションに対し記録された知識ベースを検索して適用するテスト操作を抽出するステップと、当該テスト操作に対応するイベントを発生させて前記スクリプトを生成するステップと、を有する
ことを特徴とする請求項１〜３のいずれか１項に記載のアプリケーションテスト自動化システム。
【請求項５】
前記人工知能手段の学習機能は、アプリケーションに操作イベント処理コードを注入するステップと、前記操作イベント処理コードにより利用者のテスト操作に伴う一連のイベントを捕捉し分析して特徴を抽出するステップと、一連のイベントをグループ化して当該特徴を有する一つの操作として前記スクリプトを生成し知識ベースに記録するステップと、テスト対象のアプリケーションに対し一連のイベントが発生した場合、記録された知識ベースを検索し、グループ化されたイベントと特徴が同じであれば記録された前記スクリプトを生成するステップと、により構成される
ことを特徴とする請求項１〜４のいずれか１項に記載のアプリケーションテスト自動化システム。
【請求項６】
前記クライアント端末上でのアプリケーションのテスト操作をスマートフォン実機から行う手段を有する
ことを特徴とする請求項１〜５のいずれか１項に記載のスマートフォンアプリケーションテスト自動化システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スマートフォンアプリケーションのテスト自動化システムに関する。
【背景技術】
【０００２】
近年、スマートフォン、タブレット、携帯情報端末の普及が急速に進んでいる。スマートフォンの普及の拡大に伴って、スマートフォンに搭載されるアプリケーションも急速に拡大している。スマートフォンアプリケーションのプラットフォームであるオペレーティングシステム（OS）は、機能追加等によるバージョンが多く、また、対応する機種も様々である。スマートフォンアプリケーションの開発者にとっては、様々なOSのバージョンや対応機種に応じたアプリケーションのテストは、作業が煩雑であり、また、対応するOSや機種を用意するための管理やコストも大きな負担となっている。
【０００３】
これらの問題に対処するために、多数のスマートフォン端末を用意してスマートフォンアプリケーションのテストサービスを提供するクラウドシステムが知られている（特許文献１）。
【０００４】
このアプリケーションテストシステムは、様々なバージョンのOSがインストールされた複数の端末を予めサーバー上で仮想化しておき、この仮想化された端末をブラウザ上で操作することで、アプリケーションテストを行うというものである。
【０００５】
特許文献１は、本願発明者による先願発明であり、利用者がスマートフォンを操作して指示することにより、様々なバージョンのOSがインストールされた複数のスマートフォン端末（実機）を用いてアプリケーションのテストを同時に併行して実行するものである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１５−１４１６２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、アプリケーションシステムにおいてテスト操作の対象となる端末はあくまで仮想化された端末であり、実際の端末（実機）ではない。そのため、アプリケーションテストシステムでは、実機でのアプリケーションの動作を確認することができず、正確なアプリケーションテストを行うことができない。
【０００８】
また、特許文献1に記載されているアプリケーションテストシステムは、スマートフォン実機でのアプリケーションテストを実現するものの、テスト操作がスマートフォン実機のみであり、スマートフォンアプリケーション開発が主に行われているパーソナルコンピュータとは異なって、テスト操作がやや煩雑であり作業効率が良くないという課題があった。
【０００９】
さらに、上記いずれの場合においても、アプリケーションのテスト操作は開発者にとって大きな負担であり、熟練した開発者が実行する必要があるという課題がある。
【００１０】
本発明は、かかる事情に鑑みてなされたものであり、利用者（開発者）のスマートフォンアプリケーションテストに伴う作業をできるだけ簡略化・自動化するスマートフォンアプリケーションテスト自動化システムを提供することを目的とするものである。
【課題を解決するための手段】
【００１１】
請求項１の発明は、スマートフォンアプリケーションのテストを管理する管理サーバーと、複数のクライアント端末と、前記管理サーバーと前記クライアント端末とを通信可能に接続するインターネット回線網と、により構成されるスマートフォンアプリケーションテスト自動化システムにおいて、前記管理サーバーは、スマートフォンアプリケーションをテストする複数のスマートフォン端末と、スマートフォンアプリケーションのテスト操作を前記クライアント端末上で行うための端末操作手段と、テスト対象のスマートフォンアプリケーションに対するテスト操作を端末非依存の形式で記述したスクリプトを生成するスクリプト生成手段と、前記スクリプトに基づいてテスト対象のスマートフォンアプリケーションを前記複数のスマートフォン端末で実行するスクリプト実行手段と、テスト対象のスマートフォンアプリケーションの実行状況を取得する動画・静止画取得手段と、利用者によるテスト操作を支援し、推論および学習機能により前記スクリプトを自動生成する人工知能手段と、を備えたことを特徴とするスマートフォンアプリケーションテスト自動化システムを提供する。
【００１２】
請求項２の発明は、前記スマートフォンアプリケーションテスト自動化システムにおいて、前記人工知能手段の推論機能は、テスト対象のアプリケーションに操作イベント処理コードを注入するステップと、前記操作イベント処理コードが利用者によるテスト操作に伴うイベントを捕捉し当該テスト操作を知識として記録するステップと、当該知識に基づいて操作画面における部品を検索することにより操作画面の構造を取得するステップと、画面遷移操作を繰り返すことによりアプリケーションの全体の画面構造を取得するステップと、取得した各画面構造からテスト対象とする部品を選択するステップと、選択した部品に対する操作イベントを発生させ、発生したイベントに基づいてスクリプトを生成するステップと、により構成されることにも特徴を有する。
【００１３】
請求項３の発明は、前記スマートフォンアプリケーションテスト自動化システムにおいて、前記人工知能手段の学習機能は、テスト対象のアプリケーションに操作イベント処理コードを注入するステップと、操作された部品を検索し部品情報を取得するステップと、部品操作の対象となるオブジェクトを分析し、次に操作するであろう部品を抽出するステップと、抽出した部品に対する操作イベントを発生させ、スクリプトを生成するステップと、により構成されることにも特徴を有する。
【００１４】
請求項４の発明は、前記スマートフォンアプリケーションテスト自動化システムにおいて、前記管理サーバーは、スマートフォンアプリケーションをスマートフォンアプリケーションが登録されたサイトからダウンロードする手段を有し、
前記人工知能手段の学習機能は、ダウンロードしたアプリケーションに操作イベント処理コードを注入し当該アプリケーションを実行するステップと、実行が異常終了した場合に前記操作イベント処理コードがログ情報を分析しバグ情報を知識ベースに記録するステップと、テスト対象のアプリケーションに対し記録された知識ベースを検索して適用するテスト操作を抽出するステップと、当該テスト操作に対応するイベントを発生させてスクリプトを生成するステップと、を有することにも特徴を有する。
【００１５】
請求項５の発明は、前記スマートフォンアプリケーションテスト自動化システムにおいて、前記人工知能手段の学習機能は、アプリケーションに操作イベント処理コードを注入するステップと、前記操作イベント処理コードにより利用者の部品に対するテスト操作に伴う一連のイベントを捕捉し分析して特徴を抽出するステップと、一連のイベントをグループ化して当該特徴を有する一つの操作としてスクリプトを生成し知識ベースに記録するステップと、テスト対象アプリケーションに対し一連のイベントが発生した場合、記録された知識ベースを検索し、グループ化されたイベントと特徴が同じであれば記録されたスクリプトを生成するステップと、により構成されることにも特徴を有する。
【００１６】
請求項６の発明は、前記スマートフォンアプリケーションテスト自動化システムにおいて、前記クライアント端末上でのアプリケーションのテスト操作をスマートフォン実機から行う手段を有することにも特徴を有する。
【発明の効果】
【００１７】
請求項１の発明によれば、クライアント端末においてのスマートフォン端末に対する端末操作に連動して管理サーバーに接続されたスマートフォン端末を操作して端末に依存しない形式でスクリプトを生成できることから、利用者がスマートフォン端末実機を保有することなく様々なバージョンのオペレーティングシステム（OS）を搭載した複数のスマートフォン端末実機上でのアプリケーションテストを同時に実行することができ、端末コストおよびテストに伴う工数を大幅に削減することができる。また、仮想端末では検証できない実機特有のアプリケーションの動作状況を確認することができる。
【００１８】
さらに、管理サーバーがテストの実行状況を取得する動画・静止画取得手段を有することから、利用者は、テスト終了後に複数のスマートフォン端末におけるアプリケーションテストの状況を一覧的に確認することができる。また、リアルタイムでテスト実行状況を確認することもできる。したがって、効率的なアプリケーションテストを行うことができる。
【００１９】
さらに、管理サーバーが、利用者によるテスト操作を支援し、スクリプトを自動生成する人工知能手段を有することから、テスト操作の指示をほぼ自動化することができ、テスト工数の削減とともにアプリケーションの品質向上を図ることができる。また、アプリケーションテストに熟練した利用者でなくとも、容易にアプリケーションテストを行うことができる。
【００２０】
請求項２の発明によれば、人工知能手段の推論機能により、テスト対象アプリケーションの操作記録に基づいて画面構造を分析して利用者のテスト操作に対してさらにテストすべき項目を追加してスクリプトを自動生成できることから、アプリケーションのテスト品質の向上を図ることができる。
【００２１】
請求項３の発明によれば、人工知能手段の学習機能により、テスト操作の対象となった部品を検索して部品情報を取得し、部品操作の対象となるオブジェクトを分析することによって次に操作するであろう部品を抽出しテスト項目として追加してスクリプトを生成できることから、アプリケーションのテスト品質の向上を図ることができる。
【００２２】
請求項４の発明によれば、本アプリケーションテスト自動化システム内でスマートフォンアプリケーションが登録されたサイトから多数のスマートフォンアプリケーションをダウンロードして実行させ、実行が異常終了した場合にバグ情報を知識ベースとして蓄積し、テスト対象のアプリケーションに対し適用できるスクリプトを自動生成できることから、利用者は簡単な指示でアプリケーションテストを実行することができる。また、バグ情報の蓄積が充実するにしたがってテスト品質の向上を図ることができる。
【００２３】
請求項５の発明によれば、一連のイベントからなる利用者の操作をその特徴を分析して1つの操作としてスクリプトを生成できることからスクリプト生成が簡略化でき、アプリケーションテストの効率向上を図ることができる。
【００２４】
請求項６の発明によれば、利用者が使い慣れた手持ちのスマートフォン端末実機を操作してテストを行うことができ、また、利用者が例えば帰宅途中などパソコンを操作できない場合でもアプリケーションテストの実行を指示することができる。
【図面の簡単な説明】
【００２５】
【図１】図1は、本発明の実施形態に係るスマートフォンアプリケーションテスト自動化システムの全体構成を示す図である。
【図２】図２は、本発明の実施形態に係るスマートフォンアプリケーションテスト自動化システムの機能構成を示す図である。
【図３】図３は、本発明の実施形態に係るスマートフォンアプリケーションテスト自動化システムにおいてブラウザ、管理サーバーおよびスマートフォン端末における動作手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００２６】
以下、本スマートフォンアプリケーションテスト自動化システムの具体的な実施形態について図面を参照しながら詳細に説明する。
説明は以下の順に行う。
１）システムの全体構成
２）管理サーバー、クライアント端末の機能構成
３）端末操作手段
４）スクリプト生成手段
５）スクリプト実行手段
６）人工知能手段  
７）動画・静止画取得手段
８）アプリケーションテスト動作手順例
【００２７】
１）システムの全体構成
図１は、本発明の実施形態に係るスマートフォンアプリケーションテスト自動化システム１の全体構成を示す図である。
【００２８】
本スマートフォンアプリケーション自動化システム１は、アプリケーションテストを管理する管理サーバー１０と、アプリケ−ションのテスト操作を行う複数のクライアント端末（PC）２０およびクライアント端末（スマートフォン）２１と、テスト対象となる複数のスマートフォン端末３０と、インターネット回線網５００と、から構成される。
【００２９】
管理サーバー１０と各クライアント端末２０、２１は、インターネット回線網５００を介して相互に接続されている。各スマートフォン端末３０はケーブル等の有線または近距離無線により管理サーバー１０に接続されている。
【００３０】
クライアント端末として、スマートフォンアプリケーション開発の主体となるパーソナルコンピュータ２０の他にスマートフォン端末実機２１も含むことができる。
【００３１】
本スマートフォンアプリケーションテスト自動化システム１は、クライアント端末２０，２１を保有する利用者に対しスマートフォンアプリケーションテスト自動化サービスを提供するクラウドシステムである。利用者は、スマートフォンアプリケーションのテストに必要な様々なバージョンのオペレーティングシステム（OS）を搭載した様々な機種の複数のスマートフォン端末実機３０を利用して同時併行的にアプリケーションテストを実行することができる。また、テストの実行状況を記録した動画・静止画は、管理サーバーのデータベースに保存され、クライアント端末２０，２１の画面および又は印刷出力により一覧的にテスト結果を確認することができる。
【００３２】
２）管理サーバー、クライアント端末の機能構成
次に、管理サーバー、クライアント端末の機能構成について説明する。
図2は、本発明の実施形態に係るスマートフォンアプリケーションテスト自動化システムの機能構成を示す図である。
利用者は、クライアント端末２０上のWEBブラウザを操作してスマートフォンアプリケーションのテストに伴う様々な機能を実行することができる。クライアント端末としてパーソナルコンピュータの他にスマートフォン端末実機２１も含むことができる。
管理サーバー１０は、WEB／アプリサーバー１００、およびデータベースサーバー３００より構成される。
【００３３】
WEB／アプリサーバー、データベースサーバーは市場に提供されているクラウドコンピューティングサービス、例えば、AWS（Amazon Web Services）を使用することができる。
【００３４】
WEB／アプリサーバー１００は、クライアントのアカウント情報を管理するアカウント管理１１０、テスト対象のスマートフォンアプリケーションを管理するアプリ管理１２０、WEBブラウザ上でスマートフォン端末に対するテスト操作を実現する端末操作手段１３０、スマートフォン端末に対するテスト操作を端末非依存の形式で記述したスクリプトを生成するスクリプト生成手段１４０、作成されたスクリプトに基づいてアプリケーションテストを実行するスクリプト実行手段１５０、スクリプト生成を支援し、スクリプトを自動生成する人工知能手段１６０、アプリケーションテスト実行中の動画・静止画を取得する動画・静止画取得手段１７０、スマートフォン端末との通信を管理する端末管理１９０から構成される。
【００３５】
データベースサーバーは、アカウント情報、スクリプトファイル、テスト実行に伴う動画・静止画ファイル、人工知能用知識ベース等をデータベースとして管理する。また、スマートフォンアプリケーションに注入される操作イベント処理コード、テスト対象のスマートフォン端末にインストールされ操作情報に基づいて操作イベントを発生させスマートフォンアプリケーションを実行させる操作プログラム、テスト対象のスマートフォン端末にインストールされスマートフォンアプリケーションの実行に伴う動画・静止画を取得する動画・静止画取得プログラムもデータベースに管理される。
【００３６】
３）端末操作手段
次に、端末操作手段について説明する。
利用者は、スマートフォンアプリケーションのテストのためにスマートフォン端末に対して行うタッチパネル操作およびスマートフォン端末に対する縦横回転等のデバイス操作をクライアント端末のWEBブラウザ上で行う。これを実現するのが端末操作手段である。このテスト操作はスマートフォン実機を使用して行うこともできる（後述）。利用者はクライアント端末のタブレットまたはマウスを用いて、WEBブラウザで表示されたスマートフォン端末画面に対しタッチパネル操作を行う。また、WEBブラウザ上に表示されたアイコンを用いてデバイス操作を行う。具体的なタッチパネル操作には、目的の項目やアイコンにタッチするタップ、画面上を払うようにサッと滑らせて離すフリック、画面にタッチした状態でスライドさせるドラッグ、2本の指で画面を押さえ、撮むように指を近づけるピンチイン、ピンチインとは逆に指を広げて遠ざけるピンチアウト等がある。また、具体的なデバイス操作には、スマートフォン端末の縦回転、横回転、カメラ操作等がある。
【００３７】
管理サーバーの端末操作手段はクライアント端末上で行われたスマートフォン端末に対するタッチパネル操作、デバイス操作を解析して、スマートフォン端末操作情報を生成する。
【００３８】
４）スクリプト生成手段
次に、スクリプト生成手段について説明する。  「スクリプト」は、スマートフォン端末に対するテスト操作を記述した簡易言語である。管理サーバーのスクリプト生成手段は、前述した端末操作手段により作成されたスマートフォン端末操作情報をスマートフォン端末にインストールされた操作プログラムに送信し、操作プログラムはスマートフォン端末操作情報に基づいて対応するスマートフォン端末に対する操作イベントを発生させスマートフォンアプリケーションを実行させる。このとき、スマートフォンアプリケーションに注入された操作イベント処理コードが操作イベントを捕捉し、アプリケーションの画面構造を解析して操作イベント情報を管理サーバーのスクリプト生成手段に送信する。管理サーバーのスクリプト生成手段は受信した操作イベント情報に基づいてスクリプトを生成する。端末操作毎に生成されたスクリプトはアプリケーションの終了時にデータベースサーバーを介してスクリプトファイルとして記録保存される。このスクリプトファイルはスクリプト実行手段により読み込まれ、テスト実行または再実行に使用される。
【００３９】
スクリプトは、アプリケーションの画面構造を解析して端末に依存しない形式で生成している。スクリプトには、コマンド種別、タッチパネル操作やデバイス操作の種別、操作対象のユーザインタフェース部品（例えば、ボタン、リスト、チェックボックス、入力フィールド等）の種別、OSの種別、時刻情報等が含まれている。この端末非依存のスクリプトは、データベースサーバーにスクリプトファイルとして記録保存され、これを利用して複数のスマートフォン端末でのアプリケーションテストの同時実行を容易に実現することができる。
【００４０】
テスト操作用の端末として利用者手持ちのスマートフォン実機を使用した場合は、管理サーバーは、テスト対象のスマートフォンアプリケーションに操作イベント処理コードを注入してそのアプリケーションを利用者手持ちのスマートフォン実機にインストールする。
利用者がスマートフォン実機を操作するとイベントが発生し、操作イベント処理コードがそのイベントを捕捉して、上記の管理サーバーに接続されたスマートフォン端末の場合と同様に、スクリプト生成手段を通じてスクリプトを生成する。
【００４１】
５）スクリプト実行手段
次にスクリプト実行手段について説明する。
利用者がアプリケーションテストの実行を指定したとき、スクリプト実行手段はデータベースサーバーを介してテスト対象のアプリケーションおよびスクリプトファイルを読み出し、利用者によって指定された一般に複数のスマートフォン端末に対し、操作イベント処理コードを注入したテスト対象のアプリケーションと、「操作プログラム」および「動画・静止画取得プログラム」を送信する。各スマートフォン端末は受信したアプリケーションと「操作プログラム」および「動画・静止画取得プログラム」をインストールする。スクリプト実行手段は読み出したスクリプトファイル中のスクリプトに基づいて端末操作情報を作成し、各スマートフォン端末に送信する。各スマートフォン端末の「操作プログラム」は、受信した端末操作情報に基づいて当該スマートフォン端末に対し対応する操作イベントを発生させる。このことによりスマートフォン端末上のアプリケーションは直接操作された場合と同じように動作する。
【００４２】
操作イベントは、端末に依存して異なる場合があり（例えば画面サイズが異なる等）、各スマートフォン端末の「操作プログラム」は、必要な補正処理を行って操作イベントを発生させる。
【００４３】
６）人工知能手段
次に人工知能手段について説明する。
人工知能手段の目的は、その推論および学習機能により、利用者のテスト操作をできるだけ少なくし、テスト作業の効率化を図ることにある。目指すところは、推論および学習機能を強化することによりアプリケーションテストの完全自動化を図ることである。
【００４４】
ここで、「推論機能」とは、利用者の操作を知識として記録し、その知識に基づいて、テストすべき個所を導き出すことをいう。
また、「学習機能」とは、利用者が操作した対象を分析し、その情報から次に操作するであろう箇所を見つけ出し新たな知識とすることをいう。新たな知識は知識ベースに記録される。
【００４５】
人工知能の具体的な実現方法について以下に説明する。
推論機能および学習機能には以下のケースがある。
【００４６】
（１）推論機能
スマートフォンアプリケーションの操作画面（実行画面）において利用者が（ユーザインタフェース）部品を操作したとき、アプリケーションに注入された操作イベント処理コード（人工知能コードと称することもある）により、操作イベントを捕捉し、その画面の部品を検索し画面構造を取得する。部品とは、ボタン、チェックボックス、リスト等の操作の対象となるオブジェクトである。利用者による操作記録を参照して画面遷移操作を行う。画面遷移操作により次の画面に切り替わるとその切り替わった画面について部品を検索、画面構造を取得する。操作記録がない場合は種々のパターンで画面遷移操作を試行することができる。これを繰り返し、アプリケーションの全体の画面構造を取得することができる。推論機能では、取得した画面構造からテスト対象とする部品を選択し、その部品に対する操作に対応する操作イベントを発生させ、スクリプトを生成する。すなわち、利用者が一部のテスト操作しか指定しない場合でもそのテスト操作を通して部品を検索、画面構造を取得することにより、自動的にテスト項目を追加し、スクリプトを自動生成することができる。
このことにより、テスト項目の点から面への展開を図ることができ利用者によるテスト作業の簡略化、アプリケーションの品質向上を図ることができる。
【００４７】
（２）学習機能１
スマートフォンアプリケーション操作画面において利用者がある部品を操作したとき、その画面の部品情報を検索、取得するとともに、操作の対象となるオブジェクトを分析する。例えば、利用者がリスト中の１項目を選択した場合、学習機能はそのリストを分析し、複数項目からなるリストであることを知る。その分析結果に基づいて次に操作するであろう部品を見つけ出し（抽出し）、テスト項目としてスクリプトを生成する。このように部品操作による対象を分析した情報に基づいて新たなテスト箇所を見つけ出すことにより、テスト項目の表から奥への展開を図ることができ利用者によるテスト作業の簡略化、アプリケーションの品質向上を図ることができる。
【００４８】
（３）学習機能２
管理サーバーのテストアプリ管理では、アプリケーション登録サイト（例えばGoogle Play）から任意のアプリをダウンロードすることができる。これらのアプリケーションをダウンロードして操作イベント処理コードを注入してテストを実行し異常終了した場合に操作イベント処理コードがログ情報を分析しその結果をバグ情報として知識ベースに記録する。バグ情報には、不具合要因、アプリケーションのカテゴリー、使用したAPI（Application Program Interface）、入力条件等が含まれる。管理サーバーは、多数のアプリケーションを利用者によらずシステム内で自動的に実行してそのバグ情報を蓄積していく。これらの知識に基づいて利用者のアプリケーションに対し、適用できるテスト操作を抽出し、それに対応する操作イベントを発生させてスクリプトを生成する。このバグ情報を充実することにより、テスト項目の抽出をほぼ完全に自動化することができる。あたかも熟練したアプリケーションテストの実行者を「本システム」が用意するようなものである。したがって、熟練した利用者でなくともスマートフォンアプリケーションのテストを容易に実行することができるとともに効率よくテストを行うことができ、アプリケーション開発工数の削減、アプリケーションの品質向上を図ることができる。
（４）学習機能３
アプリケーションの操作画面において「飛ぶ」動作を指示するスイープ操作を行ったような場合、スイープ操作中に一連のイベントが発生する。学習機能では、これら一連のイベントを分析して特徴を抽出し、一連のイベントをグループ化して1つの操作としてスクリプトを生成し知識ベースとして記録する。テスト対象のアプリケーションに対して一連のイベントが発生した場合、記録された知識ベースを検索し、グループ化されたイベントと特徴が同じであれば記録されたスクリプトを生成する。このことによって、スクリプト生成が簡略化でき、アプリケーションテストの効率向上を図ることができる。
【００４９】
７）動画・静止画取得手段
次に動画・静止画取得手段について説明する。
アプリケーションテスト実行中の画面情報である動画・静止画は、テスト結果の検証において極めて重要である。利用者がこれらの情報を取得しようとするのはかなり煩雑な作業を伴う。利用者に代わり、管理サーバーはアプリケーション実行中の動画・静止画を自動的に取得し利用者のテスト結果検証用して、動画・静止画ファイルに保存する。具体的には、テスト対象の各スマートフォン端末に動画・静止画取得プログラムをインストールしておき画面情報をリアルタイムに収集しあるいは画面切り替え時のイベントを捕捉して静止画情報を収集する。
【００５０】
８）アプリケーションテスト動作手順例
次に、利用者によるテスト開始から終了までの動作手順の一例について説明する。
【００５１】
図３は、本発明の実施形態に係るスマートフォンアプリケーションテスト自動化システムにおいてブラウザ、管理サーバー、および管理サーバーに接続されたスマートフォン端末における動作手順の一例を示すフローチャートである。
【００５２】
ステップ１において、利用者は、クライアント端末のWEBブラウザを通して、スマートフォンアプリケーションテスト自動化システム（以下「本システム」と称する）に接続しログインする。
【００５３】
ステップ２において、管理サーバーのアカウント管理は、新規であればアカウント情報ファイルを作成する。すでに登録されていればアカウント情報をチェックし、OKであれば「本システム」のメニュー画面情報をクライアント端末に送信する。
【００５４】
ステップ３において、利用者は、クライアント端末上のメニュー画面からテストするスマートフォン端末を選択する。スマートフォン端末は複数機種同時に選択することができる。
【００５５】
ステップ４において、管理サーバーの端末管理は指定されたスマートフォン端末情報を登録管理する。
【００５６】
ステップ５において、利用者は、メニュー画面でテストアプリケーションのアップロードを行う。アップロードは、クライアント端末上にあるテスト対象アプリケーションを管理サーバーにアップロードするか、アプリ登録サイト（例えば、Google Play）からダウンロードすることもできる。
【００５７】
ステップ６において、管理サーバーのアプリ管理は入手したアプリケーションを登録するとともに、当該アプリケーションに対し操作イベント処理コードを注入する。注入したアプリケーションおよび操作プログラムをスマートフォン端末に送信する。
【００５８】
ステップ７において、スマートフォン端末は、受信した操作イベント処理コードを注入したアプリケーションをインストールする。
【００５９】
ステップ８において、スマートフォン端末は受信した操作プログラムをインストールする。
【００６０】
ステップ９において、利用者は、クライアント端末上でメニュー画面の右枠に表示されたスマートフォン端末およびアプリケーションの画面に対し、スマートフォン端末操作を実行する。
【００６１】
ステップ１０において、管理サーバーの端末操作手段は、利用者によるスマートフォン端末操作を解析し、その端末操作情報をスマートフォン端末に送信する。
【００６２】
ステップ１１において、スマートフォン端末の操作プログラムは、受信した端末操作情報に基づいて対応する操作イベントを発生させる。注入された操作イベント処理コードは、イベントを捕捉し画面構造を解析して操作ログ情報を管理サーバーのスクリプト生成手段に送信する。
【００６３】
ステップ１２において、管理サーバーのスクリプト生成手段は、受信した操作ログ情報に基づいてスマートフォン端末を操作を記述したスクリプトを生成し、アプリケーション終了時にスクリプトファイルに保存する。
【００６４】
ステップ１３において、利用者は、メニュー画面から、使用するスクリプトファイル、テストスケジュール等のテスト条件を指定し、指定済みの複数のスマートフォン端末でのテスト実行を指示する。
【００６５】
ステップ１４において、管理サーバーの端末管理は、操作イベント処理コード注入済みのアプリケーション、操作プログラム、および動画静止画取得プログラムを指定されている複数のスマートフォン端末に送信する。
【００６６】
ステップ１５において、各スマートフォン端末は、受信した操作イベント処理コード注入済みのアプリをインストールする。
【００６７】
ステップ１６において、各スマートフォン端末は、受信した操作プログラムおよび動画静止画取得プログラムをインストールする。
【００６８】
ステップ１７において、管理サーバーのスクリプト実行手段は、スクリプトファイルからスクリプトを読み出し、端末操作情報に変換し、スマートフォン端末に送信する。
【００６９】
ステップ１８において、スマートフォン端末の操作プログラムは、受信した端末操作情報に基づいて対応する操作イベントを発生させアプリケーションを実行する。
【００７０】
ステップ１９において、スマートフォン端末は、実行中の画面の動画・静止画データを生成し、管理サーバーの動画・静止画取得手段に送信する。
【００７１】
ステップ２０において、管理サーバーの動画・静止画取得手段は、受信した動画・静止画データを、データベースサーバーを介して動画・静止画ファイルとして保存する。
【００７２】
ステップ２１において、利用者は、テスト結果の表示を管理サーバーに指示する。
【００７３】
ステップ２２において、管理サーバーは、テスト結果の表示画面データを生成しクライアント端末に送信する。
【００７４】
ステップ２３において、クライアント端末は、テスト結果を画面に表示する。
【００７５】
人工知能による完全テスト自動化の場合には、上記ステップ９における端末操作は不要となる
【００７６】
以上、本システムの実施形態としてスマートフォンアプリケーションのテストについて説明したが、本システムは、スマートサイトのテストにも利用できる。様々なOSを搭載したスマートフォン実機を使用してスマートフォンサイトのデザイン検証等を行うことができる。
【００７７】
また、本システムの実施形態ではクラウドサービスを提供するシステムとして説明したが、インハウスの検証システムとしても適用可能である。
【００７８】
本実施形態で説明したことは、本発明の趣旨を逸脱しない範囲で種々の変形が可能であることはいうまでもない。
【符号の説明】
【００７９】
１   アプリケーションテスト自動化システム      
１０  管理サーバー
２０  クライアント端末（PC）
２１  クライアント端末（スマートフォン）
３０  スマートフォン端末
１００  WEB・アプリサーバー
１１０  アカウント管理
１２０  アプリ管理
１３０  端末操作手段
１４０  スクリプト生成手段
１５０  スクリプト実行手段
１６０  人工知能手段
１７０  動画・静止画取得手段
１９０  端末管理
３００  データベースサーバー
３１０  アカウント情報
３２０  スクリプトファイル
３３０  動画・静止画ファイル
３４０  知識ベース
３７０  操作イベント処理コード
３８０  操作プログラム
３９０  動画・静止画取得プログラム
５００  インターネット回線網
【図１】
2017117309.tif 000003
【図２】
2017117309.tif 000004
【図３】
2017117309.tif 000005