(57)【特許請求の範囲】
【請求項１】
プロセッサと記憶デバイスとを含み、地図情報上の移動体の位置に応じて動作するプログラムの機能のテストを支援する、テスト支援システムであって、
前記記憶デバイスは、前記地図情報と、前記プログラムにおけるイベントの発生条件を定義するイベント発生条件情報と、を保持し、
前記発生条件は、前記地図情報における指定位置と、当該指定位置に対する前記移動体の動きの条件と、を規定し、
前記プロセッサは、前記地図情報と前記イベント発生条件情報とを参照して、前記地図情報における前記指定位置と前記移動体の前記指定位置に対する動きとを規定し、前記イベントが前記発生条件に従って発生することを確認するために前記プログラムに入力されるテストデータを生成するために参照される、複数のテストケース、を生成する、テスト支援システム。
【請求項２】
請求項１に記載のテスト支援システムであって、
前記複数のテストケースは、
前記地図情報における前記指定位置と前記発生条件に適合の前記移動体の前記指定位置に対する動きとを示すテストケースと、
前記地図情報における前記指定位置と前記発生条件に不適合の前記移動体の前記指定位置に対する動きとを示すテストケースと、を含む、テスト支援システム。
【請求項３】
請求項１又は２に記載のテスト支援システムであって、
前記記憶デバイスは、さらに、前記複数のテストケースの生成のユーザ設定可能なポリシを規定する、テストポリシ情報を保持し、
前記プロセッサは、前記テストポリシ情報に従って前記複数のテストケースを生成する、テスト支援システム。
【請求項４】
請求項３に記載のテスト支援システムであって、
前記プロセッサは、
前記移動体の移動軌跡の１以上のパターンと、前記移動体の振る舞いを規定する１以上の要素のそれぞれの１以上のパターンと、を生成し、
生成した前記移動軌跡の１以上のパターンと前記振る舞いの１以上のパターンの組合せを用いて前記複数のテストケースを生成する、テスト支援システム。
【請求項５】
請求項４に記載のテスト支援システムであって、
前記指定位置は、前記地図情報における指定エリアに含まれ、
前記移動体の移動軌跡の１以上のパターンは、
前記指定エリア外から前記指定エリアの境界を越える軌跡のパターンと、
前記指定エリア内から前記指定エリアの境界を超える軌跡のパターンと、
前記指定エリア外における位置から前記指定エリアの境界直前までの軌跡のパターンと、
前記指定エリア内における前記指定エリアの境界近傍位置から前記指定エリア内における位置までの軌跡のパターンと、
前記指定エリア内における位置から前記指定エリアの境界直前までの軌跡のパターンと、
前記指定エリアの境界近傍位置から開始する前記指定エリア外における軌跡のパターンと、を含むみ、
前記プロセッサは、前記複数のテストケースのそれぞれに、前記イベントが発生するか否かの情報を付加する、テスト支援システム。
【請求項６】
請求項４に記載のテスト支援システムであって、
前記移動体の振る舞いの前記１以上の要素は、前記移動体の速度を含み、
前記発生条件は、前記移動体の速度を規定し、
前記移動体の速度の１以上のパターンは、
前記発生条件で規定された速度のパターンと、
前記発生条件で規定された速度から予め定められた値を引いた速度のパターンと、
前記発生条件で規定された速度に予め定められた値を加えた速度のパターンと、を含み、
前記テストポリシ情報が前記移動体の速度の限界値を規定している場合に、前記移動体の速度の複数パターンは、前記限界値のパターンを含む、テスト支援システム。
【請求項７】
請求項４に記載のテスト支援システムであって、
前記１以上の要素は、前記移動体の向きを含み、
前記発生条件は、前記移動体の向きの角度範囲を規定し、
前記移動体の向きの１以上のパターンは、
前記角度範囲の中心値のパターンと、
前記角度範囲の下限角度のパターンと、
前記角度範囲の上限角度のパターンと、
前記下限角度から予め定められた値を引いた角度のパターンと、
前記上限角度に予め定められた値を加えた角度のパターンと、を含む、テスト支援システム。
【請求項８】
請求項４に記載のテスト支援システムあって、
さらに、入力デバイスと、出力デバイスを含み、
前記出力デバイスは前記テストポリシの定義画像を出力し、
前記プロセッサは、前記定義画像に対して、前記入力デバイスにより入力されたテストポリシを、前記テストポリシ情報に反映し、
前記定義画像において、前記発生条件に適合の移動軌跡パターンと前記発生条件に不適合の移動軌跡パターンに対して異なるポリシを定義可能である、テスト支援システム。
【請求項９】
請求項４に記載のテスト支援システムあって、
さらに、入力デバイスと、出力デバイスを含み、
前記出力デバイスは前記イベント発生条件の定義画像を出力し、
前記プロセッサは、前記定義画像に対して、前記入力デバイスにより入力されたイベント発生条件を、前記イベント発生条件情報に反映し、
前記定義画像において、イベントが発生条件に含まれる、エリア及び前記移動体の速度、適用するテストポリシを定義可能である、テスト支援システム。
【請求項１０】
請求項４に記載のテスト支援システムあって、
さらに、入力デバイスと、出力デバイスを含み、
前記出力デバイスは、前記複数のテストケースを確認するための画像を表示し、
前記画像は、
前記複数のテストケースの少なくとも一部のテストケースのリストと、
前記リストから前記入力デバイスにより選択されたテストケースの移動軌跡を表示するセクションと、
前記選択されたテストケースにおける前記移動体の振る舞いを示すパラメータを表示するセクションと、を含む、テスト支援システム。
【請求項１１】
請求項３に記載のテスト支援システムであって、
前記地図情報は、道路位置及び道路規制の情報を含み、
前記テストポリシ情報は、前記道路規制に基づくポリシを規定する、テスト支援システム。
【請求項１２】
請求項１又は２に記載のテスト支援システムであって、
前記複数のテストケースのそれぞれは、前記移動体の移動軌跡を規定し、
前記プロセッサは、前記複数のテストケースのそれぞれにおいて定義されている前記移動軌跡上を前記移動体が移動したときに前記プログラムが取得するデータのダミーデータを、前記複数のテストケースのそれぞれのテストデータとして生成する、テスト支援システム。
【請求項１３】
請求項１又は２に記載のテスト支援システムであって、
前記プログラムは、前記移動体の位置情報を取得するデバイスにより取得された位置情報に従って動作し、
前記プロセッサは、前記デバイスによる位置情報の取得周期の開始タイミングが異なる複数のテストケースを生成する、テスト支援システム。
【請求項１４】
テスト支援システムが、地図情報上の移動体の位置に応じて動作するプログラムの機能のテストを支援する方法であって、
前記テスト支援システムが、前記地図情報と、前記プログラムにおけるイベントの発生条件を定義するイベント発生条件情報と、を参照し、前記発生条件は、前記地図情報における指定位置と当該指定位置に対する前記移動体の動きの条件を規定し、
前記テスト支援システムが、前記地図情報と前記イベント発生条件情報とを参照して、前記地図情報における前記指定位置と前記移動体の前記指定位置に対する動きとを規定し、前記イベントが前記発生条件に従って発生することを確認するために前記プログラムに入力されるテストデータを生成するために参照される、複数のテストケース、を生成する、テスト支援方法。
【請求項１５】
計算機システムに、地図情報上の移動体の位置に応じて動作する被テストプログラムの機能のテストを支援する処理を実行させるプログラムであって、
前記地図情報を参照する手順と、
前記プログラムにおけるイベントの発生条件を定義するイベント発生条件情報、を参照する手順と、
前記地図情報と前記イベント発生条件情報とに基づき、前記イベントが前記発生条件に従って発生することを確認するために前記プログラムに入力されるテストデータを生成するために参照される、複数のテストケース、を生成する手順と、
を前記計算機システムに実行させ、
前記発生条件は、前記地図情報における指定位置と当該指定位置に対する前記移動体の動きの条件を規定し、
前記複数のテストケースは、前記地図情報における前記指定位置と前記移動体の前記指定位置に対する動きとを規定する、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト支援システム、テスト支援方法、及びプログラムに関し、特に、携帯情報端末やカーナビゲーション端末のような移動体の機能を実現するプログラムのテストを支援する技術に関する。
【背景技術】
【０００２】
プログラム開発者は、プログラムのテストを実施するときに、テスト対象のプログラムを様々な条件下で動作させ、各条件の元で仕様通りに動作することを確認する作業を行う。テスト作業は、プログラム開発全体の５０％近くの時間を要することもあり負担が大きい作業である。
【０００３】
例えば、特開２００７−５２７０３号公報（特許文献１）は、画面の変化を伴うアプリケーションの検証に用いるテストシナリオを作成するテストシナリオ作成方法をコンピュータに実行させるテストシナリオ作成プログラムを開示する。
【０００４】
このプログラムは、アプリケーションの設計情報を取得する設計情報取得ステップと、設計情報と予め設定された生成ルールとに基づいて、テストシナリオの一部の情報を持つテストシナリオ雛形情報を生成するテストシナリオ雛形情報生成ステップと、設計情報に基づいてテストシナリオ雛形情報に対して設定を行った結果を前記テストシナリオとするテストシナリオ設定ステップと、をコンピュータに実行させる。
【０００５】
一方、携帯電話やカーナビゲーションシステムが利用するＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）、ＷｉＦｉ（ｗｉｒｅｌｅｓｓ  ｆｉｄｅｌｉｔｙ）（登録商標）基地局又は携帯電話基地局等を用いた位置測位システムを利用して、携帯電話やカーナビゲーション端末が特定の地理的位置にあるときや、そのときの走行状態に応じて、処理を実施する機能が存在する。例えば、危険位置の警告機能や、広告の配信機能等が知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−５２７０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
例えば、カーナビゲーションシステムの分野において、ユーザの要求に応じてカスタマイズされたカーナビゲーションシステムを提供することが要求されている。様々なユーザ要求に応えるために、カーナビゲーションシステムに実装される機能も様々であり、様々な機能のそれぞれに、テストが必要となる。
【０００８】
このような機能をテストするとき、携帯電話やカーナビゲーション端末をその位置に持って行き、多様な条件下でのテストを実施することは難しい。そのため、プログラムの機能のテストは、その位置にいることをエミュレートするための位置情報のダミーデータを用意し、そのダミーデータをテスト対象のプログラムに入力する。
【０００９】
しかし、テストを行うために必要なダミーデータを開発者が個々に生成する場合、開発者があらゆるテストケースを検討し、さらに、必要かつ十分なダミーデータを生成するためのテストケースを作成することが必要であり、その手間が大きい。特許文献１のテストシナリオ作成方法は、地理的位置に付随する条件を考慮しないため、地理的位置に応じて処理を実行するプログラムのテストを行う場合には、プログラムが実際の動作と異なる動作をしてしまう。
【課題を解決するための手段】
【００１０】
本発明の一態様は、プロセッサと記憶デバイスとを含み、地図情報上の移動体の位置に応じて動作するプログラムの機能のテストを支援する、テスト支援システムである。前記記憶デバイスは、前記地図情報と、前記プログラムにおけるイベントの発生条件を定義するイベント発生条件情報と、を保持する。前記発生条件は、前記地図情報における指定位置と、当該指定位置に対する前記移動体の動きの条件と、を規定する。前記プロセッサは、前記地図情報と前記イベント発生条件情報とを参照して、前記地図情報における前記指定位置と前記移動体の前記指定位置に対する動きとを規定し、前記イベントが前記発生条件に従って発生することを確認するために前記プログラムに入力されるテストデータを生成するために参照される、複数のテストケース、を生成する。
【発明の効果】
【００１１】
本発明の一態様によれば、地図情報における位置に依存する移動体の機能が仕様通りに正しく動作することをテストするときに、そのテストの手間を削減することができる。上記以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態における、テスト支援システムの計算機の構成を模式的に示すブロック図である。
【図２】本実施形態における、テスト支援システムがテストケースを生成し、さらに、そのテストケースからテストデータを生成する処理のデータフローを示している。
【図３】本実施形態における、イベント発生条件テーブルの構成例を示す。
【図４】本実施形態における、テストポリシテーブルの構成例を示す。
【図５】本実施形態における、地図データにおける、あるエリアの地図及び被テスト機能のテストケースに含まれ得る軌跡を示している。
【図６】本実施形態における、テストケース生成プログラムがテストケースを生成する処理例のフローチャートである。
【図７Ａ】図６に示すフローにおけるデータの流れを示している。
【図７Ｂ】本実施形態における、走行軌跡のパターン生成ステップが生成する走行軌跡パターンの例を説明する図である。
【図７Ｃ】本実施形態における、車両速度のパターン生成ステップが生成する車両速度のパターンの例を説明する図である。
【図７Ｄ】本実施形態における、車両加速度のパターン生成ステップが生成する車両加速度のパターンの例を説明する図である。
【図７Ｅ】本実施形態における、車両向きのパターン生成ステップが生成する車両向きのパターンの例を説明する図である。
【図７Ｆ】本実施形態における、ＧＰＳ取得タイミングのパターン生成ステップが生成するＧＰＳ取得タイミングのパターンの例を説明する図である。
【図７Ｇ】本実施形態における、テストケース生成プログラムが、図７Ｂ〜図７Ｆのパターンから生成するテストケースを説明する図である。
【図８】本実施形態における、テストデータ生成プログラムの処理例のフローチャートを示している。
【図９】本実施形態における、テストポリシをユーザが定義するためのＧＵＩ画像の例を示している。
【図１０】本実施形態における、イベント発生条件定義するためのＧＵＩ画像の例を示している。
【図１１】本実施形態における、テスト管理画像の一例１１００を示す。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して本発明の実施形態について説明する。以下の説明及び添付図面は本発明の原理に則った具体的な実施形態と実装例を示しているが、これらは本発明の理解のためのものであり、決して本発明を限定的に解釈するために用いられるものではない。
【００１４】
本実施形態では、当業者が本発明を実施するのに十分詳細にその説明がなされているが、他の実装・形態も可能で、本発明の技術的思想の範囲と精神を逸脱することなく構成・構造の変更や多様な要素の置き換えが可能であることを理解する必要がある。従って、以降の記述をこれに限定して解釈してはならない。
【００１５】
更に、本発明の実施形態は、後述されるように、汎用コンピュータ上で稼動するソフトウェアで実装してもよいし専用ハードウェア又はソフトウェアとハードウェアの組み合わせで実装してもよい。
【００１６】
以後の説明では「テーブル」形式によって本実施形態で利用される情報について説明するが、情報は必ずしもテーブルによるデータ構造で表現されていなくてもよく、リスト、ＤＢ、キュー等のデータ構造やそれ以外で表現されていてもよい。データ構造に依存しないことを示すために「テーブル」、「リスト」、「ＤＢ」、「キュー」等について単に「情報」と呼ぶことがある。情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「ＩＤ」という表現を用いることがあり、これらはお互いに置換が可能である。
【００１７】
以下では「プログラム」を主語（動作主体）として本発明の実施形態における各処理について説明を行うが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート（通信制御装置）を用いながら行うため、プロセッサを主語とした説明としてもよい。
【００１８】
また、プログラムを主語として開示された処理は、計算機又は情報処理装置が行う処理としてもよい。プログラムの一部又は全ては専用ハードウェアで実現してもよく、また、モジュール化されていてもよい。各種プログラムはプログラム配布サーバや非一時的な記憶媒体によって計算機や情報処理装置にインストールされてもよい。
【００１９】
プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。例えば、プロセッサは、制御プログラムに従って動作することで制御部として機能し、管理プログラムに従って動作することで管理部として機能する。プロセッサを含む装置及びシステムは、これらの機能部を含む装置及びシステムである。
【００２０】
本実施形態は、携帯情報端末（携帯電話を含む）やカーナビゲーション端末のような移動端末（移動体に含まれる）の機能を実現するプログラムのテストを支援する手法を開示する。本実施形態の手法は、地図データを参照し当該地図データにおける移動体の現在位置に応じて特定のイベントを実行するプログラム、のテストを支援する。イベントは、予め定義されている条件が満たされている場合にプログラムの特定機能が実行する処理である。機能が起動され処理を行うことで、イベントが発生する。
【００２１】
本実施形態は、地図データに及び移動体の位置に応じて動作する様々な機能（機能によるイベント）のテストに適用することができる。テストされる機能の一例は、車両又は人のためのナビゲーションシステムにおいて、移動端末（カーナビゲーション端末、携帯情報端末等）が危険個所付近に差し掛かったときに、移動端末の画面にポップアップ画像出力又は音を出力して危険を通知する機能である。この出力が、イベントである。
【００２２】
他の例は、移動端末が特定の店の付近に差し掛かったときに、その特定の店の情報を移動端末の画面にポップアップ表示する機能である。他の例は、地図データにおける移動体の現在位置及び当該移動体の動きに応じで当該移動体の速度を制御する機能である。例えば、ある機能は、車両が急カーブの手前を所定速度以上で走行している場合に、車両を減速させる。
【００２３】
本実施形態において、プログラムのテストは、地図データにおける位置が変化するテストデータをプログラムに対して入力することにより、当該プログラムのテスト対象とする機能が仕様通りに動作するか否か（仕様通りにイベントが発生するか否か）をテストする。本実施形態のプログラムテストは、テストデータをテストケースから自動生成することにより、又は、テストケースに従って移動体を移動することにより生成することができる。テストケースは、指定位置に対する移動体の動きを示す。
【００２４】
本実施形態のプログラムのテスト支援方法は、移動体の動きに応じてプログラムに与えられる様々な条件から、複数のテストケースを体系的に自動生成する。各テストケースは、移動体の動きを示す、移動体の地図データ上の軌跡（位置の変化）及び移動体の振る舞い（例えば、速度や向き）、を規定する。これにより、地図データにおける位置に依存する移動体の機能が、仕様通りに正しく動作することをテストするときに、そのテストの手間を削減することができる。
【００２５】
本実施形態において、テスト支援方法の一例は、生成したテストケースからテストデータ（エミュレーションのためのダミーデータ）を自動生成する。これにより、テストの手間を低減することができる。プログラムテストは、各テストケースに対応するテストデータをテストされるプログラムに入力し、各テストケースでプログラムの機能が正しく動作することを確認することにより、プログラムの不具合を洗い出し、プログラムの品質の向上を図る。
【実施例１】
【００２６】
以下においては、カーナビゲーション端末上で動作し、地図データにおける地理的位置及び車両の振る舞いを示す走行状態に応じて動作するプログラムの機能のテスト（イベント発生のテスト）を省力化するために、当該プログラムのテストケースを自動生成する例を示す。以下に説明する例において、テストケースは、車両の移動を規定する。本例では、テストケースは、車両の軌跡及び振る舞いを規定する。さらに、以下の例は、生成した各テストケースから、各テストケースのテスト（被テストプログラムの機能テスト）を実施するときに用いるテストデータ（ダミーデータ）を自動生成する。
【００２７】
ダミーデータは、車両の軌跡や振る舞い（車両向きや速度等）を示す。例えば、ダミーデータは、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）のみから得られるデータであり、ＧＰＳで取得された緯度経度の点列データから、車両の軌跡、速度（連続した点の幅）、加速度（連続した点列の幅の広がり）、向き（連続した点列が成す角度）の各種データが得られる。
【００２８】
若しくは、ダミーデータは、複数のデバイスを利用して得られるデータからなることもある。例えば、軌跡データ、速度データ、加速度データ、向きデータは、それぞれ、ＧＰＳデバイス、車両の速度計測デバイス、加速度センサ、地磁気センサから得られる。
【００２９】
図１は、本実施形態におけるテスト支援システムの一例を示すブロック図である。本例において、テスト支援システムは計算機１００である。テスト支援システムは複数の計算機を含むことができる。
【００３０】
図１に示すように、計算機１００は、プログラムを実行するプロセッサであるＣＰＵ１０１、プログラム及びプログラムが使用するデータを保持する主記憶デバイスであるメモリ１０２、ディスプレイやプリンタ等の出力装置１０３、キーボードやマウス等の入力装置１０４を含む。
【００３１】
メモリ１０２は、テスト支援プログラムを保持している。テスト支援プログラムは、テストケース生成プログラム１０５及びテストデータ生成プログラム１０６、並びに、プログラムが参照するデータ（情報）である、イベント発生条件テーブル１０７、テストポリシテーブル１０８及び地図データ１０９を保持する。
【００３２】
説明の便宜上、プログラム及び当該プログラムが参照するデータは、主記憶デバイスであるメモリ１０２内に示されているが、典型的には、これらは、二次記憶デバイス（不図示）の記憶領域からメモリ１０２の記憶領域にロードされる。二次記憶デバイスは、所定の機能を実現するために必要なプログラム及びデータを格納する、不揮発性の非一時的記憶媒体を備える記憶デバイスである。二次記憶デバイスは、ネットワークを介して接続された外部の記憶デバイスでもよい。本実施形態において、記憶デバイスは、主記憶デバイス、二次記憶デバイス及びそれらの組合せを含む語である。
【００３３】
図２は、本例のテスト支援システム１００が、テストケースを生成し、さらに、そのテストケースからテストデータを生成する処理のデータフローを示している。テスト支援システム１００は、イベント発生条件テーブル１０７、テストポリシテーブル１０８、地図データ１０９を参照してテストケース２０１を生成する。さらに、生成したテストケース２０１からテストデータ２０２を生成する。
【００３４】
具体的には、テストケース生成プログラム１０５は、イベント発生条件テーブル１０７、テストポリシテーブル１０８、地図データ１０９を取得し、それらから、テストケース２０１を生成する。テストデータ生成プログラム１０６は、生成したテストケース２０１を取得して、それからテストデータ２０２を生成する。
【００３５】
イベント発生条件テーブル１０７、テストポリシテーブル１０８、地図データ１０９はテストケース生成プログラム１０５への入力データであり、テストケース２０１は、テストデータ生成プログラム１０６への入力データである。
【００３６】
上述のように、テストデータは、テスト対象のカーナビゲーションプログラムへの入力データであり、本例において、車両の軌跡及び振る舞いのデータを含む。軌跡データは、例えば、地図データ１０９で規定される道路上の軌跡及びその向き（道路上での進行方向）の情報を含む。振る舞いのデータは、例えば、車両の速度、加速度、車両向き等の情報を含む。軌跡のデータと振る舞いのデータは、それぞれ独立したデータとして、カーナビゲーションプログラムに入力可能である。
【００３７】
本例のイベント発生条件テーブル１０７は、車両の地理的な位置（地図上の位置）及び車両の振る舞いに応じて規定処理を実行する（規定イベントを発生させる）ソフトウェア機能について、その処理を実行する条件（イベントが発生する条件）を定義する。処理の結果がイベントである。
【００３８】
図３は、イベント発生条件テーブル１０７の構成例を示す。この例は、運転者に警告する機能のイベント発生条件を示す。具体的には、車両の進行方向の前方に急カーブがあり、急カーブから所定距離の位置に達した車両において、カーナビゲーションシステムの出力装置（表示装置及び／又は音声出力装置）により運転者に警告する機能のイベント発生条件を示す。
【００３９】
イベント発生条件テーブル１０７は、カテゴリカラム３０１、項目カラム３０２、値カラム３０３を有する。カテゴリカラム３０１は、イベント発生条件の項目（項目カラム３０２の値）を分類するカテゴリを格納する。本例においては、二つのカテゴリが定義されており、一つのカテゴリは「エリア」であり、もう一つのカテゴリは「車両」である。項目カラム３０２は、各カテゴリに属するイベント発生条件の項目を格納している。「値」３０３カラムは、項目カラム３０２における各項目の値を示す。
【００４０】
図３の例において、「エリア」の条件項目は、警告機能が起動する（イベント発生する）エリアについての条件を規定し、具体的には、当該エリアと、当該エリアにおける条件判定タイミング（機能が起動するタイミング）を規定する。北東コーナの緯度経度及び南西コーナの緯度経度で特定される矩形により、上記エリアが規定され、さらに、当該エリアの西側境界（北西コーナと南西コーナとの間の直線）への車両進入のタイミングで、条件判定されることが規定されている。
【００４１】
「車両」の条件項目は、警告機能が起動する（イベント発生する）車両の振る舞いを規定する。本例は、車両の速度が６０ｋｍ／ｈ以上、車両の向きが北方向を基準として時計周りに７０度〜１１０度（北東方向〜南東方向）である条件を規定する。車両の加速度の条件は適用されない。
【００４２】
本例の警告機能は、値カラム３０３に格納されている北東緯度経度及び南西緯度経度の値で規定される矩形エリアに西側境界（西端）から車両が進入したタイミングにおいて、車両の速度が６０ｋｍ／ｈ以上であり、かつ、車両の向きが、北方向を基準として時計周りに７０度〜１１０度の間にあるときに、警告を出力する。
【００４３】
本例は、イベント発生条件をテーブルで表現するが、ＣＳＶ（Ｃｏｍｍａ−Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅｓ）やＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）等の他の表現を用いてもよい。本例において、イベント発生条件テーブル１０７のエリアは、北東緯度経度及び南西緯度経度で特定される矩形であるが、エリアは、中心緯度経度と半径を用いて円で表現することや、緯度経度列を用いて多角形で表現することができる。また、イベント発生条件は、条件判定タイミングを、進入時以外に、脱出時、エリア内の所定位置到達時等で規定することができる。
【００４４】
イベント発生条件は、機能に依存する。例えば、エリアの条件のみが規定される、車両について上記三つの要素の内の一部のみが規定されることもある。位置についての条件は、線や点で規定されることもある。
【００４５】
図５は、地図データ１０９における、あるエリアの地図及び本機能のテストケースに含まれ得る軌跡を示している。図５において、紙面上方向が真北方向である。図５の地図が示すエリアは、急カーブ５２１と、イベント発生条件テーブル１０７が規定するエリア５１０を含む。エリア５１０は、北東コーナ５１１と南西コーナ５１２の緯度経度で規定される。イベント発生条件テーブル１０７におけるイベント発生条件の判定タイミングは、エリア５１０の西端５１３から車両が進入したタイミングである。
【００４６】
図５においては、道路上の矢印（軌跡）５３１〜５４２は、それぞれ異なる軌跡を示している。軌跡５３１〜５４２は、始点、終点及び進行方向により定義されている。図５において、軌跡５３１〜５４２は、各軌跡を示すために、南北方向において四つの異なる位置配置されているが、テストデータにおける全ての軌跡は南北方向において同一位置（同一緯度）にある。軌跡５３１〜５３６は、カーブ５１２に向かう方向であり、軌跡５３６〜５４２は、カーブ５１２から離れる方向である。
【００４７】
イベント発生条件テーブル１０７が規定するエリア項目は、エリア５１０の西側境界５１３から車両がエリア５１０に進入したタイミングで、イベント発生条件を判定することを規定する。図５の軌跡５３１〜５４２において、この条件を満たす軌跡は、軌跡５３１である。軌跡の始点、終点及び進行方向から、各軌跡が、この条件が満たすか否かを判定することができる。
【００４８】
軌跡５３６〜５４２は、進行方向の条件を満たしていない。軌跡５３２は、始点がエリア５１０内にあり、エリアへの進入の条件を満たしていない。軌跡５３３、５３６は、始点及び終点がエリア５１０外にあり、エリアへの進入の条件を満たしていない。軌跡５３４、５３５は、始点及び終点がエリア５１０内にあり、エリアへの進入の条件を満たしていない。
【００４９】
つまり、始点がエリア５１０外にあり、始点と終点との間に西側境界５１３が位置し、進行方向が東方向である軌跡が、イベント発生条件テーブル１０７が規定するエリア項目の条件を満たす軌跡であり、図５の例において、軌跡５３１のみが条件に適合する軌跡に相当する。
【００５０】
なお、判定タイミングをエリア５１０への進入時と規定し、車両向きの条件（本例で７０度〜１１０度）によって、いずれの境界から進入した軌跡であればイベント発生条件に適合する軌跡であるかを判定してもよい。
【００５１】
テストポリシテーブル１０８は、テストの方針、つまり、テストケースの生成における方針を規定する。これにより、発生しうる全ての事象のテストケースから正確にテストを行うために必要なテストケースを選択することができ、全てのテストケースをテストすることなく、正確で効率的なテストを行うことができる。
【００５２】
図４は、テストポリシテーブル１０８の構成例を示し、図３のイベント発生条件テーブル１０７と同様に、運転者に警告する機能のテストポリシを規定する。テストポリシテーブル１０８はユーザ設定可能であり、ユーザ（開発者）は、テストポリシテーブル１０８を設定することで、自身が望むテストポリシを定義することができる。テストポリシテーブル１０８は、カテゴリカラム４０１、項目カラム４０２、ポリシカラム４０３を有する。
【００５３】
カテゴリカラム４０１は、テストポリシの項目（項目カラム４０２の値）を分類するカテゴリを格納する。本例においては、三つのカテゴリが定義されており、一つのカテゴリは「エリア」、他の一つのカテゴリは「車両」、他の一つのカテゴリは「ＧＰＳ」（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）である。「エリア」及び「車両」のカテゴリは、それぞれ、イベント発生条件テーブル１０７における「エリア」及び「車両」のカテゴリに対応している。
【００５４】
これらはそれぞれ、イベント発生条件テーブル１０７が規定するエリアについてのテストケース生成のポリシ項目、車両の振る舞いについてのテストケース生成のポリシ項目、ＧＰＳ動作についてのテストケース生成のポリシ項目を含む。項目カラム４０２は、各カテゴリに属するテストポリシの項目を格納している。ポリシ４０３カラムは、項目カラム４０２における各項目のテストポリシを示す。
【００５５】
本例において、カテゴリカラム４０１の「エリア」のカテゴリは、項目カラム４０２「イベント発生条件適合軌跡」と「イベント発生条件不適合軌跡」の項目を含む。図５に示す例において、イベント発生条件に適合する軌跡は軌跡５３１であり、イベント発生条件に不適合の軌跡は、他の全ての軌跡である。
【００５６】
ポリシカラム４０３は、「イベント発生条件適合軌跡」項目について、全ての軌跡のテストケースのテストを実施することを規定する。これは、イベント発生条件に適合する全ての軌跡のテストケースを生成することを意味する。さらに、ポリシカラム４０３は、「イベント発生条件不適合軌跡」項目について、イベント発生条件方向の軌跡のテストケースのテストを実施することを規定する。図５の例において、イベント発生条件方向は東方向であり、軌跡５３１〜軌跡５３１の進行方向がこの方向である。イベント発生条件不適合の軌跡のうち、軌跡５３２〜軌跡５３１のテストケースが生成される。
【００５７】
カテゴリカラム４０１の「車両」のカテゴリは、項目カラム４０２における、「速度」、「加速度」「車両向き」の項目を含む。これらは、それぞれ、イベント発生条件テーブル１０７における「速度」、「加速度」「車両向き」の項目に対応する。
【００５８】
「ポリシ４０３カラムは、「速度」項目について、デフォルト値（地図データ１０９に含まれる法における制限速度）、上限値及び下限値（１ｋｍ／ｈ及び１５０ｋｍ／ｈ）の二つの限界値のそれぞれのテストケースを生成することを規定する。「加速度」項目について、デフォルト値（０ｍ／ｓ＾２）と、上限界値（８ｍ／ｓ＾２）のそれぞれのテストケースを生成することを規定する。「車両向き」項目について、デフォルト値（イベント発生条件の中間値）のテストケースを生成することを規定する。
【００５９】
カテゴリカラム４０１の「ＧＰＳ」のカテゴリは、項目カラム４０２における、「取得周期」及び「取得タイミング」の項目を含む。ポリシ４０３カラムは、「取得周期」項目について、カーナビゲーションプログラムが１秒毎に位置情報を取得するテストケースを生成することを規定する。さらに、ポリシ４０３カラムは、「取得タイミング」を取得周期の値の１／３（本例において１／３秒）ずつシフトしたテストケースを生成することを規定する。
【００６０】
本例は、「エリア」カテゴリにポリシに従って選択された軌跡について、「車両」及び「ＧＰＳ」のカテゴリのポリシで規定された全てのパターン、つまり、条件値の全ての組合せのテストケースを生成する。具体的には、選択した軌跡のテストケースは、ポリシ４０３カラムで規定されている、車両速度値、加速度値、及びＧＳＰ取得タイミングの異なる値の全ての組合せのテストケースを生成する。全テストケースの車両向き及び取得タイミングの値は共通である。
【００６１】
生成されるテストケースの数が多過ぎる場合、テストポリシテーブル１０８は、選択した軌跡について生成可能なテストケースから一部のテストケースを選択することを規定してもよい。例えば、イベント発生条件に不適合の軌跡のテストケース生成は、ポリシ項目がデフォルト値を含む複数の値を含む場合、その項目においてそのデフォルト値のみを選択してもよい。例えば、イベント発生条件に不適合の軌跡のためには、限界値の加速度のテストケースは生成されない。これにより、イベント発生条件に応じて適切に、テストケースの数を低減することができる。
【００６２】
テストポリシは、テストされる機能に依存する。例えば、図４に示すテーブル１０８におけるエリアについてのポリシのみが規定される、エリアと車両のポリシのみが規定される、又は、各カテゴリにおける一部の項目のみが規定されることがある。これらと異なるカテゴリ又は項目のポリシが規定されることもある。
【００６３】
図６は、テストケース生成プログラム１０５が、テストケースを生成する処理例のフローチャートである。図７Ａは、図６に示すフローにおけるデータの流れを示している。テストケース生成プログラム１０５は、テストポリシテーブル１０８、イベント発生条件テーブル１０７及び地図データ１０９を参照し、それらの情報からテストケースを生成する。
【００６４】
図６のフローチャートにおいて、テストケース生成プログラム１０５は、イベント発生条件テーブル１０７に含まれる「エリア」カテゴリの、「北東緯度経度」、「南西緯度経度」、及び、「タイミング」のエントリから、値カラム３０３の値を取得する（Ｓ１０１）。
【００６５】
次に、テストケース生成プログラム１０５は、取得した北東緯度経度の値及び南西緯度経度の値を頂点とした矩形を、地図データ１０９上で特定する。この矩形が、テストケース生成のためのエリア（図５におけるエリア５１０）である。さらに、テストケース生成プログラム１０５は、その矩形の辺を上記エリアの境界と特定し、その境界に交差する道路の情報を地図データ１０９から抽出する（Ｓ１０２）。図５の例においては、一つの道路のみが、エリア５１０の境界に交差する。
【００６６】
テストケース生成プログラム１０５は、抽出した各道路について（Ｓ１０３）、走行軌跡のパターン７０１、車両速度のパターン７１０、車両加速度のパターン７０４、車両向きのパターン７１３、ＧＰＳ取得タイミングのパターン７０７、のそれぞれを生成する（Ｓ１０４、Ｓ１０５、Ｓ１０６、Ｓ１０７、Ｓ１０８）。テストケース生成プログラム１０５は、抽出した全ての道路についてステップＳ１０４〜ステップＳ１０８を繰り返したかを確認し（Ｓ１０９）する。
【００６７】
全ての道路についてステップＳ１０４〜ステップＳ１０８を繰り返していなければ（Ｓ１０９：ＮＯ）、テストケース生成プログラム１０５は、ステップ１０３に戻る。全ての道路についてステップＳ１０４〜ステップＳ１０８を繰り返し済みである場合（Ｓ１０９：ＹＥＳ）、テストケース生成プログラム１０５は、生成した走行軌跡のパターン７０１、車両速度のパターン７１０、車両加速度のパターン７０４、車両向きのパターン７１３、ＧＰＳ取得タイミングのパターン７０７のそれぞれから選択されたパターンの全組合せ７１６を生成し、全組合せ７１６のテストケース７１７を生成する（Ｓ１１０）。
【００６８】
図７Ｂは、走行軌跡のパターン生成ステップＳ１０４が生成する、走行軌跡パターン７０１の例を説明する図である。この例は、図５に示す例における複数走行軌跡パターンを示す。図７Ｂは、走行軌跡パターン７０１をテーブルで説明しており、このテーブルは走行軌跡カラム７０２とイベント発生条件への適合／不適合カラム７０３とを有する。
【００６９】
走行軌跡カラム７０２は、走行軌跡の識別子を格納する。イベント発生条件への適合／不適合カラム７０３は、各走行軌跡がイベント発生条件の走行軌跡についての条件に適合するか否かを示す値を格納する。上述のように、各軌跡は、その始点、終点及び向きで特定することができ、生成される走行軌跡パターン７０１は、各軌跡をこれらの値で示すことができる。
【００７０】
図７Ｂにおいて、走行軌跡の識別子は、図５において走行軌跡に付されている参照符号と一致している。上述のように、軌跡５３１がイベント発生条件を満たすが、その他の軌跡はイベント発生条件を満たしていない。テストケース生成プログラム１０５は、テストポリシテーブル１０８の「エリア」のポリシに従って、イベント発生条件に適合する全ての軌跡とイベント発生条件に不適合の軌跡のうち、その方向がイベント発生方向である軌跡（パターン）を生成する。
【００７１】
具体的には、テストケース生成プログラム１０５は、イベント発生方向の軌跡のうち、以下の６種類の軌跡を生成する。（１）指定エリア５１０外から境界線を越える軌跡、（２）指定エリア５１０内から境界線を超える軌跡、（３）指定エリア５１０外におけるエリア境界直前（境界近傍）までの軌跡、（４）指定エリア５１０内におけるエリア境界近傍から境界を越えない軌跡、（５）指定エリア５１０内における位置からエリア境界直前（近傍）までの軌跡、（６）指定エリア５１０外におけるエリア境界近傍から開始する軌跡、を生成する。境界近傍位置は、境界から予め定められた距離内にある位置である。
【００７２】
図５において、軌跡５３１、軌跡５３２、軌跡５３３、軌跡５３４、軌跡５３５、軌跡５３５は、それぞれ、上記６種類の軌跡に該当する。図５の例では、エリア５１０に含まれる道路は一つだけであるが、複数の道が含まれるようにエリアが定義されることもある。また、道路によっては一方通行であることもあるため、その場合は、パターン抽出は、通行可能な一方向の軌跡のみを抽出する。テストケース生成プログラム１０５は、他の規則に従ってパターンを生成してもよい。
【００７３】
図７Ｃは、車両速度のパターン生成ステップＳ１０５が生成する、車両速度のパターン７１０の例を説明する図である。図７Ｃは、車両速度のパターン７１０をテーブルで説明している。このテーブルは、車両速度カラム７１１とイベント発生条件への適合／不適合７１２を有する。車両速度カラム７１１は、生成された車両速度の値（パターン）を格納し、イベント発生条件への適合／不適合７１２のカラムは、車両速度の各値が、イベント発生条件における車両速度の条件に適合するか否かを示す値を格納する。
【００７４】
テストケース生成プログラム１０５は、イベント発生条件及びテストポリシに従って、テストケース（車両速度のパターン７１０）に含める車両速度の値を決定する。また、本例においては、テストケース生成プログラム１０５は、イベント発生条件が車両速度の条件を含む場合、（１）条件で規定された速度、（２）条件で規定された速度−１ｋｍ／ｈ、（３）条件で規定された速度＋１ｋｍ／ｈのパターンを生成する。本例は、条件で規定された速度から１を減ずる又は加えるが、この予め定められた値は設計に依存し、１には限定されない。また、可算する値と減算する値が異なっていてもよい。
【００７５】
それらに加えて、テストケース生成プログラム１０５は、テストポリシが速度のデフォルト値を規定している場合、（４）その速度のデフォルト値のパターンを生成し、さらに、テストポリシに限界値の規定がある場合、（５）最小限界値の速度、（６）最大限界値の速度のパターンを生成する。このように、テストケース生成プログラム１０５が従う規則は、ユーザ設定可能なテストポリシに含まれる又はテストケース生成プログラム１０５内に予め定義されている。いずれの規則をいずれの方法で規定するかは、設計に依存する。これは、他のパターン生成において同様である。
【００７６】
図３に示すイベント発生条件テーブル１０７の例は、車両速度が６０ｋｍ／ｈ以上である条件を規定している。従って、テストケース生成プログラム１０５は、車両速度のパターン７１０に、６０ｋｍ／ｈ、（６０−１）ｋｍ／ｈ、（６０＋１）ｋｍ／ｈ、のそれぞれを含める。
【００７７】
図４に示すテストポリシテーブル１０８の例は、車両速度について、デフォルト値と限界地を規定している。規定されているデフォルト値は制限速度であり、最小限界値は１ｋｍ／ｈ、最大限界値は１５０ｋｍ／ｈである。従って、テストケース生成プログラム１０５は、車両速度のパターン７１０に、当該道路の制限速度、１ｋｍ／ｈ、１５０ｋｍ／ｈのそれぞれを含める。
【００７８】
このように、本例においては、六つの車両速度の値（パターン）が、車両速度のパターン７１０に含まれる。図７Ｃに示す車両速度パターン７１０のテーブルは、これら、六つの車両速度の値（パターン）を示している。なお、生成するパターンのいずかのペアが同一値である場合は、一方を選択すればよい。
【００７９】
テストケース生成プログラム１０５は、他の規則に従ってパターンを生成してもよい。例えば、イベント発生条件が速度条件を規定していない場合、テストケース生成プログラム１０５は、テストポリシが規定するデフォルト値のパターンのみを生成してもよい。または、イベント発生条件が速度条件を規定している場合、テストケース生成プログラム１０５は、デフォルト値のパターンを生成しなくともよい。これらは、他の種類のパターン生成において同様である。
【００８０】
図７Ｄは、車両加速度のパターン生成ステップＳ１０６が生成する、車両加速度のパターン７０４の例を説明する図である。図７Ｄは、車両加速度のパターン７０４をテーブルで説明している。このテーブルは、車両加速度カラム７０５とイベント発生条件への適合／不適合カラム７０６を有する。車両加速度カラム７０５は、生成された車両加速度の値（パターン）を格納し、イベント発生条件への適合／不適合７０６のカラムは、車両加速度の各値が、イベント発生条件における車両加速度の条件に適合するか否かを示す値を格納する。
【００８１】
テストケース生成プログラム１０５は、イベント発生条件及びテストポリシに従って、テストケース（車両加速度のパターン７０４）に含める車両加速度の値を決定する。また、本例においては、テストケース生成プログラム１０５は、イベント発生条件に加速度の規定がある場合、（１）条件で規定された加速度、（２）条件で規定された加速度−１ｍ／ｓ＾２、（３）条件で規定された加速度＋１ｍ／ｓ＾２、のパターンを生成する。本例は、条件で規定された加速度から１を減ずる又は加えるが、この予め定められた値は設計に依存し、１には限定されない。また、可算する値と減算する値が異なっていてもよい。
【００８２】
それらに加えて、テストケース生成プログラム１０５は、テストポリシが限界値を規定している場合、（４）最小限界値の加速度、（５）最大限界値の加速度のパターンを生成する。さらに、テストポリシがデフォルト値を規定している場合、テストケース生成プログラム１０５は、（６）加速度のそのデフォルト値のパターンを生成する。
【００８３】
図３に示すイベント発生条件テーブル１０７の例は、加速度の条件を規定していない。図４に示すテストポリシテーブル１０８の例は、加速度について、デフォルト値と限界値を規定している。従って、テストケース生成プログラム１０５は、それら二つのパターンを生成する。図７Ｄの例が示すように、車両加速度のパターン７０４は、デフォルト値０ｍ／ｓ＾２のパターンと、限界値８ｍ／ｓ＾２のパターンで構成されている。イベント発生条件は加速度について規定していないため、いずれのパターンもイベント発生条件に適合である。
【００８４】
図７Ｅは、車両向きのパターン生成ステップＳ１０７が生成する、車両向きのパターン７１３の例を説明する図である。図７Ｅは、車両向きのパターン７１３をテーブルで説明している。このテーブルは、車両向きカラム７１４とイベント発生条件への適合／不適合７１５を有する。車両向きカラム７１４は、生成された車両向きの値（パターン）を格納し、イベント発生条件への適合／不適合７１５のカラムは、車両向きの各値が、イベント発生条件における車両向きの条件に適合するか否かを示す値を格納する。
【００８５】
テストケース生成プログラム１０５は、イベント発生条件及びテストポリシに従って、テストケース（車両加速度のパターン７０４）に含める車両加速度の値を決定する。また、本例においては、テストケース生成プログラム１０５は、イベント発生条件に向きの規定がある場合、（１）条件で規定された小さい角度（最小角度）と大きい角度（最大角度）の中心、（２）条件で規定された小さい角度、（３）条件で規定された大きい角度、（４）条件で規定された小さい角度−１度、（５）条件で規定された大きい角度＋１度、のパターンを生成する。
【００８６】
本例は、条件で規定された最小角度から１度を減じ、最大角度に１度を加算するが、これらの予め定められた数値は設計に依存し、１には限定されない。また、可算する値と減算する値が異なっていてもよい。
【００８７】
これらに加えて、テストポリシが加速度の限界値を規定している場合、（６）最小限界値の角度、（７）最大限界値の角度のパターンを生成する。さらに、テストポリシが加速度のデフォルト値を規定している場合、テストケース生成プログラム１０５は、（８）デフォルト値のパターンを生成する。
【００８８】
図３に示すイベント発生条件テーブル１０７の例は、車両向きの角度範囲を規定している。従って、テストケース生成プログラム１０５は、その角度範囲の値から、上記五つのパターンを生成する。
【００８９】
図４に示すテストポリシテーブル１０８の例は、車両向きのデフォルト値を規定している。従って、テストケース生成プログラム１０５は、そのデフォルト値のパターンを生成する。本例では、デフォルト値と、イベント発生条件の角度範囲の中心値が一致するため、デフォルト値のパターン生成は不要である。
【００９０】
図７Ｅの例が示すように、車両向きのパターン７１３は、イベント発生条件が規定する角度範囲の中心値の９０度、その小さい角度の７０度、その大きい角度の１１０度、７０度より１度小さい６９度、そして１１０度より１度大きい１１１度のパターンで構成されている。
【００９１】
図７Ｆは、ＧＰＳ取得タイミングのパターン生成ステップＳ１０８が生成する、ＧＰＳ取得タイミングのパターン７０７の例を説明する図である。図７Ｆは、ＧＰＳ取得タイミングのパターン７０７をテーブルで説明している。このテーブルは、ＧＰＳ取得タイミングカラム７０８とイベント発生条件への適合／不適合７０９を有する。ＧＰＳ取得タイミングカラム７０８は、生成されたＧＰＳ取得タイミングの値（パターン）を格納し、イベント発生条件への適合／不適合カラム７０９は、ＧＰＳ取得タイミングの各値が、イベント発生条件における車両向きの条件に適合するか否かを示す値を格納する。
【００９２】
テストケース生成プログラム１０５は、イベント発生条件及びテストポリシに従って、テストケース（ＧＰＳ取得タイミングのパターン７０７）に含めるＧＰＳ取得タイミングの値を決定する。図３に示すイベント発生条件テーブル１０７の例は、ＧＰＳ取得周期を１秒と規定する。図４に示すテストポリシテーブル１０８の例は、ＧＰＳ取得タイミングについて、「取得周期／３ずつシフト」を規定する。
【００９３】
テストケース生成プログラム１０５は、テスト開始を基準として、取得周期の開始を１／３秒ずつずらした三つのパターンを生成する。図７ＦのＧＰＳ取得タイミングのパターン７０７の例は、テスト開始から０秒後から取得開始のパターン、テスト開始から１／３秒後から取得開始のパターン、テスト開始から２／３秒後から取得開始のパターン、で構成されている。「取得周期／ｎずつシフト」（ｎは１以上の整数）と規定されている場合、ＧＰＳ取得タイミングのパターン７０７は、取得開始時刻がテスト開始時刻から周期／ｎずつ異なる、ｎパターンで構成される。
【００９４】
位置情報の異なる取得タイミングを生成する方法は、上記例に限定されず、テスト支援システムの設計に依存する。上記例のシフト量は一定であるが、これらは異なっていてもよい。シフト量は、取得周期とは独立した値であってもよい。テスト開始と取得タイミングが一致していなくともよい。
【００９５】
上記各種類のパターンの生成方法は一例であって、これらに限定されない。テストケース生成プログラム１０５は、は、イベント発生条件で一つの数値が規定されている場合、その値及び近傍値の全て又は一部のパターンを生成することができる。イベント発生条件で数値範囲が規定されている場合、その限界値、限界値の近傍値、及び中心値の全て又は一部のパターンを生成することができる。ポリシについても同様である。
【００９６】
図７Ｇは、テストケース生成プログラム１０５が、図７Ｂ〜図７Ｆのパターンから生成するテストケースを説明する図であり、全てのテストケースの一部を示す。各エントリは、一つのテストケースに対応する。
【００９７】
図７Ｇのテーブルは、走行軌跡カラム７１８、車両速度カラム７１９、車両加速度カラム７２０、車両向きカラム７２１、ＧＰＳ取得タイミングカラム７２２、イベント発生条件への適合／不適合カラム７２３を有する。イベント発生条件への適合／不適合カラム７２３は、各エントリにおいて、組合せにおけるいずれかのパターンの値がイベント発生条件に不適合であれば、不適合を示す値を格納する。
【００９８】
上述のように、テストケース生成プログラム１０５は、生成した走行軌跡のパターン７０１、車両速度のパターン７１０、車両加速度のパターン７０４、車両向きのパターン７１３、ＧＰＳ取得タイミングのパターン７０７のそれぞれから一つのパターンを選択し、各テストケースを生成する。図７Ｇにおいて、各テストケースの構成要素のパターンは、上記６種類の六つのパターンである。全てのテストケースのパターンの組合せは異なり、６種類の六つのパターンの全ての組合せのテストケースが生成される。
【００９９】
テストデータ生成プログラム１０６では、生成されたテストケース７１７からテストデータを生成する。図８は、テストデータ生成プログラム１０６の処理例のフローチャートを示している。
【０１００】
図８のフローチャートにおいて、テストデータ生成プログラム１０６は、各テストケースについて、それ以下のステップを繰り返す（Ｓ２０１）。ステップＳ２０２において、テストデータ生成プログラム１０６は、テストケースの走行軌跡に対応する緯度、経度の点列を取得する。
【０１０１】
次に、テストデータ生成プログラム１０６は、車両速度を考慮し、最初のＧＰＳ取得タイミングにおける走行軌跡上の緯度、経度を取得し、車両速度、車両加速度、車両向きと共に保存する（Ｓ２０３）。テストデータ生成プログラム１０６は、車両速度を考慮し、ＧＰＳ取得周期後の走行軌跡上の緯度、経度を算出する（Ｓ２０４）。さらに、テストデータ生成プログラム１０６は、その緯度、経度及び、車両速度、車両加速度、車両向きを保存する（Ｓ２０５）。
【０１０２】
テストデータ生成プログラム１０６は、走行軌跡の終了位置に到達したかどうかを確認する（Ｓ２０６）。到達していなければ（Ｓ２０６：Ｎ）、テストデータ生成プログラム１０６は、ステップＳ２０４からその後のステップを繰り返す。到達していれば（Ｓ２０６：Ｙ）、テストデータ生成プログラム１０６は、保存していた緯度、経度、車両速度、車両加速度、車両向きの組を、テストデータとして出力する（Ｓ２０７）。
【０１０３】
テストデータ生成プログラム１０６は、全てのテストケースについてステップＳ２０３〜ステップＳ２０７を繰り返したかを確認する（Ｓ２０８）。繰り返していなければ（Ｓ２０８：Ｎ）、テストデータ生成プログラム１０６は、ステップＳ２０２からその後のステップを繰り返す。全てのテストケースについて繰り返しが終わっていれば（Ｓ２０８：Ｙ）、テストデータ生成プログラム１０６は、このフローを終了する（Ｓ２０９）。
【０１０４】
なお、テストデータにおける各位置での値の組合せは、プログラムに依存する。上記例は、位置、速度、加速度及び向きの値の複数の組合せでテストデータが構成されているが、例えば、他のプログラムのテストデータにおける組合せは、位置及びそれ以外の要素の一部の組合せであることもある。
【０１０５】
図９は、テストポリシをユーザが定義するためのＧＵＩ画像の例９００を示している。このＧＵＩは、テスト支援プログラムに含まれるＧＵＩプログラム（不図示）が、出力装置１０３上で提示し、ユーザは、必要な情報を、入力装置１０４により入力する。ＧＵＩプログラムは、入力された定義情報を、テストポリシテーブル１０８に登録する。
【０１０６】
「イベント発生条件適合軌跡」９０１は、イベント発生条件テーブル１０８における「イベント発生条件適合軌跡」のポリシの入力フィールドである。「イベント発生条件不適合軌跡」９０１は、イベント発生条件テーブル１０８における「イベント発生条件不適合軌跡」のポリシの入力フィールドである。例えば、ユーザは、プルダウンメニューから、これらに対する定義を選択することができる。
【０１０７】
ユーザは、車両の速度について、「デフォルト値」フィールド９０３、「最小限界値」フィールド９０４、「最大限界値」フィールド９０５において値を定義することができる。車両の加速度につても同様に、「加速度」フィールド９０６、「最小限界値」フィールド９０７、「最大限界値」フィールド９０８において値を定義することができる。車両の向きについて、「デフォルト値」フィールド９０９において値を定義することができる。
【０１０８】
ＧＰＳの「取得周期」フィールド９１０において定義される値は、どのくらいの頻度でＧＰＳを受信するのかを示す。「タイミング」フィールド９１１において定義される値は、取得周期をどのくらいずらしたテストを実施するのかを示す。例えば、ユーザが取得周期に１秒毎を規定し、タイミングに取得周期／３、つまり、１／３秒を規定する。
【０１０９】
この例において、テストケース生成プログラム１０５は、テスト開始から０／３秒後から１秒毎にＧＰＳの取得を開始するケース、テスト開始から１／３秒後から１秒毎にＧＰＳの取得を開始するケース、２／３秒後から１秒毎にＧＰＳの取得を開始するケースを生成する。定義が終了したら、ユーザは保存ボタン９１２を押下し、ＧＵＩプログラムは、それに応答して、定義した値をテストポリシテーブル１０８に反映、保存する。
【０１１０】
図９に示すテストポリシ定義画像９００は一例であって、定義可能な要素は、テスト支援装置の設計に依存する。他の例は、図９が示す要素の一部のみ又はこれら要素とは異なる要素を定義可能なＧＵＩを提供する。また、各要素の表示方法は、ＧＵＩのデザインに依存し、図９の例に限定されない。
【０１１１】
図１０は、イベント発生条件定義するためのＧＵＩ画像の例１０００を示している。ユーザは、地図画面のエリアのハンドル１００１、１００２、１００３、１００４をマウス（入力装置１０３）で移動することにより、イベントを発生させたいエリアを定義する。ユーザは、このエリアの変更により、北東点１００５の緯度経度及び南西点１００６の緯度経度の値を変更する。
【０１１２】
ユーザは、「タイミング」フィールド１００７において、イベント発生条件を判定するタイミングを定義することができる。例えば、それは、進入時、脱出時等である。進入時は、最初にエリア外からエリア内に進入したタイミングでイベント発生条件が判定される（イベントが発生する）ことを表し、脱出時は、エリア内から最初にエリア外に出たタイミングでイベント発生条件が判定される（イベントが発生する）ことを表す。
【０１１３】
「速度」のフィールド１００８、１００９は、イベントが発生する車両速度の範囲を表す。「加速度」のフィールド１０１０、１０１１は、イベントが発生する車両加速度の範囲を表す。「向き」のフィールド１０１２、１０１３は、イベントが発生する車両の向きの範囲を表す。ユーザは、「適用するテストポリシ」フィールド１０１４において、テストポリシのファイル名等の名前を指定する。
【０１１４】
ＧＵＩプログラムは、入力されたイベント発生条件のデータを、イベント発生条件テーブル１０７に反映する。ユーザは、以上の定義を終了した後、「テストケース生成」ボタン１０１５を押下することにより、テストケースの生成を開始する。
【０１１５】
図１０に示すイベント発生条件定義画像１００は一例であって、定義可能な要素は、テスト支援装置の設計に依存する。他の例は、図１０が示す要素の一部のみ又はこれら要素とは異なる要素を定義可能なＧＵＩを提供する。また、各要素の表示方法は、ＧＵＩのデザインに依存し、図１０の例に限定されない。
【０１１６】
図１１は、テスト管理画像の一例１１００を示す。テスト管理画像１１００は、ユーザが、自動生成したテストケースを確認し、生成したテストケースを編集し、若しくはテストを実行するための画像である。ＧＵＩプログラムは、この画像を出力装置１０３において表示する。
【０１１７】
ユーザは、プログラムのテストを、例えば、携帯電話やカーナビゲーション端末のような実際に機能が動作する移動体を計算機１００と接続し、移動体にテストデータを送信することにより実行することができる。若しくは、ユーザは、移動体上で動作するソフトウェア機能を模擬するエミュレータを計算機１００にインストールし、そのエミュレータを用いてテストを実行することができる。
【０１１８】
テスト管理画像１１００の左側は、テストケースリスト表示セクション１１０９である。テストケースリスト表示セクション１１０９の左側は、テストケース番号と、イベント発生の有無を表示する。テストケースリスト表示部分１１０９の右側の「○」／「×」は、テスト結果を示す。
【０１１９】
「○」は、機能が正常動作したことこと（成功）を示し、「×」は、機能が誤動作したことを（失敗）を意味する。例えば、イベント発生条件に適合した条件においてテストを実施した結果、実際にイベントが発生した場合、そのエントリには「○」が表示される。イベントが発生しなかった場合、機能がソフトウェア仕様通りに動作しなかったことを意味するため、そのエントリには「×」が表示される。
【０１２０】
「選択実行」ボタン１１０１は、テストケースリスト表示セクション１１０９のリスト内で選択しているテストケースを実行するボタンである。「全実行」ボタン１１０２は、テストケースとして定義した全テストを一括して実行するボタンである。「編集」ボタン１１０３は、既存のテストケースの内容を編集するボタンであり、「追加」ボタン１１０４は、新規にテストケースを追加するボタンであり、「削除」ボタン１１０５は既存のテストケースを削除するボタンである。
【０１２１】
テスト管理画像１１００の右側は、地図表示セクション１１０６である。このセクション１１０６は、地図上には、テストケースで定義されている走行軌跡を表示する。この走行軌跡とテストケースのリストは連携する。
【０１２２】
例えば、ユーザがテストケースリスト表示セクション１１０９の何れかのテストケースを、入力装置１０４を使用して選択すると、地図表示セクション１１０６（ＧＵＩプログラム）は、そのテストケースに対応する走行軌跡１１０７を強調表示する。逆に、ユーザが、地図表示セクション１１０６の走行軌跡を、入力装置１０４を使用して選択すると、テストケースリスト表示セクション１１０９（ＧＵＩプログラム）は、対応する１又は複数のテストケースを強調表示する、又は、対応する１又は複数のテストケースのみ表示する。
【０１２３】
テスト管理画像１１００の右側の下部分は、パラメータ表示セクション１１０８であり、テストケースリスト表示セクション１１０９で選択されたテストケースにおける、車両とＧＰＳのパラメータを表示する。
【０１２４】
図１１に示すテスト管理画像の１１００は一例であって、確認可能な要素は、テスト支援装置の設計に依存する。他の例は、図１１が示す要素の一部のみ又はこれら要素とは異なる要素を定義可能なＧＵＩを提供する。また、各要素の表示方法は、ＧＵＩのデザインに依存し、図１１の例に限定されない。
【０１２５】
（他の実施例）
テストポリシテーブル１０８において、「エリア」カテゴリのポリシは、図４に示す例の他、（１）「イベント発生条件方向の軌跡について実施」、（２）「イベント発生条件逆方向の軌跡について実施」、（３）「エリア外の軌跡について実施」、（４）「エリア内の軌跡に実施」等から選択した、一つ又は複数の要素の組合せを使用して規定することができる。例えば、「イベント発生条件方向」であって「エリア外」の軌跡（（１）かつ（３））についてのみ、テストケースを生成するように、ポリシを定義することができる。
【０１２６】
上述のように、本実施形態のテスト支援方法は、地図データ１０９に含まれる情報を使用して、テストケースを生成する。上記例は、道路の位置や形状（例えば、カーブや直線）の情報の他、道路利用の規則に含まれる制限速度や通行可能方向（道路は一方向のみ通行可能又は双方向通行可能）の情報を使用する。
【０１２７】
地図データ１０９は、このような情報に加え、道路について様々な情報を含む。テスト支援システムは、地図データ１０９に含まれる様々な情報を使用して、生成するテストケースを決定することができる。例えば、地図データ１０９は、道種別（幹線道路か一般道か高速道路か）、道の幅／レーン数、時間帯規制（朝・夕のスクールゾーン、規定時間内の通行禁止、時間に応じたレーン構成変化等）等の情報を含む。テストポリシテーブル１０８は、これらに基づくポリシを含むことができる。
【０１２８】
例えば、テストポリシテーブル１０８は、イベント発生条件のエリアが複数の道にまたがるとき、道路種別に応じてテストを実施するか否かを（テストケースを生成するか否かを）、規定することができる。又は、異なる道路種別に対して、他のカテゴリの異なるポリシを適用するように規定してもよい。規定される道路種別は、幹線道路、一般道、高速道路等を含む。
【０１２９】
テストポリシテーブル１０８は、道の幅／レーン数を含むポリシを規定してもよい。テストポリシテーブル１０８は、イベント発生条件のエリアが複数の道にまたがるとき、道の幅／レーン数に応じてテストを実施するか否かを（テストケースを生成するか否かを）、規定することができる。
【０１３０】
又は、異なる道の幅／レーン数に対して、他のカテゴリの異なるポリシを適用するように規定してもよい。規定される道の幅／レーン数は、例えば、道の幅＝３ｍ〜５ｍ」、「道の幅＝５ｍ〜１０ｍ」、「道の幅＝１０ｍ〜２０ｍ」、「片側レーン数＝１」、「片側レーン数＝２」、「片側レーン数＝３」等である。
【０１３１】
テストポリシテーブル１０８は、道路の時間帯規制を含むポリシを規定してもよい。例えば、朝のみ表示する広告（イベント発生条件が時間帯条件を含む）のテストをする場合、テストポリシテーブル１０８は、地図データ１０９に含まれる時間帯規制情報を参照し、朝通行できない道のテストを実施しないことを規定するポリシを含むことができる。
【０１３２】
以上、本発明の実施形態を説明したが、本発明が上記の実施形態に限定されるものではない。当業者であれば、上記の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換、削除することが可能である。
【０１３３】
本発明のテスト支援技術は、地図データ及び移動体の地図データ上の位置に従って動作する様々なプログラムに適用することができる。例えば、上記カーナビゲーションシステムの例の他、携帯電話上で動くナビゲーションプログラム、車両制御システム、屋内でのナビゲーションシステム等に適用できる。
【０１３４】
例えば、図３及び図４に示すイベント発生条件及びテストポリシを一部変形し、携帯電話上で動くナビゲーションプログラムのテストに適用することができる。例えば、速度の値を人の歩行速度に合わせ、加速度の項目を削除する。人の歩行軌跡は、歩道上である。
【０１３５】
上記例は、テストケースからテストデータを自動生成するが、これと異なり、開発者はテストケースに従って実際に移動体を移動することで、プログラムのテストを行ってもよい。テストデータは、移動体の移動により生成される。テストポリシを使用することなく、イベント発生条件と地図データからテストケースを生成してもよい。
【０１３６】
本発明は、上記形態の機能を実現するソフトウェアのプログラムコードを記憶した非一時的記憶媒体を、システム又は装置に供給し、そのシステム又は装置のコンピュータ（又はＣＰＵやＭＰＵ）が非一時的記憶媒体に格納されたプログラムコードを読み出して実行することによっても達成される。
【０１３７】
この場合、非一時的記憶媒体から読み出されたプログラムコード自体が上記実施の形態の機能を実現し、そのプログラムコードを記憶した非一時的記憶媒体は本発明を構成することができる。また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部又は全部を行い、その処理によって上記実施の形態の機能が実現される場合も含まれる。
【０１３８】
また、本発明は、上記実施の形態の機能を実現するソフトウェアのプログラムコードがネットワークを介して配信されることにより、システム又は装置のハードディスクやメモリ等の記憶デバイス又はＣＤ−ＲＷ、ＣＤ−Ｒ等の非一時的記憶媒体に格納され、そのシステム又は装置のコンピュータ（又はＣＰＵやＭＰＵ）が当該記憶デバイスや当該非一時的記憶媒体に格納されたプログラムコードを読み出して実行することによっても、達成される。
【符号の説明】
【０１３９】
１００  計算機
１０１  ＣＰＵ
１０２  メモリ
１０３  表示装置
１０４  入力装置
１０５  テストケース生成プログラム
１０６  テストデータ生成プログラム
１０７  イベント発生条件テーブル
１０８  テストポリシテーブル
１０９  地図データ
２０１  テストケース
２０２  テストデータ
【図１】
0005613721.tif 000002
【図２】
0005613721.tif 000003
【図３】
0005613721.tif 000004
【図４】
0005613721.tif 000005
【図５】
0005613721.tif 000006
【図６】
0005613721.tif 000007
【図７Ａ】
0005613721.tif 000008
【図７Ｂ】
0005613721.tif 000009
【図７Ｃ】
0005613721.tif 000010
【図７Ｄ】
0005613721.tif 000011
【図７Ｅ】
0005613721.tif 000012
【図７Ｆ】
0005613721.tif 000013
【図７Ｇ】
0005613721.tif 000014
【図８】
0005613721.tif 000015
【図９】
0005613721.tif 000016
【図１０】
0005613721.tif 000017
【図１１】
0005613721.tif 000018