(57)【要約】【課題】ＭＶＣアーキテクチャで開発されたソフトウェアのコントローラ層の業務処理のテストを簡易化する。【解決手段】コントローラ層の業務処理メソッドの中の１つを、テスト対象の業務処理メソッドとして選択させるために前記コントローラ層の業務処理メソッドの一覧を表示させる一覧表示手段と、テスト対象の業務処理メソッドを直接的に起動するプログラム起動手段と、テスト対象の業務処理メソッドの業務処理を検証するために入力された値を用いて前記テスト対象の業務処理メソッドを実行する業務処理実行手段と、テスト対象の業務処理メソッドを実行した処理結果を表示させる処理結果表示手段と、一覧表示手段、プログラム起動手段、業務処理実行手段及び前記処理結果表示手段のそれぞれの実行を制御する制御手段と、を備えるソフトウェア業務処理テスト簡易化装置である。【選択図】図１
2014056388.tif 000002
【特許請求の範囲】
【請求項１】
データ処理を担うモデル層、入出力処理を担うビュー層並びに前記モデル層及び前記ビュー層の連携制御を担うコントローラ層から構成されたＭＶＣアーキテクチャで開発されたソフトウェアについて、前記コントローラ層の業務処理メソッドのテストを簡易化する装置であって、
前記コントローラ層の業務処理メソッドの中の１つを、テスト対象の業務処理メソッドとして選択させるために前記コントローラ層の業務処理メソッドの一覧を表示させる一覧表示手段と、
前記テスト対象の業務処理メソッドを直接的に起動するプログラム起動手段と、
前記テスト対象の業務処理メソッドの業務処理を検証するために入力された値を用いて前記テスト対象の業務処理メソッドを実行する業務処理実行手段と、
前記テスト対象の業務処理メソッドを実行した処理結果を表示させる処理結果表示手段と、
前記一覧表示手段、前記プログラム起動手段、前記業務処理実行手段及び前記処理結果表示手段のそれぞれの実行を制御する制御手段と、
を備えることを特徴とするソフトウェア業務処理テスト簡易化装置。
【請求項２】
前記ソフトウェアは、前記コントローラ層の業務処理メソッドについてクラス名、メソッド名及び引数の型を少なくとも含む業務処理メソッド情報を保有しており、
前記プログラム起動手段は、
前記テスト対象の業務処理メソッドについての前記業務処理メソッド情報を取得してコントローラ層起動プログラムに渡すことにより、前記コントローラ層起動プログラムが前記ビュー層を経由せずに前記コントローラ層の前記テスト対象の業務処理メソッドを起動するとともに、ＧＵＩから入力された前記値を前記テスト対象の業務処理メソッドに渡す手段を備えることを特徴とする
請求項１に記載のソフトウェア業務処理テスト簡易化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムのソフトウェア開発における、ソフトウェア業務処理テスト簡易化装置に関する。
【背景技術】
【０００２】
情報処理システムにおけるソフトウェアの品質を確保するために、適格な設計とその実装が必要である。そのためには、ソフトウェアを動作させて処理結果を確認するテストを行い、設計と実装の正確さを検証する必要がある。
【０００３】
テスト工程の初期では、単体テストと呼ばれる、メソッド単位に行う動作検証を充分に実施することが重要である。ソフトウェア開発におけるテスト工程の内訳として、前記の単体テストの他に、各モジュールを結合させた状態でテストを実施する結合テスト、情報処理システム全体をテストする統合テスト、ユーザによる受け入れテストや本番環境でのテストを実施する運用テスト等がある。
【０００４】
テスト工程においては、テスト対象の各プログラムについて様々なケースを想定して動作を検証する。そのため、ソフトウェア開発においてテスト工程に多大な時間を要することになる。したがって、テストを簡易化して所要時間を短縮する装置や方法が公知となっている。これらの装置や方法は、ソフトウェア開発の効率を向上させると同時に、人為的ミスを軽減するなどテストの精度を高め、ソフトウェアの品質も向上させる。
【０００５】
情報処理システムのソフトウェア設計方式の一つに、ＭＶＣアーキテクチャ（Ｍｏｄｅｌ―Ｖｉｅｗ―Ｃｏｎｔｒｏｌｌｅｒ）がある。図２は、ＭＶＣアーキテクチャの構成を説明する概念図である。ＭＶＣアーキテクチャは、モデル層（Ｍｏｄｅｌ）、ビュー層（Ｖｉｅｗ）、コントローラ層（Ｃｏｎｔｒｏｌｌｅｒ）から構成される。モデル層はデータ処理を、ビュー層は入出力処理を、コントローラ層はモデル層とビュー層の連携の制御を担う。例えばＪａｖａ（登録商標）言語においては、モデル層はＥＪＢ（Ｅｎｔｅｐｒｉｓｅ  ＪａｖａＢｅａｎｓ（登録商標））、ビュー層はＪＳＰ（Ｊａｖａ  Ｓｅｒｖｌｅｔ  Ｐａｇｅｓ（登録商標））、コントローラ層はサーブレット（Ｓｅｒｖｌｅｔ（登録商標））という技術で実装する。
【０００６】
従来のＭＶＣアーキテクチャのソフトウェア開発におけるテスト工程では、ＭＶＣアーキテクチャの各層ごとにテストを実施することがあった。コントローラ層も同様であり、コントローラ層の業務処理メソッドをテストするために、ビュー層とコントローラ層の両方を用意して業務処理メソッドのテストを行っていた。コントローラ層の業務処理メソッドを動作させるためには、ビュー層を起動して、検証するための値をビュー層から入力する必要があった。
【０００７】
前記テスト工程では、業務処理メソッドの処理結果の正誤を確認することで、業務処理メソッドの実装の正誤を確認する。この確認作業のために、統合開発環境（ＩＤＥ：Ｉｎｔｅｇｒａｔｅｄ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｅｎｖｉｒｏｎｍｅｎｔ）と呼ばれる統合プログラミングツールを用いたプログラムの開発や、テスティングフレームワークを用いて単体テストの実施をすることが主流になっている。代表例として、ＩＤＥではエクリプス（Ｅｃｌｉｐｓｅ（商標））が、テスティングフレームワークではテストエヌジー（ＴｅｓｔＮＧ（登録商標））やジェイユニット（ＪＵｎｉｔ（登録商標））等が知られている。
【０００８】
プログラムのテスト作業をＩＤＥにおいて実施できるプラグイン形態のソフトウェアが公知の技術となっている。例えば、特許文献１に記載の技術のように、ＩＤＥにプラグインとして組み込まれ、プログラミング作業と非同期にテスト用ソースコードを生成する技術が公知となっている。ＩＤＥにテスト作業を簡略化する機能を追加することで、ソフトウェア開発環境を一元化し、作業効率を高め、人為的ミスを抑止する効果がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１２−８４１３１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかし、特許文献1のような従来の技術では、ソフトウェア開発者は、ＭＶＣアーキテクチャで開発されたソフトウェアのコントローラ層における業務処理メソッドの処理をテストするために、画面などを含むビュー層のプログラムを事前に実装し、コントローラ層を起動する前にビュー層のプログラムを起動する必要があった。そのため、コントローラ層の業務処理メソッドの処理動作のテストを行う際に毎回ビュー層を起動する必要があり、したがって、作業量が増大し、ソフトウェア開発の効率を下げていた。
【００１１】
本発明は、上記課題を解決するためのものであり、ＭＶＣアーキテクチャで開発されたソフトウェアについて、コントローラ層の業務処理メソッドの単体テストを、ビュー層プログラムの実装及び起動をすることなく可能にすることで、テスト実施者のソフトウェア操作及びプログラム実装作業を簡易化し、テスト作業量を軽減することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、上記課題を解決するために以下の構成を提供する。
本発明によるソフトウェア業務処理テスト簡易化装置の一態様は、データ処理を担うモデル層、入出力処理を担うビュー層並びに前記モデル層及び前記ビュー層の連携制御を担うコントローラ層から構成されたＭＶＣアーキテクチャで開発されたソフトウェアについて、前記コントローラ層の業務処理メソッドのテストを簡易化する装置であって、前記コントローラ層の業務処理メソッドの中の１つを、テスト対象の業務処理メソッドとして選択させるために前記コントローラ層の業務処理メソッドの一覧を表示させる一覧表示手段と、前記テスト対象の業務処理メソッドを直接的に起動するプログラム起動手段と、
前記テスト対象の業務処理メソッドの業務処理を検証するために入力された値を用いて前記テスト対象の業務処理メソッドを実行する業務処理実行手段と、前記テスト対象の業務処理メソッドを実行した処理結果を表示させる処理結果表示手段と、前記一覧表示手段、前記プログラム起動手段、前記業務処理実行手段及び前記処理結果表示手段のそれぞれの実行を制御する制御手段と、を備える。
【００１３】
上記装置において、前記ソフトウェアは、前記コントローラ層の業務処理メソッドについてクラス名、メソッド名及び引数の型を少なくとも含む業務処理メソッド情報を保有しており、前記プログラム起動手段は、前記テスト対象の業務処理メソッドについての前記業務処理メソッド情報を取得してコントローラ層起動プログラムに渡すことにより、前記コントローラ層起動プログラムが前記ビュー層を経由せずに前記コントローラ層の前記テスト対象の業務処理メソッドを起動するとともに、ＧＵＩから入力された前記値を前記テスト対象の業務処理メソッドに渡す手段を備えることが好適である。
【発明の効果】
【００１４】
以上の構成により、本発明では、ＭＶＣアーキテクチャで開発されたソフトウェアのコントローラ層の業務処理メソッドの単体テストにおいて、ビュー層を経由することなく、検証のための値であるテストデータの入力のみでコントローラ層の業務処理メソッドを起動でき、業務処理メソッドを一覧表示させた中からテスト対象の業務処理メソッドを可視的に選択できて、業務処理メソッドを実行した処理結果を表示させて可視的に確認できるため、コントローラ層の単体テスト作業が簡略化される。また、ビュー層を実装することなくテストが可能になるため、ソフトウェア開発におけるテスト作業効率が向上する。また、本発明の実施形態を、ＩＤＥのプラグインで利用することを想定したため、プログラミング作業やテスト作業の環境を一元化することで、開発環境を簡素化する。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施の形態に係るソフトウェア業務処理テスト簡易化装置の概略構成を示すブロック図である。
【図２】情報処理システムのソフトウェア設計方式の一つであるＭＶＣアーキテクチャの構成を説明する概念図である。
【図３】本発明の一実施の形態に係るソフトウェア業務処理テスト簡易化装置の行う処理の概要を示すフローチャートである。
【図４】ソフトウェア業務処理テスト簡易化装置のＧＵＩの一部を構成する入力値表示部の実施例を示す図である。
【図５】ソフトウェア業務処理テスト簡易化装置のＧＵＩの一部を構成する処理結果表示部の実施例を示す図である。
【図６】ソフトウェア業務処理テスト簡易化装置のＧＵＩの一部を構成する処理結果表示部において、ツリー構造によって処理結果を表示する場合の実施例を示す図である。
【図７】業務処理メソッドをテスト対象ソフトウェアから抽出して、ＧＵＩの入力値表示部に一覧表示させる機能の概要を示すブロック図である。
【図８】ＧＵＩの入力値表示部から入力値保持部に値を渡す機能の概要を示すブロック図である。
【図９】業務処理実行部内において、業務処理メソッドのテストを実行するためにコントローラ層を起動させるプログラムの機能を示すブロック図である。
【図１０】業務処理実行部内において、業務処理メソッドを起動・実行させるプログラムの処理の概要を示すフローチャートである。
【図１１】コントローラ層起動プログラムの実施例を表すソースコードである。
【図１２】テスト対象となる業務処理メソッドとそのメソッドを有するクラスの実施例を表すソースコードである。
【図１３】業務処理メソッドの引数となるＤａｔａ  Ｔｒａｎｓｆｅｒ  Ｏｂｊｅｃｔ（ＤＴＯ）クラスの実施例を表すソースコードである。
【図１４】ＧＵＩの入力値表示部への入力及びスクリプトへの記述の実施例を表すソースコードである。
【図１５】ソフトウェア業務処理テスト簡易化装置のテストコード生成部におけるテスト用ソースコード生成の概略構成を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施の形態に係るソフトウェア業務処理テスト簡易化装置について、図面に基づき説明する。
【００１７】
図１は、本実施の形態に係るソフトウェア業務処理テスト簡易化装置の概略構成を示すブロック図である。
【００１８】
ソフトウェア業務処理テスト簡易化装置１００は、コントローラ層制御部１０１と、業務処理実行部１０２と、処理結果表示部１０３と、テストコード生成部１０４の各処理部と、グラフィカルユーザインタフェース（ＧＵＩ：Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）１０５から構成されている。
【００１９】
コントローラ層制御部１０１は、テスト実施者により選択された、テスト対象ソフトウェア１２０の有する業務処理メソッド１２１の１つをテスト対象プログラムとして読み込み、業務処理実行部１０２、処理結果表示部１０３、テストコード生成部１０４の起動、実行指示等の制御を行う。
【００２０】
業務処理実行部１０２は、コントローラ層制御部１０１の指示に応じて、選択されたテスト対象の業務処理メソッド１２１のソースコードと、ＧＵＩ１０５から入力された値を受け取り、当該業務処理メソッド１２１を実行させ、処理結果を処理結果保持部１１３へ格納する。
ただし、業務処理メソッド１２１がデータベース（ＤＢ：Ｄａｔａｂａｓｅ）１１１へのアクセスを要する場合、テスト対象の業務処理メソッド１２１の実行前に、予想される処理結果を処理結果保持部１１３に格納する。その後、前記業務処理メソッド１２１のソースコードと前記入力値を読み込んで実行し、実際の処理結果を処理結果保持部１１３へ格納する。
【００２１】
処理結果表示部１０３は、コントローラ層制御部１０１の指示に応じて、処理結果保持部１１３の処理結果を取得し、業務処理メソッド１２１の処理結果をＧＵＩ１０５の処理結果表示部１０７に表示させる。
【００２２】
テストコード生成部１０４は、コントローラ層制御部１０１の指示に応じて、業務処理メソッド１２１と、入力値保持部１１２から取得した入力値と、処理結果保持部１１３から取得した処理結果とからテスト用ソースコードを生成する。
【００２３】
ＧＵＩ１０５は、単体テストで使用する業務処理メソッド１２１の一覧表示と、選択した業務処理メソッド１２１を有するクラス名の表示欄と、前記業務処理メソッド１２１の引数の型の表示欄と、前記業務処理メソッド１２１の戻り値の型の表示欄と、前記業務処理メソッド１２１に渡す実行命令（引数）の入力欄と、テスト実行ボタンとで構成される入力値表示部１０６と、前記業務処理メソッド１２１の処理結果を表示する処理結果表示部１０７とを備えている。
【００２４】
ソフトウェア業務処理テスト簡易化装置１００の外部には、コントローラ層の業務処理メソッドの単体テストに必要なデータを格納する、ＤＢ１１１と、入力値保持部１１２と、処理結果保持部１１３とを備えている。
【００２５】
以上の構成により、本実施の形態に係るソフトウェア業務処理テスト簡易化装置１００では、選択された業務処理メソッド１２１について、業務処理メソッド１２１の単体テストを実行し、テスト用ソースコードを生成する。
【００２６】
以上のように構成されたソフトウェア業務処理テスト簡易化装置１００の行うコントローラ層の業務処理メソッドのテストの概要について説明する。
【００２７】
図３は、ソフトウェア業務処理テスト簡易化装置１００を使用したコントローラ層の業務処理メソッドの単体テスト及びテスト用ソースコード生成の概要を示すフローチャートである。図１の符号を参照しつつ説明する。
【００２８】
コントローラ層制御部１０１は、業務処理実行部１０２、処理結果表示部１０３、テストコード生成部１０４のそれぞれを起動する（ステップＳ２０１）。
テスト実施者はＧＵＩ１０５の入力値表示部１０６からテスト対象ソフトウェア１２０のコントローラ層の業務処理メソッドの一覧の中から任意の業務処理メソッド１２１をテスト対象プログラムとして選択する（ステップＳ２０２）。
テスト実施者は、ＧＵＩ１０５の入力値表示部１０６から業務処理メソッド１２１で動作を検証するための値を入力する。入力値は入力値保持部１１２へ格納される（ステップＳ２０３）。
【００２９】
選択された業務処理メソッド１２１がＤＢ１１１へのアクセスを要する場合（ステップＳ２０４）、業務処理実行部１０２は、コントローラ層制御部１０１の指示に応じて、予想されるＤＢアクセスの結果を処理結果保持部１１３に格納する（ステップＳ２０５）。
業務処理実行部１０２は、コントローラ層制御部１０１の指示に応じて、入力値保持部１１２から取得した前記入力値を、前記業務処理メソッド１２１に渡して実行し、処理結果を処理結果保持部１１３へ格納する（ステップＳ２０６）。
処理結果表示部１０３は、コントローラ層制御部１０１の指示に応じて、処理結果保持部１１３から取得した前記処理結果をＧＵＩ１０５の処理結果表示部１０７へ出力する（ステップＳ２０７）。
【００３０】
テスト実施者は、処理結果が期待する正しい結果であるか否かを判断する（ステップＳ２０８）。処理結果が期待するものでなければ、各ステップＳ２０３〜Ｓ２０８を繰り返す。処理結果が期待するものであれば、テストコード生成部１０４は、コントローラ層制御部１０１からの指示に応じて、入力値保持部１１２から入力値を取得し、入力値と業務処理メソッド１２１とを用いてテスト用ソースコードを生成する（ステップＳ２０９）。
【００３１】
図４は、図１に示したソフトウェア業務処理テスト簡易化装置のＧＵＩ１０５を構成する入力値表示部３００の実施例を示す図である。
入力値表示部３００は、業務処理メソッドの一覧表３０１を備えており、クラス名３０２、引数の型３０３、戻り値の型３０４、テスト実行ボタン３０５、実行命令入力３０６のそれぞれの欄を表示する。テスト実施者が実行命令入力欄３０６に値を入力し、テスト実行ボタン３０５を押下すれば、図１の業務処理実行部１０２が業務処理メソッドを実行する。
【００３２】
図５は、図１に示したソフトウェア業務処理テスト簡易化装置のＧＵＩ１０５を構成する処理結果表示部４００の実施例を示す図である。
処理結果表示部４００は、処理結果表示欄４０１と、処理結果の戻り値の変数名４０２と、処理結果の戻り値の値４０３と、入力値表示部表示ボタン４０４と、テストコード生成実行ボタン４０５とを表示する。入力値表示部表示ボタン４０４を押下すれば、図４の入力値表示部３００に遷移する。また、テストコード生成実行ボタン４０５を押下すれば、テストコード生成部１０４を動作させてテスト用ソースコードを生成する。
【００３３】
図６は、図５に示したＧＵＩの処理結果表示部４００において、ツリー構造によって処理結果を表示する場合の実施例を示す。
図６の実施例では、処理結果は、変数名「Ｎａｍｅ」５０１と変数の値「Ｖａｌｕｅ」５０２から構成される表５００に表示される。図６の実施例では、戻り値が"ｒｅｓｕｌｔＤＴＯ"という変数名のオブジェクトであり、ツリー構造の親となっている。"ｒｅｓｕｌｔＤＴＯ"は、子要素として、変数名５０１が"ｆｏｒｗａｒｄ"と、"Ｇ０００２"と、"ｕｓｅｒＩｄ"と、"ｕｓｅｒＮａｍｅ"である４つの変数を持つ。各変数の戻り値は、変数の値「Ｖａｌｕｅ」５０２の列に表示される。
【００３４】
以下、本実施の形態に係るソフトウェア業務処理テスト簡易化装置１００の詳細について説明する。
【００３５】
図７は、業務処理メソッドをテスト対象ソフトウェアから抽出してＧＵＩの入力値表示部に一覧表示させる機能の概要を説明するブロック図である。
ソフトウェア業務処理テスト簡易化装置１００を起動する際に、テスト対象ソフトウェア６０１のコントローラ層の各クラスの業務処理メソッド情報６０２を抽出する。その際、業務処理メソッドが記述されているクラスの名称（クラス名）と、当該メソッドの名称（メソッド名）と、戻り値の型と、引数の型とを、業務処理メソッド毎に取得する。抽出した各業務処理メソッド情報６０２をＧＵＩの入力値表示部６０３に一覧表示する。
【００３６】
業務処理メソッド情報６０２の抽出には、リフレクションという公知技術を用いる。リフレクションとは、プログラムの実行過程で、当該プログラムの構造を読み取ったり書き換えたりする技術を指す。例えば、リフレクション機能を備えたプログラム言語として、Ｊａｖａ（登録商標）やＣ＃（登録商標）などが知られている。
【００３７】
図８は、ＧＵＩの入力値表示部から入力値保持部に値を渡す機能の詳細について説明するブロック図である。
ＧＵＩの入力値表示部７００で業務処理メソッド７０１が選択されると、当該業務処理メソッド７０１のクラス名と、引数の型と、戻り値の型とが、入力値表示部７００の備える各欄にそれぞれ表示される。テスト実施者は入力値表示部７００の実行命令入力欄７０２に任意の値を入力する。実行ボタン７０３を押下すると、メソッド名７０１と、実行命令入力欄７０２の入力値とが入力値保持部７１０に格納される。
【００３８】
図９は、ソフトウェア業務処理テスト簡易化装置の業務処理実行部において、業務処理メソッドのテストを実行するためにコントローラ層を起動させるプログラムの処理の概要を示すブロック図である。
ＧＵＩの入力値表示部８００は、テスト実行ボタン８０５の押下時に、選択された業務処理メソッドについての業務処理メソッド情報であるメソッド名８０１と、クラス名８０２と、引数の型８０３とを引数として業務処理実行部８１０内のコントローラ層起動プログラム８１１に渡し、当該プログラム８１１を起動する。
【００３９】
コントローラ層起動プログラム８１１では、スクリプト言語を応用することで、入力値保持部から業務処理メソッド実行命令となる入力値を取得し、リフレクション機能を応用することで、ビュー層を介さずにコントローラ層を起動させて業務処理メソッドを実行する。
【００４０】
図１０は、ソフトウェア業務処理テスト簡易化装置の業務処理実行部において、業務処理メソッドを実行させるコントローラ層起動プログラムの処理の概要を示すフローチャートである。図１１〜１４は、コントローラ層起動プログラムと、業務処理メソッド及びそれを有するクラスと、当該業務処理メソッドの引数となるＤａｔａ  Ｔｒａｎｓｆｅｒ  Ｏｂｊｅｃｔ（ＤＴＯ）クラスと、ＧＵＩの入力値表示部への入力値と、の各実施例をＪａｖａ（登録商標）言語で示したソースコードである。
【００４１】
コントローラ層起動プログラムに、テスト対象の業務処理メソッドを有するクラス名と、当該業務処理メソッドのメソッド名と、当該業務処理メソッドの引数の型とが送られる（ステップＳ９０１）。図９に示したように、ＧＵＩの入力値表示部８００のテスト実行ボタン８０５を押下することで、コントローラ層起動プログラム８１１の起動時に引数として送られる。
【００４２】
テスト対象の業務処理メソッドを有するコントローラ層のクラスをインスタンス化する（ステップＳ９０２）。リフレクション機能が提供するメソッドに、引数としてクラス名を渡すと、クラスがインスタンス化される。例えば、Ｊａｖａ（登録商標）言語ではｆｏｒＮａｍｅメソッドが提供されている。図１１に示すコントローラ層起動プログラムの実施例１０００のプログラム１００１にあたる。プログラム１００１では、図１２に示すＧ０１Ｓｅｒｖｉｃｅというコントローラ層のクラスを呼び出している。
【００４３】
次に、テスト対象の業務処理メソッドをインスタンス化する（ステップＳ９０３）。リフレクション機能が提供するメソッドに、引数としてメソッド名と引数の型を渡すと、メソッドがインスタンス化される。例えば、Ｊａｖａ（登録商標）言語ではｇｅｔＭｅｔｈｏｄメソッドが提供されている。図１１に示すコントローラ層起動プログラムの実施例１０００のプログラム１００２にあたる。プログラム１００２では、図１２に示すＧ０１ＳｅｒｖｉｃｅクラスのｄｏＧ０１Ｌｏｇｉｎという業務処理メソッドを呼び出している。また、このプログラム１００２では引数の型として図１３に示すＧ０１ＤＴＯクラスを指定する。
【００４４】
続いて、インスタンス化した業務処理メソッドに、入力値保持部から取得した入力値を、メソッド実行のための引数として送る（ステップＳ９０４）。入力値保持部から取得した入力値を業務処理メソッドに渡して処理を実行するために、スクリプト言語を利用する。
【００４５】
例えば、ＤＴＯを業務処理メソッドの引数とする場合、本来は業務処理メソッドを実行する前にＤＴＯをインスタンス化してＤＴＯの有する変数に値を入力する必要がある。このインスタンス化処理と変数設定処理を、ＧＵＩの入力値表示部に記述することで、記述内容がスクリプト言語として処理され、インスタンス化されたＤＴＯを業務処理メソッドの引数として渡して実行できる。図１４に示す、入力値表示部への入力及びスクリプトへの記述の実施例では、Ｇ０１ＤＴＯのインスタンス化と、変数ｕｓｅｒＩｄ及びｐａｓｓｗｏｒｄの各々への値を設定した後に、Ｇ０１ＤＴＯインスタンスを返している。上述のスクリプト言語の例として、オープンソースライセンスのビーンシェル（ＢｅａｎＳｈｅｌｌ（登録商標））が知られている。ビーンシェルは、Ｊａｖａ（登録商標）言語形式の記述を解釈して処理を実行するプログラムを提供する。
【００４６】
続いて、業務処理メソッドを実行する（ステップＳ９０５）。リフレクション機能が提供するメソッドに、テスト対象の業務処理メソッドが必要とする引数を渡し、実行する。例えば、Ｊａｖａ（登録商標）ではｉｎｖｏｋｅメソッドが提供されている。図１１に示すコントローラ層起動プログラムの実施例１０００のプログラム１００３にあたる。
【００４７】
その後、コントローラ層起動プログラムに処理結果（戻り値）が返る（ステップＳ９０６）。処理結果を処理結果表示部に送り、ＧＵＩに表示する（ステップＳ９０７）。図５、６に示したように、処理結果の変数名と変数の値とを、表やツリー構造で表示する。
【００４８】
続いて、処理結果がテスト実施者の期待する処理結果か否かを判断する。期待する処理結果であったならば（ステップＳ９０８）、テスト用ソースコード生成処理を行う（ステップＳ９０９）。期待する処理結果でなかったならば（ステップＳ９０８）、ＧＵＩは入力値表示部に遷移し、業務処理メソッドの選択や実行命令の入力を再開する（ステップＳ９１０）。
【００４９】
図１５は、ソフトウェア業務処理テスト簡易化装置のテストコード生成部におけるテスト用ソースコード生成の概略構成を示すブロック図である。図１５に基づいて、テスト実行からテスト用ソースコード生成までの概略を説明する。
【００５０】
図１０のステップＳ９０８で処理結果が期待するものであれば、テスト実施者は図５の処理結果表示部４００のテストコード生成実行ボタン４０５を押下する。その後、処理結果は図１５の処理結果保持部１１２０へ格納される。
【００５１】
テストコード生成部１１００のテストデータ生成エンジン１１０１は、テスト対象の業務処理メソッドに渡した実行命令情報を入力値保持部１１１０から取得し、入力テストデータ１１４０を生成する。
テストコード生成部１１００のテストデータ生成エンジン１１０１は、処理結果を処理結果保持部１１２０から取得し、想定処理結果データ１１４１を生成する。
【００５２】
テストコード生成部１１００のテストコード生成エンジン１１０２は、入力値保持部１１１０からテストコード生成対象の業務処理メソッドのメソッド名を取得し、当該メソッド名を基にテスト対象ソフトウェア１１３０から業務処理メソッドのソースコード１１３１を取得する。テストコード生成エンジン１１０２は、当該ソースコード１１３１を取得してテスト用ソースコード１１４２を生成する。
【００５３】
テストコード生成エンジン１１０２は、公知の技術であるテンプレートエンジンを用いてテスト用ソースコード１１４２を生成する。例えば、ヴェロシティ（Ｖｅｌｏｃｉｔｙ（登録商標））やＪＥＴ（Ｊａｖａ  Ｅｍｉｔｔｅｒ  Ｔｅｍｐｌａｔｅ（登録商標））などのソースコード生成エンジンが知られており、これらを応用したテストコード生成エンジンであれば、テストエヌジーなどのテスティングフレームワークに対応したテスト用ソースコードの生成が可能である。
【００５４】
本発明の実施形態は、ＩＤＥのプラグインとして利用されることを前提とした。したがって、本発明はエクリプス（商標）などの様々なＩＤＥで使用することが可能である。さらに本発明は、上述した実施形態としてだけでなく、スタンドアロン型のソフトウェアとして利用することも可能である。
本発明は、リフレクション機能を有するオブジェクト指向プログラム言語であれば適用することが可能である。したがって、図１１〜図１４に示したようなＪａｖa（登録商標）の実施例以外にも、Ｃ＃（登録商標）やＯｂｊｅｃｔｉｖｅ−Ｃ（登録商標）などの各種プログラム言語にも応用することができる。
【００５５】
以上のように、本実施の形態に係るソフトウェア業務処理テスト簡易化装置では、ＭＶＣアーキテクチャで開発されたソフトウェアのコントローラ層の業務処理メソッドの単体テストにおいて、ビュー層を経由することなく、テストデータの入力のみでコントローラ層の業務処理メソッドを起動できる。また、テスト対象プログラムとなる業務処理メソッドを可視的に選択でき、かつ、業務処理結果を可視的に確認できる。これにより、コントローラ層の単体テスト作業が簡略化される。また、ビュー層を実装することなくテストが可能になるため、ソフトウェア開発におけるテスト作業効率が向上する。また、本発明の実施形態を、ＩＤＥのプラグインで利用することを想定したため、プログラミング作業やテスト作業の環境を一元化することで、開発環境を簡素化することができる。
【符号の説明】
【００５６】
１００  ソフトウェア業務処理テスト簡易化装置
１０１  コントローラ層制御部
１０２  業務処理実行部
１０３  処理結果表示部
１０４  テストコード生成部
１０５  グラフィカルユーザインタフェース（ＧＵＩ）
１０６  入力値表示部
１０７  処理結果表示部
１１１  データベース（ＤＢ）
１１２  入力値保持部
１１３  処理結果保持部
１２０  テスト対象ソフトウェア
１２１  業務処理メソッド
【図１】
2014056388.tif 000003
【図２】
2014056388.tif 000004
【図３】
2014056388.tif 000005
【図４】
2014056388.tif 000006
【図５】
2014056388.tif 000007
【図６】
2014056388.tif 000008
【図７】
2014056388.tif 000009
【図８】
2014056388.tif 000010
【図９】
2014056388.tif 000011
【図１０】
2014056388.tif 000012
【図１１】
2014056388.tif 000013
【図１２】
2014056388.tif 000014
【図１３】
2014056388.tif 000015
【図１４】
2014056388.tif 000016
【図１５】
2014056388.tif 000017