以下に、本発明の実施例について、図を用いて詳細に説明する。
――――動作検証システムの構成――――
図1は、本発明の実施例の動作検証システムの構成を示す。
この動作検証システムは、テスト装置101と端末装置120とを有する。テスト装置101は、端末装置120の動作のテストを行う。テスト装置101は例えば、コンピュータであり、端末装置120のソフトウェアの開発に用いられるコンピュータであっても良い。端末装置120は、スマートフォンやタブレット端末などの情報端末装置であっても良いし、車両に搭載されるナビゲーション装置であっても良い。テスト装置101と端末装置120は、通信路130を介して接続される。通信路130は、USB(Universal Serial Bus)やLAN(Local Area Network)等の有線通信路であっても良いし、無線LAN等の無線通信路であっても良い。
テスト装置101は、記憶部211、CPU(Central Processing Unit)212、入力部213、表示部214、通信部215を有する。記憶部211は、半導体メモリやHDD(Hard Disk Drive)等であり、テストのためのプログラム及びデータを格納する。CPU212は、記憶部211内のプログラム及びデータに基づいて、端末装置120のテストを実行する。入力部213は、ユーザによる操作を検出する。表示部214は、CPU212からの指示に従って画面を表示する。通信部215は、端末装置120との通信を行う。
記憶部211は、テスト条件設定部102、擬似入力条件管理部103、走行条件管理部104、テスト判定条件管理部105、基準画像管理部106、画面イメージ取得条件管理部107、テストシナリオ作成部108、テスト結果作成部109、テスト判定部110、画面イメージ収集部111、画面イメージ取得条件送信部112、地図情報管理部113、画面イメージ管理部114の夫々を実現するプログラムおよび/またはデータを格納する。以下に説明する各処理は、CPU212が記憶部211内のプログラムを実行することにより実現される。これらのプログラムは、コンピュータ読み取り可能な記憶媒体に格納され、その記憶媒体から、テスト装置101へインストールされても良い。
テスト条件設定部102は、GUI(Graphical User Interface)を用いてユーザとの対話処理によりテスト条件を設定する。テスト条件は、擬似入力条件、走行条件、判定条件、基準画像、画面イメージ取得条件を含む。擬似入力条件管理部103は、擬似入力条件を格納する。走行条件管理部104は、走行条件を格納する。テスト判定条件管理部105は、テスト判定条件を格納する。基準画像管理部106は、基準画像を格納する。画面イメージ取得条件管理部107は画面イメージ取得条件を格納する。ここで、画面イメージは、端末装置120の表示部224に表示された画面を示す画像である。
テストシナリオ作成部108は、擬似入力条件管理部103と走行条件管理部104から、テストのための擬似的な走行の指示であるテストシナリオを作成する。テストシナリオを示すテストIDは、ユーザから指定されても良いし、テストシナリオ作成部108により作成された順に付与されても良い。テストシナリオ作成部108は、ユーザからの指示(ボタン押下など)や、端末装置120が通信路130を介してテスト装置101と接続されたタイミングで、テストシナリオを端末装置120へ送信する。
画面イメージ取得条件送信部112は、画面イメージ取得条件を端末装置120へ送信する。画面イメージ収集部111は、画面イメージ管理部132に連続して記録された複数の画面イメージである画面イメージ群を端末装置120から受信し、画面イメージ管理部114へ保存する。テスト判定部110は、テスト判定条件と基準画像に基づいて、画面イメージ群を判定することにより、端末装置120が正常に動作したか否かを判定する。テスト結果作成部109は、判定の結果を表示部214に表示させる。
図2は、端末装置120の構成を示す。
端末装置120は、記憶部221、CPU222、入力部223、表示部224、通信部225、測位部226を有する。記憶部221は、半導体メモリやHDD等であり、位置情報を用いるプログラム及びデータを格納する。CPU222は、記憶部221内のプログラム及びデータに基づいて、処理を実行する。入力部223は、ユーザによる操作を検出し、入力情報(操作情報)として出力する。表示部224は、CPU222からの指示に従って画面を表示する。通信部225は、テスト装置101の通信部215と通信路130を介して接続され、テスト装置101との通信を行う。測位部226は、例えばGPS(Global Positioning System)受信機であり、端末装置120の位置(現在地)である端末位置を測定し、端末位置の地理座標を示す位置情報を出力する。測位部226は、加速度を測定する加速度センサや、傾きを測定するジャイロセンサや、車両に搭載される場合に車速パルスを検出するセンサ等を有していても良い。また、CPU222は、時刻を測定する。なお、測位部226が時刻を測定しても良い。
記憶部221は、擬似信号制御部121、業務アプリケーション122、位置情報管理部123、画面イメージ取得部124、地図情報管理部131、画面イメージ管理部132の夫々を実現するプログラムおよび/またはデータを格納する。以下に説明する各処理は、CPU222が記憶部221内のプログラムを実行することにより実現される。これらのプログラムは、コンピュータ読み取り可能な記憶媒体に格納され、その記憶媒体から、端末装置120へインストールされても良い。
地図情報管理部131は、地図情報を格納する。位置情報管理部123は、地図情報管理部131内の地図情報に基づいて、測位部226からの位置情報の補正や管理を行い、位置情報に基づくイベントを発行する。業務アプリケーション122は、動作検証システムによるテストの対象である。業務アプリケーション122は、位置情報管理部123からのイベントに基づいて動作する。また、業務アプリケーション122は、入力部223からの入力情報に基づいて動作する。例えば、端末位置が予め指定された位置に近づいた場合などに、位置情報管理部123は、業務アプリケーション122へイベントを発行する。このとき、業務アプリケーション122は、発行されたイベントに基づいて表示部224の画面上にメッセージを表示させたり、表示されている情報を更新したりする。なお、位置情報管理部123は、イベントではなく、端末装置120の位置情報そのものを、定期的に業務アプリケーション122に通知しても良い。
画面イメージ取得部124は、画面イメージ取得条件送信部112から画面イメージ取得条件を受信し、受信された画面イメージ取得条件に基づいて、表示部224の画面をキャプチャし、画面イメージとして画面イメージ管理部132へ保存する。ここで画面イメージ取得部124は、位置情報を定期的に取得し、端末位置が画面イメージ取得条件に指定された取得位置の範囲内である場合、画面イメージ取得条件に指定された時間間隔で連続して画面イメージを取得する。この時、画面イメージ取得部124は、画面イメージ取得条件に含まれるテストID、画面イメージを取得した時刻、その時刻における端末位置を画面イメージの付属情報として記録する。画面イメージ取得部124は、取得した画面イメージの付属情報として、画面イメージを取得した時刻の前後に位置情報管理部123と業務アプリケーション122との間に流れた情報を、その時刻に対応付けて画面イメージ管理部132へ記録しても良いし、CPU222や記憶部221の負荷状態を画面イメージ管理部132へ記録しても良い。画面イメージ取得条件は、入力部223により検出される入力情報の条件を示していても良い。この場合、画面イメージ取得部124は、入力情報が画面イメージ取得条件に指定された入力情報の条件を満たす場合、画面イメージ取得条件に指定された時間間隔で連続して画面イメージを取得する。画面イメージ取得条件が成立した場合に画面イメージを記録することにより、必要な状況のテストを実行することができる。
画面イメージ取得部124が、業務アプリケーション122の外に設けられ、業務アプリケーション122により表示された画面を画面イメージ管理部132へ記録することにより、キャプチャ等のテスト機能を業務アプリケーション122に含める必要がないため、テスト機能の追加による業務アプリケーション122の不具合を防ぐことができる。
擬似信号制御部121は、テストシナリオ作成部108から受信したテストシナリオに基づいて、位置情報管理部123や業務アプリケーション122へ擬似的な信号を送ることで、端末装置120の疑似走行を制御する。擬似信号は例えば、位置情報管理部123へ入力される位置情報や、業務アプリケーション122への入力情報等の代わりとなる信号である。
――――テスト条件の内容――――
図3は、擬似入力条件管理部103の内容を示す。
擬似入力条件管理部103は、テストを実施する際に端末装置120へ与える擬似的な入力信号である擬似入力信号を定義する擬似入力条件を管理するテーブルである。擬似入力条件管理部103は、テストID201、トリガ202、擬似入力信号203を有する。テストID201は、テストを一意に識別するための情報である。トリガ202は、擬似入力信号203を発生させるための条件を表している。トリガ202における指定位置は、地理座標(緯度,経度)で表される。例えば、トリガ202が「指定位置=(LAT1,LON1)、距離<100m」である場合、端末位置から指定位置(LAT1,LON1)までの距離が100m未満になった場合に、対応する擬似入力信号203で指定された信号を発生させることを表している。この例において、トリガ202は、端末位置から指定位置までの距離の条件であるが、端末位置から指定位置までの距離がしきい値以下になってからの経過時間の条件を更に有しても良い。また、トリガ202の条件は、テスト開始時刻からの経過時間や所定時刻であっても良いし、CPU222等の端末装置120の負荷状態であっても良いし、位置情報管理部123から業務アプリケーション122に通知されるデータであっても良い。擬似入力信号203は、業務アプリケーション122への擬似的な入力信号を表す。入力信号は、表示部224の画面上のクリックや文字入力等である。例えば、擬似入力信号203が画面上のクリックを指定する場合、擬似信号制御部121は、画面上に表示されたボタンを自動で押下することが可能となる。この例において、擬似入力信号203は、ユーザから入力部223への入力を擬似的に発生させるものであるが、加速度や傾きなどのセンサ情報を擬似的に発生させても良いし、位置情報管理部123から業務アプリケーション122に送られるデータを擬似的に発生させても良い。
図4は、走行条件管理部104の内容を示す。
走行条件管理部104は、端末装置120を擬似的に走行させるための走行条件を管理するテーブルである。業務アプリケーション122のように位置情報に基づいて動作するアプリケーションをテストする場合、実際に端末装置120を移動させてテストする方法もあるが、擬似的な位置情報を端末装置120へ与えることで机上でのテストが可能となる。走行条件管理部104は、テストID301、移動速度302、経路303を有する。テストID301は、テストを一意に識別するための情報である。移動速度302は、端末装置120を擬似的に移動させる速度を表している。経路303は、端末装置120の擬似的な移動経路を経由地の地理座標の点列で表している。例えば、「(LAT1,LON1)−(LAT2,LON2)−(LAT3,LON3)」で表された経路303は、地理座標(LAT1,LON1)から出発して地理座標(LAT2,LON2)に移動し、地理座標(LAT2,LON2)から座標(LAT3,LON3)へ移動することを表している。経路303は、何点の地理座標を指定しても良く、同じ地理座標を繰り返し通っても良い。
図5は、テスト判定条件管理部105の内容を示す。
テスト判定条件管理部105は、業務アプリケーション122の動作の判定のための判定条件を管理するテーブルである。テスト判定条件管理部105は、テストID401、判定条件402を有する。テストID401は、テストを一意に識別するための情報である。判定条件402は、テストの判定条件として、正常時の画面遷移を表している。テストID401が1である場合を用いて説明する。この時の判定条件402は、3つの部分判定条件CS1「表示(画像領域=(X1,Y1)−(X2,Y2),基準画像ID=1)」、CS2「非表示(画像領域=(X3,Y3)−(X4,Y4),基準画像ID=2) AND 連続表示(画像領域=(X1,Y1)−(X2,Y2),基準画像ID=1,4秒)」、CS3「非表示(画像領域=(X1,Y1)−(X2,Y2),基準画像ID=1)」を有する。また、この判定条件402は、CS1→CS2→CS3の順に発生することを表している。各部分判定条件は、表示部224の画面上の位置を示す画像領域と、当該画像領域内に表示される基準画像を示す基準画像IDと、当該画像領域における当該基準画像の変化を示す画面遷移とを含む。画像領域である矩形領域は、(左上の頂点の画面座標)−(右下の頂点の画面座標)で表され、表示部224の画面における画面座標は(横座標、縦座標)で表される。画像領域は、矩形領域ではなく他の多角形の領域であっても良い。また、基準画像IDは、基準画像管理部106で管理されている基準画像を一意に識別するための情報である。画面遷移は、「表示」、「非表示」、「連続表示」の何れかを示す。画面遷移が連続表示である場合の部分判定条件は、連続時間を含む。
部分判定条件CS1は、(X1,Y1)−(X2,Y2)で表される画像領域AI1と、基準画像IDが1である基準画像IR1とを用い、画像領域AI1に基準画像IR1が表示されることを表す。画像領域AI1の画像が基準画像IR1に一致した場合、CS1を満たすと判定される。なお、画像の一致の判定に一致度を用いても良い。例えば、画像領域AI1の画像と基準画像IR1との一致度が95%以上になれば、画像領域AI1の画像が基準画像IR1に一致したと判定される。
部分判定条件CS2は、二つの要素条件CS2a「非表示(画像領域=(X3,Y3)−(X4,Y4),基準画像ID=2)」、CS2b「連続表示(画像領域=(X1,Y1)−(X2,Y2),基準画像ID=1,4秒)」のAND条件であるため、要素条件CS2a及びCS2bの両方を満たすことが必要となる。要素条件CS2aは、(X3,Y3)−(X4,Y4)で表される画像領域AI2と、基準画像IDが2である基準画像IR2とを用い、画像領域AI2に表示されている基準画像IR2が非表示になることを表す。言い換えれば、要素条件CS2aは、画像領域AI2に表示されている基準画像IR2が別の画像に変更されることを表す。画像領域AI2の画像が基準画像IR2に不一致になった場合、要素条件CS2aを満たすと判定される。要素条件CS2bは、画像領域AI1に基準画像IR1が連続時間(4秒)以上連続で表示されることを表している。
部分判定条件CS3は、画像領域AI1に表示されている基準画像IR1が非表示になることを表す。端末装置120により取得された画面イメージ群においてCS1→CS2→CS3が順に発生した場合、業務アプリケーション122の動作が正常であると判断される。判定条件402に用いられる画面遷移として、「表示」、「非表示」、「連続表示」の3つを例として示したが、その他の画面遷移として、画面に表示されていた基準画像が連続時間以上非表示になる「連続非表示」や、表示と非表示が交互に繰り返される「点滅」(点滅回数を指定する)などが用いられても良い。これにより、基準画像を用いる画面遷移とその順序をテスト判定条件として定義することができ、テスト判定部110は、画面イメージ群において、画面遷移が順序通り発生したか否かを判定することができる。
図6は、画面イメージ取得条件管理部107の内容を示す。
画面イメージ取得条件管理部107は、端末装置120の画面の取得のための画面イメージ取得条件を管理するテーブルである。画面イメージ取得条件管理部107は、テストID501、取得位置502、取得間隔503とを有する。テストID501は、テストを一意に識別するための情報である。取得位置502は、表示部224内で画面イメージを取得する端末位置の領域を表している。取得位置502は例えば、多角形であり、その多角形の複数の頂点の地理座標で表される。例えば、取得位置502「(LAT1,LON1)−(LAT2,LON2)−(LAT3,LON3)−(LAT1,LON1)」は、(LAT1,LON1)と(LAT2,LON2)と(LAT3,LON3)を頂点とする三角形を表している。端末位置がこの三角形の内部である場合に、画面イメージ取得部124は、表示部224の画面イメージを取得する。取得間隔503は、画面イメージを取得する時間間隔を表している。例えば、取得間隔503に「0.01」が指定されている場合、画面イメージ取得部124は0.01秒周期で取得して記録し、取得間隔503に「0.1」が指定されている場合、画面イメージ取得部124は0.1秒周期で画面イメージを取得して記録する。これにより、位置情報が取得位置502を満たす場合、画面イメージ取得部124は、業務アプリケーション122により表示部224に表示された画面を取得間隔503毎に記録することができる。
画面イメージ取得条件送信部112は、画面イメージ取得条件管理部107へ格納された画面イメージ取得条件を、端末装置120の画面イメージ取得部124へ送信する。
――――動作検証システムの動作――――
以下、テスト装置101により端末装置120のテストを行うテスト処理について説明する。
図7は、テスト処理を示す。この図は、テスト処理におけるテスト装置101と端末装置120の動作を示す。ステップ601において、テスト装置101のテスト条件設定部102は、テスト条件設定画面を表示し、ユーザによる入力部213の操作に基づいて、テスト条件を設定する。ここでテスト条件設定部102は、テストIDを指定して指定テストIDとし、擬似入力条件、走行条件、テスト判定条件、画面イメージ取得条件を設定し、テスト判定条件のための基準画像を登録する。
ステップ602において、テストシナリオ作成部108は、設定された走行条件及び疑似入力条件に基づいてテストシナリオを作成し、端末装置120へ送信する。ステップ611において、端末装置120の擬似信号制御部121は、テストシナリオを受信する。ステップ603において、テスト装置101の画面イメージ取得条件送信部112は、設定された画面イメージ取得条件を端末装置120へ送信する。ステップ612において、端末装置120の画面イメージ取得部124は、画面イメージ取得条件を受信する。
ステップ613において、端末装置120の擬似信号制御部121は、テストシナリオに基づいて、端末装置120の疑似走行を実施し、画面イメージ取得部124は、端末装置120の状態が画面イメージ取得条件を満たす間、連続して複数の画面イメージを取得し、画面イメージ群として画面イメージ管理部114へ保存する。擬似信号制御部121によるテストシナリオの実行が終了すると、ステップ614において、画面イメージ取得部124は、画面イメージ管理部114内の画面イメージ群をテスト装置101へ送信する。
ステップ604において、テスト装置101の画面イメージ収集部111は、画面イメージ群を受信し、画面イメージ管理部114へ保存する。ステップ605において、テスト判定部110は、保存された画面イメージ群と判定条件に基づいて、業務アプリケーション122が正常に動作したか否かを判定するテスト判定処理を行う。ステップ606において、テスト結果作成部109は、テスト判定処理の結果に基づいて、ユーザが閲覧しやすい形のテスト結果画面を作成して表示部214に表示させ、このフローを終了する。テスト毎に本フローを繰り返しても良いし、複数のテスト条件を端末装置120に送り、複数のテストの実行結果を一括して回収し、複数のテストの判定を行っても良い。
図8は、テスト条件設定画面を示す。
テスト条件設定部102は、テスト前に、テスト条件設定画面を表示部214に表示させ、ユーザによる入力部213の操作に基づいてテスト条件を取得する。テスト条件設定画面は、走行条件入力部2011、擬似入力条件入力部2012、テスト判定条件入力部2013、画面イメージ取得条件入力ボタン2014、テストシナリオ作成ボタン2015を有する。テスト条件設定部102は、テストシナリオ作成ボタン2015が押下されると、走行条件入力部2011へ入力された走行条件を走行条件管理部104へ保存し、擬似入力条件入力部2012へ入力された擬似入力条件を擬似入力条件管理部103へ保存し、テスト判定条件入力部2013へ入力されたテスト判定条件をテスト判定条件管理部105へ保存する。その後、テスト条件設定部102は、テスト条件設定画面を閉じ、テストシナリオ作成部108にテストシナリオの作成を指示する。テスト条件設定部102は、入力されたテスト条件を再利用して、新しいテスト条件を設定することもできる。
テスト条件設定部102は、走行条件における経路を設定する場合や、画面イメージ取得条件における取得位置を設定する場合、地図情報管理部113から地図情報を取得してテスト条件設定画面に地図を表示させ、ユーザによる地図上の領域の指定を取得する。
走行条件入力部2011は、移動速度入力部2031と地図入力ボタン2032とを有する。地図入力ボタン2032が押下されると、テスト条件設定部102は、テスト条件設定画面に地図2021を表示させ、ユーザによる地図2021への入力に基づいて経路303を指定する。例えば、テスト条件設定部102は、地図321上でユーザによりクリックされた点2022を繋げることで経路303を指定しても良いし、ユーザがマウス等の入力部213により地図2021上でなぞられた線を経路303として指定しても良い。また、テスト条件設定部102は、地図2021上で経路303を指定するのではなく、入力される地理座標の点列により直接、経路303を指定しても良い。端末装置120の移動速度にばらつきがあっても、業務アプリケーション122が正しく動作することを確認するために、移動速度302に上限値と下限値が夫々設定された2種類のテストを少なくとも実施することが望ましい。例えば、移動速度302の上限値及び下限値は夫々、経路303の道路を通過する車両の上限速度と下限速度である。移動速度入力部2031がユーザから移動速度302の入力を受け付けても良いが、テスト条件設定部102が地図情報管理部113に基づいて移動速度302を決定しても良い。例えば、テスト条件設定部102は、経路303の道路の制限速度や、経路303の道路を通過するのにかかる平均時間等をベースに自動で決定しても良い。
擬似入力条件入力部2012は、トリガ入力部2033と、アクション入力部2034とを有する。トリガ入力部2033は、例えばプルダウンメニューであり、予め定められたトリガ202の選択肢を表示し、ユーザからトリガ202の選択を受け付ける。アクション入力部2034は、例えばプルダウンメニューであり、予め定められた擬似入力信号203の選択肢を表示し、ユーザから擬似入力信号203の選択を受け付ける。トリガ入力部2033には、新たなトリガ202が入力されても良い。アクション入力部2034には、新たな擬似入力信号203が入力されても良い。
テスト判定条件入力部2013は、画面遷移入力部2041、基準画像選択ボタン2042、画像領域入力部2043、判定条件編集ボタン2023、判定条件表示部2024を有する。画面遷移入力部2041は、部分判定条件に用いられる画面遷移の種類と、画面遷移が連続表示である場合の連続表示時間との入力をユーザから受け付ける。基準画像選択ボタン2042が押下されると、テスト条件設定部102は、基準画像を選択する画面を表示部214に表示させ、基準画像の選択及び登録をユーザから受け付ける。画像領域入力部2043は、部分判定条件に用いられる画像領域の入力をユーザから受け付ける。判定条件編集ボタン2023は、複数の部分判定条件を組み合わせる演算子をついかするためのAND演算子ボタン及びOR演算子ボタン、部分判定条件を追加するための追加ボタン、部分判定条件を削除するための削除ボタンを有する。判定条件表示部2024は、作成された判定条件を表示する。
画面イメージ取得条件入力ボタン2014が押下されると、テスト条件設定部102は、画面イメージ取得条件設定画面を表示部214に表示させる。
図9は、画面イメージ取得条件設定画面を示す。
画面イメージ取得条件設定画面は、取得位置入力部2051、取得間隔入力部2052、OKボタン2053、CANCELボタン2054を有する。OKボタン2053が押下されると、テスト条件設定部102は、取得位置入力部2051及び取得間隔入力部2052へ入力された内容を画面イメージ取得条件管理部107へ保存し、表示部214の画面イメージ取得条件設定画面を閉じ、表示部214の画面をテスト条件設定画面に戻す。CANCELボタン2054が押下されると、テスト条件設定部102は、画面イメージ取得条件設定画面へ入力された内容を画面イメージ取得条件管理部107へ保存せずに、表示部214の画面イメージ取得条件設定画面を閉じ、表示部214の画面をテスト条件設定画面に戻す。
取得位置入力部2051は、地図入力ボタン2071と、取得位置表示部2072とを有する。地図入力ボタン2071が押下されると、テスト条件設定部102は、画面イメージ取得条件設定画面に地図2061を表示させ、ユーザにより地図2061上で指定された多角形2062を指定し、多角形2062から取得位置502を算出して取得位置表示部2072へ表示する。なお、テスト条件設定部102は、取得位置表示部2072へ入力される地理座標の点列により直接、取得位置502を指定しても良い。また、テスト条件設定部102は、所定のルールに基づいて自動的に取得位置502を指定しても良い。例えば、テスト装置101により警告地点の位置が管理されている場合、テスト条件設定部102は、その警告地点を読み込み、警告地点を中心とした半径100m以内を取得位置502に指定しても良い。
取得間隔入力部2052は、ユーザから取得間隔503の入力を受け付ける。
以下、テストシナリオ作成部108及び擬似信号制御部121の動作(ステップ602、611、613)の詳細について説明する。
テストシナリオの作成の指示を受けたテストシナリオ作成部108は、指定された時間間隔(1秒、0.1秒など)である実行間隔を用い、走行条件における経路303を移動速度302で走行する場合に実行間隔の経過毎の通過点の地理座標を算出して通過点列とする。例えば、テストシナリオ作成部108は、経路「(LAT1,LON1)−(LAT2,LON2)」を、WP1(LAT1,LON1)、WP2(LAT1a,LON1a)、WP3(LAT2,LON2)の3つの通過点を有する通過点列に変換する。その後、テストシナリオ作成部108は、通過点列へ夫々移動することを示す命令列「MOVE(LAT1,LON1)、MOVE(LAT1a,LON1a)、MOVE(LAT2,LON2)」を作成する。次にテストシナリオ作成部108は、指定テストIDをキーとして、擬似入力条件管理部103からトリガ202及び擬似入力信号203を取得する。例えば、テストシナリオ作成部108が、トリガ202として「座標=(LAT1,LON1)、距離<100m」、擬似入力信号203として「画面クリック(X1,Y1))を取得したとする。テストシナリオ作成部108は、通過点列WP1〜WP3の中からトリガ202を満たす通過点を検出する。ここでテストシナリオ作成部108は、通過点列を前から走査し、トリガ202を初めて満たす通過点を見つける。トリガ202を初めて満たす通過点がWP2である場合、テストシナリオ作成部108は、命令列において、WP2へ移動する命令MOVE(LAT1a,LON1a)の後に、擬似入力信号203を示す命令CLICK(X1,Y1)を追加する。これにより、テストシナリオ作成部108は、「MOVE(LAT1,LON1)、MOVE(LAT1a,LON1a)、CLICK(X1,Y1)、MOVE(LAT2,LON2)」というテストシナリオを作成する。その後、テストシナリオ作成部108は、作成されたテストシナリオを端末装置120の擬似信号制御部121へ送信する。
ここでは、擬似信号制御部121が、前述のテストシナリオ「MOVE(LAT1,LON1)、MOVE(LAT1a,LON1a)、CLICK(X1,Y1)、MOVE(LAT2,LON2)」を受信した場合について説明する。擬似信号制御部121は、受信されたテストシナリオ内の命令を順に実行することにより、擬似信号を位置情報管理部123又は業務アプリケーション122へ送る。
まず擬似信号制御部121は、MOVE(LAT1,LON1)を実行することにより、擬似的な位置情報(LAT1,LON1)を位置情報管理部123及び画面イメージ取得部124へ送る。実行間隔だけ待機した後、擬似信号制御部121は、次のMOVE(LAT1a,LON1a)を実行することにより、擬似的な位置情報(LAT1a,LON1a)を位置情報管理部123及び画面イメージ取得部124へ送る。このようにMOVE命令は、実行間隔毎に実行される。実行間隔は、予め定義された値であっても良いし、テスト毎に指定されても良い。実行間隔がテスト毎に指定される場合、テストシナリオ作成部108は、実行間隔をテストシナリオの付属情報として擬似信号制御部121に通知する。
擬似信号制御部121は、MOVE(LAT1a,LON1a)の実行後、CLICK(X1,Y1)を実行することにより、表示部224の画面座標(X1,Y1)を擬似的にクリックしたことを示す信号を業務アプリケーション122へ送る。CLICK命令はMOVE命令と異なり、待ち時間なしで実行される。つまり、擬似信号制御部121は、MOVE(LAT1a,LON1a)を実行したらすぐにCLICK(X1,Y1)を実行する。
擬似信号制御部121は、CLICK(X1,Y1)を実行してから実行間隔だけ待機した後、テストシナリオの最後の命令であるMOVE(LAT2,LON2)を実行することにより、擬似的な位置情報(LAT2,LON2)を位置情報管理部123及び画面イメージ取得部124へ送る。
画面イメージ取得部124は、取得された画面イメージを画面イメージ管理部132へ保存すると共に、テストID、画面イメージを取得した時刻、画面イメージを取得した端末位置の地理座標を付属情報として画面イメージ管理部132へ保存する。
本実施例では、擬似信号制御部121が擬似的な位置情報を位置情報管理部123へ与えることで、業務アプリケーション122のテストを実施するが、端末装置120を車両に搭載して実際にその車両を走らせることで業務アプリケーション122のテストを実施しても良い。
以上のテスト処理によれば、位置情報に応じて変化する画面を画面イメージ群として取得し、画面イメージ群に基づいて業務アプリケーション122の動作を検証することができる。また、擬似信号制御部121がテストシナリオに基づいて、擬似的な位置情報を生成することにより、端末装置120を実際に移動させることなく、擬似的な走行によりテストを実行することができる。また、擬似信号制御部121がテストシナリオに基づいて、擬似的な入力情報を生成することにより、端末装置120を実際に操作することなく、擬似的な入力によりテストを実行することができる。
以下、テスト判定処理(ステップ605)の詳細について説明する。
図10は、テスト判定処理を示す。ステップ701において、テスト判定部110は、指定されたテストIDに対応する判定条件をテスト判定条件管理部105から取得し、取得された判定条件を部分判定条件に分解する。例えば、判定条件が「CS1:表示(画像領域=(X1,Y1)−(X2,Y2),基準画像ID=1)→CS2:{非表示(画像領域=(X3,Y3)−(X4,Y4),基準画像ID=2) AND 連続表示(画像領域=(X1,Y1)−(X2,Y2),基準画像ID=1,4秒)}→CS3:非表示(画像領域=(X1,Y1)−(X2,Y2),基準画像ID=1)」の場合、テスト判定部110は、CS1、CS2、CS3の3つの部分判定条件に分解する。分解後、テスト判定部110は、各部分判定条件に利用されている基準画像IDをキーにして、基準画像管理部106からその基準画像IDに対応した基準画像を取得する。
ステップ702において、テスト判定部110は、部分判定条件を順に一つ選択する。CS1〜CS3の例において、テスト判定部110は、最初のステップ702の実行時に、CS1を選択し、次のステップ702の実行時にCS2を選択し、次のステップ702の実行時にCS3を選択する。ステップ703において、テスト判定部110は、画面イメージ管理部114に格納された画面イメージ群の中に未判定の画面イメージがあるか否かを判定する。なお、テスト判定部110は、画面イメージ群内の各画面イメージが部分判定条件により判定済か未判定かを示す画面判定状態を記憶部211に記憶する。初めてステップ703が実行される際、画面判定状態は、画面イメージ群が全て未判定であることを示す。
未判定の画面イメージがない場合(ステップ703:No)、テスト判定部110は、テスト結果を「失敗」としてこのフローを終了する。未判定の画面イメージがある場合(ステップ703:Yes)、テスト判定部110は、画面イメージ群の中から未判定の画面イメージを時刻順に一つ選択する。ここでテスト判定部110は、未判定の画面イメージの中から一番時刻の早い画面イメージを選択する。ステップ705において、テスト判定部110は、選択された画面イメージが、選択された部分判定条件を満たすか否かを判定する。
画面イメージが部分判定条件を満たしていない場合(ステップ705:No)、テスト判定部110は、処理をステップ703に戻す。画面イメージが部分判定条件を満たす場合(ステップ705:Yes)、テスト判定部110は、ステップ706において、画面イメージ群が全ての部分判定条件を満たしたか否かを判定する。なお、テスト判定部110は、各部分判定条件が満たされたか否かを示す部分判定状態を記憶部211に記憶する。
画面イメージ群が全ての部分判定情報を満たした場合(ステップ706:Yes)、テスト判定部110は、テスト結果を「成功」としてこのフローを終了する。画面イメージ群が全ての部分判定条件を満たしていない場合(ステップ706:No)、テスト判定部110は、処理をステップ702に戻す。
以下、テスト結果作成部109により表示されるテスト結果画面について説明する。
図11は、テスト結果画面を示す。
テスト結果画面には、テスト条件表示部1001、判定結果表示部1002、部分判定結果表示部1003を有する。テスト条件表示部1001は、指定テストIDと、当該テストのためにテスト条件設定画面で設定されたテスト条件(移動速度、経路、取得位置等)とを表示する。判定結果表示部1002は、テスト判定処理の結果として、画面イメージ群が全ての部分判定条件を満たした場合には成功(図中の○)、そうでない場合には失敗(図中の×)を表示する。部分判定結果表示部1003は、テスト判定処理における各部分判定条件の結果として、部分判定条件が満たされた証拠の画面イメージである証拠画面イメージと、部分判定条件が満たされた地理座標である発生箇所とを表示する。
証拠画面イメージは、部分判定条件が満たされた画面イメージと、その直前の画面イメージとにより画面遷移を示す。例えば、或る基準画像の表示を示す部分判定条件が成功した場合、証拠画面イメージは、その基準画像が表示される直前の画面イメージと、その基準画像が表示されたときの画面イメージとを有する。発生箇所は、部分判定条件が満たされた画面イメージに紐づけられた位置情報を示す。発生箇所は、その位置情報とその周辺の地図とを有する。部分判定条件が満たされなかった場合、その部分判定条件の証拠画面イメージ及び発生箇所には何も表示されない。テスト結果画面は更に、画面イメージと共に記録された端末装置120の各部の負荷等の情報を表示しても良い。テスト結果画面が部分判定条件の成立時の画面イメージの変化やその時の位置情報を表示することにより、テスト装置101のユーザは、部分判定条件の成立時の状況を確認することができる。
他のテスト結果がある場合、テスト結果画面は、そのテスト結果を表示する他テスト結果表示部1004を有しても良い。
以下、テスト判定処理の具体例について説明する。
この具体例において、判定条件が「CS1:表示(画像領域=(X1,Y1)−(X2,Y2),基準画像ID=1)→CS2:{非表示(画像領域=(X3,Y3)−(X4,Y4),基準画像ID=2) AND 連続表示(画像領域=(X1,Y1)−(X2,Y2),基準画像ID=1,4秒)}→CS3:非表示(画像領域=(X1,Y1)−(X2,Y2),基準画像ID=1)」である。この具体例において、画面イメージ群が1秒周期で取得された8枚の画面イメージを有する。この具体例において、これら8枚の画面イメージは、取得された時刻の早い順に{IMG1,IMG2,IMG3,IMG4,IMG5,IMG6,IMG7,IMG8}である。
まずテスト判定部110は、判定条件をCS1、CS2、CS3の3つの部分判定条件に分解する(ステップ701)。次にテスト判定部110は、部分判定条件の中から最初のCS1を選択する(ステップ702)。次にテスト判定部110は、未判定の画面イメージの中から最も早い時刻を有する画面イメージIMG1を選択し(ステップ703)、CS1を満たすか否かを判定する(ステップ705)。ここで部分判定条件CS1は、「(X1,Y1)−(X2,Y2)」で表される画像領域AI1を定義しているため、テスト判定部110は、画面イメージIMG1から画像領域AI1に対応する矩形の部分画像を切り出して取得し、この部分画像が基準画像IR1に一致するか否かを判定する。この部分画像が基準画像IR1に一致しないと判定された場合(ステップ705:No)、テスト判定部110は、画面イメージIMG1が部分判定条件CS1を満たさないと判定し、画面イメージIMG1が判定済であることを画面判定状態に記録する。
次にテスト判定部110は、未判定の画面イメージの中から次の画面イメージIMG2を選択し(ステップ703)、部分判定条件CS1を満たすか否かを判定する(ステップ705)。前回のステップ705と同様、テスト判定部110は、画面イメージIMG2から画像領域AI1に対応する矩形の部分画像を取得し、基準画像IR1と比較する(ステップ705)。この部分画像が基準画像IR1に一致したとすると、画面遷移「表示」が満たされるため(ステップ705:Yes)、テスト判定部110は、画面イメージIMG2が判定済であることを画面判定状態に記録し、次の部分判定条件の有無を確認する(ステップ706)。
次の部分判定条件があるため(ステップ706:No)、テスト判定部110は、次の部分判定条件CS2を選択する(ステップ702)。次にテスト判定部110は、未判定の画面イメージの中から次の画面イメージIMG3を選択し(ステップ703)、画面イメージIMG3が部分判定条件CS2を満たすか否かを判定する(ステップ705)。部分判定条件CS2は、二つの要素条件CS2a及びCS2bのAND条件であるため、要素条件CS2a及びCS2bの両方を満たす必要がある。ただし、1枚の画面イメージが同時に要素条件CS2a及びCS2bを満たす必要はなく、複数の画面イメージが要素条件CS2a及びCS2bを夫々満たしても良い。要素条件CS2aは「(X3,Y3)−(X4,Y4)」で示される画像領域AI2を定義しているため、テスト判定部110は、画面イメージIMG3から画像領域AI2に対応する矩形の部分画像を取得し、基準画像IR2と比較する。画面遷移「非表示」の条件は、部分画像が基準画像と一致しない場合に満たされる。ここでは、部分画像が基準画像IR2と一致することにより、画面イメージIMG3が要素条件CS2aを満たさなかったとする。要素条件CS2bは画像領域AI1を定義しているため、テスト判定部110は、画面イメージIMG3から画像領域AI1に対応する矩形の部分画像を取得し、基準画像IR1と比較する。ここでは、部分画像が基準画像IR1に一致したとする。要素条件CS2bは、4秒以上に亘って基準画像を連続表示することが必要であり、画面イメージIMG3だけでは要素条件CS2bを満たさない。
要素条件CS2a及びCS2bともに満たされていないので(ステップ705:No)、テスト判定部110は、画面イメージIMG3が判定済であることを画面判定状態に記録し、未判定の画面イメージの中から次の画面イメージIMG4を選択する(ステップ702)。画面イメージIMG4が要素条件CS2aを満たし、要素条件CS2bによる画面イメージIMG4の部分画像が基準画像IR1に一致したとする。要素条件CS2bの基準画像IR1が1秒間連続表示されたことになる。なお、テスト判定部110は、部分判定条件が複数の要素条件を含む場合、各要素条件が満たされたか否かを示す要素判定状態を記憶部211に記憶する。
画面イメージIMG4は、要素条件CS2aを満たしたが、要素条件CS2baを満たしていないため(ステップ705:No)、テスト判定部110は、画面イメージIMG4が判定済であることを画面判定状態に記録し、要素条件CS2aが満たされたことを要素判定状態に記録し、未判定の画面イメージの中から次の画面イメージIMG5を選択する(ステップ702)。要素条件CS2aは既に満たされたため、テスト判定部110は、画面イメージIMG5が要素条件CS2bを満たすか否かのみを判定する(ステップ705)。要素条件CS2bによる画面イメージIMG5の部分画像が基準画像IR1に一致したとする。その後、テスト判定部110は、画面イメージIMG6及びIMG7についても要素条件CS2bにのみを判定する。ここまででテスト判定部110は、画面イメージIMG5〜IMG7が判定済であることを画面判定状態に記録する。要素条件CS2bによる画面イメージIMG6及びIMG7の部分画像が連続して基準画像IR1に一致したとする。これにより、画面イメージIMG3〜IMG7は、要素条件CS2bに示された4秒の連続表示の条件を満たしたことになる。このとき、部分判定条件CS2が満たされたため(ステップ705:Yes)、テスト判定部110は、次の部分判定条件の有無を確認する(ステップ706)。
次の部分判定条件があるため(ステップ706:No)、テスト判定部110は、次の部分判定条件CS3を選択する(ステップ702)。次にテスト判定部110は、未判定の画面イメージの中から次の画面イメージIMG8を選択し(ステップ703)、画面イメージIMG3が部分判定条件CS3を満たすか否かを判定する(ステップ705)。部分判定条件CS3は画像領域AI1を定義しているため、テスト判定部110は、画面イメージIMG8から画像領域AI1に対応する矩形の部分画像を取得し、基準画像IR1と比較する。この部分画像が基準画像IR1に一致しなかったとすると、画面遷移「非表示」が満たされ、画面イメージIMG8が部分判定条件CS3を満たしたため(ステップ705:Yes)、テスト判定部110は、画面イメージIMG8が判定済であることを画面判定状態に記録し、次の部分判定条件の有無を確認する(ステップ706)。次にテスト判定部110は、全ての部分判定条件CS1、CS2、CS3が満たされたため(ステップ706:Yes)、テスト結果を「成功」としてこのフローを終了する。
以上のテスト判定処理によれば、画面イメージ群が時刻順に部分判定条件を満たすか否かを判定することができる。
――――基準画像――――
基準画像は、複数の部分基準画像の重ね合わせとして登録されても良い。この場合の表示部214における二つの画面の例について説明する。
図12は、第1の画面における基準画像の例を示す。第1の画面3010は、それ以前から表示されていた地図3011の中央にダイアログボックス3012が重ねて表示された状態を示す。ダイアログボックス3012は、複数の種類のダイアログボックスに共通な部分画像3021と、ダイアログボックスの種類によって異なる部分画像3022とを有する。
図13は、第2の画面における基準画像の例を示す。第2の画面3050は、それ以前に表示されていた地図3051が左側の領域に制限され、残りの領域にリスト3052が表示された状態を示す。リスト3052は、複数の種類のリストに共通な部分画像3061と、リストの種類によって異なる部分画像3071、3072、3073とを有する。
このように基準画像を複数の部分画像の組み合わせとして定義することにより、基準画像に必要な記憶容量を低減することができる。
なお、テスト装置101が端末装置120のエミュレータを有し、このエミュレータ上で業務アプリケーション122を動作させることにより、端末装置120を用いずに業務アプリケーション122のテストを実行しても良い。また、テスト装置101と端末装置120を有する動作検証システムを用いる場合、テスト装置101がエミュレータを有する場合に比べて、テスト装置101の負荷を低減することができる。
特許請求の範囲における用語について説明する。記憶部は、擬似入力条件管理部103、走行条件管理部104、テスト判定条件管理部105、基準画像管理部106、画面イメージ取得条件管理部107等に対応する。指示部は、テストシナリオ作成部108、画面イメージ取得条件送信部112等に対応する。取得部は、画面イメージ収集部111等に対応する。判定部は、テスト結果作成部109、テスト判定部110等に対応する。制御部は、擬似信号制御部121、業務アプリケーション122、位置情報管理部123、画面イメージ取得部124等に対応する。情報生成部は、擬似信号制御部121等に対応する。画面生成部は、業務アプリケーション122、位置情報管理部123等に対応する。記録部は、画面イメージ取得部124等に対応する。遷移情報は、テスト判定条件等に対応する。時間間隔は、取得間隔等に対応する。特定領域は、画像領域等に対応する。特定時間は、連続時間等に対応する。表示装置は、表示部214等に対応する。位置指定情報は、走行条件等に対応する。操作指定情報は、擬似入力条件等に対応する。記録条件は、画面イメージ取得条件等に対応する。