(57)【特許請求の範囲】
【請求項１】
テスト対象であるソフトウェアプログラムの処理における条件と、当該条件に対応する動作とが対応付けられた複数のテストケースが含まれる決定表が記憶されている決定表記憶部と、
前記条件または前記動作に対応する既定テストコードが予め記憶されている既定テストコード記憶部と、
ユーザから入力された、前記条件または前記動作に対応するユーザテストコードが記憶されるユーザテストコード記憶部と、
前記ユーザテストコードの入力を受け付け、入力されたユーザテストコードを前記ユーザテストコード記憶部に記憶させる入力部と、
前記条件または前記動作毎に、当該条件または動作に対応する前記ユーザテストコードが前記ユーザテストコード記憶部に記憶されているか否かを判定する判定部と、
前記判定部が、前記条件または動作に対応する前記ユーザテストコードが前記ユーザテストコード記憶部に記憶されていると判定した場合、当該条件または動作に応じた前記ユーザテストコードを前記ユーザテストコード記憶部から読み出し、前記条件または動作に対応する前記ユーザテストコードが前記ユーザテストコード記憶部に記憶されていないと判定した場合、当該条件または動作に応じた前記既定テストコードを前記既定テストコード記憶部から読み出し、読み出した前記ユーザテストコードまたは前記既定テストコードに基づいてテストコードを生成するテストコード生成部と、
を備えることを特徴とするテストコード生成装置。
【請求項２】
前記判定部は、前記決定表における前記条件または前記動作に、予め定められた識別情報が対応付けられている場合、当該条件または動作に対応する前記ユーザテストコードが前記ユーザテストコード記憶部に記憶されていると判定する
ことを特徴とする請求項１に記載のテストコード生成装置。
【請求項３】
前記決定表記憶部には、テスト対象毎に異なる複数の前記決定表が記憶され、
前記ユーザテストコード記憶部には、前記複数の決定表のそれぞれに対応するユーザテストコードである内部コード定義情報と、前記複数の決定表に共通して使用するユーザテストコードである外部コード定義情報とが記憶され、
前記テストコード生成部は、前記条件または動作に対応する前記ユーザテストコードが前記内部コード定義情報に含まれていれば、当該内部コード定義情報に含まれるユーザテストコードを読み出し、前記条件または動作に対応する前記ユーザテストコードが前記内部コード定義情報に含まれていなければ、前記外部コード定義情報に含まれるユーザテストコードを読み出す
ことを特徴とする請求項１または請求項２に記載のテストコード生成装置。
【請求項４】
前記ユーザテストコードには、予め定められた第１の文字列が含まれており、
前記決定表には、前記第１の文字列を置換する第２の文字列が含まれており、
前記テストコード生成部は、前記ユーザテストコードに含まれる前記第１の文字列を、前記第２の文字列に置換した前記テストコードを生成する
ことを特徴とする請求項１から請求項３までのいずれか１項に記載のテストコード生成装置。
【請求項５】
テスト対象であるソフトウェアプログラムの処理における条件と、当該条件に対応する動作とが対応付けられた複数のテストケースが含まれる決定表が記憶されている決定表記憶部と、前記条件または前記動作に対応する既定テストコードが予め記憶されている既定テストコード記憶部と、ユーザから入力された、前記条件または前記動作に対応するユーザテストコードが記憶されるユーザテストコード記憶部と、を備えたテストコード生成装置のテストコード生成方法であって、
前記ユーザテストコードの入力を受け付け、入力されたユーザテストコードを前記ユーザテストコード記憶部に記憶させるステップと、
前記条件または前記動作毎に、当該条件または動作に対応する前記ユーザテストコードが前記ユーザテストコード記憶部に記憶されているか否かを判定するステップと、
前記条件または動作に対応する前記ユーザテストコードが前記ユーザテストコード記憶部に記憶されていると判定した場合、当該条件または動作に応じた前記ユーザテストコードを前記ユーザテストコード記憶部から読み出し、前記条件または動作に対応する前記ユーザテストコードが前記ユーザテストコード記憶部に記憶されていないと判定した場合、当該条件または動作に応じた前記既定テストコードを前記既定テストコード記憶部から読み出し、読み出した前記ユーザテストコードまたは前記既定テストコードに基づいてテストコードを生成するステップと、
を備えることを特徴とするテストコード生成方法。
【請求項６】
テスト対象であるソフトウェアプログラムの処理における条件と、当該条件に対応する動作とが対応付けられた複数のテストケースが含まれる決定表が記憶されている決定表記憶部と、前記条件または前記動作に対応する既定テストコードが予め記憶されている既定テストコード記憶部と、ユーザから入力された、前記条件または前記動作に対応するユーザテストコードが記憶されるユーザテストコード記憶部と、を備えたテストコード生成装置のコンピュータに、
前記ユーザテストコードの入力を受け付け、入力されたユーザテストコードを前記ユーザテストコード記憶部に記憶させるステップと、
前記条件または前記動作毎に、当該条件または動作に対応する前記ユーザテストコードが前記ユーザテストコード記憶部に記憶されているか否かを判定するステップと、
前記条件または動作に対応する前記ユーザテストコードが前記ユーザテストコード記憶部に記憶されていると判定した場合、当該条件または動作に応じた前記ユーザテストコードを前記ユーザテストコード記憶部から読み出し、前記条件または動作に対応する前記ユーザテストコードが前記ユーザテストコード記憶部に記憶されていないと判定した場合、当該条件または動作に応じた前記既定テストコードを前記既定テストコード記憶部から読み出し、読み出した前記ユーザテストコードまたは前記既定テストコードに基づいてテストコードを生成するステップと、
を実行させるテストコード生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト対象であるソフトウェアプログラムに対するテストコードを生成する技術に関する。
【背景技術】
【０００２】
ソフトウェアシステム開発におけるテスト工程において、そのソフトウェアシステムを構成するソフトウェアプログラム毎に、条件分岐や入出力の妥当性を検査する単体テストが行われる。特許文献１、２には、このようなテストを自動化する技術が記載されている。
図９は、テスト対象であるソフトウェアプログラムに対する条件と動作とが対応付けられている決定表（デシジョンテーブル）のデータ例を示す図である。この決定表には、条件を示す事前条件および入力値と、条件に応じた動作を示す期待結果とが対応付けられており、テストケースの列毎に入出力の妥当性を検査するテストが行われることを示している。例えば、テストケース「１」では、引数である整数型「ｉｎｔ」の変数「ｃｎｔ」の値が「１」である場合に、テスト対象の関数（メソッド）を実行した戻り値であるブール型「ｂｏｏｌｅａｎ」の変数「ａｃｔｕａｌ」の値が偽（ｆａｌｓｅ）であることが期待結果である。ここで、入力値に示される引数の値を代入してテスト対象のメソッドを実行させ、戻り値が期待結果に示される値であるか否かを判定する既定テストコードを記述して予め記憶しておき、既定テストコードに含まれる変数や値を決定表に示される値に置換すれば、自動的にテストコードを生成することができる。図１０は、このような決定表と既定テストコードとに基づいて生成するテストコードの例を示す図である。符号ａの箇所には変数に値を代入するテストコードが示されており、符号ｂの箇所には値を代入した変数を引数としてテスト対象の関数を実行するテストコードが示されており、符号ｃの箇所には符号ｂで実行したメソッドの戻り値の値を検査するテストコードが示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−３４２０５４号公報
【特許文献２】特開平１０−２０７７２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、テスト対象の条件や動作は複雑なものである場合があり、全ての条件や動作に応じた既定テストコードを予め記憶しておくことは困難である。例えば、入力値として、テスト用に使用する値が記憶されたテストファイルを読み出し、読み出したテストファイルに含まれる値を引数として代入してテストを行いたい場合がある。このような状況に応じたテストコードを予め定めて記憶しておくことは困難である。また、テスト対象であるソフトウェアプログラムのプログラミング言語の仕様により、テストコードに独自の記述をしなければならない場合がある。そこで、ユーザの意図する様々なテストケースに応じたテストコードを、決定表に基づいて生成することが望ましい。
【０００５】
本発明は、このような状況に鑑みてなされたもので、ユーザの意図するテストケースに応じたテストコードを、決定表に基づいて生成するテストコード生成装置、テストコード生成方法、テストコード生成プログラムを提供する。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために、本発明は、テスト対象であるソフトウェアプログラムの処理における条件と、条件に対応する動作とが対応付けられた複数のテストケースが含まれる決定表が記憶されている決定表記憶部と、条件または動作に対応する既定テストコードが予め記憶されている既定テストコード記憶部と、ユーザから入力された、条件または動作に対応するユーザテストコードが記憶されるユーザテストコード記憶部と、ユーザテストコードの入力を受け付け、入力されたユーザテストコードをユーザテストコード記憶部に記憶させる入力部と、条件または動作毎に、条件または動作に対応するユーザテストコードがユーザテストコード記憶部に記憶されているか否かを判定する判定部と、判定部が、条件または動作に対応するユーザテストコードがユーザテストコード記憶部に記憶されていると判定した場合、条件または動作に応じたユーザテストコードをユーザテストコード記憶部から読み出し、条件または動作に対応するユーザテストコードがユーザテストコード記憶部に記憶されていないと判定した場合、条件または動作に応じた既定テストコードを既定テストコード記憶部から読み出し、読み出したユーザテストコードまたは既定テストコードに基づいてテストコードを生成するテストコード生成部と、を備えることを特徴とするテストコード生成装置である。
【０００７】
また、本発明は、判定部が、決定表における条件または動作に、予め定められた識別情報が対応付けられている場合、条件または動作に対応するユーザテストコードがユーザテストコード記憶部に記憶されていると判定することを特徴とする。
【０００８】
また、本発明は、決定表記憶部には、テスト対象毎に異なる複数の決定表が記憶され、ユーザテストコード記憶部には、複数の決定表のそれぞれに対応するユーザテストコードである内部コード定義情報と、複数の決定表に共通して使用するユーザテストコードである外部コード定義情報とが記憶され、テストコード生成部は、条件または動作に対応するユーザテストコードが内部コード定義情報に含まれていれば、内部コード定義情報に含まれるユーザテストコードを読み出し、条件または動作に対応するユーザテストコードが内部コード定義情報に含まれていなければ、外部コード定義情報に含まれるユーザテストコードを読み出すことを特徴とする。
【０００９】
また、本発明は、上述のユーザテストコードには、予め定められた第１の文字列が含まれており、決定表には、第１の文字列を置換する第２の文字列が含まれており、テストコード生成部は、ユーザテストコードに含まれる第１の文字列を、第２の文字列に置換したテストコードを生成することを特徴とする。
【００１０】
また、本発明は、テスト対象であるソフトウェアプログラムの処理における条件と、条件に対応する動作とが対応付けられた複数のテストケースが含まれる決定表が記憶されている決定表記憶部と、条件または動作に対応する既定テストコードが予め記憶されている既定テストコード記憶部と、ユーザから入力された、条件または動作に対応するユーザテストコードが記憶されるユーザテストコード記憶部と、を備えたテストコード生成装置のテストコード生成方法であって、ユーザテストコードの入力を受け付け、入力されたユーザテストコードをユーザテストコード記憶部に記憶させるステップと、条件または動作毎に、条件または動作に対応するユーザテストコードがユーザテストコード記憶部に記憶されているか否かを判定するステップと、条件または動作に対応するユーザテストコードがユーザテストコード記憶部に記憶されていると判定した場合、条件または動作に応じたユーザテストコードをユーザテストコード記憶部から読み出し、条件または動作に対応するユーザテストコードがユーザテストコード記憶部に記憶されていないと判定した場合、条件または動作に応じた既定テストコードを既定テストコード記憶部から読み出し、読み出したユーザテストコードまたは既定テストコードに基づいてテストコードを生成するステップと、を備えることを特徴とするテストコード生成方法である。
【００１１】
また、本発明は、テスト対象であるソフトウェアプログラムの処理における条件と、条件に対応する動作とが対応付けられた複数のテストケースが含まれる決定表が記憶されている決定表記憶部と、条件または動作に対応する既定テストコードが予め記憶されている既定テストコード記憶部と、ユーザから入力された、条件または動作に対応するユーザテストコードが記憶されるユーザテストコード記憶部と、を備えたテストコード生成装置のコンピュータに、ユーザテストコードの入力を受け付け、入力されたユーザテストコードをユーザテストコード記憶部に記憶させるステップと、条件または動作毎に、条件または動作に対応するユーザテストコードがユーザテストコード記憶部に記憶されているか否かを判定するステップと、条件または動作に対応するユーザテストコードがユーザテストコード記憶部に記憶されていると判定した場合、条件または動作に応じたユーザテストコードをユーザテストコード記憶部から読み出し、条件または動作に対応するユーザテストコードがユーザテストコード記憶部に記憶されていないと判定した場合、条件または動作に応じた既定テストコードを既定テストコード記憶部から読み出し、読み出したユーザテストコードまたは既定テストコードに基づいてテストコードを生成するステップと、を実行させるテストコード生成プログラムである。
【発明の効果】
【００１２】
以上説明したように、本発明によれば、テスト対象であるソフトウェアプログラムの条件と対応する動作とが対応付けられた決定表と、条件または動作に対応する既定テストコードと、条件または動作に対応するユーザテストコードとを記憶し、入力されたユーザテストコードをユーザテストコード記憶部に記憶させ、条件または動作毎に、対応するユーザテストコードが記憶されているか否かを判定し、対応するユーザテストコードが記憶されていると判定した場合、その条件または動作に応じたユーザテストコードを読み出し、条件または動作に対応するユーザテストコードが記憶されていないと判定した場合、その条件または動作に応じた既定テストコードを読み出し、読み出したユーザテストコードまたは既定テストコードに基づいてテストコードを生成するようにしたので、様々なテストケースに応じたテストコードを、決定表に基づいて生成することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態によるテストコード生成装置の構成例を示すブロック図である。
【図２】本発明の一実施形態による決定表の雛形の例を示す図である。
【図３】本発明の一実施形態による決定表のデータ例を示す図である。
【図４】本発明の一実施形態によるユーザテストコードのデータ例を示す図である。
【図５】本発明の一実施形態によるクラス指定表のデータ例を示す図である。
【図６】本発明の一実施形態によるテストコードのデータ例を示す図である。
【図７】本発明の一実施形態によるテストコード生成装置の動作例を示すフローチャートである。
【図８】本発明の一実施形態によるコード定義に関する情報を定める設定ファイルのデータ例を示す図である。
【図９】従来技術による決定表のデータ例を示す図である。
【図１０】従来技術により生成するテストコードの例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の一実施形態について、図面を参照して説明する。
図１は、本実施形態によるテストコード生成装置１００の構成を示すブロック図である。テストコード生成装置１００は、テスト対象であるソフトウェアプログラムをテストするテストコードを生成するコンピュータ装置であり、決定表生成部１１０と、入力部１２０と、記憶部１３０と、判定部１４０と、テストコード生成部１５０とを備えている。本実施形態によるテストコード生成装置１００が提供するテストコード生成機能は、例えばソフトウェアの統合開発環境に対するアドオンとして実装することができる。
【００１５】
決定表生成部１１０は、テスト対象であるソフトウェアプログラムをテストするための決定表を生成する。例えば、決定表生成部１１０は、決定表の雛形を予め自身の記憶領域に記憶している。図２は、決定表生成部１１０が記憶している決定表の雛形の例を示す図である。決定表には、テスト対象であるクラスとメソッドとを識別する情報が含まれる。この例では、決定表には、テスト対象であるソフトウェアプログラム名を示す「テスト対象クラス」の欄と、テスト対象であるソフトウェアプログラムの関数を示す「テスト対象メソッド」の欄とが含まれる。ここでは、テスト対象であるソフトウェアプログラムが、オブジェクト指向のプログラミング言語であるＪＡＶＡ（登録商標）によって記述されている例を説明するため、テスト対象の単位をクラスやメソッドとして示すが、手続き型や関数型のプログラミング言語をテスト対象とすることもできる。この場合、例えばテスト対象をファイル名としたり、関数名としたりすることができる。決定表には、条件を示す事前条件および入力値と、条件に応じた動作を示す期待値とが対応付けられており、テストケースの列毎に入出力の妥当性を検査するテストが行われることを示している。このような決定表は、例えば表計算ソフトによって生成されたファイルにおけるシートとして記憶されている。
【００１６】
また、決定表生成部１１０は、ユーザからの要求に応じて、このような決定表の雛形をコピーして、テスト対象のクラス、メソッド毎の決定表を生成し、記憶部１３０の決定表記憶部１３１に記憶させる。ここで、決定表生成部１１０は、例えば単体テストの対象であるソフトウェアプログラムを外部の記憶部から読み出して解析し、テスト対象のクラス名、メソッド名、引数、戻り値等の情報を読み込んで、決定表における対象や要素、値に情報を追記して決定表生成部１１０に記憶させることもできる。
【００１７】
入力部１２０は、キーボードやマウス等の入力デバイスを備えており、ユーザからの情報の入力を受け付ける。例えば、入力部１２０は、決定表に対する追記情報の入力を受け付けて決定表記憶部１３１に記憶させたり、後述するユーザテストコードの入力を受け付け、入力されたユーザテストコードを記憶部１３０のユーザテストコード記憶部１３３に記憶させたりする。
【００１８】
記憶部１３０は、決定表記憶部１３１と、既定テストコード記憶部１３２と、ユーザテストコード記憶部１３３と、クラス指定表記憶部１３４とを備えており、テストコード生成のための各種情報が記憶される。
決定表記憶部１３１には、テスト対象であるソフトウェアプログラムの処理における条件と、その条件に対応する動作とが対応付けられた複数のテストケースが含まれる決定表が記憶されている。決定表は、決定表生成部１１０によって生成され、ユーザから入力部１２０に入力された情報が追記され、決定表記憶部１３１に記憶される。決定表記憶部１３１には、クラス、メソッド等のテスト対象毎に異なる複数の決定表が記憶される。図３は、決定表記憶部１３１に記憶されている決定表のデータ例を示す図である。決定表には、事前条件、入力値、期待結果のブロック毎に、テストのための動作や条件が対応付けられている。このような決定表に基づいて、後述するテストコード生成部１５０によりテストコードが生成される。
【００１９】
ここで、テストコードは、従来、決定表に含まれる情報と既定テストコード記憶部１３２に記憶されている既定テストコードとに基づいて生成されるが、様々なテストケースの全てに対応する既定テストコードを予め既定テストコード記憶部１３２に記憶しておくことは困難である。そこで、本実施形態では、決定表に予め定められたコード種別識別情報が対応付けられている項目については、既定テストコード記憶部１３２に記憶された既定テストコードではなく、ユーザテストコード記憶部１３３に記憶されているユーザテストコードに基づいてテストコードが生成される。例えば、この例では、コード種別識別情報として２列目のセルに「＃」を対応付ける例を示している。また、決定表記憶部１３１に記憶される決定表において、コード種別識別情報が対応付けられたブロックには、ユーザテストコードにおいて定められた記法により示された場合に置換されることを示す第１の文字列と、その記法により示された第１の文字列を置換する第２の文字列とが含まれる。ここでは、「要素」の項目に第１の文字列である「ｃｌａｓｓ」と「ｄａｔａ」とが対応付けられており、「値」の項目に第２の文字列である「ＭｙＢｅａｎ」と「ＡＭＤ００２１」とが対応付けられている。
【００２０】
既定テストコード記憶部１３２には、決定表に含まれる条件または動作に対応する既定テストコードが予め記憶されている。既定テストコードは、従来と同様の構成であり、例えば、決定表に含まれる引数を変数に代入するテストコードや、テスト対象であるメソッドを実行した戻り値が、決定表に含まれる期待結果に示される戻り値と一致するか否かを判定するテストコード等である。
【００２１】
ユーザテストコード記憶部１３３には、ユーザから入力された、決定表における条件または動作に対応するユーザテストコードが記憶される。図４は、ユーザテストコード記憶部１３３に記憶されるユーザテストコードのデータ例を示す図である。ユーザテストコード記憶部１３３には、キー名と、ユーザテストコードと、インポート文と、コメントとが対応付けられて記憶される。キー名は、決定表における「対象」に対応する項目であり、対応するユーザテストコードを識別する情報である。ユーザテストコードは、生成されるテストコードのうち定められた箇所に挿入される。インポート文は、対応するユーザテストコードを実行するために必要なクラスを示す。コメントは、対応するユーザテストコードを説明するコメントである。
【００２２】
この例では、例えば、一行目には、決定表における入力値における「対象」の項目に「ＬｉｓｔＯｂｊｅｃｔＧｅｎｅｒａｔｉｏｎ」の文字列が対応付けられており、この文字列をキー名とした情報が記憶されている。ここで、ユーザテストコードには「＄｛ｄａｔａ｝」や「＄｛ｃｌａｓｓ｝」等の文字列が含まれている。これは、決定表において指定することによって可変な項目であり、定められた記法により示された第１の文字列である。ここでは、ユーザテストコードにおける「＄｛」から「｝」までの箇所を、決定表において「＄｛」から「｝」に囲まれた文字列に対応する値に置換することを示している。例えば、決定表において「ｃｌａｓｓ」（第１の文字列）に「ＭｙＢｅａｎ」（第２の文字列）が対応付けられているため、ユーザテストコードにおいて「Ｌｉｓｔ＜＄｛ｃｌａｓｓ｝＞」と記載された箇所は、「Ｌｉｓｔ＜ＭｙＢｅａｎ＞」と置換される。このような置換処理は、テストコード生成部１５０によってテストコード生成時に行われる。ここでは、ユーザテストコードは、図に示すような表形式にて示される。このユーザテストコードは、決定表が表計算ソフトのファイルにおけるシートであれば、同一ファイルの別シートとして記憶されるようにしても良い。
【００２３】
クラス指定表記憶部１３４には、テストコードにおける、事前条件と入力値と期待結果以外の箇所に挿入するテストコードに関する情報であるクラス指定表が記憶される。図５は、クラス指定表記憶部１３４に記憶されるクラス指定表のデータ例を示す図である。ここでは、例えば「クラス外」、「クラスメンバ」、「ｓｅｔＵｐ」等のブロック毎に、挿入するユーザテストコードを識別するキー名が対応付けられている。キー名に対応するユーザテストコードは、ユーザテストコード記憶部１３３に記憶されている。クラス指定表についても、決定表が表計算ソフトのファイルにおけるシートであれば、同一ファイルの別シートとして記憶されるようにしても良い。
【００２４】
判定部１４０は、決定表における条件または動作毎に、その条件または動作に対応するユーザテストコードがユーザテストコード記憶部１３３に記憶されているか否かを判定する。例えば、判定部１４０は、決定表における条件または動作のブロックに、予め定められたコード種別識別情報が対応付けられている場合、その条件または動作に対応するユーザテストコードが決定表記憶部１３１に記憶されていると判定する。
【００２５】
テストコード生成部１５０は、記憶部１３０に記憶されている情報に基づいて、テストコードを生成する。ここで、テストコード生成部１５０は、判定部１４０が、決定表における条件または動作に対応するユーザテストコードがユーザテストコード記憶部１３３に記憶されていると判定した場合、その条件または動作に応じたユーザテストコードをユーザテストコード記憶部１３３から読み出し、一方、判定部１４０が、その条件または動作に対応するユーザテストコードがユーザテストコード記憶部１３３に記憶されていないと判定した場合、その条件または動作に応じた既定テストコードを既定テストコード記憶部１３２から読み出す。テストコード生成部１５０は、読み出したユーザテストコードまたは既定テストコードに基づいて、テストコードを生成し、生成したテストコードを自身の記憶領域に記憶する。この際、テストコード生成部１５０は、ユーザテストコードに第１の文字列が含まれていれば、第１の文字列を第２の文字列に置換したテストコードを生成する。テストコード生成部１５０は、例えばテスト実行ツール等に、生成したテストコードを出力する。
【００２６】
図６は、テストコード生成部１５０が生成するテストコードのデータ例を示す図である。符号ａに示す箇所には、インポート文が記載される。符号ｂに示す箇所には、クラス指定表において「クラス外」の項目に指定されたユーザテストコードが挿入されている。符号ｃに示す箇所には、テストを実行するテストクラスが記載されている。符号ｄに示す箇所には、クラス指定表において「クラスメンバ」の項目に指定されたユーザテストコードが挿入されている。符号ｅに示す箇所には、クラス指定表において「ｓｅｔＵｐ」の項目に指定されたユーザテストコードが挿入されている。
【００２７】
符号ｆに示す箇所には、決定表における「入力値」の項目に指定されたユーザテストコードが挿入されている。符号ｇに示す箇所には、既定テストコードが挿入されており、テスト対象のメソッドの実行文が記載されている。符号ｈに示す箇所には、既定テストコードが挿入されており、期待結果の判定文が記載されている。符号ｉに示す箇所には、決定表における「期待結果」の項目に指定されたユーザテストコードが挿入されている。このようなテストコードが実行されることにより、ユーザの意図に応じたテストを行うことができる。
【００２８】
次に、図面を参照して、本実施形態によるテストコード生成装置１００の動作例を説明する。図７は、本実施形態によるテストコード生成装置１００の動作例を示すフローチャートである。
決定表生成部１１０は、自身の記憶領域に記憶されている決定表雛形をコピーして決定表を生成し、決定表記憶部１３１に記憶させる。ユーザからの操作要求に応じて、テストコード生成装置１００は、決定表記憶部１３１に記憶されている決定表を読み出し、ディスプレイに表示させる（ステップＳ１）。入力部１２０は、ユーザから、決定表のうち、ユーザテストコードによるテストを実行したい箇所に対するコード種別識別情報（＃）の入力を受け付ける（ステップＳ２）。
【００２９】
また、入力部１２０は、ステップＳ２においてコード種別識別情報が入力されたブロックに対するユーザテストコードの入力を受け付け、ユーザテストコード記憶部１３３に記憶させる（ステップＳ３）。また、入力部１２０は、クラス指定表に対する入力を受け付け、クラス指定表記憶部１３４に記憶させる（ステップＳ４）。同様に、入力部１２０は、ステップＳ４においてクラス指定表にコード種別識別情報が入力された箇所に対するユーザテストコードの入力を受け付け、ユーザテストコード記憶部１３３に記憶させる（ステップＳ５）。
【００３０】
ユーザから、入力部１２０にテストコード生成要求が入力されると、テストコード生成部１５０は、テストコードの生成を開始する（ステップＳ６）。まず、テストコード生成部１５０は、クラス指定表記憶部１３４に記憶されているクラス指定表と、クラス指定表に示されるキー名に対応付けられてユーザテストコード記憶部１３３に記憶されているユーザテストコードを読み出す。テストコード生成部１５０は、クラス指定表に示されるブロックの対応箇所に、ユーザテストコードを挿入する（ステップＳ７）。
【００３１】
テストコード生成部１５０は、決定表に含まれるテストケース毎にテストコードを生成する（ステップＳ８）。テストコード生成部１５０は、決定表のブロック毎に、コード種別識別情報が対応付けられているか否かを判定する（ステップＳ９）。テストコード生成部１５０は、コード種別識別情報が対応付けられていると判定すると（ステップＳ９：ＹＥＳ）、対応するキー名に対応付けられてユーザテストコード記憶部１３３に記憶されているユーザテストコードとインポート文とコメントとを読み出し、テストコードに挿入する。また、ユーザテストコードに定められた第１の文字列が含まれていれば、決定表から第２の文字列を読み出して置換する（ステップＳ１０）。
【００３２】
一方、ステップＳ９において、コード種別識別情報が対応付けられていないと判定すると（ステップＳ９：ＮＯ）、既定テストコード記憶部１３２から対応する既定テストコードを読み出し、テストコードに挿入する（ステップＳ１１）。テストコード生成部１５０は、全てのテストケースに対応するテストコードを生成していなければ（ステップＳ１２：ＮＯ）、ステップＳ８に戻る。全てのテストケースに対応するテストコードを生成すれば（ステップＳ１２：ＹＥＳ）、処理を終了する。
【００３３】
なお、本実施形態では、特定の決定表に対するユーザテストコードがユーザテストコード記憶部１３３に記憶される例を示したが、例えば複数の決定表に共通して使用するユーザテストコードを定義することもできる。この場合、ユーザテストコード記憶部１３３には、複数の決定表のそれぞれに対応するユーザテストコードである内部コード定義表と、複数の決定表に共通して使用するユーザテストコードである外部コード定義表が記憶される。すなわち、単一の決定表について使用するユーザテストコードを定義する内部コード定義表とは別に、複数のクラスが含まれるパッケージにおいて共通して使用するテストコードを定義する外部コード定義表を予めユーザテストコード記憶部１３３に記憶させておく。
【００３４】
そして、テストコード生成部１５０は、決定表に含まれる条件または動作に対応するユーザテストコードが内部コード定義表に含まれていれば、その内部コード定義表に含まれるユーザテストコードを読み出し、決定表に含まれる条件または動作に対応するユーザテストコードが内部コード定義表に含まれていなければ、外部コード定義表に含まれるユーザテストコードを読み出す。すなわち、テストコード生成部１５０は、決定表記憶部１３１に記憶されているユーザ定義表にコード種別識別情報が記載されている場合、まず内部コード定義表を読み出し、対応するユーザテストコードが内部コード定義表に含まれるか否かを判定する。ユーザテストコードが内部コード定義表に含まれていれば、そのユーザテストコードを読み出してテストコードに挿入する。ユーザテストコードが内部コード定義表に含まれていなければ、外部コード定義表を読み出し、対応するユーザテストコードを読み出してテストコードに挿入する。
【００３５】
これにより、内部コード定義表と外部コード定義表とに同一のキー名が存在する場合には、内部コード定義表に記憶されているユーザテストコードが優先的に適用される。すなわち、同一のパッケージに含まれる複数のクラスに同一のキー名のユーザテストコードを利用させたい場合でも、特定のクラスにのみ異なるユーザテストコードを利用させたい場合があるからである。ここでは、外部コード定義表のみを利用させ、内部コード定義表を利用させないようにすることもできる。この場合、内部コード定義表にキー名に対応するユーザテストコードが記憶されていても、内部コード定義表からユーザテストコードを読み出さず、外部コード定義表からユーザテストコードを読み出してテストコードに挿入する。図８は、使用するコード定義に関する情報を定める設定ファイルのデータ例を示す図である。符号ａと符号ｂとの箇所には、外部コード定義表のパスが示されており、符号ｃの箇所には、内部コード定義表の使用可否を定める情報が示されている。
【００３６】
以上説明したように、本実施形態によれば、予め定められた既定テストコードが存在する場合には既定テストコードに基づいて従来通りにテストコードを生成し、ユーザからコード種別識別情報が記入されたブロックについては、ユーザテストコード記憶部１３３に記憶されたユーザテストコードに基づいてテストコードを生成するようにした。これにより、既定テストコードとは異なる動作によりソフトウェアプログラムのテストを行いたい場合にも、決定表とユーザテストコードとを記憶部１３０に記憶させることにより、ユーザの意図した動作によるテストを行うことが可能となる。また、テストコード生成装置１００は、複数のテストケースについて同様のユーザテストコードを挿入したい場合にも、テストコード生成装置１００がユーザテストコード記憶部１３３からユーザテストコードを読み出して、異なるテストケースに同一のテストコードを自動的に挿入する。このため、ユーザはテストコードにおけるテストケース毎に同一のテストコードを繰り返し記載しなくとも、決定表とユーザテストコードとに必要な情報を記載することによって、簡単にテストコードを生成させることができる。このように、本実施形態のテストコード生成装置１００によれば、従来プログラマが作成していた複雑なテストコードを自動で生成することができるため、テスト工程における工数削減をすることができる。
【００３７】
なお、本発明における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりテストコードの生成を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境（あるいは表示環境）を備えたＷＷＷシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００３８】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００３９】
１００  テストコード生成装置
１１０  決定表生成部
１２０  入力部
１３０  記憶部
１３１  決定表記憶部
１３２  既定テストコード記憶部
１３３  ユーザテストコード記憶部
１３４  クラス定義表記憶部
１４０  判定部
１５０  テストコード生成部
【図１】
0005758311.tif 000002
【図２】
0005758311.tif 000003
【図３】
0005758311.tif 000004
【図４】
0005758311.tif 000005
【図５】
0005758311.tif 000006
【図６】
0005758311.tif 000007
【図７】
0005758311.tif 000008
【図８】
0005758311.tif 000009
【図９】
0005758311.tif 000010
【図１０】
0005758311.tif 000011