(57)【要約】【課題】  プログラムジェネレータのテストを効率的に実施するための自動テストシステムを提供する。【解決手段】  所定のプログラム仕様に基づいてプログラムを自動生成して、自動生成されたプログラムと参照プログラムとを照合して、自動生成テストが成功したか否かを判定すると共に、テスト不成功の場合に、上記自動生成されたプログラムをビルド・実行して、その実行結果を参照データと照合して、自動生成テストが成功したか否かを判定し、その判定結果を利用者に通知するように、プログラムジェネレータの自動テストシステム１０を構成する。【選択図】  図１
2005258981.tif 000002
【特許請求の範囲】
【請求項１】
所定のプログラム仕様に基づいてプログラムを自動生成するジェネレータ実行手段と、
上記ジェネレータ実行手段により自動生成されたプログラムと、前もって格納されている参照プログラムとを照合して、自動生成テストが成功したか否かを判定する自動生成結果照合手段と、
上記自動生成結果照合手段でテスト成功の場合に、テスト成功の旨を利用者に通知するテスト結果通知手段と、
上記自動生成結果照合手段でテスト不成功の場合に、上記自動生成されたプログラムのビルドを行なうプログラムビルド手段と、
上記プログラムビルド手段によりビルドされたプログラムを実行するプログラム実行手段と、
上記プログラム実行手段により実行されたプログラムの実行結果を参照データと照合して、自動生成テストが成功したか否かを判定する実行結果照合手段と、
を設け、
上記テスト結果通知手段が、上記実行結果照合手段の判定結果を利用者に通知する
ことを特徴とする、プログラムジェネレータ自動テストシステム。
【請求項２】
上記参照プログラムが、参照プログラム格納手段に格納されていることを特徴とする請求項１に記載のプログラムジェネレータ自動テストシステム。
【請求項３】
上記参照プログラムが、当該プログラム仕様と同一のプログラム仕様に対応して前回テストが成功したジェネレータを利用して動的に生成されることを特徴とする請求項２に記載のプログラムジェネレータ自動テストシステム。
【請求項４】
自動生成テストが成功した場合に、当該自動生成されたプログラムが、参照プログラムとして、参照プログラム格納手段に格納されることを特徴とする請求項１〜３のいずれかに記載のプログラムジェネレータ自動テストシステム。
【請求項５】
上記参照データが、参照データ格納手段に格納されていることを特徴とする請求項１〜４のいずれかに記載のプログラムジェネレータ自動テストシステム。
【請求項６】
上記参照データが、上記参照プログラムを実行した実行結果であることを特徴とする請求項５に記載のプログラムジェネレータ自動テストシステム。
【請求項７】
自動生成テストが成功した場合に、当該実行結果が、参照データとして、参照データ格納手段に格納されることを特徴とする請求項４〜６のいずれかに記載のプログラムジェネレータ自動テストシステム。
【請求項８】
上記自動生成結果照合手段が、上記自動生成されたプログラムと参照プログラムとの差分が許容範囲内である場合には、テスト成功と判定することを特徴とする請求項１〜７のいずれかに記載のプログラムジェネレータ自動テストシステム。
【請求項９】
上記実行結果照合手段が、上記プログラムの実行結果と参照データとの差分が許容範囲内である場合には、テスト成功と判定することを特徴とする請求項１〜８のいずれかに記載のプログラムジェネレータ自動テストシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムジェネレータのテスト自動化のための技術に関する。
【背景技術】
【０００２】
従来、状態遷移等により記述されたプログラムの仕様から、プログラムのソースコードを生成するためのシステムとして、プログラムジェネレータが使用されており、プログラム開発の効率化，開発者のスキルに依存しない品質の安定化を図る目的で使用されるものである。
このようなプログラムジェネレータの品質を保証するためには、プログラムジェネレータ自体のテストを実施する必要がある。
【０００３】
そして、プログラムジェネレータのテストにおいては、自動生成された結果である自動生成プログラムが正しく動作することを確認する必要が在る。
ここで、一般的に、プログラムが正しく動作するか否かを判断するためには、当該プログラムを実際に動作させる必要がある。
したがって、プログラムジェネレータのテストにおいても、多くの場合、自動生成プログラムを動作させて動作確認する必要がある。
【０００４】
ここで、自動生成されるプログラムは、一般に、複数個のファイルから構成されていることが多く、各テストパターンに応じて、これらのファイルをビルドして実行可能形式にして動作確認することは作業が煩雑になってしまい、人手で行なう場合には、時間がかかるだけでなく、実施の際のミスが発生しやすい。
さらに、プログラムジェネレータのテストにおいては、通常のプログラムのテストと同様にして、すべてのテストパターンを実行することは現実的でないことから、限らされた時間内で効率良くテストパターンの実行を行なう必要がある。
【０００５】
一般的に、プログラムのテストを効率化するための方法として、テストの自動化技術が知られている。
例えば、特許文献１においては、テストに必要な情報を自動生成して、その結果を利用したテストを自動的に実行し、テスト結果を正しい結果と比較して、テストが成功したか否かを判定するようにしたテスト自動化方式が開示されている。
特に、その請求項４には、試験用プログラムのソースコードを自動的に生成してソフトウェア試験を自動的に行なう方式が記載されている。
【０００６】
また、特許文献２においては、作成された新オブジェクトソースがオブジェクト統合・変換データと比較して正しいか否かのチェックを行なうようにした、プログラム生成システムが開示されている。
【０００７】
さらに、特許文献３においては、検査の結果と正しいオブジェクトプログラム例の比較によってコンパイラの検査を行ない、コンパイラの最適化の誤りを自動化する際に、最適化モードおよび非最適化モードによりそれぞれコンパイルした結果を動作により比較させるようにした、コンパイラ最適化機能検査方式が開示されている。
【０００８】
また、特許文献４においては、与えられた仕様記述をもとに生成したジェネレータが生成するプログラムの文法が正しいか否かを判定する機能を提供して−、ジェネレータの開発効率を向上させるようにした、プログラムジェネレータ生成装置が開示されている。
【０００９】
さらに、特許文献５においては、テスト結果をチェックリストの内容と照合してプログラムが仕様通りに動作するか否かを検証する検証プログラムを自動生成するようにした、テスト結果検証プログラム生成方法が開示されている。
【特許文献１】特開２００２−１５７１４４号公報
【特許文献２】特開２０００−２７６３４４号公報
【特許文献３】特開平３−０１５９４３号公報
【特許文献４】特開平５−０５３７７７号公報
【特許文献５】特開平７−０５６７３２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述した各特許文献によるテスト自動化方式においては、以下のような問題があった。
【００１１】
すなわち、上記特許文献１によるテスト自動化方式においては、以下の二つの問題があった。
第一に、そのままの構成では、ジェネレータのテストの自動化を行なうことができない。これは、生成されたプログラムをさらにビルドして実行し、その結果を判定するための手段が提供されていないので、この作業を人手で行なう必要があり、手間がかかると共に、実施ミスが発生する可能性があるからである。
また第二に、仮に上記構成に生成結果をビルド・実行するための手段を備えたとしても、テストデータが大量である場合にテスト実施に要する時間が長くなってしまう。これは、テスト対象の性質に基づいてテストパターンやテスト作業の取捨選択をして、効率化を図る手段が提供されていないためである。
さらに、その請求項４による記載では、自動生成とは試験対象となるプログラム（当該公報では被試験タスクという）をテストのために実行するプログラムを自動生成することである。したがって、プログラムジェネレータを試験対象とすると、生成結果を実行させてチェックを行なうことは想定されていない。このため、プログラムビルドおよび実行結果照合のための構成要素がなく、本発明とは構成が異なることになる。
【００１２】
また、上記特許文献２によるプログラム生成システムにおいては、その記載から、作成された新オブジェクトソースがオブジェクト統合・変換データと比較して正しいか否かのチェックは、プロパティの名称や名称の数を比較するものと推察されるので、同様にして生成結果を実行させてチェックを行なうことは想定されていない。このため、プログラムビルドおよび実行結果照合のための構成要素がなく、本発明とは構成が異なることになる。
【００１３】
さらに、上記特許文献３によるコンパイラ最適化機能検査方式においては、コンパイラの最適化機能の誤りを検出することも目的としており、プログラムジェネレータの試験の効率化という本発明の目的とは異なるものである。また、試験実施の自動化や実行が不要な場合にそれを省略するようには構成されておらず、試験の効率化を実現することはできない。
【００１４】
また、上記特許文献４によるプログラムジェネレータ生成装置においては、プログラムジェネレータは、構文解析部分とそれ以外のユーザプログラムから構成されている部分のうち、構文解析部分における構文木規則を検証するものであって、本発明とは解決手段および構成が大きく異なっている。
【００１５】
最後に、上記特許文献５によるテスト結果検証プログラム生成方法においては、上記特許文献１と同様に、試験を実施するためのプログラムを生成するものであり、プログラムジェネレータを試験対象として想定していないので、その生成結果をさらに実行させて試験を行なうようには構成されていない。
【００１６】
本発明は、上記の問題を解決すべくなされたものであり、プログラムジェネレータのテストを効率的に実施するための自動テストシステムの提供を目的とする。
【課題を解決するための手段】
【００１７】
この目的を達成するため、本発明の請求項１記載のプログラムジェネレータ自動テストシステムは、所定のプログラム仕様に基づいてプログラムを自動生成するジェネレータ実行手段と、上記ジェネレータ実行手段により自動生成されたプログラムと、前もって格納されている参照プログラムとを照合して、自動生成テストが成功したか否かを判定する自動生成結果照合手段と、上記自動生成結果照合手段でテスト成功の場合に、テスト成功の旨を利用者に通知するテスト結果通知手段と、上記自動生成結果照合手段でテスト不成功の場合に、上記自動生成されたプログラムのビルドを行なうプログラムビルド手段と、上記プログラムビルド手段によりビルドされたプログラムを実行するプログラム実行手段と、上記プログラム実行手段により実行されたプログラムの実行結果を参照データと照合して、自動生成テストが成功したか否かを判定する実行結果照合手段と、を設け、上記テスト結果通知手段が、上記実行結果照合手段の照合結果を利用者に通知する構成としてある。
【００１８】
プログラムジェネレータ自動テストシステムをこのような構成とすると、ジェネレータ実行手段により自動生成したプログラムを、自動生成結果照合手段により参照プログラムと照合して、自動生成テストが成功したか否かを判定し、テスト成功の場合には、テスト成功の旨をテスト結果通知手段により利用者に通知すると共に、テスト不成功の場合には、上記自動生成したプログラムのビルドをプログラムビルド手段により行なう。
そして、ビルドされたプログラムをプログラム実行手段により実行して、その実行結果を、実行結果照合手段により参照データと照合して、自動生成テストが成功したか否かを判定し、その判定結果を上記テスト結果通知手段により利用者に通知する。
【００１９】
このようにして、自動生成したプログラムを参照プログラムと照合して、テスト不成功だった場合には、さらに自動的に、上記自動生成したプログラムをビルドして実行し、その実行結果を参照データと照合することにより、自動生成テストの成功不成功を判定する。したがって、プログラムジェネレータのテストの自動化が可能になると共に、人手による作業が不要であると共に、実施ミスの発生の可能性が低減され得ることになる。
また、自動生成したプログラムを参照プログラムと照合した結果、自動生成テストが成功と判定された場合には、それ以降の動作確認を省略するようになっている。したがって、テストデータが大量である場合であっても、不必要な処理を排除することによって、テスト実施に要する時間を短縮し、テストの効率化を図ることができる。
【００２０】
請求項２記載のプログラムジェネレータ自動テストシステムは、上記参照プログラムが、参照プログラム格納手段に格納されている構成としてある。
プログラムジェネレータ自動テストシステムをこのような構成とすると、自動生成結果照合手段が自動生成されたプログラムと参照プログラムとを照合する際に、参照プログラム格納手段から容易に短時間で参照プログラムを読み出すことができる。
【００２１】
請求項３記載のプログラムジェネレータ自動テストシステムは、上記参照プログラムが、当該プログラム仕様と同一のプログラム仕様に対応して前回テストが成功したジェネレータを利用して動的に生成される構成としてある。
プログラムジェネレータ自動テストシステムをこのような構成とすると、ジェネレータ実行手段がプログラムを自動生成する際に、並行して対応する参照プログラムを動的に生成することによって、参照プログラムが参照プログラム格納手段に格納されていなくても、参照プログラムを取得することができる。
【００２２】
請求項４記載のプログラムジェネレータ自動テストシステムは、自動生成テストが成功した場合に、当該自動生成されたプログラムが、参照プログラムとして、参照プログラム格納手段に格納される構成としてある。
プログラムジェネレータ自動テストシステムをこのような構成とすると、正しく自動生成されたプログラムが参照プログラムとして追加登録されることにより、参照プログラム格納手段に格納されていない参照プログラムが追加されることになり、当該自動生成されたプログラムが次回に参照プログラムとして利用され得る。
【００２３】
請求項５記載のプログラムジェネレータ自動テストシステムは、上記参照データが、参照データ格納手段に格納されている構成としてある。
プログラムジェネレータ自動テストシステムをこのような構成とすると、実行結果照合手段が自動生成されたプログラムの実行結果と参照データとを照合する際に、参照データ格納手段から容易に短時間で参照データを読み出すことができる。
【００２４】
請求項６記載のプログラムジェネレータ自動テストシステムは、上記参照データが、上記参照プログラムを実行した実行結果である構成としてある。
プログラムジェネレータ自動テストシステムをこのような構成とすると、プログラム実行手段が自動生成されたプログラムを実行する際に、並行して対応する参照プログラムを実行することによって、参照データが参照データ格納手段に格納されていなくても、参照データを取得することができる。
【００２５】
請求項７記載のプログラムジェネレータ自動テストシステムは、自動生成テストが成功した場合に、当該実行結果が、参照データとして、参照データ格納手段に格納される構成としてある。
プログラムジェネレータ自動テストシステムをこのような構成とすると、正しく実行されたプログラムの実行結果が参照データとして追加登録されることにより、参照データ格納手段に格納されていない参照データが追加されることになり、当該自動生成されたプログラムの実行結果が次回に参照データとして利用され得る。
【００２６】
請求項８記載のプログラムジェネレータ自動テストシステムは、上記自動生成結果照合手段が、上記自動生成されたプログラムと参照プログラムとの差分が許容範囲内である場合には、テスト成功と判定する構成としてある。
請求項９記載のプログラムジェネレータ自動テストシステムは、上記実行結果照合手段が、上記プログラムの実行結果と参照データとの差分が許容範囲内である場合には、テスト成功と判定する構成としてある。
【００２７】
プログラムジェネレータ自動テストシステムをこのような構成とすると、テスト自動化におけるテスト成功不成功の判定に、許容範囲を設けることによって、この許容範囲内にて成功率を向上させることができる。
【発明の効果】
【００２８】
このようにして、本発明によれば、プログラムジェネレータのテストを効率的に実施するための自動テストシステムを提供することができる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の実施の形態について、図面を参照して説明する。
【実施例１】
【００３０】
本発明のプログラムジェネレータの自動テストシステムの第一の実施形態について、図１を参照して説明する。
図１は、プログラムジェネレータの自動テストシステム１０の構成を示すブロック図である。
図１に示すように、プログラムジェネレータの自動テストシステム１０は、プログラム仕様格納手段１００，ジェネレータ実行手段１１０，自動生成プログラム格納手段１２０，参照プログラム格納手段１３０，自動生成結果照合手段１４０，プログラムビルド手段１５０，プログラム実行手段１６０，実行結果格納手段１７０，参照データ格納手段１８０，実行結果照合手段１９０およびテスト結果通知手段２００を設けてある。
【００３１】
上記プログラム仕様格納手段１００は、プログラムジェネレータの入力であるプログラム仕様が格納されている。
ここで、プログラム仕様としては、テストパターンの数に応じて、複数個のプログラム仕様が格納されている。
【００３２】
上記ジェネレータ実行手段１１０は、上記プログラム仕様格納手段１００に格納されたプログラム仕様を参照して、テスト対象となるべきプログラムジェネレータを実行して、このプログラムジェネレータにより自動生成されたプログラム（以下、自動生成プログラムという）を、後述する自動生成プログラム格納手段１２０に格納する。
【００３３】
上記自動生成プログラム格納手段１２０は、前述のように、プログラムジェネレータにより自動生成された自動生成プログラムを読出可能に格納する。
ここで、プログラムは、通常、複数個のソースファイルや設定ファイル等から構成されている。また、テストパターンに応じて、複数個のプログラムが格納されるようになっている。
【００３４】
上記参照プログラム格納手段１３０は、上述したプログラム仕様から導かれる自動生成プログラムや、既に動作確認が行なわれたプログラム等、正常に動作すると考えられるプログラムを、参照プログラムとして格納するようになっている。
ここで、格納された参照プログラムは、名前等によりプログラム仕様と関連付けられて、検索可能に格納されている。
【００３５】
上記自動生成結果照合手段１４０は、自動生成プログラム格納手段１２０に格納された自動生成プログラムを読み出して、この自動生成プログラムに対応するプログラム仕様に関連付けられた参照プログラムを参照プログラム格納手段１３０から読み出して、双方のプログラムを照合し、その差分が許容範囲内にあるか否か、すなわちテスト成功不成功を判定するようになっている。
【００３６】
そして、上記自動生成結果照合手段１４０は、テスト成功と判定したときには、テスト成功の旨を後述するテスト結果通知手段２００に通知する。
また、テスト不成功と判定したときには、上記自動生成結果照合手段１４０は、後述するプログラムビルド手段１５０に対して、上記自動生成プログラムのビルドを指示する。
【００３７】
上記プログラムビルド手段１５０は、上記自動生成プログラムをビルドする、すなわちプログラムジェネレータが自動生成の際に使用するプログラミング言語，動作環境に応じて、上記自動生成プログラムをコンパイラによりコンパイルして、リンカ，実行ランタイム等の必要なライブラリ等をリンクすることによって、また実行用バッチファイル等として実行可能なプログラムモジュールを作成して、後述するプログラム実行手段１６０に出力する。
尚、プログラムジェネレータが生成するプログラムが、インタプリタ言語を使用していて、コンパイル等することなく実行可能である場合には、プログラムビルド手段１５０は、ビルドせずに、そのままプログラム実行手段１６０に引き渡す。
【００３８】
上記プログラム実行手段１６０は、上記プログラムビルド手段１５０により作成された実行可能なプログラムモジュールを実行し、その実行結果を後述する実行結果格納手段１７０に格納する。
【００３９】
上記実行結果格納手段１７０は、上記プログラム実行手段１６０により実行されたプログラムモジュールの例えば出力結果，ログ生成結果等の実行内容を示すデータファイル等の実行結果を格納する。
【００４０】
上記参照データ格納手段１８０は、プログラム仕様に記載されたデータや、以前に実行して動作確認が行なわれているプログラムの実行結果を参照データとして格納している。
ここで、格納されている各参照データは、それぞれ名前等によりプログラム仕様と関連付けられている。
【００４１】
上記実行結果照合手段１９０は、実行結果格納手段１７０に格納された実行結果を読み出して、この実行結果に対応するプログラム仕様に関連付けられた参照データを参照データ格納手段１８０から読み出して、これらの実行結果と参照データとを照合し、その差分が許容範囲内にあるか否か、すなわちテスト成功不成功を判定するようになっている。
【００４２】
そして、上記実行結果照合手段１９０は、テスト成功と判定したときには、テスト成功の旨を後述するテスト結果通知手段２００に通知するようになっている。
また、テスト不成功と判定したときには、上記実行結果照合手段１９０は、その相違内容を、テスト結果通知手段２００に通知するようになっている。
【００４３】
上記テスト結果通知手段２００は、上述した自動生成結果照合手段１４０または実行結果照合手段１９０からのテスト成功の旨の通知または実行結果によるテスト不成功の場合に相違内容を利用者に通知するようになっている。
【００４４】
ここで、上記プログラム仕様格納手段１００，自動生成プログラム格納手段１２０，参照プログラム格納手段１３０，実行結果格納手段１７０および参照データ格納手段１８０は、それぞれ所定のプログラム仕様，自動生成プログラム，参照プログラム，実行結果および参照データを格納するためのものであって、共通の記憶装置を利用するようにしてもよい。
そして、各格納手段１００，１２０，１３０，１７０および１８０は、例えばプログラム仕様名等をキーとして互いに関連付けて、容易に検索できるように、データベースを構築するようになっている。このようなデータベースは、例えばＯＲＡＣＬＥ等の市販のデータベースシステムを利用することにより、容易に構築され得る。
【００４５】
次に、本実施形態のプログラムジェネレータの自動テストシステムの動作について、図２〜図５を参照して説明する。
プログラムジェネレータの自動テストシステム１０は、図２に示す自動テスト作業と、図３に示すジェネレータ実行手段のプログラム自動生成作業，図４に示す自動生成結果照合手段の照合作業そして図５に示す実行結果照合手段の照合作業の各ステップで利用される。
【００４６】
まず、自動テスト作業の全体について、図２のフローチャートを参照して説明する。
図２において、まずステップＡ１にて、ジェネレータ実行手段１１０が、プログラム仕様に基づいて、プログラムジェネレータを実行し、自動生成結果である自動生成プログラムを自動生成プログラム格納手段１２０に格納する。
次に、ステップＡ２にて、自動生成結果照合手段１４０が、自動生成プログラム格納手段１２０から自動生成プログラムを読み出すと共に、参照プログラム格納手段１３０から対応する参照プログラムを読み出して、双方のプログラムを照合する。
【００４７】
そして、ステップＡ３にて、上記自動生成結果照合手段１４０は、双方のプログラムの差分が許容範囲内にあるか否か、すなわち自動生成テストが成功したか否かを判定する。
ここで、テスト成功の判定の場合には、上記自動生成結果照合手段１４０は、テスト成功の旨をテスト結果通知手段２００に通知する。
これを受けて、テスト結果通知手段２００は、ステップＡ４にて、テスト成功の旨を利用者に通知する。
また、テスト成功の判定の場合、上記自動生成結果照合手段１４０は、その自動生成プログラムを、新たな参照プログラムとして参照プログラム格納手段１３０に格納してもよい。これにより、この新たな参照プログラムを次回のテストの際に利用することができる。
【００４８】
これに対して、上記ステップＡ３にて、テスト不成功の判定の場合には、上記自動生成結果照合手段１４０は、プログラムビルド手段１５０に対して、上記自動生成プログラムのビルドを指示する。
これを受けて、プログラムビルド手段１５０は、ステップＡ５にて、上記自動生成プログラムのビルドを行ない、ビルドにより生成された実行可能なプログラムモジュールをプログラム実行手段１６０に出力する。
続いて、ステップＡ６にて、プログラム実行手段１６０は、この実行可能なプロ九グラムモジュールを実行して、その実行結果を実行結果格納手段１７０に格納する。
【００４９】
次に、ステップＡ７にて、実行結果照合手段１９０が、実行結果格納手段１７０から上記実行結果を読み出すと共に、参照データ格納手段１８０から対応する参照データを読み出して、これらの実行結果と参照データとを照合する。
そして、ステップＡ８にて、上記実行結果照合手段１９０は、上記実行結果と参照データの差分が許容範囲内にあるか否か、すなわち自動生成テストが成功したか否かを判定する。
【００５０】
ここで、テスト成功の判定の場合には、上記実行結果照合手段１９０は、テスト成功の旨をテスト結果通知手段２００に通知する。
これを受けて、テスト結果通知手段２００は、ステップＡ４にて、テスト成功の旨を利用者に通知する。
また、テスト成功の判定の場合、上記実行結果照合手段１９０は、その実行結果を、新たな参照データとして参照データ格納手段１８０に格納してもよい。これにより、この新たな参照データを次回のテストの際に利用することができる。
【００５１】
これに対して、上記ステップＡ８にて、テスト不成功の判定の場合には、上記実行結果照合手段１９０は、テスト不成功の旨、そして上記実行結果と参照データの相違のあった箇所等の相違内容を、テスト結果通知手段２００に通知する。
これを受けて、テスト結果通知手段２００は、ステップＡ９にて、テスト不成功の旨そして相違内容を利用者に通知する。
尚、上記ステップＡ８にてテスト不成功の判定の場合、上記実行結果照合手段１９０は、直ちにテスト不成功とせずに、テスト結果通知手段２００により利用者に相違内容を通知して、利用者にテスト成功不成功の判断を委ねるようにしてもよい。
【００５２】
次に、上記ジェネレータ実行手段１１０におけるプログラムの自動生成作業について、図３のフローチャートを参照して説明する。
図３において、ジェネレータ実行手段１１０は、まずステップＢ１にて、プログラム仕様格納手段１００からプログラム仕様を読み出して、取得する。
次に、ステップＢ２にて、ジェネレータ実行手段１１０は、取得したプログラム仕様を入力として、テスト対象であるプログラムジェネレータを実行する。
【００５３】
最後に、ステップ３にて、ジェネレータ実行手段１１０は、このプログラムジェネレータにより自動生成された自動生成プログラムを自動生成プログラム格納手段１２０に格納する。
以上で、ジェネレータ実行手段１１０によるプログラムの自動生成作業が完了する。
ここで、このようなジェネレータ実行手段１１０によるプログラムの自動生成作業は、例えばプログラム仕様格納手段１００に格納されたプログラム仕様分だけ繰返し行なわれるようにしてもよく、また指示された特定のプログラム仕様に対してのみ行なわれるようにしてもよい。
【００５４】
次に、上記自動生成結果照合手段１４０の照合作業について、図４のフローチャートを参照して説明する。
図４において、自動生成結果照合手段１４０は、まずステップＣ１にて、自動生成プログラム格納手段１２０から自動生成プログラムを読み出して、取得する。
次に、ステップＣ２にて、自動生成結果照合手段１４０は、参照プログラム格納手段１３０から、取得した自動生成プログラムの名前等の情報を利用して関連付けられたプログラム仕様に対応する参照プログラムを読み出して、取得する。
【００５５】
続いて、ステップＣ３にて、自動生成結果照合手段１４０は、取得した自動生成プログラムおよび参照プログラムを整形して、コメント等の動作に影響しない部分を除去し、あるいはインデント等の見た目の形式を統一する。
最後に、ステップＣ４にて、自動生成結果照合手段１４０は、整形された双方のプログラムを比較して、差分を調べ、その差分が許容範囲内にあるか否か、すなわちテスト成功か否かを判定する。
以上で、自動生成結果照合手段１４０による照合作業が完了する。
【００５６】
ここで、上記生成結果照合手段１４０は、上記ステップＣ３における整形の代わりに、単なるプログラムの変数名等の違いを考慮するために、自動生成プログラムおよび参照プログラムに対して構文解析を行なって、抽出構文木と変換テーブルを作成して、それらの間の比較を行なうようにしてもよい。
【００５７】
また、上記参照プログラムに関しては、前もって整形や構文解析を行なっておき、参照プログラムに関連付けて、参照プログラムと共に参照プログラム格納手段に格納しておくようにしてもよい。これにより、当該参照プログラムを取得するとき、その都度整形や構文解析を行なう必要がなく、より迅速な作業が可能になる。
その際、上記参照プログラムとしては、プログラム仕様に記載された正解例を抽出したものや、同一のプログラムジェネレータに関して、最新版ではなく動作が安定している旧版により生成されたプログラムを参照プログラムとして利用してもよい。
これに対して、上記参照プログラムは、ジェネレータ実行手段１１０が自動生成プログラムの自動生成と並行して、同一のプログラム仕様に対応する参照プログラムを動的に生成するようにしてもよい。
【００５８】
ここで、上述したステップＣ２にて、参照プログラム格納手段１３０内にて対応する参照プログラムが見つからない場合、自動生成結果照合手段１４０は、上述した方法で参照プログラムを生成し、参照プログラム格納手段１３０に格納するようにしてもよい。
尚、このように参照プログラムを生成できない場合には、自動生成結果照合手段１４０は、通常のテスト方式で当該自動生成プログラムのテストを行なうようにしてもよい。
【００５９】
次に、上記実行結果照合手段１９０の照合作業について、図５のフローチャートを参照して説明する。
図５において、実行結果照合手段１９０は、まずステップＤ１にて、実行結果格納手段１７０から実行結果を読み出して、取得する。
次に、ステップＤ２にて、実行結果照合手段１９０は、参照データ格納手段１８０から、実行結果に関連する自動生成プログラムの名前等の情報を利用して関連付けられたプログラム仕様に対応する参照データを読み出して、取得する。
【００６０】
続いて、ステップＤ３にて、実行結果照合手段１９０は、取得した実行結果および参照データを必要に応じて整形して、動作結果を判定するために必要ない部分を除去して、形式を統一する。
最後に、ステップＤ４にて、実行結果照合手段１９０は、整形された実行結果および参照データを比較して、差分を調べ、その差分が許容範囲内にあるか否か、すなわちテスト成功か否かを判定する。
以上で、実行結果照合手段１９０による照合作業が完了する。
【００６１】
ここで、上記参照データは、テスト対象となるプログラムジェネレータが自動生成した自動生成プログラムが正しく動作した場合に出力する計算結果やログファイル等であり、プログラムジェネレータのテスト仕様書等から自動抽出し、あるいは参照プログラム格納手段１３０に格納されている参照プログラムを前もって実行させた実行結果を、それぞれ参照データとして参照データ格納手段１８０に格納しておいてもよい。
【００６２】
ここで、上述したステップＤ２にて、参照データ格納手段１８０内にて対応する参照データが見つからない場合、実行結果照合手段１９０は、上述した方法で参照データを生成し、参照データ格納手段１８０に格納するようにしてもよい。
尚、このように参照データを生成できない場合には、実行結果照合手段１９０は、テスト不成功として処理するようにしてもよい。
【実施例２】
【００６３】
次に、本発明のプログラムジェネレータの自動テストシステムの第二の実施形態について、図６を参照して説明する。
図６は、プログラムジェネレータの自動テストシステム１０の構成を示すブロック図である。
図６に示すように、プログラムジェネレータの自動テストシステム２０は、図１に示したプログラムジェネレータの自動テストシステム１０をテスト実施環境２１０として利用していると共に、テスト実行スクリプト生成手段２２０，テスト実行スクリプト格納手段２３０，テスト実行スクリプト実行手段２４０と、を設けてある。
【００６４】
上記テスト実施環境２１０は、図１に示した実施例１におけるプログラムジェネレータの自動テストシステム１０と同じ構成であるから、同じ構成要素には同じ符号を付して、その説明を省略する。
【００６５】
上記テスト実行スクリプト生成手段２２０は、テスト実施環境２１０におけるプログラム仕様格納手段１００に格納されたプログラム仕様を参照して、テスト実行スクリプトを生成し、生成されたテスト実行スクリプトを後述するテスト実行スクリプト格納手段２３０に格納する。
【００６６】
上記テスト実行スクリプト格納手段２３０は、前述のように、テスト実行スクリプト生成手段２２０により生成されたテスト実行スクリプトを読出可能に格納する。
【００６７】
上記テスト実行スクリプト実行手段２４０は、テスト実行スクリプト格納手段２３０に格納されたテスト実行スクリプトを読み出して実行し、テスト実施環境２１０の各構成要素に対して指示を行なうことにより、プログラムジェネレータのテストを実行する。
【００６８】
このような構成によれば、テスト実行スクリプト生成手段２２０により、テスト実施手順を記述したテスト実行スクリプトを生成して、テスト実行スクリプト実行手段２４０により、このテスト実行スクリプトを解釈実行することにより、プログラムジェネレータのテストをテスト実施環境２１０に行なわせることができる。
ここで、テスト実行スクリプト自体は、一般的なシェルスクリプトの他、例えばＭａｋｅ，Ａｎｔ等のビルド用ツールを利用することも可能であり、またＪＵｎｉｔのようなテストフレームワークを利用したプログラムとして、容易に実現することができる。
【産業上の利用可能性】
【００６９】
このようにして、本発明によれば、プログラムジェネレータのテストを効率的に実施するための自動テストシステムを提供することができる。
【図面の簡単な説明】
【００７０】
【図１】本発明によるプログラムジェネレータの自動テストシステムの第一の実施形態の構成を示すブロック図である。
【図２】図１のプログラムジェネレータの自動テストシステムにおける自動テスト作業を示すフローチャートである。
【図３】図１のプログラムジェネレータの自動テストシステムにおけるジェネレータ実行手段のプログラム自動生成作業を示すフローチャートである。
【図４】図１のプログラムジェネレータの自動テストシステムにおける自動生成結果照合手段の照合作業を示すフローチャートである。
【図５】図１のプログラムジェネレータの自動テストシステムにおける実行結果照合手段の照合作業を示すフローチャートである。
【図６】本発明によるプログラムジェネレータの自動テストシステムの第二の実施形態の構成を示すブロック図である。
【符号の説明】
【００７１】
１０    プログラムジェネレータの自動テストシステム
１００  プログラム仕様格納手段
１１０  ジェネレータ実行手段
１２０  自動生成プログラム格納手段
１３０  参照プログラム格納手段
１４０  自動生成結果照合手段
１５０  プログラムビルド手段
１６０  プログラム実行手段
１７０  実行結果格納手段
１８０  参照データ格納手段
１９０  実行結果照合手段
２００  テスト結果通知手段
２１０  テスト実施環境
２２０  テスト実行スクリプト生成手段
２３０  テスト実行スクリプト格納手段
２４０  テスト実行スクリプト実行手段
【図１】
2005258981.tif 000003
【図２】
2005258981.tif 000004
【図３】
2005258981.tif 000005
【図４】
2005258981.tif 000006
【図５】
2005258981.tif 000007
【図６】
2005258981.tif 000008