(57)【要約】【課題】プログラムテストにかかる時間を短縮すること。【解決手段】プログラムデータが変更されたときに変更後プログラムを動作テストするプログラムテスト装置であって、変更前のプログラムデータにより作成されたテストデータのうち、プログラムの変更にともなって変更された関数に関する箇所を抽出する変更関数抽出部１１５と、テストデータのうち変更された関数に関係する箇所を書き換え、かつ、変更されなかった部分は流用して変更後プログラム用のテストデータを作成するテストデータ作成部１０２と、テストデータ作成部で作成されたテストデータを用いてテストを実行するテスト実行部１０３と、を備える。【選択図】図１
2011159008.tif 000002
【特許請求の範囲】
【請求項１】
プログラムデータが変更されたときに変更後プログラムを動作テストするプログラムテスト装置であって、
プログラムの変更にともなって変更された関数の関数名を抽出する変更関数抽出部と、
テストデータのうち前記変更された関数に関係する箇所を書き換え、かつ、変更されなかった部分は前回のテストデータから流用して変更後プログラム用のテストデータを作成するテストデータ作成部と、
前記テストデータ作成部で作成されたテストデータを用いて、前記変更後プログラムのテストを実行するテスト実行部と、を備える、
プログラムテスト装置。
【請求項２】
前記変更関数抽出部は、
変更後プログラムデータに含まれる全ての関数の関数名を抽出する全関数情報抽出部と、
前記変更後プログラムデータに含まれる関数の関数名およびその関数の文字列を関数変更検知用データとして抽出する関数変更検知用データ作成部と、
前記関数変更検知用データ作成部により作成された検知用データと、変更前のプログラムデータをテストしたときに作成された検知用データと、に基づいて、前記関数のうちプログラムデータの変更前後において変更されていない関数の一覧データを作成する未変更関数一覧データ作成部と、を備え、
前記全関数情報抽出部により抽出された関数情報と、前記未変更関数一覧データと、に基づいて、変更された関数情報を抽出する、
請求項１に記載のプログラムテスト装置。
【請求項３】
前記関数変更検知用データ作成部は、
プログラムデータ内の関数内で使用されているマクロの定義を展開し、コメントを削除したコードを生成し、
前記生成されたコードを関数単位に分割し、
関数単位に分割したコードから空白と改行を削除した文字列を作成して関数変更検知用データを作成する、
請求項２に記載のプログラムテスト装置。
【請求項４】
前記テストデータ作成部は、
前記未変更関数一覧データ作成部により作成された未変更関数一覧データ内に同じ名称の関数名が存在するか否かを判定し、
前記判定により前記テスト対象関数データが変更されたと判定された場合には、関数名に関連した新たなテスト項目を作成し、
前記テスト対象関数データ対象関数データが変更されていないと判定された場合には、前回のテストデータを流用し、
前記テスト対象関数データの全てについて上記の判定作業を行う、
請求項２または請求項３に記載のプログラムテスト装置。
【請求項５】
前記未変更関数一覧データ作成部は、
前記関数変更検知用データから検知を行う関数名を選択し、変更前のプログラムデータにより出力されたテスト実行結果データ中に、関数名と一致する前記関数名が存在するか否かを確認し、
一致する関数名がある場合には、前記関数名に関連付けられた検知用データと前記関数名に関連付けられた前記変更検知用データが一致するか確認し、
前記検知用データと前記変更検知用データが一致する場合には、関数の変更がないと判断して、前記関数名を未変更関数一覧データに関数名として記録する、
請求項２乃至請求項４のいずれか１項に記載のプログラムテスト装置。
【請求項６】
前記テスト実行部は、
テストの実行を行った関数名に関連付けられた判定結果を作成し、
前記関数変更検知用データと前記判定結果とを合わせてテスト実行結果データとして出力し、
次のテスト時には、前記未変更関数抽出部は、前記関数変更検知用データとテスト実行結果データとの対比により未変更関数を抽出する、
請求項２乃至請求項５のいずれか１項に記載のプログラムテスト装置。
【請求項７】
プログラムデータが変更されたときに変更後プログラムの動作テストを実行するプログラムテスト方法であって、
プログラムの変更にともなって変更された関数の関数名を抽出し、
テストデータのうち前記変更された関数に関係する箇所を書き換え、かつ、変更されなかった部分は流用して変更後プログラム用のテストデータを作成し、
前記作成されたテストデータを用いてテストを実行する、
プログラムテスト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラムテスト装置およびプログラムテスト方法に関する。
【背景技術】
【０００２】
プログラムテスト装置が一般に知られている。プログラムテスト装置では、個々のモジュール(部品)のみを対象としてテストを行い、対象のモジュールが要求された機能や性能を満たしているかどうかについてテストを行う。
近年、組み込みシステムの規模の拡大に伴い、プログラム量も増加する傾向にある。プログラム開発における品質確保のための手段として、関数を対象としたプログラムテスト装置での単体テストによる大量のテスト実行が可能となっている。
【０００３】
しかし、プログラム量の増加に伴いテスト対象となる関数が以前に比べて莫大に増えており、今後も規模（テスト対象となる関数の数）が拡大することが予測される。
その流れの中でプログラムテスト装置では、変更したプログラムに対して作成済みテストデータがそのまま使えるか、それともテストデータの修正が必要かどうかの確認に時間がかかっており、この時間の短縮が望まれている。すなわち、処理結果の出力が終わってから、次の要求の受け入れが可能になるまでの時間（TAT: Turn Around Time）を短縮化したいという要望がある。
【０００４】
特許文献１には、再テストすべきテストデータの抽出を容易にする再テスト方法およびそのための装置に関する技術が開示されている。図１２は、特許文献１に開示されたプログラムテスト装置のシステム構成図である。
【０００５】
このプログラムテスト装置は、端末装置１と、再テスト装置２と、を備え、再テスト装置２は、テストデータ抽出部３と、テスト実行部４と、テストデータ把握部５と、テスト結果検証部６と、を備える。
【０００６】
端末装置１は、テストデータ抽出部３に修正モジュール名称１５の入力を行う。ここで修正モジュール名称１５とは、プログラム内において、修正が行われたモジュールの名称である。
【０００７】
テストデータ関連情報ファイル７には、テストデータとモジュールの名称とを対応させた対応表が格納されている。ここでテストデータとは、モジュールのテストの際に入力されるデータである。
テストデータ抽出部３は、テストデータ関連情報ファイル７から修正モジュール名称１５に関連するテストデータを抽出し、その結果をテストデータ抽出ファイル８に出力する。
【０００８】
テストデータファイル９には、テストデータが格納されている。また、テスト対象プログラムファイル１０には、テスト対象であるプログラムが格納されている。
テスト実行部４は、テストデータ抽出ファイル８の情報を基に、テストデータファイル９からテストデータを、テスト対象プログラムファイル１０からテスト対象プログラムを読み込み、テストを実行する。すなわち、テスト対象となるテスト対象プログラムファイル１０について、テストデータファイル９から抽出したテストデータでテストを行い、結果を検証用テスト結果ファイル１２に出力する。ここで、検証用テスト結果ファイル１２には例えば、テストデータの名称、テストの検証用キー、テスト時の確認内容（テスト結果）などが格納される。検証用キーとは、例えばテスト対象のプログラム名称と、テスト対象のモジュール名称と、実行中断位置と、のそれぞれの情報を備えたものである。
また、テスト実行部４は、テストカバレッジ情報ファイル１１からテストカバレージ情報を読み込み、テスト時にテストカバレージの採取を行う。
【０００９】
テストデータ把握部５は、テスト実行部４で採取したテストカバレージ率の変化したモジュールをテストデータと関連付ける。
【００１０】
検証用データファイル１３には、例えば、前回のテストにおける検証用キーや確認内容が記録されている。
テスト結果検証部６は、検証用テスト結果ファイル１２中のテスト結果と検証用データファイル１３中の前回のテスト結果とを比較して、その結果を検証結果ファイル１４に出力する。
【００１１】
図１３は、テスト結果検証部６の処理フロー図である。図１３を用いて、テスト結果検証部６の動作について説明する。
【００１２】
まず、検証用テスト結果ファイル１２から検証用テスト結果を読み込む（ステップ２２２）。次に、検証用データファイル１３から前回のテスト結果を読み込む（ステップ２２３）。
【００１３】
それぞれの検証用キーおよび確認内容を比較し(ステップ２２４)、一致していない場合は、検証用データファイル１３の検証用データとテスト結果を検証結果ファイル１４に出力し(ステップ２２５)、一致している場合は、テスト結果が一致していることを検証結果ファイル１４に出力する(ステップ２２６)。すべてのテスト結果の検証が終わるまで、ステップ２２４からステップ２２６を繰り返す(ステップ２２７)。
これにより、検証用テスト結果ファイル１２から、検証用キーおよび確認内容が前回のテスト結果と一致しないものを抽出することができる。すなわち、再テストすべきテストデータを自動的に抽出することができる。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開平０６−０３５７５４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
特許文献１に開示されている技術は、テストデータの修正が必要かどうかの確認作業に、時間がかかるという問題がある。これは、再テストすべきテストデータの箇所を変更するにあたり、テスト対象プログラムを変更した後に再度テストを実行したテスト結果と、前回のテスト結果とを比較し、テスト結果の異なる箇所を取り出しているためである。すなわち、テストデータの修正が必要な箇所の確認作業のために予備的にテストを実行させなければならない。その上で変更したテストデータでプログラムのテストを行わねばならない。このようにプログラムテストを複数回実行する場合には時間がかかる。特に近年はプログラム量が増加しているためテスト実行に時間がかかる。
【課題を解決するための手段】
【００１６】
本発明の第１の態様は、プログラムデータが変更されたときに変更後プログラムを動作テストするプログラムテスト装置であって、変更前のプログラムデータにより作成されたテストデータのうち、プログラムの変更にともなって変更された関数に関する箇所を抽出する変更関数抽出部と、テストデータのうち前記変更された関数に関係する箇所を書き換え、かつ、変更されなかった部分は流用して変更後プログラム用のテストデータを作成するテストデータ作成部と、前記テストデータ作成部で作成されたテストデータを用いてテストを実行するテスト実行部と、を備えるプログラムテスト装置である。
【００１７】
本発明の第２の態様は、プログラムデータが変更されたときに変更後プログラムを動作テストするプログラムテスト装置の制御方法であって、変更前のプログラムデータにより作成されたテストデータから、プログラムの変更にともなって変更された関数に関する箇所を抽出し、テストデータのうち前記変更された関数に関係する箇所を書き換え、かつ、変更されなかった部分は流用して変更後プログラム用のテストデータを作成し、前記作成されたテストデータを用いてテストを実行する、プログラムテスト装置の制御方法である。
【００１８】
これにより、プログラムの変更にともなってテストデータの中で修正が必要とされる箇所を関数段階で比較して抽出することにより、プログラムのテスト結果で比較するより予備的なテスト実行を行う必要が無く、プログラムテストにかかる時間が短縮化される。
【発明の効果】
【００１９】
プログラムテストにかかる時間を短縮することができる。
【図面の簡単な説明】
【００２０】
【図１】実施の形態１にかかるプログラムテスト装置のシステム構成図である。
【図２】実施の形態１にかかるテスト対象関数データである。
【図３】実施の形態１にかかるテストデータの関連図である。
【図４】実施の形態１にかかるテスト実行結果データの関連図である。
【図５】実施の形態１にかかる未変更関数一覧データである。
【図６】実施の形態１にかかる関数変更検知用データの関連図である。
【図７】実施の形態１にかかるプログラムテスト装置の関数変更検知用データの作成例である。
【図８】実施の形態１にかかるプログラムテスト装置の未変更関数一覧データ作成部の制御フローチャートである。
【図９】実施の形態１にかかるプログラムテスト装置のテストデータ作成部の制御フローチャートの図である。
【図１０】実施の形態１にかかるプログラムテスト装置のテスト実行部の制御フローチャートである。
【図１１】実施の形態２にかかるプログラムテスト装置のシステム構成図である。
【図１２】従来のプログラムテスト装置のシステム構成図である。
【図１３】従来のプログラムテスト装置のテスト結果検証部の処理フローである。
【発明を実施するための形態】
【００２１】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。
図１は、プログラムテスト装置のシステム構成図である。
プログラムテスト装置１００は、変更関数抽出部１１５と、テストデータ作成部１０２と、テスト実行部１０３と、を備える。
変更関数抽出部１１５は、テスト対象ソースファイル１０６に記載されているソースプログラムについて、前回のテスト時から変更がなされていない関数を抽出する。
変更関数抽出部１１５は、全関数情報抽出部１０１と、関数変更検知用データ作成部１０４と、未変更関数一覧データ作成部１０５と、関数対比部１１６と、を備える。
【００２２】
図１において、テスト対象ソースファイル１０６は、テスト対象となるソースコードが記載されているファイルである。すなわち、プログラムデータである。
言語ツール１２０は、典型的にはコンパイラやアセンブラである。例えば、言語ツールは、プログラミング言語で書かれたテスト対象ソースファイル１０６を、コンピュータが直接実行可能な機械語のプログラムに変換して、テスト対象ロードモジュールファイル１０７を作成する。
テスト対象ロードモジュールファイル１０７は、言語ツール１２０がテスト対象ソースファイル１０６に基づいて出力したファイルである。
【００２３】
全関数情報抽出部１０１は、テスト対象ロードモジュールファイル１０７からデータを読み込み、関数情報を抽出する。ここで、テスト対象ロードモジュールファイル１０７は、テストの対象であり関数を含んで構成され、テスト対象ソースファイル１０６が変更にされることにより、前回のテスト時から変更されている。全関数情報抽出部１０１が抽出する関数情報は、典型的には関数名である。全関数情報抽出部１０１は、抽出した関数情報をテスト対象関数データ１０８として出力する。全関数情報抽出部１０１は、例えばデバッガを用いることにより、テスト対象ロードモジュールファイル１０７から、関数情報を抽出することができる。
【００２４】
テスト対象関数データ１０８は、全関数情報抽出部１０１から出力された関数情報を格納している。図２は、テスト対象関数データ１０８の構成図である。テスト対象関数データ１０８は、複数の関数名２００で構成されている。
【００２５】
関数変更検知用データ作成部１０４は、テスト対象となるテスト対象ソースファイル１０６に基づいて、関数変更検知用データ１１２を作成して出力する。
【００２６】
関数変更検知用データ１１２は、関数変更検知用データ作成部１０４から出力したデータを格納している。
図６は、関数変更検知用データ１１２の構成図である。関数変更検知用データ１１２は、複数の関数名７００と、関数名７００に関連付けられた検知用データ７０１と、で構成されている。検知用データ７０１については、図７を参照して後述する。
【００２７】
未変更関数一覧データ作成部１０５は、関数変更検知用データ１１２と前回のテスト実行結果データ１１３と、に基づいて、未変更関数一覧データを作成する。未変更関数一覧データは、変更されていない関数の関数名のデータである。未変更関数一覧データ作成部１０５は、作成したデータを未変更関数一覧データ１１４として出力する。未変更関数一覧データ作成部１０５については、図８を参照して後述する。
【００２８】
図５は、未変更関数一覧データ１１４の構成図である。未変更関数一覧データ１１４は、複数の変更されなかった関数名５００を備えている。
【００２９】
関数対比部１１６は、テスト対象関数データ１０８に格納されているデータと、未変更関数一覧データ１１４に格納されているデータとを対比し、変更がなされた関数を抽出する。
【００３０】
テストデータ作成部１０２は、関数対比部１１６により抽出された関数情報と、前回のテストデータ１０９と、を入力としてテストデータを作成する。テストデータ作成部１０２は、作成したテストデータをテストデータ１１０として出力する。テストデータ作成部１０２については、図９を参照して後述する。
【００３１】
図３は、テストデータ１１０の構成図である。テストデータ１１０は、複数の関数名３００と、変更有無情報３０１と、テスト項目３０２と、で構成されている。変更有無情報３０１は、テストデータ１１０が前回のテストデータ１０９から変更があったか否かを表す情報である。変更有無情報３０１は、関数名３００に関連付けられている。
テスト項目３０２には、テスト項目が記録されている。複数のテスト項目３０２は関数名３００に関連付けられている。
前回のテストデータ１０９は、先のテストで作成されたテストデータであり、テストデータ１１０と同様の構成である。前回のテストデータ１０９は、前回のテスト実行時に作成されたテストデータ１１０を格納している。
【００３２】
テスト実行部１０３は、テスト対象ロードモジュールファイル１０７とテストデータ１１０と関数変更検知用データ１１２から入力されたデータに基づき、テストを実行する。テスト実行部１０３は、テストの実行結果データをテスト実行結果データ１１１として出力する。
【００３３】
テスト実行結果データ１１１は、テスト実行部１０３から出力されたテスト実行結果データを格納している。
図４は、テスト実行結果データ１１１の構成図である。テスト実行結果データ１１１は、複数の関数名４００と、関数名４００に関連付けられた変更検知用データ４０１と、関数名４００に関連付けられた判定結果４０２と、を備えている。
また、前回のテスト実行結果データ１１３は、テスト実行結果データ１１１と同様の構成である。前回のテスト実行結果データ１１３は、前回のテストにおけるテスト実行結果データ１１１のテスト実行結果を格納している。
【００３４】
次に、本実施の形態にかかるプログラムテスト装置の動作について説明する。
【００３５】
まず、プログラム作成者が、順次変更修正を加えながら、テスト対象ソースファイル１０６を作成する。
テスト対象ソースファイル１０６は、言語ツール１２０により、テスト対象ロードモジュールファイル１０７に展開される。そしてテスト対象ロードモジュールファイル１０７は、全関数情報抽出部１０１に読み込まれる。全関数情報抽出部１０１は、テスト対象ロードモジュールファイル１０７に含まれる全ての関数の関数名を抽出し、テスト対象関数データ１０８として出力する。
【００３６】
また一方、関数変更検知用データ作成部１０４により、テスト対象ソースファイル１０６から、関数変更検知用データ１１２が作成される。
【００３７】
図７は、関数変更検知用データの作成例である。図７を用いて関数変更検知用データ作成部１０４の動作を説明する。
【００３８】
初回のテスト実行後、テスト対象ソースファイル１０６が関数変更後にテスト対象関数ソースコード１０００のように修正された場合、関数変更検知用データ作成部１０４が関数変更後にテスト対象関数ソースコード１０００に対してコンパイラのプリプロセス相当の処理を行う。すなわち、テスト対象関数ソースコード１０００のマクロの文字列"NEXT_INDEX"を"4"に置き換え、コメントの文字列"/* コメント */"の削除を行い、中間コード１００１を作成する。
【００３９】
次に、関数変更検知用データ作成部１０４は、前記中間コード１００１を関数の先頭行から関数の末尾行のブロック毎に分割した関数別中間コード１００２を作成する。関数"function"に対しては、文字列"int function(int arg)"が記述されている行の先頭から、関数の末尾を示す記号"}"が記述されている行の末尾までが一つのブロックとなる。
【００４０】
次に、関数変更検知用データ作成部１０４は、前記関数別中間コード１００２から空白文字とタブと改行コードを削除した検知データ１００３を作成する。たとえば図７の例では、関数"function"に対する検知データは一つの文字列"intfunction(intarg){arg+=4;returnarg;}"となる。ここではfunctionが関数名にあたる。
この検知データ１００３が、関数変更検知用データ１１２内の関数名７００と関連付けられた検知用データ７０１とする。
【００４１】
関数変更検知用データ１１２から関数名７００と検知用データ７０１が未変更関数一覧データ作成部１０５に入力される。
【００４２】
図８は、未変更関数一覧データ作成部１０５の動作を示すフローチャートである。
【００４３】
未変更関数一覧データ作成部１０５は、関数変更検知用データ１１２内の確認が終わってない関数名７００を一つ選択する（ステップＳ９００）
【００４４】
次に、未変更関数一覧データ作成部１０５に入力される。未変更関数一覧データ作成部１０５は、前回のテスト実行結果データ１１３の中に、ステップＳ９０１で選択した関数名７００の名称と一致する関数名４００が存在するか否かを確認する（ステップＳ９０１）。
【００４５】
ここで、関数名７００の名称と一致する関数名４００がない場合とは、新たに関数が作成されたということである。そこで、この場合には関数の変更があると判断する。
【００４６】
一方、関数名７００の名称と一致する関数名４００がある場合とは、検知を行っている関数名が、前回のテスト時に存在したということになる。そこでこの場合には、関数名７００に関連付けられた検知用データ７０１と関数名４００に関連付けられた変更検知用データ４０１が一致するか確認する（ステップＳ９０２）。
検知用データ７０１と変更検知用データ４０１が一致する場合には、未変更関数一覧データ作成部１０５は、関数の変更が無いと判断し、未変更関数一覧データ１１４に関数名５００を出力する（ステップＳ９０３）。なお、変更検知用データ４０１は、関数名７００と一致する関数名４００に関連付けられたものとする。その後、ステップＳ９０４に進む。
検知用データ７０１と変更検知用データ４０１が一致しない場合には、関数の変更があると判断し（ステップＳ９０２でＮＯ）、ステップＳ９０４へ進む。
【００４７】
次に、関数変更検知用データ１１２内の全ての関数名７００の確認が終わっているかを判断（ステップＳ９０４）し、確認が終わっている場合は（ステップＳ９０４でＹＥＳ）処理を終了する。
確認が終わっていない場合には（ステップＳ９０４でＮＯ）、ステップＳ９００に戻り処理を繰り返す。
これにより、未変換関数の一覧データが作成され、未変更関数一覧データ１１４に格納される。
【００４８】
次に、関数対比部１１６により、テスト対象関数データ１０８に格納されたデータと、未変更関数一覧データ１１４に格納されたデータとの対比が行われる。
【００４９】
次に、テストデータ作成部１０２の動作について説明する。
【００５０】
図９は、テストデータ作成部１０２の制御フローチャートである。
【００５１】
最初に、テストデータ作成部１０２は、テスト対象関数データ１０８からまだテストデータ１１０に存在していない関数名２００を一つ選択する（ステップＳ７００）。
【００５２】
次にテストデータ作成部１０２は、選択した関数名２００と同じ関数名が未変更関数一覧データ１１４内の関数名５００に存在するか否かを、関数対比部で対比を行った結果に基づいて確認する（ステップＳ７０１）。
選択した関数名２００と同じ名称の関数名５００が存在しない場合には（ステップＳ７０１でＮＯ）、テストデータ１１０内に関数名３００を作成し、その関数については変更有無情報３０１を変更ありに設定する（ステップＳ７０２）。
選択した関数名２００と同じ名称の関数名５００が存在する場合には、関数が変更されてないと判断でき（ステップＳ７０１でＹＥＳ）、テストデータ１１０内に関数名３００を作成し、その関数については関連する変更有無情報３０１を変更なしに設定する（ステップＳ７０３）。
【００５３】
次に、前回のテストデータ１０９内に一致する関数名３００の存在を確認し、変更有無情報３０１が変更なしである事を確認した場合にテスト項目が流用できると判断する（ステップＳ７０４）。
テスト項目が流用できる場合には（ステップＳ７０４でＹＥＳ）、テストデータ作成部１０２が前回のテストデータ１０９から関数名３００に関連付けられているテスト項目３０２をテストデータ１１０にコピーする（ステップＳ７０５）。
テスト項目が流用できない場合には（ステップＳ７０４でＮＯ）、テストデータ作成部１０２が、関数名３００に関連した新たなテスト項目３０２を作成する（ステップＳ７０６）。なお、テスト項目３０２は、プログラムテスト装置利用者が、テストデータ作成部を操作して作成してもよく、プログラムテスト装置１００にテスト項目３０２を作成する機能を持たせてもよい。また、テスト項目３０２に格納されているデータは、テスト対象の関数の引数や、テスト対象の関数が参照する変数等である。
【００５４】
テスト対象関数データ１０８内にテスト項目を作成していない関数が残っているかを判断し（ステップＳ７０７）、テスト対象関数データ１０８内の全ての関数に対して、テスト項目を作成している場合には（ステップＳ７０７でＹＥＳ）、処理を終了する。
テスト項目を作成していない関数が残っている場合には（ステップＳ７０７でＮＯ）、ステップＳ７００に戻り、処理を繰り返す。
【００５５】
次に、テスト実行部１０３は、テスト対象ロードモジュールファイル１０７と、テストデータ１１０と、関数変更検知用データ１１２に基づいて、テスト実行結果をテスト実行結果データ１１１に出力する。
なおテスト実行結果データ１１１は、次回のテスト時に前回のテスト実行結果データ１１３として使用される。また、テストデータ１１０は、次回のテスト時に前回のテストデータ１０９として使用される。
【００５６】
図１０は、テスト実行部１０３の動作を表すフローチャートである。図１０を用いてテスト実行部１０３の制御フローを説明する。
【００５７】
最初にテスト実行部１０３は、テストデータ１１０からテストが終わってない関数名３００を一つ選択する（ステップＳ８００）。
【００５８】
次に、テスト実行部１０３は、選択した関数名３００に関連付けられた、未実行のテスト項目３０２を一つ選択する（ステップＳ８０１）。次にテスト実行部１０３が選択したテスト項目３０２を実行する（ステップＳ８０２）。
【００５９】
関数名３００に対して全てのテスト項目３０２の実行が終わってない場合、ステップＳ８０１に戻り処理を繰り返す（ステップＳ８０３でＮＯ）。
関数名３００に対して全てのテスト項目の実行が終わっている場合（ステップＳ８０３でＹＥＳ）、テスト実行部１０３がテスト実行結果データ１１１に、関数名４００と関数名４００に関連付けられた判定結果４０２を作成する。さらに、関数変更検知用データ１１２から入力された検知用データ７０１を利用して、関数名４００と関連した変更検知用データ４０１を作成して出力する（ステップＳ８０４）。この変更検知用データは、次のテスト実行時に、未変更関数一覧データ作成部１０５において、変更された関数を抽出するために用いられる。
【００６０】
テストデータ１１０内の全ての関数名３００のテスト実行が終了を確認し（ステップＳ８０５）、テスト実行が終わっている場合は処理を終了する（ステップＳ８０５でＹＥＳ）。
テスト実行が終わっていない場合は（ステップＳ８０５でＮＯ）、ステップＳ８００に戻り処理を繰り返す。
【００６１】
このような本実施の形態のプログラムテスト装置によれば、次の効果を奏することができる。
修正したテスト対象ソースファイルに対してテストデータの修正が必要かどうかの確認作業を短時間で行うことができる。
修正したテスト対象ソースファイルから関数変更検知用データを作成し、前回のテスト実行結果データ内の変更検知データと比較することで、未変更関数一覧情報を作成することにより、テストデータの修正が不要な関数を抽出することができるためである。
【００６２】
テスト対象ソースファイル１０６内に書かれたコメントや空白に関わらず、同一の関数を用いているか否かを判断することができる。また、前回のテスト時に用いられた関数か否かを判断するための変更検知用データを用いることができる。変更された関数か否かを判断する際に、関数名のみを先に比較することにより、処理時間の短縮を図ることができる。
【００６３】
実施の形態２
図１１は、プログラムテスト装置のシステム構成図の他の例である。実施の形態１に示したプログラムテスト装置のシステム構成と同一の構成要素に対しては、同一の符号を付加し、該構成要素に関する説明を省略する。
【００６４】
図１１に示したプログラムテスト装置のシステム構成は、図１に示したプログラムテスト装置のシステム構成に比べ、未変更関数一覧データの作成にあたり、今回の関数変更検知用データ１１２と前回の関数変更検知用データ１１８を対比する点に特徴を有する。
【００６５】
次に動作について説明する。
関数変更検知用データ作成部１０４で作成された関数変更検知用データ１１２は、バッファ１１７に格納される。次のテスト実行の際には、前回の関数変更検知用データ１１８はバッファ１１７に格納された情報を読み出し、これを前回の関数変更検知用データとして用いる。
【００６６】
未変更関数一覧データ作成部１０５は、関数変更検知用データ１１２と前回の関数変更検知用データ１１８からデータを読み出して比較を行う。すなわち、未変更関数一覧データ作成部１０５は、まず関数変更検知用データ１１２と前回の関数変更検知用データ１１８に格納されている関数名をそれぞれ比較し、現在テストを行っている関数名が、前回のテスト時に存在していたか否かを確認する。
【００６７】
前回のテスト時から関数名が存在する場合には、未変更関数一覧データ作成部１０５は、関数変更検知用データ１１２と前回の関数変更検知用データ１１８に格納されている検知用データを比較し、検知用データが一致すれば、その関数は前回のテスト時から変更されていないものとして、関数名を未変更関数一覧データ１１４に記録する。
【００６８】
なお、関数変更検知用データ１１２から読み出した関数名を前回の関数変更検知用データ１１８で発見できなかった場合や、同一の関数名で関数変更検知用データ１１２と前回の関数変更検知用データ１１８に格納されている検知用データが異なる場合には、その関数は変更がなされたものと判断される。この場合、その関数名は未変更関数一覧データ１１４に記録されない。
【００６９】
なお、実施の形態２では、テスト実行結果データ１１１の変更検知用データは使用しない。したがって、テスト実行部１０３は、関数変更検知用データ１１２から検知用データ７０１を読み込む必要がない。この場合、テスト実行部１０３はテスト実行結果データ１１１として関数名４００と判定結果４０２を出力し、変更検知用データ４０１を出力しない。
【００７０】
このような実施の形態２のプログラムテスト装置によれば、テスト実行の際に、テスト結果に検出用データを埋め込む必要がない。
【００７１】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００７２】
１００    プログラムテスト装置
１０１    全関数情報抽出部
１０２    テストデータ作成部
１０３    テスト実行部
１０４    関数変更検知用データ作成部
１０５    未変更関数一覧データ作成部
１０６    テスト対象ソースファイル
１０７    テスト対象ロードモジュールファイル
１０８    テスト対象関数データ
１０９    テストデータ
１１０    テストデータ
１１１    テスト実行結果データ
１１２    関数変更検知用データ
１１３    テスト実行結果データ
１１４    未変更関数一覧データ
１１５    変更関数抽出部
１１６    関数対比部
１１７    バッファ
１１８    前回の関数変更検知用データ
１２０    言語ツール
３００    関数名
３０１    変更有無情報
３０２    テスト項目
４００    関数名
４０１    変更検知用データ
４０２    判定結果
５００    関数名
７００    関数名
７０１    検知用データ
１０００    ソースコード
１００１    中間コード
１００２    関数別中間コード
１００３    検知データ
【図１】
2011159008.tif 000003
【図２】
2011159008.tif 000004
【図３】
2011159008.tif 000005
【図４】
2011159008.tif 000006
【図５】
2011159008.tif 000007
【図６】
2011159008.tif 000008
【図７】
2011159008.tif 000009
【図８】
2011159008.tif 000010
【図９】
2011159008.tif 000011
【図１０】
2011159008.tif 000012
【図１１】
2011159008.tif 000013
【図１２】
2011159008.tif 000014
【図１３】
2011159008.tif 000015