(57)【特許請求の範囲】
【請求項１】
ソースコードとテストプログラムとを管理する構成管理サーバと、開発者がテストプログラムの作成・保存の要求を送信するクライアント装置と、前記構成管理サーバが管理するソースコードに関する情報を記憶する記憶装置と、前記構成管理サーバが管理するテストプログラムを実行するテスト装置とから成るテストプログラム管理システムであって、
前記構成管理サーバは、
前記クライアント装置からのテストプログラム作成・保存要求を受信し、テストプログラム評価情報を送信するサーバ通信部と、
前記ソースコードの情報を前記記憶装置に格納するデータ格納部と、
前記記憶装置に格納されているデータを取得するデータ抽出部と、
前記ソースコード内の各メソッドの重要度を評価するメソッド評価部と、
前記テストプログラムの評価を行うテストプログラム評価部と
を備え、
前記クライアント装置は、
前記構成管理サーバに対し、テストプログラムの作成要求と前記構成管理サーバからソースコードとテストプログラム評価情報を受信するクライアント通信部と、
受信したソースコードの内容およびテストプログラムの評価内容を表示する表示部と、
該表示部により表示されたソースコードに対し、テストプログラムの作成を行う入力部と
を備え、
前記記憶装置は
前記構成管理サーバが管理するソースコードのソースファイル情報と、
前記ソースコード間の依存関係の情報を表す依存関係情報と、
前記テストプログラム管理システムのシーケンス図情報と、
前記ソースコードの各メソッドの評価を表すメソッド評価情報と、
開発者が作成したテストプログラムの評価を表すテストプログラム評価情報と
を備え、
前記テスト装置は、
前記構成管理サーバからソースコード、テストプログラム情報を受信し、テストの実行結果を送信するテスト装置通信部と、
送信されたソースコードに対してテストを実行するテスト実行部と
を備えることを特徴とするテストプログラム管理システム。
【請求項２】
請求項１に記載したテストプログラム管理システムであって、
前記構成管理サーバは、開発者からのテストプログラム保存要求に対して、テストプログラムを評価し、評価結果が前記構成管理サーバによって予め定められた目標値を満たしているか判定し、テストプログラムの保存の可否を決定し、その結果に従い、一定基準を満たすテストプログラムを保持することを特徴とするテストプログラム管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、開発者が作成したテストプログラムを管理することにおいて、ソースコード、ソースコード間の依存関係情報、シーケンス図情報およびメソッド評価情報を記憶する装置を持ち、かつソースコードに対するテストプログラム作成し、リポジトリに格納する際に保存可能なテストプログラムであるか判定する機能を有するテストプログラム管理システムに関するものである。
【背景技術】
【０００２】
単体テストのテストプログラムを作成する際に、開発者によってテストプログラムの品質が異なり、作成したテストプログラムの質が求めているものより悪いことがある。そのため、プロジェクト管理者がテストプログラムを確認する必要があり、テストプログラムの品質を確保することが困難である。
【０００３】
特許文献１には、ソースコード静的分析シミュレータのためのカスタムＡＰＩモデル、すなわち、関数のソースコード実装が提供されていない、外部関数（もしくは外部メソッド）の呼び出しを分析および評価する方法が開示されている。アプリケーションプログラムインターフェース（ＡＰＩ）など、ソースコードを利用できない外部関数を処理する際に、モデルを提供してその外部関数が適切に呼び出されるかどうかを評価するものである。具体的には、外部関数の不適切な呼び出しから結果として生じる可能性のあるエラー、およびその潜在的なエラーにつながる少なくとも１つの条件が識別される。モデルを作成してその潜在的なエラーにつながる条件についてテストする。その条件が見つかると、エラーメッセージの生成がトリガーされる。このモデルは、ソースコードがソースコードアナライザによって分析されるときに、このモデルを適用して外部関数の呼び出しを評価するように、ソースコードアナライザに関連付けられる。潜在的なエラー、ならびに入力／出力パラメータのエラーおよび依存関係のエラーなどのエラーにつながる条件は、外部関数またはＡＰＩのオペレーションについて記述する文書から導き出すことができるものである。
【特許文献１】特開２００６−２３６３３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献１の場合、外部関数を呼び出している全てのソースコードに対して同一の評価を行っており、作成したシステムにおいて重要な関数に対し、重点的に評価が行われない。
【０００５】
本発明の目的は、シーケンス図、ソースコードの依存関係の情報から開発したシステムで使用される各メソッド（もしくは関数）の重要度を求め、ここで決定した重要度ごとに、テストプログラムが目標とする評価値を決定する。開発者が作成したテストプログラムをリポジトリに格納する際にテストプログラムの評価を行い、一定基準値を満たしているか判定する。この判定結果に基づき、リポジトリサーバにコミットの可否を決定することで、一定基準を満たしたテストプログラムの保持することを可能とするテストプログラム管理システムを提供することである。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のテストプログラム管理システムは、ソースコードとテストプログラムとを管理する構成管理サーバと、開発者がテストプログラムの作成・保存の要求を送信するクライアント装置と、前記構成管理サーバが管理するソースコードに関する情報を記憶する記憶装置と、前記構成管理サーバが管理するテストプログラムを実行するテスト装置とから成るテストプログラム管理システムであって、前記構成管理サーバは、前記クライアント装置からのテストプログラム作成・保存要求を受信し、テストプログラム評価情報を送信するサーバ通信部と、前記ソースコードの情報を前記記憶装置に格納するデータ格納部と、前記記憶装置に格納されているデータを取得するデータ抽出部と、前記ソースコード内の各メソッドの重要度を評価するメソッド評価部と、前記テストプログラムの評価を行うテストプログラム評価部とを備え、前記クライアント装置は、前記構成管理サーバに対し、テストプログラムの作成要求と前記構成管理サーバからソースコードとテストプログラム評価情報を受信するクライアント通信部と、受信したソースコードの内容およびテストプログラムの評価内容を表示する表示部と、該表示部により表示されたソースコードに対し、テストプログラムの作成を行う入力部とを備え、前記記憶装置は前記構成管理サーバが管理するソースコードのソースファイル情報と、前記ソースコード間の依存関係の情報を表す依存関係情報と、前記テストプログラム管理システムのシーケンス図情報と、前記ソースコードの各メソッドの評価を表すメソッド評価情報と、開発者が作成したテストプログラムの評価を表すテストプログラム評価情報とを備え、前記テスト装置は、前記構成管理サーバからソースコード、テストプログラム情報を受信し、テストの実行結果を送信するテスト装置通信部と、送信されたソースコードに対してテストを実行するテスト実行部とを備える。
【０００７】
さらに、請求項２に記載したテストプログラム管理システムは、請求項１に記載したテストプログラム管理システムであって、前記構成管理サーバは、開発者からのテストプログラム保存要求に対して、テストプログラムを評価し、評価結果が前記構成管理サーバによって予め定められた目標値を満たしているか判定し、テストプログラムの保存の可否を決定し、その結果に従い、一定基準を満たすテストプログラムを保持するものである。
【発明の効果】
【０００８】
本発明のテストプログラム管理システムによれば、次のような効果がある。
作成したシステムで使用されるメソッドの重要度を求め、メソッドの重要度ごとにテストプログラムの基準値を決定する。ここで決定した基準値を用いて、開発者が作成したテストプログラムを評価し、評価結果に基づきリポジトリへの格納の可否を決定することで、一定基準を満たしたテストプログラムを保持することができる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明を適用したテストプログラム管理システムの一実施の形態について説明する。
【００１０】
図１は、本発明の実施形態の一例を示すシステム構成図であり、テストプログラム管理システムは、開発者が作成したソースコードを管理する構成管理サーバ１０１とテストプログラムの作成を行うクライアント装置１０２と構成管理サーバ１０１が管理するソースコードに関する情報を記憶する記憶装置１０３と、クライアント装置１０２にて作成したテストプログラムを用いてテストを実行するテスト装置１０４から構成されている。
【００１１】
構成管理サーバ１０１は、クライアント装置１０２、テスト装置１０４と通信を行うサーバ通信部１０５と、記憶装置１０３にソースコードに関する情報とテストプログラムに関する情報を格納するデータ格納部１０６と、記憶装置１０３からソースコードに関する情報とテストプログラムに関する情報を抽出するデータ抽出部１０７と、ソースコードコード内の各メソッドの重要度を評価するメソッド評価部１０８と、クライアント装置１０２からのテストプログラム格納要求に対して、テストプログラムの評価を行うテストプログラム評価部１０９から構成されている。
【００１２】
クライアント装置１０２は、構成管理サーバ１０１と通信を行うクライアント通信部１１０と、構成管理サーバ１０１から送信されるソースコード内容およびテストプログラムの評価内容を画面に表示する表示部１１１と、表示されたソースコードに対して開発者がテストプログラムの作成を行う入力部１１２から構成されている。クライアント装置１０２は複数存在するものとする。
【００１３】
記憶装置１０３は、構成管理サーバ１０１が管理するソースファイル情報１１３と、ソースコード間の依存関係の情報を表す依存関係情報１１４と、システムのシーケンス図情報１１５と、ソースコードの各メソッドの評価を表すメソッド評価情報１１６と、開発者が作成したテストプログラムの評価を表すテストプログラム評価情報１１７を記録する。本実施例で使用するカバレージ情報とは、テスト実行時にソースコードのどの部分が実行されたかという情報のことを意味する。また、テストプログラム評価情報とは、テストプログラムの評価としてテスト対象メソッドの呼び出し回数の情報とテスト対象メソッドのカバレージ情報のことを意味する。
【００１４】
テスト装置１０４は、構成管理サーバ１０１からソースファイル情報１１３とテストプログラムのソースコードの受信と受信したソースコードを用いてテストを実行し、その結果を構成管理サーバ１０１に送信するテスト装置通信部１１８と、受信したソースコードの対象メソッドに対してテストを実行するテスト実行部１１９から構成されている。前記クライアント装置１０２、前記テスト装置１０４はネットワークを通じて構成管理サーバ１０１と接続されている。また、本実施例ではテスト装置１０４が構成管理サーバ１０１にテスト実行結果を送信しているが、クライアント装置１０２にてテストの実行を行い、実行結果を構成管理サーバ１０１に送信を行っても良い。
【００１５】
図２は、構成管理サーバ１０１が管理するソースファイル情報のデータ構造２００である。構成管理サーバ１０１が管理するソースコードファイルを一意に識別するファイルＩＤ２０１と、ソースコードのファイル名を表すファイル名２０２と、ソースコードのクラス名を表すクラス名２０３と、クラス名２０３のパッケージ構成を表すパッケージ名２０４と、構成管理サーバ１０１が管理するソースコードが格納されているプロジェクトを表すプロジェクトID２０５から構成されている。本実施例で使用するプロジェクトとは、システムを開発する上でソースコードを管理する単位のことである。
【００１６】
図３は、ソースコードの依存関係情報のデータ構造３００である。依存関係情報として、対象のソースコードファイルを表すファイルＩＤ３０１と、ファイルＩＤ３０１で示すソースコードファイル内に書かれた対象のメソッド名を表すメソッド名３０２と、メソッド名３０２で表すソースコードの開始行を表す行開始番号３０３と、メソッド名３０２で表すソースコードの終了行を表す行終了番号３０４と、ファイルＩＤ３０１とメソッド名３０２で表すソースコードと依存関係のあるファイルを表す依存ファイルＩＤ３０５と、ファイルＩＤ３０１とメソッド名３０２で表すソースコードと依存関係のあるメソッドを表す依存メソッド名３０６と、依存メソッド名３０６の開始行を表す依存行開始番号３０７と、依存メソッド名３０６の終了行を表す依存行終了番号３０８から構成されている。
【００１７】
図４は、システムで発生するイベントの情報を表すシーケンス図情報のデータ構造４００である。イベントのIDをイベントＩＤ４０１と、シナリオ内で実行される処理の順序を表す実行順序４０２と、シナリオで実行されるメソッドを表す実行メソッド名４０３と、実行メソッド名４０３が存在するファイルを表すファイルID４０４と、実行メソッド４０３を呼び出したメソッドを表す呼び出し元メソッド名４０５と、呼び出し元メソッド名４０５が存在するファイルを表す呼び出し元ファイルID４０６から構成されている。
【００１８】
図５は、開発者が作成したソースコードの各メソッドの評価情報を表すデータ構造５００である。評価対象のメソッドを一意に識別するメソッドＩＤ５０１と、評価対象のメソッドを表すメソッド名５０２と、評価対象となるメソッドが存在するファイルを表すファイルID５０３と、評価対象となるメソッド名５０２と依存関係のあるメソッドの数を表す依存メソッド数５０４と、評価対象となるメソッド名５０２が呼び出された回数を表す呼び出し回数５０５から構成されている。
【００１９】
図６は、テストプログラムのファイル情報を表すデータ構造６００である。テストプログラムを一意に識別するテストプログラムＩＤ６０１と、テストプログラムのファイル名を表すテストプログラム名６０２と、テストプログラム名６０２が存在するパッケージを表すパッケージ名６０３と、テストプログラムがどのメソッドに対するテストプログラムなのかを表すテスト対象メソッドＩＤ６０４から構成されている。
【００２０】
図７は、テストプログラムの評価情報を表すデータ構造７００である。テストプログラムを一意に識別するテストプログラムＩＤ７０１と、テストプログラムにてテスト対象メソッドを呼び出している回数を表す呼び出し回数７０２と、テストプログラムを使用してテスト対象メソッドを実行し取得できたカバレージ率を表すカバレージ率７０３から構成されている。
【００２１】
図８は、テストプログラムを評価する際に目標となる値の情報を表すデータ構造８００である。重要度の下限値を表す重要度下限８０１と、重要度の上限値を表す重要度上限８０２と、テスト対象のメソッドの重要度が重要度下限８０１と重要度上限８０２の間にあるときにテストプログラムの目標値となる目標呼び出し回数８０３と、目標となるカバレージ率を表す目標カバレージ率８０４から構成されている。
【００２２】
図９は、テストプログラム内でテスト対象メソッドを呼び出している行の情報を表すデータ構造９００である。テストプログラムを一意に識別するテストプログラムＩＤ９０１と、テストプログラム内でテスト対象のメソッドを実行している行番号を表す実行行番号９０２から構成されている。
【００２３】
図１０は、テストプログラムをテスト装置１０４にて実行したときに得られるカバレージ率の情報を表すデータ構造１０００である。テストプログラムを一意に識別するテストプログラムＩＤ１００１と、テストプログラムにて対象メソッドを実行している行番号を表す実行行番号１００２と、実行行番号１００２にて実行した際に取得したカバレージの行番号を表すカバレージ取得行番号１００３と、カバレージ取得行番号１００３の行でどの列からカバレージを取得したのかを表すカバレージ取得列開始番号１００４と、カバレージ取得行番号１００３の行でどの列までカバレージを取得したのかを表すカバレージ取得列終了番号１００５から構成されている。
【００２４】
図１１は、構成管理サーバ１０１における処理の概要を示すフローチャートである。クライアント装置側で開発者がソースコードエディタを用いて指定のプロジェクトを開く（ステップ１１０１）。構成管理サーバ１０１では、プロジェクト内のソースコード内の各メソッドの重要度の情報をクライアント装置１０２に送信し、ソースコードエディタにメソッドの情報を重要度順に表示する（ステップ１１０２）。開発者は、メソッドの重要度の高いものからテストプログラムを作成する（ステップ１１０３）。テストプログラムの作成が完了したら、構成管理サーバ１０１に保存要求を送信する（ステップ１１０４）。構成管理サーバ１０１で、対象のテストプログラムの評価を行う（ステップ１１０５）。構成管理サーバ１０１にテストプログラムを保存する（ステップ１１０６）。
【００２５】
図１２は、クライアント装置１０２側で表示されるソースコードエディタの画面１２００である。開発者が作成するテストプログラムに対する評価内容を表示する評価一覧１２０１と、プロジェクト内にあるメソッドの一覧を表示するメソッド一覧１２０２と、テストプログラムのソースコードを表示・入力・編集を行うテストプログラムビュー１２０３と、テスト対象となるソースコードとなるソースビュー１２０４と、テストプログラムの作成を開始する作成ボタン１２０５と、作成したテストプログラムを構成管理サーバ１０１へ保存を要求する保存ボタン１２０６から構成されている。メソッド一覧１２０２は、メソッドの重要度が高い順に表示されるものとする。また、テストプログラムの作成は、メソッドの重要度が高い順に作成しなければいけないようにソースコードエディタによって制御されているものとする。
【００２６】
図１３は、保存ボタン１２０６を押した際に、構成管理サーバ１０１がテストプログラムの保存に成功したことをクライアント装置に送信しソースコードエディタに表示されるテストプログラム保存成功画面１３００である。クライアント装置１０２で、テストプログラムの保存成功の情報を受信した際に、表示部１１１では対象のテストプログラムが構成管理サーバ１０１に保存できたことをダイアログボックス１３０１にて表示する。
【００２７】
図１４は、保存ボタン１２０６を押した際に、構成管理サーバ１０１がテストプログラムの保存に失敗したことをクライアント装置に送信しソースコードエディタに表示されるテストプログラム保存失敗画面１４００である。クライアント装置１０２で、テストプログラムの保存失敗の情報を受信した際に、表示部１１１では対象のテストプログラムが構成管理サーバ１０１に保存に失敗したことをダイアログボックス１４０１にて表示する。
【００２８】
図１５は、テストプログラムの評価内容の一つである呼び出し回数の計測対象行を確認できる確認画面１５００である。開発者は評価一覧１２０１内にある呼び出し回数のプログレスバーをクリックすると、テストプログラムビュー１２０３に表示されているテストプログラム内でテスト対象メソッドを呼び出している行の色を反転し、呼び出し回数の計測対象行を表示する。
【００２９】
図１６は、テストプログラムの評価内容の一つであるカバレージ率の計測対象行を確認できる確認画面１６００である。開発者は評価一覧１２０１内にあるカバレージ率のプログレスバーをクリックすると、テストプログラムビュー１２０３に表示されているテストプログラム内でテスト対象メソッドのカバレージが取得できた行の色を反転し、カバレージ率の計測対象行を表示する。また、呼び出し回数にて呼び出し対象行を表示した状態で、テストプログラムビュー１２０３内の呼び出し行を選択すると、ソースビュー１２０４内では呼び出し行を実行した際に取得できるカバレージの情報がソースビュー内に表示される。
【００３０】
図１７は、プロジェクト内の各メソッドに対して評価を行い、テストプログラムの目標値を決定する流れを示すフローチャートである。記憶装置１０３から依存関係情報１１４、シーケンス図情報１１５を取得する（ステップ１７０１）。依存関係情報１１４とシーケンス図情報１１５から各メソッドの依存メソッド数と呼び出し回数を求める（ステップ１７０２）。ステップ１８０２で求めた依存メソッド数と呼び出し回数から重要度を求める（ステップ１７０３）。ステップ１７０３で求めた重要度ごとに各メソッドの目標評価値を決定する（ステップ１７０４）。記憶装置１０３に各メソッドの依存メソッド数、呼び出し回数、評価目標値を格納する（ステップ１７０５）。本実施例におけるメソッドの重要度は、依存メソッド数５０５と呼び出し回数５０６を乗算して求め、乗算した結果が大きいものほど重要度が高いものとする。また、評価目標値とは呼び出し回数、カバレージ率の各テストプログラムの評価する際の基準となる値のことを指す。
【００３１】
図１８は、テストプログラムを構成管理サーバへ格納する流れを示すフローチャートである。開発者は、ソースコードエディタ１２００にて対象メソッドに対するテストプログラムを作成する（ステップ１８０１）。テストプログラムの作成が完了したら、開発者は構成管理サーバ１０１にテストプログラムを保存することを要求する（ステップ１８０２）。構成管理サーバ１０１ではテストプログラムの各評価項目を集計し、テストプログラムを評価する（ステップ１８０３）。評価した結果、テストプログラムが基準を満たしていたしているか判定する（ステップ１８０４）。基準を満たしていた場合、ステップ１８０１で作成したテストプログラムを構成管理サーバ１０１に格納する（ステップ１８０５）。もし、基準を満たしていなかった場合、再度ステップ１８０１から作業を行うものとする。
【００３２】
以上のように、本実施の形態のテストプログラム管理システムによれば、次のような効果がある。
（１） 作成したシステムで使用されるメソッドの重要度を求め、メソッドの重要度ごとにテストプログラムの基準値を決定する。ここで決定した基準値を用いて、開発者が作成したテストプログラムを評価し、評価結果に基づきリポジトリへの格納の可否を決定することで、一定基準を満たしたテストプログラムを保持することができる。
【産業上の利用可能性】
【００３３】
ソフトウェア開発を効率化することが必要なあらゆる場面に利用可能である。
【図面の簡単な説明】
【００３４】
【図１】本発明の実施形態の一例を表すシステム構成図
【図２】構成管理サーバ１０１で管理するソースファイル格納情報のデータ構造
【図３】依存関係情報のデータ構造
【図４】シーケンス図情報のデータ構造
【図５】メソッド評価情報のデータ構造
【図６】テストプログラムファイル情報のデータ構造
【図７】テストプログラム評価情報のデータ構造
【図８】テストプログラム評価目標値情報のデータ構造
【図９】テストプログラム対象メソッド呼び出し情報のデータ構造
【図１０】テストプログラムカバレージ情報のデータ構造
【図１１】テストプログラムの作成から保存の流れを示すフローチャート
【図１２】プロジェクトを開いた際に表示されるエディタ表示画面
【図１３】テストプログラム保存成功の際に表示されるエディタ表示画面
【図１４】テストプログラム保存失敗の際に表示されるエディタ表示画面
【図１５】呼び出し回数の詳細情報を表示した際のエディタ表示画面
【図１６】カバレージ率の詳細情報を表示した際のエディタ表示画面
【図１７】テストプログラムの目標値決定の流れを示すフローチャート
【図１８】テストプログラム保存決定の流れを示すフローチャート
【符号の説明】
【００３５】
１０１  構成管理サーバ
１０２  クライアント装置
１０３  記憶装置
１０４  テスト装置
１０５  サーバ通信部
１０６  データ格納部
１０７  データ抽出部
１０８  メソッド評価部
１０９  テストプログラム評価部
１１０  クライアント通信部
１１１  表示部
１１２  入力部
１１３  ソースファイル情報
１１４  依存関係情報
１１５  シーケンス図情報
１１６  メソッド評価情報
１１７  テストプログラム情報
１１８  テスト装置通信部
１１９  テスト実行部
【図１】
0005006824.tif 000002
【図２】
0005006824.tif 000003
【図３】
0005006824.tif 000004
【図４】
0005006824.tif 000005
【図５】
0005006824.tif 000006
【図６】
0005006824.tif 000007
【図７】
0005006824.tif 000008
【図８】
0005006824.tif 000009
【図９】
0005006824.tif 000010
【図１０】
0005006824.tif 000011
【図１１】
0005006824.tif 000012
【図１２】
0005006824.tif 000013
【図１３】
0005006824.tif 000014
【図１４】
0005006824.tif 000015
【図１５】
0005006824.tif 000016
【図１６】
0005006824.tif 000017
【図１７】
0005006824.tif 000018
【図１８】
0005006824.tif 000019