(57)【要約】      （修正有）【課題】テスト対象プログラムの試験を効率的に行う。【解決手段】テスト対象プログラムを動作させた結果得られる値の期待値を取得するテストケース取得部３３１と、取得された期待値とテスト対象プログラムの出力値とを照合した結果を出力するテストコードを生成する生成部３４０と、を備える。前記テストケース取得部３３１は、テスト対象プログラムが利用する利用プログラムが保持する情報の期待値を取得し、前記生成部３４０は、前記テスト対象プログラムを動作させた後に前記利用プログラムが保持する情報と前記取得した期待値とを照合するテストコードを生成する。【選択図】図２
2013029999.tif 000002
【特許請求の範囲】
【請求項１】
テスト対象プログラムを動作させた結果得られる値の期待値を取得する取得部と、
前記取得された期待値とテスト対象プログラムを動作させた結果得られた値とを照合するテストコードを生成する生成部と、
を備えることを特徴とするテストコード生成装置。
【請求項２】
前記取得部は、テスト対象プログラムが利用する利用プログラムが保持する情報の期待値を取得し、
前記生成部は、前記テスト対象プログラムを動作させた後に前記利用プログラムが保持する情報と前記取得した期待値とを照合するテストコードを生成することを特徴とする請求項１に記載のテストコード生成装置。
【請求項３】
前記利用プログラムは、複数の前記テスト対象プログラムにより共通して使用されるアプリケーション基盤プログラムであることを特徴とする請求項２に記載のテストコード生成装置。
【請求項４】
前記テスト対象プログラムを取得するテスト対象プログラム取得部と、
前記取得されたテスト対象プログラムに基づいて、該テスト対象プログラムの属性を判定する属性判定部と、
前記判定された属性に応じて、予め決められた比較項目のうちから前記テストコードが前記期待値と前記テスト対象プログラムを動作させた結果得られた値との照合を行う比較項目を取得する比較項目取得部と、
前記比較項目の編集画面を表示する表示部と、
前記表示部に表示された前記編集画面において前記取得された比較項目を選択可能に表示させる表示制御部と、
を備えることを特徴とする請求項１から請求項３のいずれか１項に記載のテストコード生成装置。
【請求項５】
テストコード生成に必要な必要情報に不備があるか否か判定する不備判定部と、
前記不備判定部により不備があると判定された場合、修正すべき箇所を取得する修正箇所取得部と、
を備え、
前記表示制御部は、前記表示部に前記取得された修正すべき箇所を表示させることを特徴とする請求項４に記載のテストコード生成装置。
【請求項６】
テストコード生成装置が実行するテストコード生成方法であって、
テスト対象プログラムを動作させた結果得られる値の期待値を取得する取得手順と、
前記取得された期待値とテスト対象プログラムを動作させた結果得られた値とを照合するテストコードを生成する生成手順と、
を有することを特徴とするテストコード生成方法。
【請求項７】
コンピュータに、
テスト対象プログラムを動作させた結果得られる値の期待値を取得する取得ステップと、
前記取得された期待値とテスト対象プログラムを動作させた結果得られた値とを照合するテストコードを生成する生成ステップと、
を実行させるためのテストコード生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テストコード生成装置、テストコード生成方法及びテストコード生成プログラムに関する。
【背景技術】
【０００２】
従来、テスト対象であるテスト対象プログラムのソースコードから入出力変数を解析して、そのプログラムを起動するためのドライバプログラムを自動生成することが行われている。例えば、特許文献１には、テスト対象のモジュールを実際に実行させるテストを行うようにするテスト実行プログラムを自動的に生成するテスト実行プログラム生成部と、上記テスト実行プログラム生成部により生成されたテスト実行プログラムを、独立した別のプロセスとして実行させるようにするためのドライバプログラムを自動的に生成するドライバプログラム生成部と、上記テスト実行プログラムと、上記ドライバプログラムとを合成してテストドライバを生成するプログラム合成部とを具備するドライバ自動生成装置が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０８−１０６４０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載のドライバ自動生成装置は、テスト対象プログラムの実行結果が出力されるだけである。そのため、テスト対象プログラムの実行結果が正常であったのか異常であったのかについては、人が判断する必要があり、その判断作業に工数がかかっていた。
【０００５】
また、近年、アプリケーション基盤ソフトウェアを用いた開発が多い。その場合、単純な出力の確認だけでなくアプリケーション基盤ソフトウェアに依存した中間結果などを確認することが必要となるが、それらの情報を確認することが困難である。以上のように、特許文献１に記載のドライバ自動生成装置では、テスト対象プログラムの試験を効率的に行うことができなかった。
【０００６】
そこで本発明は、上記問題に鑑みてなされたものであり、テスト対象プログラムの試験を効率的に行うことを可能とするテストコード生成装置、テストコード生成方法及びテストコード生成プログラムを提供することを課題とする。
【課題を解決するための手段】
【０００７】
本発明は上記の課題を解決するためになされたものであり、本発明の一態様は、テスト対象プログラムを動作させた結果得られる値の期待値を取得する取得部と、前記取得された期待値とテスト対象プログラムを動作させた結果得られた値とを照合するテストコードを生成する生成部と、を備えることを特徴とするテストコード生成装置である。
【０００８】
本発明の一態様は、上記のテストコード生成装置において、前記取得部は、テスト対象プログラムが利用する利用プログラムが保持する情報の期待値を取得し、前記生成部は、前記テスト対象プログラムを動作させた後に前記利用プログラムが保持する情報と前記取得した期待値とを照合するテストコードを生成することを特徴とする。
【０００９】
本発明の一態様は、上記のテストコード生成装置において、前記利用プログラムは、複数の前記テスト対象プログラムにより共通して使用されるアプリケーション基盤プログラムであることを特徴とする。
【００１０】
本発明の一態様は、上記のテストコード生成装置において、前記テスト対象プログラムを取得するテスト対象プログラム取得部と、前記取得されたテスト対象プログラムに基づいて、該テスト対象プログラムの属性を判定する属性判定部と、前記判定された属性に応じて、予め決められた比較項目のうちから前記テストコードが前記期待値と前記テスト対象プログラムを動作させた結果得られた値との照合を行う比較項目を取得する比較項目取得部と、前記比較項目の編集画面を表示する表示部と、前記表示部に表示された前記編集画面において前記取得された比較項目を選択可能に表示させる表示制御部と、を備えることを特徴とする。
【００１１】
本発明の一態様は、上記のテストコード生成装置において、テストコード生成に必要な必要情報に不備があるか否か判定する不備判定部と、前記不備判定部により不備があると判定された場合、修正すべき箇所を取得する修正箇所取得部と、を備え、前記表示制御部は、前記表示部に前記取得された修正すべき箇所を表示させることを特徴とする。
【００１２】
本発明の一態様は、テストコード生成装置が実行するテストコード生成方法であって、テスト対象プログラムを動作させた結果得られる値の期待値を取得する取得手順と、前記取得された期待値とテスト対象プログラムを動作させた結果得られた値とを照合するテストコードを生成する生成手順と、を有することを特徴とするテストコード生成方法である。
【００１３】
本発明の一態様は、コンピュータに、テスト対象プログラムを動作させた結果得られる値の期待値を取得する取得ステップと、前記取得された期待値とテスト対象プログラムを動作させた結果得られた値とを照合するテストコードを生成する生成ステップと、を実行させるためのテストコード生成プログラムである。
【発明の効果】
【００１４】
本発明によれば、テスト対象プログラムの試験を効率的に行うことができる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態におけるテスト実行システムの概略ブロック図である。
【図２】本実施形態におけるテストコード生成装置の概略ブロック図である。
【図３】記憶部に記憶されている選択可能な比較項目のテーブルＴ１の一例である。
【図４】テストケース編集画面において比較項目が選択可能であることが示された図である。
【図５】テストケース編集画面において比較項目が切り替わった場合に、ユーザが入力すべき項目が切り替わる一例を示した図である。
【図６】記憶部に記憶されている修正すべき箇所と不備の原因と不備のある入力箇所とが関連付けられたテーブルＴ２の一例である。
【図７】修正すべき箇所がマウスで左クリックされた場合の表示制御部の処理を説明するための図である。
【図８】本実施形態における生成部の論理的な構成を示す概略ブロック図である。
【図９】テストケースに含まれるテスト内容の一例である。
【図１０】テストケースに含まれるモック情報の一例である。
【図１１】関数宣言コード生成部により出力されるコードの一例である。
【図１２】モックコード生成部により出力されるコードの一例である。
【図１３】設定コード生成部により出力されるコードの一例である。
【図１４】実行コード生成部により出力されるコードの一例である。
【図１５】比較コード生成部により出力されるコードの一例である。
【図１６】比較項目存在判定部から１回戻った後に比較コード生成部が出力するコードの一例である。
【図１７】比較項目存在判定部から２回戻った後に比較コード生成部が出力するコードの一例である。
【図１８】本実施形態におけるテストコード生成装置の処理の流れを示すフローチャートである。
【図１９】図１８のステップＳ１０４のテストコード生成の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について、図面を参照して詳細に説明する。図１は、本実施形態におけるテスト実行システム１の概略ブロック図である。テスト実行システム１は、テストコード生成装置１００と、テストコード記憶部２００と、テスト実行装置３００とを備える。
【００１７】
テストコード生成装置１００は、テスト対象であるテスト対象プログラムが利用する利用プログラムの一例であるアプリケーション基盤ソフトウェア（アプリケーション基盤プログラムともいう。以下、ＡＰ基盤ソフトと称す）が保持する情報の期待値を取得する。ここで、ＡＰ基盤ソフトは、複数のテスト対象プログラムにより共通して使用されるソフトウェアであって、複数のテスト対象プログラムに共通する利用環境を提供するソフトウェアである。ＡＰ基盤ソフトは、例えば、必要最小限の実装でアプリケーションの処理を実現するために、共通する機能やよく利用される機能をまとめて提供するアプリケーションサーバやフレームワークである。
【００１８】
そして、テストコード生成装置１００は、テスト対象プログラムを動作させた後にＡＰ基盤ソフトが保持する情報と取得した期待値とを照合するテストコードＴＣを生成する。そして、生成したテストコードＴＣをテストコード記憶部２００に記憶させる。これにより、テストコード記憶部２００には、テストコードＴＣが記憶される。
【００１９】
テスト実行装置３００は、プログラム記憶部３０１と、テスト実行部３０２と、テスト結果記憶部３０３とを備える。プログラム記憶部３０１には、テスト対象プログラムとＡＰ基盤ソフトとが記憶されている。プログラム記憶部３０１において、ＡＰ基盤ソフトが保持する情報が格納されている格納場所が予め決められている。
【００２０】
テスト実行部３０２は、テストコード記憶部２００からテストコードＴＣを読み出し、読み出したテストコードＴＣを実行する。テスト実行部３０２は、テストコードＴＣを実行する過程で、プログラム記憶部３０１からテスト対象プログラムを読み出し、読み出したテスト対象プログラムを実行する。テスト実行部３０２は、テスト対象プログラムを動作させた結果得られた値が期待値と完全に一致した場合は正常、それ以外の場合は異常と判定する。そして、テスト実行部３０２は、テスト対象プログラムの名称とともにテスト結果（正常又は異常）を、テスト結果記憶部３０３に保存する。
テスト結果記憶部３０３には、テスト対象プログラムの名称及びテスト結果（正常又は異常）が保存される。
【００２１】
上述したように、プログラム記憶部３０１において、ＡＰ基盤ソフトが保持する情報が格納されている格納場所が予め決められている。そのため、テストコード実行装置３００は、生成されたテストコードを実行する際に、ＡＰ基盤ソフトが保持する情報が格納されている格納場所を参照することにより、ＡＰ基盤ソフトが保持する情報を取得することができる。その結果、テストコード実行装置３００は、テスト対象プログラムを動作させた後にＡＰ基盤ソフトが保持する情報と取得した期待値とを照合した結果を得ることができる。
これにより、ユーザは、ＡＰ基盤ソフトが保持する情報にアクセスする処理に関するテスト対象プログラムをテストする場合にも、簡単にＡＰ基盤ソフトが保持する情報が正しいか否か確認することができる。
【００２２】
図２は、本実施形態におけるテストコード生成装置１００の概略ブロック図である。テストコード生成装置１００は、記憶部１０と、入力部２０と、制御部３０と、表示部４０とを備える。また、制御部３０は、比較項目絞り込み部３１０と、テストケース編集部３２０と、前処理部３３０と、生成部３４０と、表示制御部３５０とを備える。
【００２３】
記憶部１０には、選択可能な比較項目がテスト対象プログラムの属性（ＡＣＴＩＯＮ、ＥＪＢ、ＵＴＩＬ又はＤＡＯ）毎に記憶されている（図３参照）。ここで、比較項目とは、入力部２０により受け付けられた期待値と、テスト対象プログラムを実行した結果とを比較する項目である。また、ＡＣＴＩＯＮは、画面の操作によって起動される処理を行うプログラムである。ＥＪＢは、Ｅｎｔｅｒｐｒｉｓｅ  Ｊａｖｅ  Ｂｅａｎｓの略であり、特定の業務の処理を行うプログラムである。ＵＴＩＬは、ユーティリティプログラムである。ＤＡＯは、Ｄａｔａ  Ａｃｃｅｓｓ  Ｏｂｊｅｃｔの略であり、データベースにアクセスするために用いられるプログラムである。
【００２４】
図３は、記憶部１０に記憶されている選択可能な比較項目のテーブルＴ１の一例である。同図のテーブルＴ１において、テスト対象プログラムの属性毎に、選択可能な比較項目が示されている。同図のテーブルＴ１において、１が選択可能で、０が選択不可を示している。具体的には、例えば、テスト対象プログラムの属性がＡＣＴＩＯＮの場合、全ての比較項目が選択可能である。
【００２５】
テーブルＴ１の１行目における「戻り値」は、戻り値として返却される値を確認したい場合に選択される比較項目である。テーブルＴ１の２行目における「メソッド」は、テスト対象クラスの指定したメソッドを実行したときの戻り値を確認したい場合に選択される比較項目である。テーブルＴ１の３行目における「例外」は、返却される例外を確認したい場合に選択される比較項目である。
【００２６】
テーブルＴ１の４行目における「メッセージ付き例外」は、返却される例外にメッセージがついていた場合に選択される比較項目である。テーブルＴ１の５行目における「ＤＢのテーブル」は、試験終了時のデータベース（ＤＢ）のテーブルの状態を確認したい場合に選択される比較項目である。例えば、ＩＮＳＥＲＴ分やＵＰＤＡＴＥ文、ＤＥＬＥＴＥ文などを実行するとＤＢの内容が書き換わるメソッドのテストの場合にこの比較項目が選択される。
【００２７】
テーブルＴ１の６行目における「遷移先情報」は、遷移先ステータスを確認したい場合に選択される比較項目である。テーブルＴ１の７行目又は８行目における「セッション」又は「リクエスト」は、テスト対象プログラムがＡＣＴＩＯＮクラスのｅｘｃｕｔｅメソッドを実行した結果、それぞれセッション情報又はリクエスト情報に格納される情報を確認したい場合に選択される比較項目である。
【００２８】
テーブルＴ１の９行目又は１０行目における「ＡＣＴＩＯＮメッセージ」又は「ＡＣＴＩＯＮエラーメッセージ」は、テスト対象プログラムがＡＣＴＩＯＮクラスのｅｘｃｕｔｅメソッドを実行した結果、格納されるメッセージ又はエラーメッセージをそれぞれ確認したい場合に選択される比較項目である。
【００２９】
図２に戻って、記憶部１０には、テスト対象プログラムの属性毎に、当該テスト対象プログラムのテストに必要な情報（以下、テストケースと称す）を入力するためのテンプレートが記憶されている。また、記憶部１０には、クラスの基礎となる基礎クラスが記憶されており、基礎クラスの名前と属性とが関連付けられて記憶されている。
入力部２０は、例えば、マウスとキーボードである。入力部２０は、テスト対象プログラムのファイル（以下、対象プログラムファイルと称す）を受け付け、受け付けた対象プログラムファイルを比較項目絞り込み部３１０のテスト対象プログラム取得部３１１に出力する。
【００３０】
比較項目絞り込み部３１０は、テスト対象プログラム取得部３１１と、属性判定部３１２と、比較項目取得部３１３とを備える。テスト対象プログラム取得部３１１は、入力部２０から入力された対象プログラムファイルからそのテスト対象プログラムのソースコードを取得し、取得したテスト対象プログラムのソースコードを属性判定部３１２に出力する。
【００３１】
属性判定部３１２は、テスト対象プログラム取得部３１１から入力されたテスト対象プログラムのソースコードに基づいて、そのテスト対象プログラムの属性を抽出する。具体的には、例えば、属性判定部３１２は、テスト対象プログラムのソースコードからクラスを抽出する。そして、属性判定部３１２は、抽出したクラスが基づいている基礎クラスを参照する。そして、属性判定部３１２は、参照した基礎クラスの名前が関連付けられている属性を読み出す。以上の処理により、属性判定部３１２は、テスト対象プログラムの属性を抽出する。
【００３２】
また、属性判定部３１２は、テスト対象プログラムのソースコードからテスト対象プログラムのメソッド名を抽出する。
属性判定部３１２は、判定した属性を示す属性情報とテスト対象プログラムのメソッド名を比較項目取得部３１３に出力する。
【００３３】
比較項目取得部３１３は、属性判定部３１２により判定された属性に応じて、予め決められた比較項目のうちからテストコードが期待値とテスト対象プログラムを動作させた結果得られた値との照合を行う比較項目を取得する。
具体的には、例えば、比較項目取得部３１３は、属性判定部３１２から入力された属性情報が示す属性が選択可能な比較項目を記憶部１０から読み出す。例えば、図３の一例では、属性がＤＡＯの場合、比較項目取得部３１３は、その値が１である比較項目である「戻り値」、「メソッド」、「例外」、「メッセージ付き例外」及び「ＤＢのテーブル」を選択可能な比較項目として記憶部１０から読み出す。
【００３４】
また、比較項目取得部３１３は、属性判定部３１２から入力された属性情報が示す属性に対応するテンプレートを記憶部１０から読み出す。
比較項目取得部３１３は、読み出した比較項目及びテンプレートと、属性判定部３１２から入力されたテスト対象プログラムのメソッド名を表示制御部３５０に出力する。
【００３５】
表示制御部３５０は、比較項目取得部３１３から入力された選択可能な比較項目とテンプレートとを用いて、テンプレートにおける比較項目において、入力された比較項目のみを選択可能となるようテストケース編集画面を表示部４０に表示させる。
また、表示制御部３５０は、そのテストケース編集画面において、テスト対象プログラムのメソッド名、テスト対象プログラムの実行に必要な入力値及びテスト対象プログラムの実行の結果得られる期待値等を入力させる欄を表示部４０に表示させる。
【００３６】
図４は、テストケース編集画面において比較項目が選択可能であることが示された図である。同図は、テスト対象プログラムの属性がＡＣＴＩＯＮの場合の例である。同図において、テストケース編集画面の一部Ｒ４０の領域Ｒ４１において、比較項目が選択可能に表示されている。
【００３７】
図５は、テストケース編集画面において比較項目が切り替わった場合に、ユーザが入力すべき項目が切り替わる一例を示した図である。同図には、テストケース編集画面の一部Ｒ５０と、そのテストケース編集画面の一部Ｒ５０の比較項目が「６．遷移先情報」から「８．リクエスト」に切り替える操作をしている図Ｒ５２と、テストケース編集画面の一部Ｒ５０の比較項目が「８．リクエスト」に切り替わった後のテストケース編集画面の一部Ｒ５４とが示されている。
【００３８】
比較項目が「６．遷移先情報」の場合には、テストケース編集画面の一部Ｒ５０における入力すべき項目は、「期待する値」の欄Ｒ５１のみである。一方、比較項目が「８．リクエスト」に切り替わった場合には、テストケース編集画面の一部Ｒ５４における入力すべき項目は、「キー名」の欄Ｒ５５、「期待する値の型」の欄Ｒ５６及び「期待する値」の欄Ｒ５７の３つに増加している。
このように、表示制御部３５０は、比較項目が切り替わった場合に、その比較項目に応じて、入力すべき項目を切り替えて表示部４０に表示させる。
【００３９】
図２に戻って、入力部２０は、ユーザにより入力されたテストケースを受け付け、受け付けたテストケースをテスト編集部３２０に出力する。ここで、テストケースは、例えば、テストの説明、テスト対象プログラムに与えられる入力値及びテスト対象プログラムの実行の結果得られる値の期待値等である。
テスト編集部３２０は、ユーザによるテストケースの入力が終了した場合、入力部２０から入力されたテストケースが含まれるテストケースファイルを記憶部１０に記憶させる。
【００４０】
また、記憶部１０には、テストコード生成に必要な必要情報に含まれる項目毎に、各項目が正しいか否か判定する指標が記憶されている。
また、記憶部１０には、修正すべき箇所と不備の原因と不備のある入力箇所とが関連付けられて記憶されている。
【００４１】
図６は、記憶部１０に記憶されている修正すべき箇所と不備の原因と不備のある入力箇所とが関連付けられたテーブルＴ２の一例である。同図において、不備を識別する不備ｉｄ、修正すべき箇所、不備の原因、不備のある入力箇所の各組が示されている。例えば、不備ｉｄが「１」の場合、修正すべき箇所が「キー名」で、不備の原因が「「キー名」は存在しません」で、不備のある入力箇所が「期待値／キー名」であることが示されている。
【００４２】
図２に戻って、前処理部３３０は、テストケース取得部（取得部）３３１と、必要情報抽出部３３２と、不備判定部３３３と、修正箇所取得部３３４とを備える。テストケース取得部３３１は、記憶部１０からテストケースファイルを読み出し、読み出したテストケースファイルに含まれるテストケースを必要情報抽出部３３２に出力する。すなわち、テストケース取得部（取得部）３３１は、テスト対象プログラムを動作させた結果得られる値の期待値を取得する。より詳細には、テストケース取得部（取得部）３３１は、テスト対象プログラムが利用する利用プログラム（例えば、アプリケーション基盤プログラム）が保持する情報の期待値を取得する。
【００４３】
必要情報抽出部３３２は、テストケース取得部３３１から入力されたテストケースから、予め決められたテストコード生成に必要な必要情報を抽出する。必要情報抽出部３３２は、抽出した必要情報を不備判定部３３３に出力する。
【００４４】
不備判定部３３３は、必要情報抽出部３３２から入力された必要情報に不備があるか否か判定する。具体的には、例えば、不備判定部３３３は、必要情報に含まれる各項目が正しいか否か判定する指標を記憶部１０から読み出し、読み出した指標に基づいて、入力された必要情報に不備があるか否か判定する。
【００４５】
不備判定部３３３により入力された必要情報に不備があると判定した場合、不備判定部３３３は、上述の指標と不備がある項目とを修正箇所取得部３３４に出力する。
修正箇所取得部３３４は、不備判定部３３３から入力された不備がある項目と上述の指標とを比較することにより、修正すべき箇所と不備の原因を取得する。そして、修正箇所取得部３３４は、修正すべき箇所と不備の原因とに関連付けられたテストファイルケース中の不備のある入力箇所を記憶部１０のテーブルＴ２から読み出す。
【００４６】
修正箇所取得部３３４は、修正すべき箇所と不備の原因と、読み出したテストファイルケース中の不備のある入力箇所とを表示制御部３５０に出力する。
表示制御部３５０は、入力された修正すべき箇所と不備の原因とを表示部４０に表示させる。その際に、表示制御部３５０は、修正すべき箇所をリンク付きで表示し、そのリンク先として、テストケースファイル中の不備のある入力箇所を設定する。
【００４７】
ユーザにより修正すべき箇所がマウスで左クリックされた場合、入力部２０は修正すべき箇所が左クリックされた旨を表示制御部３５０に出力する。表示制御部３５０は、修正すべき箇所が左クリックされた旨を受け取ると、テストケースファイルを開き、そのリンク先として指定されたテストケースファイル中の不備のある入力箇所を入力が受け付けられる状態で表示部４０に表示させる。
【００４８】
図７は、修正すべき箇所がマウスで左クリックされた場合の表示制御部３５０の処理を説明するための図である。同図において、テストケースの不備が表示されているウィンドウＷ７０と、そのウィンドウＷ７０内の「期待する値」が左クリックされた場合に開かれるテストケースファイルのウィンドウＷ７４とが示されている。
【００４９】
ウィンドウＷ７０内には、修正すべき箇所を表示する欄Ｒ７１と不備の原因を表示する欄Ｒ７２とが示されている。ここでは、修正すべき箇所として「期待する値」、それに対応する不備の原因として「期待する値が存在しません」とが示されている。カーソルＡ７３が「期待する値」という文字列Ｌ７１１の上にあるときに、マウスが左クリックされた場合、表示制御部３５０は、テストケースファイルのウィンドウＷ７４を開く。
そして、表示制御部３５０は、ウィンドウＷ７４で期待値の項目Ｒ７５のうち、「期待する値」の入力欄Ｒ７６を入力が受け付けられる状態で表示部４０に表示させる。
【００５０】
図２に戻って、不備判定部３３３は、必要情報に不備がないと判定した場合、必要情報を生成部３４０に出力する。
生成部３４０は、不備判定部３３３から入力された必要情報に基づいて、テストコードＴＣを生成し、生成したテストコードＴＣをテストコード記憶部２００に記憶させる。すなわち、生成部３４０は、取得部３３１により取得された期待値とテスト対象プログラムを動作させた結果得られた値とを照合するテストコードを生成する。より詳細には、生成部３４０は、テスト対象プログラムを動作させた後に利用プログラム（例えば、アプリケーション基盤プログラム）が保持する情報と取得した期待値とを照合するテストコードを生成する。
【００５１】
図８は、本実施形態における生成部３４０の論理的な構成を示す概略ブロック図である。生成部３４０は、テストケース読出部３４１と、関数宣言コード生成部３４２と、モックコード生成部３４３と、設定コード生成部３４４と、実行コード生成部３４５と、比較コード生成部３４６と、比較項目存在判定部３４７とを備える。
【００５２】
テストケース読出部３４１は、不備判定部３３３から入力された必要情報からコードを生成するための情報を取得する。
ここで、テストケース読出部３４１は、コメント取得部３４１＿１と、モック取得部３４１＿２と、入力値取得部３４１＿３と、期待値取得部３４１＿４とを備える。
【００５３】
図９は、テストケースに含まれるテスト内容の一例である。同図において、テスト内容が設定されていることが示されている。すなわち、項番は「ＮＯ１」で、試験内容が「登録に失敗した場合の試験です。」で、前提条件が「なし。」、入力値の説明は「Ｂｏｏｋのインスタンス。」で、期待値の説明が「正常な遷移先、入力した書籍情報、画面メッセージ
」であることが示されている。
【００５４】
モックは、テスト対象プログラムが行う処理を確認するために、その処理に必要な処理結果を返すような動作させるものである。テスト対象プログラムが依存する処理を置き換えるクラスを作成するためのモック設定情報として、モック名、モックが返す戻り値及びモックが返す例外がある。ここで、モックが返す戻り値及びモックが返す例外は、後述する図１０のモック情報で定義されている処理が行われた場合に、それぞれモックが返す戻り値及びモックが返す例外である。ここで、モック情報は、テスト対象プログラムが依存する処理を置き換える処理の定義を与える情報である。
【００５５】
同図において、モック名が「ｓｅｒｖｉｃｅ１」で、モックが返す戻り値が「％ｌｉｓｔ１％」で、モックが返す例外がないことが示されている。
【００５６】
入力値は、値が「％ｆｏｒｍ１％」であることが示されている。比較項目として、「６．遷移先情報」、「７．セッション」及び「９．ＡＣＴＩＯＮメッセージ」が示されている。上述の通り、遷移先情報Ｒ１７１は、画面遷移先情報を意味する。ＡＰ基盤ソフトには、画面遷移先情報に応じて表示する画面を切り替える機能が用意されている。
【００５７】
セッションは、セッション情報を意味する。ＡＰ基盤ソフトには、サーバ内でクライアント毎に情報を保持する領域が用意されている。ＡＣＴＩＯＮメッセージは、画面出力メッセージの１つである。ＡＰ基盤ソフトには、画面に出力するメッセージを設定すると、所定の画面の場所にメッセージを出力する機能が用意されており、処理条件に応じて画面出力メッセージを動的に切り替えることができる。
【００５８】
期待値は、比較項目が「遷移先情報」である場合、期待する値が「ｓｕｃｃｅｓｓ」であることが示されている。また、比較項目が「セッション」である場合、キー名が「ｂｏｏｋＬｉｓｔ」で、期待する値の型が「ＡｒｒａｙＬｉｓｔ＜Ｂｏｏｋ＞」で、期待する値が「％ｌｉｓｔ１％」であることが示されている。
また、比較項目が「Ａｃｔｉｏｎメッセージ」である場合、キー名が「ＡＰＭＳＧ−０００１」で、期待する値の型が「Ｓｔｒｉｎｇ」で、期待する値が「Ｓｕｃｃｅｓｓ！」であることが示されている。
【００５９】
図１０は、テストケースに含まれるモック情報の一例である。同図において、モック名が「ｓｅｒｖｉｃｅ１」で、モックとして用いるクラスのクラス名が「ＢｏｏｋＭａｎａｇｅｒＳｅｒｖｉｃｅＢｅａｎ」で、そのクラスに呼び出されるメソッドのメソッド名が「ｅｎｔｒｙＢｏｏｋ」で、そのメソッドの引数の型が「Ｂｏｏｋ」で、メソッドの戻り値の型が「Ｌｉｓｔ＜Ｂｏｏｋ＞」で、そのメソッドの例外クラス名が「ＭａｎａｇｅｒＥｘｃｅｐｔｉｏｎ」であることが示されている。
テストコード生成装置１００は、図１０のモック情報と図９のテスト内容に含まれるモック設定情報とに基づいて、テスト対象プログラム依存する処理を置き換える。
【００６０】
以下、テストケースとして、図９のテスト内容と図１０のモック情報とが与えられた場合を一例として、生成部３４０の各部の処理について説明する。
コメント取得部３４１＿１は、必要情報から関数の名前を決めるために用いる項番を取得する。コメント取得部３４１＿１は、不備判定部３３３から入力された必要情報から関数の説明を記載するための試験内容、前提条件、入力値の説明、期待値の説明を取得する。
具体的には、例えば、コメント取得部３４１＿１は、図９に示された項番、試験内容、前提条件、入力値の説明、期待値の説明を取得する。コメント取得部３４１＿１は、取得したこれらのコメント情報を関数宣言コード生成部３４２に出力する。
【００６１】
モック取得部３４１＿２は、不備判定部３３３から入力された必要情報からモックコードを生成するために用いるモック情報を取得する。具体的には、例えば、モック取得部３４１＿２は、図１０に示されたモック情報を取得する。モック取得部３４１＿２は、取得したモック情報をモック生成部３４３に出力する。
【００６２】
入力値取得部３４１＿３は、不備判定部３３３から入力された必要情報から設定コードを生成するために用いる入力値を取得する。具体的には、例えば、入力値取得部３４１＿３は、図９に示された入力値を取得する。入力値取得部３４１＿３は、取得した入力値を示す入力値情報を設定コード生成部３４４に出力する。
【００６３】
期待値取得部３４１＿４は、不備判定部３３３から入力された必要情報から比較コードを生成するために用いる期待値を取得する。具体的には、例えば、期待値取得部３４１＿４は、図９に示された「６．遷移先情報」に関連付けられた期待する値「ｓｕｃｃｅｓｓ」を取得する。また、期待値取得部３４１＿４は、図９に示された「７．セッション」に関連付けられたキー名「ｂｏｏｋＬｉｓｔ」と期待する値の型「ＡｒｒａｙＬｉｓｔ＜Ｂｏｏｋ＞」と期待する値「％ｌｉｓｔ１％」とを取得する。
【００６４】
また、期待値取得部３４１＿４は、図９に示された「９．Ａｃｔｉｏｎメッセージ」に関連付けられたキー名「ＡＰＭＳＧ−０００１」と期待する値の型「Ｓｔｒｉｎｇ」と期待する値「Ｓｕｃｃｅｓｓ！」とを取得する。
期待値取得部３４１＿４は、取得した期待値を示す期待値情報を比較コード生成部３４６に出力する。
【００６５】
関数宣言コード生成部３４２は、コメント取得部３４１＿１から入力されたコメント情報が示すコメントに基づいて、関数を宣言する関数宣言コードと、その関数の説明を示すコメントとを生成する。具体的には、例えば、関数宣言コード生成部３４２は、コメント情報が示す図９の項番、試験内容、前提条件、入力値の説明及び期待値の説明を用いて、図１１に示されるコードを生成する。
【００６６】
図１１は、関数宣言コード生成部３４２により出力されるコードの一例である。同図において、コードブロックＣ１２１と、コードブロックＣ１２２とが示されている。コードブロックＣ１２１の１行目は、ＲｕｎＷｉｔｈアノテーションを宣言するＲｕｎＷｉｔｈアノテーションコードである。コードブロックＣ１２１の２行目は、クラスを宣言するクラス宣言コードである。
【００６７】
コードブロックＣ１２１の３行目から９行目までは、関数の説明を示すコメント文である。このコメント文は、それぞれ図９の試験内容、前提条件、入力値の説明及び期待値の説明に対応している。なお、この部分はコメントアウトされており、テストコードが実行されるときには、この部分は無視される。
【００６８】
コードブロックＣ１２１の１０行目は、Ｔｅｓｔアノテーションを宣言するＴｅｓｔアノテーションコードである。コードブロックＣ１２１の１１行目は、関数宣言コードである。１１行目の「ｔｅｓｔＥｘｅｃｕｔｅＮｏＮＯ１（）」の「ＮＯ１」は、図９の項番に対応している。
【００６９】
図１１の例において、関数宣言コード生成部３４２は、１行目のＲｕｎＷｉｔｈアノテーションコードを生成する。次に、関数宣言コード生成部３４２は、２行目のクラス宣言コードを生成する。次に、関数宣言コード生成部３４２は、図９の試験内容、前提条件、入力値の説明及び期待値の説明を参照して、３行目から９行目までのコメント文を生成する。次に、関数宣言コード生成部３４２は、１０行目のＴｅｓｔアノテーションコードを生成する。次に、関数宣言コード生成部３４２は、図９の項番を参照して、１１行目の関数宣言コードを生成する。
【００７０】
関数宣言コード生成部３４２は、生成したコードをモックコード生成部３４３に出力する。
モックコード生成部３４３は、モック取得部３４１＿２から入力されたモック情報に基づいて、モックコードを生成する。具体的には、例えば、モックコード生成部３４３は、モック情報が示す図９のモック名、戻り値及び例外と図１０のモック情報とに基づいて、図１２に示されるモックコードを生成する。
【００７１】
図１２は、モックコード生成部３４３により出力されるコードの一例である。同図において、コードブロックＣ１２１、Ｃ１２２、Ｃ１３１及びＣ１３２が示されている。コードブロックＣ１２１及びＣ１２２におけるコードは、関数宣言コード生成部３４２から入力されたコードであるが、図１１のコードと同一であるのでそのコードを省略する。コードブロックＣ１３１及びＣ１３２におけるコードは、モックコード生成部３４３により生成されたコードであり、実線で囲われている。以後の図では、その時点で生成したコードを実線で囲み、それまでに既に生成されたコードは省略し、破線で囲む。
【００７２】
コードブロックＣ１３１は、テスト対象コードが依存する処理を置き換えるコードである。モックコード生成部３４３は、図１０のモックにするクラス名「ＢｏｏｋＭａｎａｇｅｒＳｅｒｖｉｃｅＢｅａｎ」と、モック情報の戻り値の値「Ｌｉｓｔ＜Ｂｏｏｋ＞」と、例外クラス名「ＭａｎａｇｅｒＥｘｃｅｐｔｉｏｎ」とに基づいて、コードブロックＣ１３１のコードを生成する。
【００７３】
コードブロックＣ１３２は、現在効果があるモックを廃棄するコードである。モックコード生成部３４３は、図１０のモックにするクラス名「ＢｏｏｋＭａｎａｇｅｒＳｅｒｖｉｃｅＢｅａｎ」に基づいて、コードブロックＣ１３２のコードを生成する。
【００７４】
モックコード生成部３４３は、生成したモックコードを関数宣言コード生成部３４２から入力されたコードに挿入する。そして、モックコード生成部３４３は、挿入により変更したコードを設定コード生成部３４４に出力する。
【００７５】
設定コード生成部３４４は、入力値取得部３４１＿３から入力された入力値情報が示す入力値に基づいて、設定コードを生成する。具体的には、例えば、設定コード生成部３４４は、入力値情報が示す図９の入力値に基づいて、図１３に示される設定コードを生成する。
【００７６】
図１３は、設定コード生成部３４４により出力されるコードの一例である。同図において、コードブロックＣ１２１、Ｃ１２２、Ｃ１３１、Ｃ１３２及びＣ１４０が示されている。コードブロックＣ１２１、Ｃ１２２、Ｃ１３１及びＣ１３２のコードは、モックコード生成部３４３から入力されたコードであるが、図１２のコードと同一であるのでそのコードを省略する。コードブロックＣ１４０のコードは、設定コード生成部３４４により生成されたコードであり、入力値を設定する設定コードである。
【００７７】
設定コード生成部３４４は、図９の入力値「％ｆｏｒｍ１％」に基づいて、コードブロックＣ１４０のコードを生成する。そして、設定コード生成部３４４は、生成したコードをモックコード生成部３４３から入力されたコードに挿入する。そして、設定コード生成部３４４は、挿入により変更したコードを実行コード生成部３４５に出力する。
【００７８】
実行コード生成部３４５は、テスト対象プログラムを実行する実行コードを生成する。具体的には、例えば、実行コード生成部３４５は、図１４に示される実行コードを生成する。
図１４は、実行コード生成部３４５により出力されるコードの一例である。同図において、コードブロックＣ１２１、Ｃ１２２、Ｃ１３１、Ｃ１３２、Ｃ１４０及びＣ１５０が示されている。コードブロックＣ１２１、Ｃ１２２、Ｃ１３１、Ｃ１３２及びＣ１４０のコードは、設定コード生成部３４４から入力されたコードであるが、図１３のコードと同一であるのでそのコードを省略する。コードブロックＣ１５０のコードは、実行コード生成部３４５により生成されたコードであり、テスト対象プログラムを実行する実行コードである。
【００７９】
実行コード生成部３４５は、生成した実行コードを設定コード生成部３４４から入力さされたコードに挿入する。実行コード生成部３４５は、挿入により変更したコードを比較コード生成部３４６に出力する。
比較コード生成部３４６は、期待値３４１＿４から入力された期待値情報が示す期待値に基づいて、比較コードを生成する。具体的には、例えば、比較コード生成部３４６は、期待値情報が示す図９の期待値に基づいて、図１５中に示される設定コードを生成する。
【００８０】
図１５は、比較コード生成部３４６により出力されるコードの一例である。同図において、コードブロックＣ１２１、Ｃ１２２、Ｃ１３１、Ｃ１３２、Ｃ１４０、Ｃ１５０及びＣ１６０が示されている。コードブロックＣ１２１、Ｃ１２２、Ｃ１３１、Ｃ１３２、Ｃ１４０及びＣ１５０のコードは、実行コード生成部３４５から入力されたコードであるが、図１４のコードと同一であるのでそのコードを省略する。コードブロックＣ１６０のコードは、比較コード生成部３４６により生成されたコードであり、ページ遷移が正しく行われたかを確かめるコードである。
【００８１】
比較コード生成部３４６は、図９の比較項目における遷移先情報とその遷移先情報の期待する値「ｓｕｃｃｅｓｓ」とに基づいて、コードブロックＣ１６０のコードを生成する。
比較コード生成部３４６は、生成した比較コードを実行コード生成部３４５から入力さされたコードに挿入する。比較コード生成部３４６は、挿入により変更したコードを比較項目存在判定部３４７に出力する。
【００８２】
続いて、比較項目存在判定部３４７は、比較コードを生成していない比較項目がまだ存在するか否か判定する。比較コードを生成していない比較項目がまだ存在する場合、生成部３４０は、比較コード生成部３４６の処理に戻る。比較コードを生成していない比較項目がもう存在しない場合、比較項目存在判定部３４７は、比較コード生成部３４６から入力されたコードをテストコードＴＣとして、テストコード記憶部２００に記憶させる。
【００８３】
図１５に示されたコードでは、図９の比較項目のうち「リクエスト」の比較コードを生成していないので、比較項目存在判定部３４７は、比較項目が存在すると判定する。そして、生成部３４０は、比較コード生成部３４６の処理に戻る。次に、比較コード生成部３４６は、図１６中に示されるリクエスト情報の比較コードを生成する。
【００８４】
図１６は、比較項目存在判定部３４７から１回戻った後に比較コード生成部３４６が出力するコードの一例である。同図において、コードブロックＣ１２１、Ｃ１２２、Ｃ１３１、Ｃ１３２、Ｃ１４０、Ｃ１５０、Ｃ１６０及びＣ１７０が示されている。コードブロックＣ１２１、Ｃ１２２、Ｃ１３１、Ｃ１３２、Ｃ１４０、Ｃ１５０及びＣ１６０のコードは、比較コード生成部３４６から１回目に出力されたコードであるが、図１５のコードと同一であるのでそのコードを省略する。コードブロックＣ１７０のコードは、比較項目存在判定部３４７から１回戻った後に比較コード生成部３４６が生成したコードであり、比較項目「セッション」の期待値と実際の値とを比較する比較コードである。
【００８５】
比較コード生成部３４６は、コードブロックＣ１７０の１行目において、比較項目「セッション」の「キー名」に基づいて、実際の値を取得するコードを生成する。比較コード生成部３４６は、コードブロックＣ１７０の２行目から４行目において、比較項目「セッション」の「期待する値の型」と「期待する値」に基づいて、期待値を取得するコードを生成する。そして、比較コード生成部３４６は、コードブロックＣ１７０の５行目において、比較項目「セッション」の期待値と実際の値とを比較するコードを生成する。
【００８６】
すなわち、比較コード生成部３４６は、セッションに格納されているすべての情報を一律照合するのではなく、キー名の値（キー情報とも称す）とそのキー名の値の期待値とを比較した結果を出力するテストコードを生成する。これにより、ユーザは、テストコードを実行することにより、セッションに格納されている個別のキー情報が正しいか否かを確認することができる。
【００８７】
比較コード生成部３４６は、生成したコード（例えば、コードブロックＣ１７０のコード）を比較コード生成部３４６が１回目に出力したコードに挿入する。比較コード生成部３４６は、挿入により変更したコードを比較項目存在判定部３４７に出力する。
【００８８】
図１７は、比較項目存在判定部３４７から２回戻った後に比較コード生成部３４６が出力するコードの一例である。同図において、コードブロックＣ１２１、Ｃ１２２、Ｃ１３１、Ｃ１３２、Ｃ１４０、Ｃ１５０、Ｃ１６０、Ｃ１７０及びＣ１８０が示されている。コードブロックＣ１２１、Ｃ１２２、Ｃ１３１、Ｃ１３２、Ｃ１４０、Ｃ１５０、Ｃ１６０及びＣ１７０のコードは、比較項目存在判定部３４７から２回戻った後に比較コード生成部３４６が出力したコードであるが、図１６のコードと同一であるのでそのコードを省略する。コードブロックＣ１８０のコードは、比較コード生成部３４６により生成されたコードであり、比較項目「セッション」の期待値と実際の値とを比較する比較コードである。
【００８９】
比較コード生成部３４６は、コードブロックＣ１８０の１行目において、比較項目「ＡＣＴＩＯＮメッセージ」の「キー名」に基づいて、キー名を代入するコードを生成する。比較コード生成部３４６は、コードブロックＣ１８０の２行目において、比較項目「ＡＣＴＩＯＮメッセージ」の「期待する値の型」と「期待する値」とに基づいて、期待値を代入するコードを生成する。そして、比較コード生成部３４６は、コードブロックＣ１８０の３行目において、比較項目「ＡＣＴＩＯＮメッセージ」の期待値と実際の値とを比較するコードを生成する。
【００９０】
すなわち、比較コード生成部３４６は、そのＡＣＴＩＯＮメッセージが期待する値となっているか否かを出力するテストコードを生成する。これにより、ユーザは、テストコードを実行することにより、ＡＣＴＩＯＮメッセージが正しいか否かを確認することができる。
【００９１】
比較コード生成部３４６は、生成したコード（例えば、コードブロックＣ１８０のコード）を比較コード生成部３４６が２回目に出力したコードに挿入する。比較コード生成部３４６は、挿入により変更したコードを比較項目存在判定部３４７に出力する。
【００９２】
なお、本実施形態では、テスト対象プログラムが利用する利用プログラムの例としてＡＰ基盤ソフトを説明したが、これに限らず、利用プログラムは、複数のテスト対象プログラムにより共通して使用されるプログラムであり、テスト対象プログラムに共通する利用環境を提供するものであればよい。
【００９３】
図１８は、本実施形態におけるテストコード生成装置の処理の流れを示すフローチャートである。まず、テストケース取得部３３１は、記憶部１０からテストケースファイルを読み出す（ステップＳ１０１）。次に、必要情報抽出部３３２は、読み出したテストケースファイルに含まれるテストケースからテストコード生成に必要な必要情報を抽出する（ステップＳ１０２）。
【００９４】
次に、不備判定部３３３は、必要情報に不備があるか否か判定する（ステップＳ１０３）。必要情報に不備がある場合（ステップＳ１０３  ＹＥＳ）、表示制御部３５０は、修正箇所取得部３３４により取得された修正すべき箇所と不備の原因とを表示させる（ステップＳ１０５）。
【００９５】
次に、表示制御部３５０は、修正すべき箇所に付されたリンクが押されたか否か判定する（ステップＳ１０６）。修正すべき箇所に付されたリンクが押された場合（ステップＳ１０６  ＹＥＳ）、表示制御部３５０は、テストケースファイルを開き、テストケースファイル中の不備のある入力箇所を入力が受け付けられる状態で表示させる（ステップＳ１０７）。制御部３０は、テストコード生成を再度指示する旨が入力されたか否か判定する（ステップＳ１０８）。
【００９６】
テストコード生成を再度指示する旨が入力された場合（ステップＳ１０８  ＹＥＳ）、制御部３０は、ステップＳ１０１の処理に戻る。
一方、ステップＳ１０３において、必要情報に不備がない場合（ステップＳ１０３  ＮＯ）、生成部３４０は、テストコードを生成する（ステップＳ１０４）。以上で、本フローチャートの処理を終了する。
【００９７】
図１９は、図１８のステップＳ１０４のテストコード生成の処理の流れを示すフローチャートである。まず、コメント取得部３４１＿１は、必要情報からコメントを取得する（ステップＳ２０１）。次に、関数宣言コード生成部３４２は、コメントに基づいて、関数宣言コードを生成する（ステップＳ２０２）。
【００９８】
次に、モック取得部３４１＿２は、必要情報からモック情報を取得する（ステップＳ２０３）。次に、モックコード生成部３４３は、モック情報に基づいて、モックコードを生成する（ステップＳ２０４）。
次に、入力値取得部３４１＿３は、必要情報から入力値を取得する（ステップＳ２０５）。次に、設定コード生成部３４４は、入力値に基づいて、設定コードを生成する（ステップＳ２０６）。次に、実行コード生成部３４５は、実行コードを生成する（ステップＳ２０７）。
【００９９】
次に、期待値取得部３４１＿４は、必要情報から期待値を取得する（ステップＳ２０８）。次に、比較コード生成部３４６は、期待値に基づいて、比較コードを生成する（ステップＳ２０９）。次に、比較項目存在判定部３４７は、比較コードを生成していない比較項目がまだ存在するか否か判定する（ステップＳ２１０）。
【０１００】
比較項目存在判定部３４７が比較コードを生成していない比較項目がまだ存在すると判定した場合（ステップＳ２１０  ＹＥＳ）、生成部３４０は、ステップＳ２０９の処理に戻る。一方、比較項目存在判定部３４７が比較コードを生成していない比較項目がもう存在しないと判定した場合（ステップＳ２１０  ＮＯ）、比較項目存在判定部３４７は、生成したテストコードＴＣをテストコード記憶部２００に記憶させる（ステップＳ２１１）。以上で、本フローチャートの処理を終了する。
【０１０１】
＜効果＞
本実施形態におけるテストコード生成装置１００は、テスト対象プログラムの処理が正常に終了したかどうかだけではなく、テスト対象プログラムの出力値と期待値とを照合した結果を出力するテストコードを生成する。そして、テスト実行装置３００は、生成されたテストコードを実行する。これにより、ユーザは、テスト対象プログラムが正しく動作したか否かの結果を知ることができる。ゆえに、テストコード生成装置１００は、ユーザによる動作確認作業の効率を向上させることができる。
【０１０２】
また、本実施形態のテストコード生成装置１００により生成されるテストコードは、テスト対象プログラムを実行した際の実際の値と期待値との照合を行うので、テストコード生成装置１００は、これまで人が行っていた照合における判断ミス及び見落としを軽減し、テストの確実性を高めることができる。
【０１０３】
本実施形態におけるテストコード生成装置１００は、テスト対象プログラムの戻り値が正しいか否かの結果だけでなく、テスト対象プログラムの中間結果が正しいか否かの結果を示すテストコードを生成する。これにより、ユーザは、テスト実行装置３００により生成されたテストコードが実行されることにより、テスト対象プログラムの中間結果が正しいか否かを確認することができる。
【０１０４】
本実施形態におけるテストコード生成装置１００は、比較項目としてテスト対象プログラムの戻り値と中間結果を示す比較項目とが設定された場合、戻り値が正しいか否かの結果と、その中間結果が正しいか否かの結果とを組み合わせたテスト結果確認を行うことを可能とするテストコードを生成する。テスト実行装置３００により生成されたテストコードが実行されることにより、ユーザはテスト対象プログラムの戻り値が正しいか否かの結果とテスト対象プログラムの中間結果が正しいか否かの両方を確認することができる。
【０１０５】
従来、ユーザは、これまでＡＰ基盤ソフトが保持する情報（セッション情報、画面出力メッセージ、画面遷移先情報）を、画面に表示された内容から判断する方法するしかなかった。それに対し、本実施形態のテストコード生成装置１００は、ＡＰ基盤ソフトが保持する情報を正しいか否かを出力するテストコードを生成する。テスト実行装置３００により生成されたテストコードが実行されることにより、ユーザは、ＡＰ基盤ソフトが保持する情報にアクセスする処理に関するテスト対象プログラムをテストする場合にも、簡単にＡＰ基盤ソフトが保持する情報が正しいか否かを確認することができる。
【０１０６】
具体的には、ユーザは、ＡＰ基盤ソフトが保持するセッション情報にアクセスする処理に関するテスト対象プログラムをテストする場合にも、簡単にセッション情報が正しいか否かを確認することができる。また、ユーザは、画面を表示することなくＡＰ基盤ソフトが保持する画面出力メッセージが正しいか否かを容易に確認することができる。
【０１０７】
本実施形態のテストコード生成装置１００は、テストケースに入力すべき項目（期待値）は、テスト対象プログラムの属性に応じて選択項目や入力箇所が切り替わるように編集画面を制御しているため、多種多様な組み合わせのうち、ユーザは必要最小限の項目を意識すれば良く、テストコード生成のための情報整理を効率的に行うことが可能となる。
これにより、ユーザは、ソフトウェアフレームワークとのインタフェース又はＡＰ基盤ソフトとのインタフェースを意識する必要がなく、簡単にテストコード生成に必要な情報（テストケース）を入力することができる。
【０１０８】
本実施形態のテストコード生成装置１００は、テストコード生成に必要な情報（テストケース）に不備があった場合は、該当の原因と修正すべき箇所を表示して再入力を促すため、ユーザは迷うことなく記入不備の改修を即座に実施することができる。これにより、テストコード生成装置１００は、入力ミスにより正しいテストコードを生成できないということを防ぐことができる。
【０１０９】
また、本実施形態のテストコード生成装置１００の各処理を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、当該記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、テストコード生成装置１００に係る上述した種々の処理を行ってもよい。
【０１１０】
なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものであってもよい。また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【０１１１】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【０１１２】
以上、本発明の実施形態について図面を参照して詳述したが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【０１１３】
１  テスト実行システム
１０  記憶部
２０  入力部
３０  制御部
４０  表示部
１００  テストコード生成装置
２００  テストコード記憶部
３００  テスト実行装置
３０１  プログラム記憶部
３０２  テスト実行部
３０３  テスト結果記憶部
３１０  比較項目絞り込み部
３１１  テスト対象プログラム取得部
３１２  属性判定部
３１３  比較項目取得部
３２０  テストケース編集部
３３０  前処理部
３３１  テストケース取得部（取得部）
３３２  必要情報抽出部
３３３  不備判定部
３３４  修正箇所取得部
３４０  生成部
３４１  テストケース読出部  
３４１＿１  コメント取得部
３４１＿２  モック取得部
３４１＿３  入力値取得部
３４１＿４  期待値取得部
３４２  関数宣言コード生成部
３４３  モックコード生成部
３４４  設定コード生成部
３４５  実行コード生成部
３４６  比較コード生成部
３４７  比較項目存在判定部
３５０  表示制御部
【図１】
2013029999.tif 000003
【図２】
2013029999.tif 000004
【図３】
2013029999.tif 000005
【図４】
2013029999.tif 000006
【図５】
2013029999.tif 000007
【図６】
2013029999.tif 000008
【図７】
2013029999.tif 000009
【図８】
2013029999.tif 000010
【図９】
2013029999.tif 000011
【図１０】
2013029999.tif 000012
【図１１】
2013029999.tif 000013
【図１２】
2013029999.tif 000014
【図１３】
2013029999.tif 000015
【図１４】
2013029999.tif 000016
【図１５】
2013029999.tif 000017
【図１６】
2013029999.tif 000018
【図１７】
2013029999.tif 000019
【図１８】
2013029999.tif 000020
【図１９】
2013029999.tif 000021