(57)【要約】【課題】  多数のコンポーネントからなる大規模プログラムを対象としたテスト作業の効率化を図る必要があった。【解決手段】  本発明では、テストケースのテスト対象であるプログラムの各々を構成する部分パスについて、各々の部分パスを通過することが期待されるか否かをあらかじめ登録しておき、テストケースを実行した結果、通過が期待された部分パスを通過できなかった場合に、未実行のテストケースのうち、通過できなかった部分パスを通過することが期待されているテストケースを実行不可に設定し、実行不可と設定されていないテストケースを優先的に実行する。【選択図】  図１
2013175072.tif 000002
【特許請求の範囲】
【請求項１】
テストケースに対応付けられた複数のプログラムを実行する１以上のテスト実行装置と接続したテスト実行管理装置であって、
テストケースに対応付けられた前記複数のプログラムの各々を構成する部分パスについて、テストケースごとに、当該テストケースにおいて通過することが期待される第一の部分パスと、通過しないことが期待される第二の部分パスを区別して登録したテストケース実行条件テーブルと、
実行されたテストケースについての実行済みプログラムの実行の成否を登録したプログラム実行結果テーブルと、
前記実行されたテストケースにおける前記第一の部分パスの各々についての通過の成否を登録した部分パス実行結果テーブルと、
を記憶した記憶手段と、
実行対象であるテストケースを特定してキューに登録するキュー登録手段と、
前記プログラム実行結果テーブルを参照し、前記実行済みプログラムの実行の成否を判断するプログラム実行結果判断手段と、
前記実行済みプログラムの実行結果が実行不可であった場合は、前記部分パス実行結果テーブルに基づき、前記実行されたテストケースについての前記第一の部分パスのうち、通過できなかった部分パスを特定する部分パス特定手段と、
前記テストケース実行条件テーブルを参照し、前記キューに登録されたテストケースに、前記通過できなかった部分パスを前記第一の部分パスとする、実行不可なテストケースが含まれるか判断する登録テストケース調査手段と、
前記実行不可なテストケースがあった場合は、当該実行不可なテストケースを前記キューから削除する登録テストケース削除手段と、
を有することを特徴とするテスト実行管理装置。
【請求項２】
請求項１に係るテスト実行管理装置であって、
前記記憶手段は、テストケースごとに、実行可能なテストケースか否かを示すテスト実行可否と、テストケースの実行状況を示すテスト実行状況と、を登録したテスト状況一覧テーブルをさらに記憶し、
前記テスト実行状況が実行中または実効済みであるテストケースを構成する部分パスであって、前記実行中または実効済みであるテストケースが共通して前記第二の部分パスとする未通過の部分パスを抽出する未通過部分パス抽出手段と、
前記テストケース実行条件テーブルを参照し、前記キューに登録されたテストケースに、前記未通過の部分パスのいずれかを前記第一の部分パスとする新規なテストケースが含まれる場合、当該新規なテストケースにおける当該未通過の部分パスに対応する当該第一の部分パスを、新規部分パスとして識別する新規部分パス特定手段と、
前記部分パス特定手段は、前記通過できなかった部分パスがなかった場合、前記実行されたテストケースにおける前記新規部分パスを、前記通過できなかった部分パスと特定することを特徴とするテスト実行管理装置。
【請求項３】
請求項２に係るテスト実行管理装置であって、
前記プログラム実行結果判断手段において、前記実行済みプログラムの実行結果が実行不可であった場合は、前記実行されたテストケースについての前記テスト実行可否を、実行不可と登録する実行不可設定手段と、
前記テスト実行状況が未実施であるテストケースのうち、前記テスト実行可否が実行不可ではない第一のテストケースを抽出する第一のテストケース抽出手段と、
前記テスト実行状況が、実行中、またはキュー登録状態、または実行済み、である第二のテストケースを抽出する第二のテストケース抽出手段と、
前記テストケース実行条件テーブルに基づき、前記第二のテストケースの各々を構成する部分パスであって、当該第二のテストケースの少なくとも１つが第一の部分パスとする通過の部分パスと、当該第二のテストケースが共通して第二の部分パスとする不通過の部分パスを特定する部分パス分類手段と、
前記テストケース実行条件テーブルに基づき、前記不通過の部分パスのいずれをも前記第一の部分パスとせず、かつ、前記通過部分パスのいずれか一つ以上を前記第一の部分パスとして含むテストケース、または、前記通過部分パスのいずれをも前記第一の部分パスとせず、かつ、前記不通過部分パスのいずれか１つ以上を前記第一の部分パスとして含むテストケースを、前記第一のテストケースから抽出する実施可能テストケース抽出手段と、
前記実施可能テストケース抽出手段によりテストケースが抽出された場合は、前記キュー登録手段が、当該実施可能テストケース抽出手段によりテストケースを前記キューに登録し、
前記キュー登録手段によって前記キューに登録されたテストケースについての、前記テスト実行状況をキュー登録状態に更新するテスト実行状況設定手段と、
を有することを特徴とするテスト実行管理装置。
【請求項４】
請求項３に係るテスト実行管理装置であって、
前記記憶手段は、前記テスト実行計算機の各々について、当該テスト実行計算機がどうじに受付可能なテストケースの件数である実行可能件数を登録したテスト実行環境テーブルをさらに記憶し、
前記記憶手段は、前記テスト状況一覧テーブルにおいて、さらに、テストケースごとに、当該テストケースを実行中のテスト実行計算記名を記憶し、
前記テスト実行状況が実行中であるテストケースの前記テスト実行計算機名により、前記テスト実行計算機ごとに実行中のテストケースの件数を算出する実行中件数算出手段と、
前記実行中のテストケースの件数が前記実行可能件数未満であったテスト実行計算機に、当該実行可能件数の範囲内で、前記キューに登録されたテストケースのテスト実行要求を送信するテスト実行要求送信手段と、
前記テスト実行要求が送信されたテストケースについての前記テスト実行状況を実行中に更新し、前記テスト実行計算記名に前記テスト実行要求を送信したテスト実行計算機の情報を登録するテスト実行状況更新手段と、
を有することを特徴とするテスト実行管理装置。
【請求項５】
テストを実行する１以上のテスト実行装置と、前記テスト実行装置の各々と接続したテスト実行管理装置を有するテスト実行システムであって、
前記テスト実行管理装置は、
テストケースに対応付けられたプログラムを実行する１以上のテスト実行装置と接続したテスト実行管理装置であって、
テストケースに対応付けられたプログラムの各々を構成する部分パスについて、テストケースごとに、当該テストケースにおいて通過することが期待される第一の部分パスと、通過しないことが期待される第二の部分パスを区別して登録したテストケース実行条件テーブルと、
実行されたテストケースについての実行済みプログラムの実行の成否を登録したプログラム実行結果テーブルと、
前記実行されたテストケースにおける前記第一の部分パスの各々についての通過の成否を登録した部分パス実行結果テーブルと、
を記憶した記憶手段と、
実行すべきテストケースと、当該実行すべきテストケースを構成する部分パスの識別子と、当該実行すべきテストケースの期待結果値を前記テスト実行装置へ送信する送信手段を有し、
前記テスト実行装置は、
テストケースに対応付けられたプログラムと、
実行されたテストケースについての実行済みプログラムの実行の成否を登録したプログラム実行結果一時テーブルと、
前記実行されたテストケースにおける前記第一の部分パスの各々についての通過の成否を登録した部分パス実行結果一時テーブルと、
を記憶した記憶部と、
実行すべきテストケースと、当該実行すべきテストケースを構成する部分パスの識別子と、当該実行すべきテストケースが正常終了した場合の期待結果値を前記テスト実行管理装置から受信する受信手段と、
前記記憶部から、受信した前記実行すべきテストケースに対応付けられた実行対象のプログラムを選択するテスト対象プログラム選択手段と、
前記実行対象のプログラムを実行するデバッグ手段と、
前記実行対象のプログラムが異常停止した場合は、前記部分パス実行結果一時テーブルに、当該実行対象のプログラムが異常停止した部分パスの通過成否に実行不可を登録し、
前記実行対象のプログラムが正常終了した場合は、当該実行対象のプログラムを実行した結果値が、受信した前記期待結果値と一致するかを判断するプログラム実行結果判断手段と、
前記期待結果値と一致した場合は、前記プログラム実行結果一時テーブルの実行の成否に成功と登録し、期待結果値と一致しない場合は、前記プログラム実行結果一時テーブルの実行の成否に実行不可と登録するテストケース実行結果登録手段と、
前記プログラム実行結果一時テーブルと、前記前記部分パス実行結果一時テーブルを、前記テスト管理装置に送信する送信手段を有し、
前記テスト実行管理装置は、さらに、
実行対象であるテストケースを特定してキューに登録するキュー登録手段と、
前記プログラム実行結果テーブルを参照し、前記実行済みプログラムの実行の成否を判断するプログラム実行結果判断手段と、
前記実行済みプログラムの実行結果が実行不可であった場合は、前記部分パス実行結果テーブルに基づき、前記実行されたテストケースについての前記第一の部分パスのうち、通過できなかった部分パスを特定する部分パス特定手段と、
前記テストケース実行条件テーブルを参照し、前記キューに登録されたテストケースに、前記通過できなかった部分パスを前記第一の部分パスとする、実行不可なテストケースが含まれるか判断する登録テストケース調査手段と、
前記実行不可なテストケースがあった場合は、当該実行不可なテストケースを前記キューから削除する登録テストケース削除手段と、
を有することを特徴とするテスト実行システム。
【請求項６】
請求項５に記載のテスト実行システムであって、
前記テスト実行管理装置は、
前記記憶手段は、テストケースごとに、実行可能なテストケースか否かを示すテスト実行可否と、テストケースの実行状況を示すテスト実行状況と、を登録したテスト状況一覧テーブルをさらに記憶し、
前記テスト実行状況が実行中または実効済みであるテストケースを構成する部分パスであって、前記実行中または実効済みであるテストケースが共通して前記第二の部分パスとする未通過の部分パスを抽出する未通過部分パス抽出手段と、
前記テストケース実行条件テーブルを参照し、前記キューに登録されたテストケースに、前記未通過の部分パスのいずれかを前記第一の部分パスとする新規なテストケースが含まれる場合、当該新規なテストケースにおける当該未通過の部分パスに対応する当該第一の部分パスを、新規部分パスとして識別する新規部分パス特定手段と、
前記部分パス特定手段は、前記通過できなかった部分パスがなかった場合、前記実行されたテストケースにおける前記新規部分パスを、前記通過できなかった部分パスと特定することを特徴とするテスト実行システム。
【請求項７】
請求項６に記載のテスト実行システムであって、
前記テスト実行管理装置は、
前記プログラム実行結果判断手段において、前記実行済みプログラムの実行結果が実行不可であった場合は、前記実行されたテストケースについての前記テスト実行可否を、実行不可と登録する実行不可設定手段と、
前記テスト実行状況が未実施であるテストケースのうち、前記テスト実行可否が実行不可ではない第一のテストケースを抽出する第一のテストケース抽出手段と、
前記テスト実行状況が、実行中、またはキュー登録状態、または実行済み、である第二のテストケースを抽出する第二のテストケース抽出手段と、
前記テストケース実行条件テーブルに基づき、前記第二のテストケースの各々を構成する部分パスであって、当該第二のテストケースの少なくとも１つが第一の部分パスとする通過の部分パスと、当該第二のテストケースが共通して第二の部分パスとする不通過の部分パスを特定する部分パス分類手段と、
前記テストケース実行条件テーブルに基づき、前記不通過の部分パスのいずれをも前記第一の部分パスとせず、かつ、前記通過部分パスのいずれか一つ以上を前記第一の部分パスとして含むテストケース、または、前記通過部分パスのいずれをも前記第一の部分パスとせず、かつ、前記不通過部分パスのいずれか１つ以上を前記第一の部分パスとして含むテストケースを、前記第一のテストケースから抽出する実施可能テストケース抽出手段と、
前記実施可能テストケース抽出手段によりテストケースが抽出された場合は、前記キュー登録手段が、当該実施可能テストケース抽出手段によりテストケースを前記キューに登録し、
前記キュー登録手段によって前記キューに登録されたテストケースについての、前記テスト実行状況をキュー登録状態に更新するテスト実行状況設定手段と、
を有するを特徴とするテスト実行システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムをテストする装置及びシステムに関する。
【背景技術】
【０００２】
企業活動において必須の業務の実現や業務の効率化などを目的に設置される大規模な計算機システムのプログラムは、再利用や保守の効率化を目的とし、一般に複数のコンポーネントを組み合わせて構築される。従って、プログラムの開発時には、動作確認をされたソースコードの行が、ソースコード全体に占める割合を高くすることにより品質を確保するために、コンポーネント間で多数のテストをおこなう必要がある。
【０００３】
この課題を解決するための背景技術として、特開平６−１７５８８４号公報（特許文献１）、特許公開2008-129661（特許文献２）がある。
【０００４】
特許文献１は、プログラムの出力値に間違いがある場合、原因となる一つの行を発見することにより、不良原因の発見を効率化する。具体的には、変数の違いに関与しているソースコードの行を逆算し、誤っている出力値に共通に関与する行を絞りこむ。
【０００５】
また特許文献２は、新たにテストを実施しなければならないテストケースを抽出するとともに、テストケースの結果が失敗であった際に新たに行った修正との関係から、以前に失敗したテストケースが再び失敗する可能性の高さを示す優先度を決定することにより、プログラム修正時のテストの実行順序の指定を効率化する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平６−１７５８８４号公報
【特許文献２】特開２００８−１２９６６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記特許文献１を用いることにより、ソースコード上の一行に不良がある場合に、一つのプログラムを対象にした不良発見の自動化を図ることができる。しかし、上述したような大規模プログラムのテストのようなケースで生じる、多量のコンポーネントを対象としたテストに適しているとは言い難い。
【０００８】
その要因として、不良の原因として特定可能な範囲を一か所に制限しているため、ソースコード上に複数の間違いがあるような場合には間違いを全て検出できないことを挙げることができる。
【０００９】
また、上記特許文献２を用いることにより、ソースコードを修正した際に、テスト実行順序の指定の効率化を図ることができる。しかし、上述したような大規模プログラムのテストのようなケースで生じる、多量のコンポーネントを対象としたテストに適しているとは言い難い。
【００１０】
その要因として、不良の原因であるソースコードの行を実行するテストケースが多数存在し、不良原因の修正後はそれらのテストケースの再実行が必要となるため、結果としてテストの実行効率が低下し、動作確認をしたソースコードの行のソースコード全体に占める割合を高め品質を確保することが難しくなることを挙げることができる。また、ソースコードの修正が前提であることも要因の一つに挙げることができる。
【００１１】
そのため、多数のコンポーネントの組み合わせをテストする際は、不良の原因がソースコードの複数個所にある場合に不良原因を発見し、かつ動作確認をしたソースコードの行のソースコード全体に占める割合を高くするために、問題のあるソースコードの行を繰り返し実行することを避けつつ、なるべく多くのテストケースを実行できるよう、テスト順序を効率的に組み替えることが先決であるといえる。
【００１２】
本発明の目的は、多数のコンポーネントからなる大規模プログラムを対象としたテスト作業の効率化を図ることである。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明では、テストケースのテスト対象であるプログラムの各々を構成する部分パスについて、各々の部分パスを通過することが期待されるか否かをあらかじめ登録しておき、テストケースを実行した結果、通過が期待された部分パスを通過できなかった場合に、未実行のテストケースのうち、通過できなかった部分パスを通過することが期待されているテストケースを実行不可に設定し、実行不可と設定されていないテストケースを優先的に実行する。
【００１４】
具体的な一例として、本願発明のテスト実行装置は、テストケースに対応付けられた複数のプログラムを実行する１以上のテスト実行装置と接続したテスト実行管理装置であって、テストケースに対応付けられた前記複数のプログラムの各々を構成する部分パスについて、テストケースごとに、当該テストケースにおいて通過することが期待される第一の部分パスと、通過しないことが期待される第二の部分パスを区別して登録したテストケース実行条件テーブルと、実行されたテストケースについての実行済みプログラムの実行の成否を登録したプログラム実行結果テーブルと、前記実行されたテストケースにおける前記第一の部分パスの各々についての通過の成否を登録した部分パス実行結果テーブルと、を記憶した記憶手段と、実行対象であるテストケースを特定してキューに登録するキュー登録手段と、前記プログラム実行結果テーブルを参照し、前記実行済みプログラムの実行の成否を判断するプログラム実行結果判断手段と、前記実行済みプログラムの実行結果が実行不可であった場合は、前記部分パス実行結果テーブルに基づき、前記実行されたテストケースについての前記第一の部分パスのうち、通過できなかった部分パスを特定する部分パス特定手段と、前記テストケース実行条件テーブルを参照し、前記キューに登録されたテストケースに、前記通過できなかった部分パスを前記第一の部分パスとする、実行不可なテストケースが含まれるか判断する登録テストケース調査手段と、前記実行不可なテストケースがあった場合は、当該実行不可なテストケースを前記キューから削除する登録テストケース削除手段と、を有する。
【発明の効果】
【００１５】
本発明によれば、多数のコンポーネントからなる大規模プログラムを対象としテストをする場合に、効率よくテスト作業を行うことができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施の形態における管理用計算機と、テスト実行計算機と、テスト実行計算機との構成を示す図である。
【図２】本発明の実施の形態におけるテスト実行条件ファイルを示す図である。
【図３】本発明の実施の形態におけるテストケースリストファイルを示す図である。
【図４】本発明の実施の形態における部分パス情報ファイルを示す図である。
【図５】本発明の実施の形態におけるプログラム構成情報ファイルを示す図である。
【図６】本発明の実施の形態におけるテスト実行環境情報ファイルを示す図である。
【図７】本発明の実施の形態におけるプログラム実行結果一時情報を示す図である。
【図８】本発明の実施の形態における部分パス実行結果一時情報を示す図である。
【図９】本発明の実施の形態におけるテスト状況一覧情報を示す図である。
【図１０】本発明の実施の形態における部分パス実行状況一覧情報を示す図である。
【図１１】本発明の実施の形態における部分パス問題可能性情報を示す図である。
【図１２】本発明の実施の形態におけるテストケースキュー情報を示す図である。
【図１３】本発明の実施の形態における出力装置の表示を説明する図である。
【図１４】本発明の実施の形態における全体処理部の処理を説明するフローチャートである。
【図１５】本発明の実施の形態におけるテストケース実行呼出処理部の処理を説明するフローチャートである。
【図１６】本発明の実施の形態におけるテストケース選択処理部の処理を説明するフローチャートである。
【図１７】本発明の実施の形態におけるテストケース実行可否情報更新処理部の処理を説明するフローチャートである。
【図１８】本発明の実施の形態におけるデバッグ実行処理部の処理を説明するフローチャートである。
【発明を実施するための形態】
【００１７】
以下、図１から図１８を用いて、多数のコンポーネントからなる大規模プログラムを対象としテストをする場合に、不良の原因がソースコードの複数個所にある場合に不良原因を発見し、かつ品質を確保するべく動作確認をしたソースコードの行のソースコード全体に占める割合を高くするために、問題のあるソースコードの行を繰り返し実行することを避けつつ、なるべく多くのテストケースを実行できるよう、テスト順序を効率的に組み替えることによりテストの進捗を促進し、効率よくテスト作業を行うことができる、プログラムのテストについて説明する。
【００１８】
図1は、本発明の実施の形態における構成図である。図１に示す管理用計算機１は、テストケースを選別し、テスト実行計算機２またはテスト実行計算機３にテストを指示し、結果を受け取るための装置である。テスト実行計算機２及びテスト実行計算機３は、管理用計算機１からテストの指示を受けてテストを実行し、実行結果を保存するための装置である。
【００１９】
以下、管理用計算機１の構成を説明する。
管理用計算機１は、ＣＰＵ１１と、メモリ１２と、を有する。
ＣＰＵ１１とメモリ１２とは、入力装置１３と、出力装置１４と、に接続する。また、ＣＰＵ１１とメモリ１２とは、記憶装置１５に接続する。また、ＣＰＵ１１とメモリ１２とは、テスト実行計算機２のＣＰＵ２１と、テスト実行計算機３のＣＰＵ３１とに接続する。
【００２０】
記憶装置１５は、テストケースとテスト実行計算機２及びテスト実行計算機３が実行すべきプログラムごとに通るべきソースコードの行である部分パスとの関係を定義する情報を格納するテストケース実行条件ファイル１０１と、テストケースとそのテストケースを実行するためにテスト実行計算機２及びテスト実行計算機３が実行すべきプログラムと、テスト実行計算機２及びテスト実行計算機３がテスト実行結果を比較するための情報との関係を定義する情報を格納するテストケースリストファイル１０２と、テストケース実行条件ファイル１０１に示される部分パスと、テスト実行計算機２及びテスト実行計算機３が実行すべきプログラムが有するコンポーネントと、コンポーネントのソースコードとの関係を定義する情報を格納する部分パス情報ファイル１０３と、テスト実行計算機２及びテスト実行計算機３がテストケースを実行するため実行すべきプログラムと、部分パス情報ファイル１０３に定義されるコンポーネントの関係を定義する情報を格納するプログラム構成情報ファイル１０４と、テスト実行計算機２及びテスト実行計算機３におけるテストケース実行数の最大値を定義する情報を格納するテスト実行環境情報ファイル１０５と、を保持する。
【００２１】
更に、メモリ１２は、全体処理部１５１と、テストケース実行呼出処理部１５２と、テストケース選択処理部１５３と、テストケース実行可否情報更新処理部１５４と、プログラム実行結果一時情報１７１と、部分パス実行結果一時情報１７２と、テスト状況一覧情報１７３と、部分パス実行状況一覧情報１７４と、部分パス問題可能性情報１７５と、テストケースキュー情報１７６と、を保持する。
プログラム実行結果一時情報１７１は、テスト実行計算機２及びテスト実行計算機３において実行した一つのテストケースの実行結果を示す情報である。
部分パス実行結果一時情報１７２は、テスト実行計算機２及びテスト実行計算機３において実行した一つのテストケースに対応する複数の部分パスの実行状況を示す情報である。
テスト状況一覧情報１７３は、出力装置１４に出力される、テスト実行計算機２及びテスト実行計算機３におけるテストの実行状況と、プログラム実行結果一時情報１７１に示されるテストケースの実行結果と、テスト実行計算機２及びテスト実行計算機３におけるテストケースの実行可否と、実行不可の理由となるテストケースとの関係を示す情報である。なお、テストケースの実行不可とは、テストケースにおいて通過すべき部分パスをプログラムが通過しなかった場合や通過すべき部分パスでプログラムが停止した場合など、期待される動作結果を得られなかった場合を意味する。
【００２２】
部分パス実行状況一覧情報１７４は、出力装置１４に出力される、テストケース実行条件ファイル１０１に示されるテストケースごとの、テスト実行計算機２及びテスト実行計算機３におけるテストケース実行条件ファイル１０１に指定される部分パスの実行状況を示す情報である。
部分パス問題可能性情報１７５は、テスト実行計算機２及びテスト実行計算機３におけるテストの実行結果と部分パスの実行結果とからテストケース実行可否情報更新処理部１５４において計算される、部分パス情報ファイル１０３に定義される部分パスの問題可能性を示す情報である。
テストケースキュー情報１７６は、テスト実行計算機２及びテスト実行計算機３において、テストケースの実行数が、テスト実行環境情報ファイル１０５に指定される最大実行数を下回った時に実行可能となるテストケースの集合を示す情報である。
【００２３】
全体処理部１５１は、本発明の実施の形態における一連の処理を順に呼び出す処理部である。全体処理部１５１は、入力装置１３からの入力を受け処理を開始し、後に述べるテストケース実行呼出処理部１５２と、テストケース選択処理部１５３と、テストケース実行可否情報更新処理部１５４とを呼び出す。 
テストケース実行呼出処理部１５２は、テストケースキュー情報１７６からテストケースを選択し、テスト実行計算機２またはテスト実行計算機３に対してテストケース実行条件ファイル１０１及びプログラム構成情報ファイル１０４の情報を渡し、プログラム実行結果一時情報１７１及び部分パス実行結果一時情報１７２を受け取り、受け取った情報をメモリに格納する処理部である。
テストケース選択処理部１５３は、テストケース実行条件ファイル１０１から全てのテストケースが実行すべき部分パスの情報を読み込み、実行しているもしくはテストケースキュー情報１７６にある他のテストケースが実行すべき部分パスの情報を参照し、その情報にない部分パスが対象となるテストケースが実行すべき部分パスの情報に存在しない場合、対象となるテストケースをテストケースキュー情報１７６に格納する処理を用意する処理部である。
【００２４】
テストケース実行呼出処理部１５２とテストケース選択処理部１５３は、本発明の実施の形態の特徴の一つである。テストケース実行呼出処理部１５２により、同時に実行可能なテストケースをテスト実行環境情報ファイル１０５に示される最大実行数以内の件数のテストケースを実行することが可能となる。また、テスト実行中にテストケース選択処理部１５３がテストケースキュー情報１７６にテストケースを登録し、実行中のテストが終了した後にテストケース実行呼出処理部１５２がテストケースキュー情報１７６からテストケースを選択することより、実行可能なテストケースを早期かつ大量に実行することが可能となる。
テストケース実行可否情報更新処理部１５４は、テストケースの実行結果が失敗であった場合に、テストが停止した部分パス及びテストケースにおいて新規に追加した部分パスに対して問題可能性があることを示す値を設定し、メモリ上にテストケースの実行可否を格納し、問題可能性があると設定された部分パスを有する全てのテストケースの実行を不可能に設定し、設定処理において問題可能性があると設定された部分パスを有するテストケースをキューから取り除く処理部である。これにより、テストケース実行可否情報更新処理部１５４により、不良分析の効率を上げるとともに、ある一つの不良に関係するテストケース多数を無駄に実行することを防ぐことが可能となる。
以上が、管理用計算機１の構成である。
【００２５】
次に、テスト実行計算機２の構成を説明する。
テスト実行計算機２は、ＣＰＵ２１と、メモリ２２と、を有する。
ＣＰＵ２１とメモリ２２とは、記憶装置２３に接続する。
記憶装置２３は、ＣＰＵ２１がメモリ２２にロードすることにより実行対象のプログラムとなるプログラムファイル２０１と、後に述べるデバッグ実行処理部２５２におけるプログラムの実行結果に問題がないかを確認する比較対象となる出力比較用ファイル２０２と、を保持する。
更に、メモリ２２は、プログラム２５１と、デバッグ実行処理部２５２と、デバッガ２５３と、プログラム実行結果一時情報２７１と、部分パス実行結果一時情報２７２と、を保持する。
【００２６】
プログラム２５１は、テスト対象となるプログラムである。プログラム２５１は、プログラムファイル２０１をメモリ２２にロードしたプログラムである。
デバッグ実行処理部２５２は、プログラム２５１を後に述べるデバッガ２５３を通じて実行し、デバッガ２５３から渡される実行されたソースコードの行の情報を、管理用計算機１から渡されたテストケース実行条件ファイル１０１及びプログラム構成情報ファイル１０４の情報と比較し、結果を部分パス実行結果一時情報２７２に出力する。またデバッグ実行処理部２５２は、プログラム２５１の出力結果を出力比較用ファイル２０２と比較し、プログラム実行結果一時情報２７１に出力する処理部である。
デバッガ２５３は、プログラム２５１をデバッグ実行するデバッガである。デバッガ２５３は、デバッグ実行処理部２５２から呼び出され、プログラム２５１が実行した処理に対応するソースコードの行の情報を返す。
【００２７】
プログラム実行結果一時情報２７１は、デバッグ実行処理部２５２により出力される、プログラム２５１のテスト結果が成功であるかを示す情報である。プログラム実行結果一時情報２７１の内容は、デバッグ実行処理部２５２により管理用計算機１に渡されるため、プログラム実行結果一時情報１７１と同一となる。
部分パス実行結果一時情報２７２は、デバッグ実行処理部２５２により出力される、プログラム２５１が実行した部分パスを示す情報である。部分パス実行結果一時情報２７２の内容は、デバッグ実行処理部２５２により管理用計算機１に渡されるため、部分パス実行結果一時情報１７２と同一となる。
以上が、テスト実行計算機２の構成である。
【００２８】
最後に、テスト実行計算機３の構成を説明する。
テスト実行計算機３は、ＣＰＵ３１と、メモリ３２と、を有する。
ＣＰＵ３１とメモリ３２とは、記憶装置３３に接続する。
記憶装置３３は、プログラムファイル２０１と同様の構成であるプログラムファイル３０１と、出力比較用ファイル２０２と同様の構成である出力比較用ファイル３０２と、を保持する。
更に、メモリ３２は、プログラム２５１と同様の構成であるプログラム３５１と、デバッグ実行処理部２５２と同様の構成であるデバッグ実行処理部３５２と、デバッガ２５３と同様の構成であるデバッガ３５３と、プログラム実行結果一時情報２７１と同様の構成であるプログラム実行結果一時情報３７１と、部分パス実行結果一時情報２７２と同様の構成である部分パス実行結果一時情報３７２と、を保持する。
即ち、テスト実行計算機３の構成は、テスト実行計算機２の構成と同様である。
以上が、前記テスト実行計算機３の構成である。
図１では、テスト実行計算機２及びテスト実行計算機３の２台のテスト実行計算機を示しているが、テスト実行計算機は1台でも、３台以上でも本発明は成り立つ。また、テスト実行計算機が管理用計算機と同じ計算機であっても、本発明は成り立つ。
また、テスト実行計算機を本発明の構成に含めず、管理用計算機１から外部のテスト実行計算機に命令を出す方法でも、出力装置１４に命令を表示し、入力装置１３から結果を受け取る形でも、本発明は成り立つ。
また、図１では記憶装置１５と、記憶装置２３と、記憶装置３３とは独立しているが、記憶装置の構成が異なっていても本発明は成り立つ。
【００２９】
テストケース実行条件ファイル１０１と、テストケースリストファイル１０２と、部分パス情報ファイル１０３と、プログラム構成情報ファイル１０４と、テスト実行環境情報ファイル１０５と、プログラム実行結果一時情報１７１と、部分パス実行結果一時情報１７２と、テスト状況一覧情報１７３と、部分パス実行状況一覧情報１７４と、部分パス問題可能性情報１７５と、テストケースキュー情報１７６との詳細な説明、及び、全体処理部１５１と、テストケース実行呼出処理部１５２と、テストケース選択処理部１５３と、テストケース実行可否情報更新処理部１５４と、デバッグ実行処理部２５２との詳細な流れ、及び、出力装置１４の出力結果の詳細、については後述する。
【００３０】
以下、図２から図１３を用いて、本発明の実施の形態における各ファイルの詳細と、出力装置１４の表示の詳細とを説明する。
図２は、テストケース実行条件ファイル１０１を示す図である。テーブル１０１０はテストケース実行条件ファイル１０１の一例である。テーブル１０１０は、列として、テストケースＩＤ１０１０１を、行として、部分パスＩＤ１０１０２を有する。列１０１３１と、列１０１３２と、列１０１３３と、列１０１３４と、列１０１３５と、列１０１３６とは、特定のテストケースＩＤ１０１０１において部分パスＩＤ１０１０２によって示される部分パスをテストケースが実行すべきであることを示す値「ある」、またはテストケースが実行しないことを示す「なし」、またはテストケースが実行すべきであり更にこのテストケースＩＤが部分パスを初めてテストする組に属することを示す値である「新規」のいずれかの値をとるセルからなるテーブル１０１０のレコードである。また、行１０１５１と、行１０１５２と、行１０１５３とは、テストケースＩＤ１０１０１によって示されるテストケースにおいて、特定の部分パス１０１０２をテストケースが実行すべきかを示すセルからなるテーブル１０１０のレコードである。セル１０１７１は、テストケースＩＤ１０１０１の値が「１」であるテストケースにおいて、部分パスＩＤ１０１０２の値が「１」である部分パスを実行し、かつこのテストケースＩＤが部分パスＩＤ１０１０２の値が「１」である部分パスを初めてテストするテストケースの組に属することを示す。
【００３１】
図３は、テストケースリストファイル１０２を示す図である。テーブル１０２０はテーブルテストケースリストファイル１０２の一例である。行１０２５１と、行１０２５２と、行１０２５３と、行１０２５４と、行１０２５５と、行１０２５６とはテーブル１０２０のレコードである。テーブル１０２０はフィールドとして、テストケースＩＤ１０２０１と、実行プログラム１０２０２と、出力比較用ファイル１０２０３とを有する。レコード１０２５１は、テストケースＩＤ１０２０１が「１」であるテストケースは、実行プログラム１０２０２「ｔｅｓｔｃａｓｅ０００１」を実行し、「ｔｅｓｔｃａｓｅ０００１」の出力を出力比較用ファイル１０２０３「ｄａｔａ０００１」と比較して実行プログラムの実行結果の成否を判断する必要があることを示す。例では出力比較用ファイルを一つとしているが、テスト実行時の比較対象は一つに限定されるものでなく、複数ファイルでも、また例えば画面出力の比較でも良い。また部分パスの実行結果によりテストの成否が判別できる場合は、比較を行わなくともよい。
【００３２】
図４は、部分パス情報ファイル１０３を示す図である。テーブル１０３０は部分パス情報ファイル１０３の一例である。行１０３５１と、行１０３５２と、行１０３５３と、行１０３５４と、行１０３５５と、行１０３５６とはテーブル１０３０のレコードである。テーブル１０３０はフィールドとして、部分パスＩＤ１０３０１と、コンポーネント１０３０２と、ソースコード１０３０３と、開始行番号１０３０４と、終了行番号１０３０５とを有する。レコード１０３５１は、部分パスＩＤ１０３０１が「１」である部分パスが、コンポーネント１０３０２「ｃｍｐ００１」のソースコード１０３０３「ｆｕｎｃ００１．ｊａｖａ」において、開始行番号１０３０４「１０」から終了行番号１０３０５「２０」までの行を指すことを意味する。
【００３３】
図５は、プログラム構成情報ファイル１０４を示す図である。テーブル１０４０はプログラム構成情報ファイル１０４の一例である。行１０４５１と、行１０４５２と、行１０４５３とはテーブル１０４０のレコードである。テーブル１０４０はフィールドとして、プログラム１０４０１と、コンポーネント１０４０２とを有する。レコード１０４５１は、プログラム１０４０１「ｔｅｓｔｃａｓｅ０００１」が、コンポーネント１０４０２「ｃｍｐ００１」からなることを示す。
【００３４】
図６は、テスト実行環境情報ファイル１０５を示す図である。テーブル１０５０はテスト実行環境情報ファイル１０５の一例である。行１０５５１と、行１０５５２とはテーブル１０５０のレコードである。テーブル１０５０はフィールドとして、最大実行数１０５０１とテスト実行計算機名１０５５２とを有する。レコード１０５５１は、テスト実行計算機名１０５５２が「テスト実行計算機２」である計算機が受け入れ可能なテストプログラムの最大実行数１０５０１が「２」であることを示す。なお、図１におけるテスト実行計算機２の名称を「テスト実行計算機２」、テスト実行計算機３の名称を「テスト実行計算機３」とする。
【００３５】
図７は、プログラム実行結果一時情報１７１を示す図である。テーブル１７１０はプログラム実行結果一時情報１７１の一例である。行１７１５１はテーブル１７１０のレコードである。テーブル１７１０はフィールドとして、テストケースＩＤ１７１０１と、実行結果１７１０２とを有する。レコード１７１０１は、テストケースＩＤ１７１０１「１」であるテストケースに対応するプログラムの実行結果１７１０２が「失敗」であることを示す。
【００３６】
図８は、部分パス実行結果一時情報１７２を示す図である。テーブル１７２０は部分パス実行結果一時情報１７２の一例である。行１７２５１はテーブル１７２０のレコードである。テーブル１７２０はフィールドとして、部分パスＩＤ１７２０１と、部分パス実行状況１７２０２とを有する。レコード１７２５１は部分パスＩＤ１７２０１が「１」である部分パスの部分パス実行状況１７２０２が「停止」であること、即ちプログラム２５１の実行が、部分パスＩＤ１７２０１が「１」である部分パスの実行時に停止したことを示す。なお、部分パスが停止することなく実行された場合、部分パス実行状況１７２０２は「実行済」となる。
【００３７】
図９は、テスト状況一覧情報１７３を示す図である。テーブル１７３０はテスト状況一覧情報１７３の一例である。行１７３５１と、行１７３５２と、行１７３５３と、行１７３５４と、行１７３５５と、行１７３５６とはテーブル１７３０のレコードである。テーブル１７３０はフィールドとして、テストケースＩＤ１７３０１と、テスト状況１７３０２と、テスト結果１７３０３と、実行可否１７３０４と、実行不可理由１７３０５と、テスト実行計算機名１７３０６とを有する。レコード１７３５１は、テストケースＩＤ１７３０１が「１」であるテストケースのテスト状況１７３０２が「実行済」であり、実行したテスト実行計算機名１７３０６が「テスト実行計算機２」であり、テスト結果１７３０３が「失敗」であり、またテストケースの実行可否１７３０４がテスト実行前に「実行可能」であったことを示す。またレコード１７３５５は、テストケースＩＤ１７３０１が「５」であるテストケースのテスト状況１７３０２が「未実行」であり、従ってテスト結果１７３０３も「未実行」であり、実行可否１７３０４が「実行不可」であり、その実行不可理由１７３０５が、テストケースＩＤ１７３０１が「１」であるテストケースが失敗したからであることを示す。
【００３８】
図１０は、部分パス実行状況一覧情報１７４を示す図である。テーブル１７４０は部分パス実行状況一覧情報１７４の一例である。テーブル１７４０は列として、テストケースＩＤ１７４０１を、行として、部分パスＩＤ１７４０２を有する。列１７４３１と、列１７４３２と、列１７４３３と、列１７４３４と、列１７４３５と、列１７４３６とは、特定のテストケースＩＤ１７４０１において部分パスＩＤ１７４０２によって示される部分パスＩＤが実行されたことを示す値「実行済」、または実行されていないことを示す「未実行」、部分パスを実行する予定がないことを示す「なし」、または実行され更にこのテストケースが部分パスＩＤ１７４０２によって示される部分パスＩＤにおいて停止したことを示す値である「停止」のいずれかの値をとるセルからなるテーブル１７４０のレコードである。また、行１７４５１と、行１７４５２と、行１７４５３とは、テストケースＩＤ１７４０１によって示されるテストケースにおいて、特定の部分パス１７４０２が実行されたかを示す前記セルからなるテーブル１７４０のレコードである。セル１７４７１は、テストケースＩＤ１７４０１の値が「１」であるテストケースを実行した結果、部分パスＩＤ１７４０２の値が「１」である部分パスが実行されたことを示す。
【００３９】
図１１は、部分パス問題可能性情報１７５を示す図である。テーブル１７５０は部分パス問題可能性情報１７５の一例である。行１７５５１と、行１７５５２とはテーブル１７５０のレコードである。テーブル１７５０はフィールドとして、部分パスＩＤ１７５０１と、問題可能性１７５０２とを有する。レコード１７５５１は、これまでのテスト実行から、部分パスＩＤ１７５０１が「１」である部分パスに問題可能性１７５０２がある旨、情報を指定されたことを示す。
【００４０】
図１２は、テストケースキュー情報１７６を示す図である。テーブル１７６０はテストケースキュー情報１７６の一例である。行１７６５１はテーブル１７６０のレコードである。テーブル１７６０はフィールドとして、テストケースＩＤ１７６０１とを有する。レコード１７６５１は、テストケースＩＤ１７６０１が「６」であるテストケースがキューに保持されていることを示す。
【００４１】
図１３は、出力装置１４の表示を示す図である。テスト実行状況表示１４０１は出力表示１４の一例である。行１４２５１と、行１４２５２と、行１４２５３と、行１４２５４と、行１４２５５と、行１４２５６とは、それぞれテストケースの実行状況を表す。テストケースＩＤ１４２０１は、実行されるテストケースのＩＤを表す。テスト実行状況表示１４０１には、テストケースＩＤ１４２０１が「１」から「６」までの６個のテストケースの実行状況が表示されている。テスト状況１４２０２はテスト状況一覧情報１７３のテストの実行状況を示す。テスト状況１４２０２はテスト結果が「失敗」であるか、「実行中」であるか、「実行予定」であるか、他のテストケースの結果により実行不可であるかのいずれかである。「実行予定」である場合は、テスト実行計算機名１７３０６も表示される。問題可能性のある部分パス１４２０３は、テスト状況１４２０２が「失敗」であるときに、テストケース実行可否情報更新処理部１５４により問題可能性のある部分パスであることを指定された部分パスの情報、即ち部分パス情報ファイル１０３のコンポーネント１０３０２とソースコード１０３０３と開始行番号１０３０４と終了行番号１０３０５とを示す。レコード１４２５１は、テストケースＩＤ１４２０１が「１」であるテストケースが実行済かつ結果が失敗であり、問題可能性のある部分パス１４２０３はコンポーネント「ｃｍｐ００１」のソースコード「ｆｕｎｃ００１．ｊａｖａ」の１１行目から２０行目であることを示す。また、行１４２５５はテストケースＩＤ１４２０１が「５」であるテストケースが、テストケースＩＤ１４２０１が「１」であるテストケースが失敗したため実行不可とテストケース実行可否情報更新処理部１５４により指定されたことを示す。
【００４２】
次に、本発明の実施の形態における、各処理部での処理の流れを説明する。
まず、全体処理部１５１の流れを、図１４のフローチャートを参照しながら、詳細に説明する。第一に、入力装置１３から全体処理部１５１の起動を受け付ける（ステップ１５１０１）。次に、テストケース実行呼出処理部１５２と、テストケース選択処理部１５３と、テストケース実行可否情報更新処理部１５４とを開始する（ステップ１５１０２）。ステップ１５１０２実行後、全体処理部１５１の処理を終了する。
次に、テストケース実行呼出処理部１５２の流れを、図１５のフローチャートと、図２のテストケース実行条件ファイル１０１と、図３のテストケースリストファイル１０２と、図６のテスト実行環境情報ファイル１０５と、図９のテスト状況一覧情報１７３と、図１２のテストケースキュー情報１７６とを参照しながら、詳細に説明する。まず、テストケース実行呼出処理部１５２は、テスト実行環境情報ファイル１０５から最大実行数１０５０１とテスト実行計算機名１０５０２とを取得する（ステップ１５２０１）。図６のテスト実行環境情報ファイル１０５を例にして示すと、レコード１０５５１とレコード１０５５２より、値「２」及び「テスト実行計算機２」と、値「２」及び「テスト実行計算機３」を取得する。次に、テスト状況一覧情報１７３から全レコードを取得する（ステップ１５２０２）。
【００４３】
次に、実行環境に空きがあるかを確認する。即ち、ステップ１５２０２においてテスト状況一覧情報１７３から取得したレコードのうち、テスト実行計算機名１７３０６を同じくするテスト状況１７３０２の値が「実行中」であるレコードの数がステップ１５２０１において取得した最大実行数１０５０１未満であることがあるかを確認する（ステップ１５２０３）。図９のテスト状況一覧情報１７３を例にして示すと、テスト実行計算機名１７３０６が「テスト実行計算機３」であるテスト状況１７３０２が「実行中」であるレコードが、レコード１７３５２とレコード１７３５３との２レコードあるため、ステップ１５２０１において取得した最大実行数１０５０１「２」以上である。また、テスト実行計算機名１７３０６が「テスト実行計算機２」であるテスト状況１７３０２が「実行中」であるレコードが、レコード１７３５４の１レコードあるため、ステップ１５２０１において取得した最大実行数１０５０１「２」未満である。従って「テスト実行計算機２」を名称とするテスト実行計算機２に空きがあることが分かる。
ステップ１５２０３において最大実行数１０５０１以上である場合は、一定時間が経過するまで処理を停止し（ステップ１５２０４）、ステップ１５２０２に戻る。
ステップ１５２０３において最大実行数１０５０１未満である場合は、キューにテストケースがあるかを確認する。即ち、テストケースキュー情報１７６にレコードがあるかを確認する（ステップ１５２０５）。図１２のテストケースキュー情報１７６を例にして示すと、テーブル１７６０にレコードがあるかを確認する。
【００４４】
ステップ１５２０５においてキューにレコードがある場合は、キューにあるテストケースを選択する。即ち、テストケースキュー情報１７６にあるレコードのうちテストケースＩＤ１７６０１が最小の一つを選択する（ステップ１５２０６）。図１２のテストケースキュー情報１７６を例にして示すと、レコード１７６５１にテストケースＩＤ１７６０１の値「６」が存在するため、レコード１７６５１を取得する。次に、テストケース実行条件ファイル１０１から、テストケースＩＤ１０２０１がステップ１５２０６において選択したレコードのテストケースＩＤ１７６０１に値が一致するテストケースＩＤ１０１０１の列において、値が「新規」または「あり」である部分ＩＤ１０１０２の集合を取得する（ステップ１５２０７）。図２のテストケース実行条件ファイル１０１を例にして示すと、テストケースＩＤ１０１０１が「６」である列１０１３６において値が「新規」または「あり」である部分パスＩＤ１０１０２「２」と「３」とからなる集合を取得する。
【００４５】
次に、テストケースリストファイル１０２から、テストケースＩＤ１０２０１がステップ１５２０６において選択したレコードのテストケースＩＤ１７６０１に一致するレコード一つを取得する（ステップ１５２０８）。図３のテストケースリストファイル１０２を例にして示すと、テストケースＩＤ１０２０１が「６」であるレコード１０２５６を取得する。次に、キューにあるテストケースを開始する。即ち、ステップ１５２０３において空きがあると判明した計算機のデバッグ実行処理部２５２またはデバッグ実行処理部３５２に、ステップ１５２０７において取得したテストケース実行条件ファイルの部分パスＩＤ１０１０２の集合と、ステップ１５２０８において取得したテストケースリストファイル１０２のレコードとを渡す（ステップ１５２０９）。例では、「テスト実行計算機２」を名称とするテスト実行計算機２のデバッグ実行処理部２５２に、部分パスＩＤ１０１０２「２」と「３」とからなる集合と、レコード１０２５６とを渡す。なお、ステップ１５２０９は、出力装置１３にステップ１５２０７において取得したテストケース実行条件ファイルの部分パスＩＤ１０１０２の集合と、ステップ１５２０８において取得したテストケースリストファイル１０２のレコードとを表示する形もとりうる。
【００４６】
次に、テスト状況を更新する。即ち、テスト状況一覧情報１７３のテストケースＩＤ１７３０１がステップ１５２０６において選択したレコードのテストケースＩＤ１７６０１に一致するレコードのテスト状況１７３０２の値を「実行中」に変更し、テスト実行計算機名１７３０６にステップ１５２０９において情報を渡した計算機名を設定する（ステップ１５２１０）。図９のテスト状況一覧情報１７３を例にして示すと、レコード１７３５６のテスト状況１７３０２を値「キュー」から値「実行中」に変更し、テスト実行計算機名１７３０６に値「テスト実行計算機２」を設定する。
【００４７】
なお、ステップ１５２０５においてキューにレコードない場合は、ステップ１５２０５の次にステップ１５２１０を実行する。
【００４８】
ステップ１５２０５でのキューにおけるレコードの有無にかかわらず、ステップ１５２１０が実行された後は、リストに実行不可でない未実行のテストケースがあるかを確認する。即ち、テスト状況一覧情報１７３において、テスト状況１７３０２の値が「未実行」または「キュー」であり、かつ実行可否１７３０４の値が「実行可能」のレコードがあるかを確認する（ステップ１５２１１）。ステップ１５２１１において「実行可能」のレコードがある場合は、ステップ１５２０２に戻る。ステップ１５２１１において「実行可能」のレコードがない場合は、テストケース実行呼出処理部１５２の処理を終了する。図９を例にして示すと、ステップ１５２１０においてレコード１７３５６を設定した後は、該当するレコードがないため終了する。
【００４９】
次に、テストケース選択処理部１５３の流れを、図１６のフローチャートと、図２のテストケース実行条件ファイル１０１と、図３のテストケースリストファイル１０２と、図９のテスト状況一覧情報１７３と、を参照しながら、詳細に説明する。まず、実行しているテストケースもしくはキューにテストケースがあるかを確認する。即ち、テスト状況一覧情報１７３において、テスト状況１７３０２が「キュー」または「実行中」であるレコードがあるかを確認する（ステップ１５３０１）。
【００５０】
ステップ１５３０１において該当するレコードがない場合は、実行可能でありかつ部分パスＩＤの数が最小のテストケースをキューに追加する。即ち、テスト状況一覧情報１７３において、テスト状況が「未実行」であり、かつ、実行可否１７３０４が「実行不可」でないレコードの中で、テストケースＩＤ１７３０１が最も小さいレコードのテストケースＩＤ１７３０１の値をテストケースＩＤ１７６０１として有するレコードを、テストケースキュー情報１７６に追加する（ステップ１５３０２）。 
ステップ１５３０２の後に、テスト状況一覧情報１７３を更新する。すなわち、ステップ１５３０２においてテストケースキュー情報１７６に追加したレコードのテストケースＩＤ１０１０１に対応するテストケースＩＤ１７３０１を有するテスト状況一覧情報１７３のレコードの、テスト状況１７３０２に値「キュー」と、テスト結果１７３０３に値「未実行」と、実行可否１７３０４に値「実行可能」とを書き込む（ステップ１５３０５）。
ステップ１５３０１において該当するレコードがある場合は、テスト状況が「実行中」「実行済」「キュー」である他のテストケース各々に対し、他のテストケースが実行すべき部分パスのいずれかを対象のテストケースが実行すべきであり、かつ他のテストケースが実行すべきでない部分パス各々を実行すべきでない、実行可否17304が「実行可能」であるテストケース（つまり、他のテストケースにおいて実行すべき部分パスを実行すべき部分パスとして含み、他のテストケースにおいて実行すべきでない部分パスを実行すべきでない（他のテストケースにおける実行すべき部分パスから構成される）テストケース）がリストにあるか、または他のテストケースが実行すべきでない部分パスいずれかを対象のテストケースが実行すべきであり、かつ他のテストケースが実行すべき各々の部分パスを実行すべきでない、実行可否17304が「実行可能」であるテストケース（つまり、少なくとも、他のテストケースにとって実行すべき部分パスは実行すべきではない部分パスとしているテストケース）がリストにあるかを確認する（ステップ１５３０３）。
【００５１】
即ち、実行可否１７３０４が「実行不可」ではなくテスト状況１７３０２が「未実行」であるレコードのテストケースＩＤ１７３０１と同じ値のテストケースＩＤ１０２０１を有するレコードか、または、テスト状況一覧情報１７３に登録されたいずれのテストケースＩＤ１７３０１の値とも異なるテストケースＩＤ１０２０１を有するレコードが、テストケースリストファイル１０２に存在することを確認する。そして、テストケースリストファイル１０２に該当するレコードが存在する場合は、テストケース実行条件ファイル１０１を参照し、テスト状況一覧情報１７３においてテスト状況１７３０２が「実行済」または「実行中」または「キュー」であるレコードのテストケースＩＤ１７３０１のいずれかと同じ値であるテストケースＩＤ１０１０１の列において値が「なし」である部分パスＩＤ１０１０２において、テスト状況一覧情報１７３において実行可否１７３０４が「実行不可」でなく、またテスト状況１７３０２が「未実行」であるレコードのテストケースＩＤ１７３０１と同じ値を有するテストケース実行条件ファイル１０１のテストケースＩＤ１０１０１の列において部分パスＩＤ１０１０２が必ず「なし」であり、かつ「なし」でない場合は「なし」でないことがあるレコードか、または、「なし」でない場合は必ず「なし」であり、「なし」である場合は「なし」でないことがあるレコードがテストケース実行条件ファイル１０１に存在するか、を確認する。
【００５２】
以下、図２のテストケース実行条件ファイル１０１と図９のテスト状況一覧情報１７３を例にして、ステップ１５３０１、ステップ１５３０３、ステップ１５３０４の処理を具体的に示す。図９においてレコード１７３５６のテスト状況１７３０２が図９に示された値「キュー」でなく、値「未実行」であるとする。この場合、テスト状況一覧情報１７３において、実行可否１７３０４が「実行不可」でなく、またテスト状況１７３０２が「未実行」であるレコードのテストケースＩＤ１７３０１は「６」のみとなる。また、テストケースＩＤ１７３０１にある全ての値と同じ値でないテストケースＩＤ１０２０１を有するレコードがテストケースリストファイル１０２には存在しない。
【００５３】
次に、テスト状況一覧情報１７３においてテスト状況１７３０２が「実行中」または「キュー」であるレコードのテストケースＩＤ１７３０１の値は「２」と、「３」と、「４」となる。図２のテストケース実行条件ファイル１０１において、テストケースＩＤ１０１０１が「２」である列は１０１３２、「３」である列は１０１３３、「４」である列は１０１３４である。列１０１３２において値が「なし」である部分パスＩＤ１０１０２は「２」と「３」、列１０１３３及び列１０１３４において値が「なし」である部分パスＩＤ１０１０２は「１」と「３」である。この場合、テストケースＩＤ１０１０１が「６」である列１０３０６において、値が「なし」である部分パスＩＤ１０１０２は「１」である。すなわち、列１０１３３及び列１０１３４と列１０１３６を比較した場合に、行１０１５１において全ての列のセルの値は「なし」であるが、行１０１５２においては全ての列のセルの値は「なし」でなく、かつ行１０１５３においては列１０１３３及び列１０１３４のセルの値は「なし」であるが、行１０１５６のセルの値は「なし」でない。即ち、テストケースＩＤが「６」であるテストケースはステップ１５３０３での確認条件に該当せず、ステップ１５３０３の確認条件を満たすテストケースＩＤ１７３０１が存在しないことが判明する。
【００５４】
このように処理する理由は、テストケースＩＤが「６」であるテストケースを実行した場合、部分パスＩＤの値が「２」である部分パスＩＤに問題可能性が判明した場合、テストケースＩＤが「６」であるテストケースの実行は無駄になると考えられるためである。ステップ１５３０３において該当するテストケースがある場合は、現在実行している及びテストケースキュー情報１７６にあるテストケースと実行呼出可能なテストケースをテストケースキュー情報１７６に入れる。
【００５５】
即ち、ステップ１５３０３で選択したレコードのテストケースＩＤ１０２０１とテストケースＩＤ１７６０１が同じ値であるレコードをテストケースキュー情報１７６に追加する（ステップ１５３０４）。
【００５６】
ステップ１５３０４の後は、前述のステップ１５３０５を実行し、テスト状況一覧情報１７３を更新する。ステップ１５３０５を実行した後、テスト状況一覧情報１７３においてテスト状況１７３０２が「実行中」または「実行済」であるレコードのテストケースＩＤ１７３０１と同じテストケースＩＤ１０１０１であるテストケース実行条件ファイル１０１の列において、いずれのテストケースにおいてもセルの値が「なし」である部分パスＩＤ１０１０２が、ステップ１５３０２またはステップ１５３０４において読み込んだレコードのテストケースＩＤ１０１０１によって指定されるテストケース実行条件ファイル１０１の列のその部分パスＩＤ１０１０２において、セルの値が「あり」であるセルの値を値「新規」に変更する（ステップ１５３０６）。つまり、新たなテストケースがその部分パスを初めてテストする場合に「新規」を設定する。
【００５７】
ステップ１５３０６を実行した後、リストに実行可能であるテストケースがあるか、即ち、テスト状況一覧情報１７３において、実行可否１７３０４が「実行可能」かつテスト状況１７３０２が「未実行」であるレコードがあるかを確認する（ステップ１５３０７）。ステップ１５３０３において該当するテストケースがない場合も、ステップ１５３０７を実行する。ステップ１５３０７において該当するレコードがある場合は、一定時間が経過するまで処理を停止し（ステップ１５３０８）、ステップ１５３０３に戻る。ステップ１５３０７において該当するレコードがない場合は、テストケース選択処理部１５３の処理を終了する。 
次に、テストケース実行可否情報更新処理部１５４の流れを、図１７のフローチャートと、図２のテストケース実行条件ファイル１０１と、図７のプログラム実行結果一時情報１７１と、図８の部分パス実行結果一時情報１７２と、図９のテスト状況一覧情報１７３と、図１０の部分パス実行状況一覧情報１７４と、図１１の部分パス問題可能性情報１７５と、図１２のテストケースキュー情報１７６と、を参照しながら、詳細に説明する。
まず、テスト実行結果を受け取る。即ち、まず、テストケース実行可否情報更新処理部１５４は、デバッグ実行処理部２５２またはデバッグ実行処理部３５２から、プログラム実行結果一時情報２７１と、部分パス実行結果一時情報２７２とを受け取り、メモリ１２に保持する（ステップ１５４０１）。なお、ステップ１５４０１は、入力装置１３からプログラム実行結果一時情報２７１と、部分パス実行結果一時情報２７２とを受け取る形もとりうる。次に、ステップ１５４０１においてメモリ１２に保持したプログラム実行結果一時情報１７１の実行結果１７１０２の値を、テスト状況一覧情報１７３のテストケースＩＤ１７３０１がプログラム実行結果一時情報１７１のテストケースＩＤ１７１０１と同じであるレコードのテスト結果１７３０３に、値「実行済」をテスト状況１７３０２に、空の値をテスト実行計算機名１７３０６に、それぞれ保存する（ステップ１５４０２）。
【００５８】
次に、ステップ１５４０１においてメモリに保持した部分パス実行結果一時情報１７２の部分パス実行状況１７２０２を、テストケースＩＤ１７４０１がプログラム実行結果一時情報１７１のテストケースＩＤ１７１０１に同じであり、かつ部分パスＩＤ１７４０２が部分パス実行結果一時情報１７２の部分パスＩＤ１７２０１に同じである部分パス実行状況一覧情報１７４のセルに保存する（ステップ１５４０３）。 
次に、ステップ１５４０１においてメモリに保持したプログラム実行結果一時情報１７１の実行結果１７１０２は「成功」であるかを確認する（ステップ１５４０４）。
ステップ１５４０４において実行結果１７１０２が「成功」でない場合は、通過すべき部分パスを全て通過したか、もしくは新たに追加した部分パスにおいて実行を停止したかを確認する。即ち、部分パス実行結果一時情報１７２の部分パスＩＤ１７２０１において部分パス実行状況１７２０２が「実行済」であるか、または、テストケース実行条件ファイル１０１において、プログラム実行結果一時情報１７１のテストケースＩＤ１７１０１と同じ値であるテストケースＩＤ１０１０１と、部分パス実行結果一時情報１７２の部分パスＩＤ１７２０１と同じ値である部分パス１０１０２によって示されるセルの値が「新規」である部分パスＩＤ１７２０１において、部分パス実行結果一時情報１７２の部分パス実行状況１７２０２の値が「停止」であるかを確認する（ステップ１５４０５）。
【００５９】
ステップ１５４０５において部分パス実行状況１７２０２が「実行済」であるか、または部分パス実行状況１７２０２の値が「停止」である場合は、追加した部分パスを問題とみなす。即ち、部分パス１７５０１が、テストケース実行条件ファイル１０１においてテストケースＩＤ１０１０１の値がプログラム実行結果一時情報１７１のテストケースＩＤ１７１０１と同じ値でありかつ値が「新規」であるレコードの部分パスＩＤ１０１０２と同じ値を有する、部分パス問題可能性情報１７５のレコードにおいて問題可能性１７５０２の値を「問題あり」にする（ステップ１５４０６）。 
ステップ１５４０５において部分パス実行状況１７２０２が「実行済」でなくか、かつ部分パス実行状況１７２０２の値が「停止」でない場合は、停止した部分パスを問題とみなす。即ち、部分パスＩＤ１７５０１が、部分パス実行結果一時情報１７２において部分パス実行状況１７２０２の値が「停止」であるレコードの部分パスＩＤ１７２０１と同じ値である部分パス問題可能性情報１７５のレコードにおいて問題可能性１７５０２の値を「問題あり」にする（ステップ１５４０７）。
【００６０】
ステップ１５４０６またはステップ１５４０７を実行した後、問題である部分パスを共有する未実行またはキューにある他テストケースを実行不可とする。即ち、部分パス問題可能性情報１７５において問題可能性情報１７５０２が「問題あり」であるレコードの部分パスＩＤ１７５０１と同じ値の部分パスＩＤ１０１０２を有するセルにおいて値が「あり」または「新規」であるテストケースＩＤ１０１０１と同じ値のテストケースＩＤ１７３０１を有するテスト状況一覧情報１７３のテスト状況１７３０２が「未実行」または「キュー」である各レコードにおいて、実行可否１７３０４を「実行不可」とし、テスト状況１７３０２が「キュー」である場合は「未実行」とし、実行不可理由１７３０５をテストケースＩＤ１０１０１と同じ値とする（ステップ１５４０８）。ステップ１５４０８の処理においては、問題可能性１７５０２の値を「問題あり」及び「問題なし」の２値でなく初期値を０とし、ステップ１５４０８において値を１追加し、閾値を越えたときに「問題あり」とする方法もとりうる
なお、ステップ１５４０５では、追加された部分パス（新規の部分パス）を問題と判断する基準と、テストプログラムが停止した部分パスを問題と判断する基準を示したが、この両方を用いて「実行不可能」とするテストケースを特定しても良いし、いずれか一方を用いて「実行不可能」とするテストケースを特定しても良い。
【００６１】
次に、テスト状況一覧情報１７３において実行可否１７３０４が「実行不可」であるレコードのテストケースＩＤ１７３０１と同じ値のテストケースＩＤ１７３０１を有するテストケースキュー情報１７６のレコードを削除する（ステップ１５４０９）。 
次に、テスト状況一覧情報１７３と、部分パス実行状況一覧情報１７４と、部分パス問題可能性情報１７５とを出力装置１４に送信する（ステップ１５４１０）。ステップ１５４０４において実行結果１７１０２が「成功」である場合は、ステップ１５４１０を実行する。 
ステップ１５４１０を実行した後は、実行可能になるテストケースがないかを確認する。即ち、実行可否１７３０４が「実行可能」であり、かつテスト状況１７３０２が「未実行」であるレコードがテスト状況一覧情報１７３に存在するかを確認する（ステップ１５４１１）。ステップ１５４１１において該当するレコードがある場合は、ステップ１５４０１に戻る。ステップ１５４１１において該当するレコードがない場合は、テストケース実行可否情報更新処理部１５４の処理を終了する。
【００６２】
最後に、デバッグ実行処理部２５２の流れを、図１８のフローチャートと、図３のテストケースリストファイル１０２と、図４の部分パス情報ファイル１０３と、図５のプログラム構成情報ファイル１０４と、図７のプログラム実行結果一時情報１７１と、図８の部分パス実行結果一時情報１７２と、を参照しながら、詳細に説明する。 
まず、テストケース実行呼出処理部１５２より、部分パスＩＤ１０１０２の集合とテストケースリストファイル１０２のレコード一つを受け取る（ステップ２５２０１）。次に、ステップ２５２０１で取得したレコードの実行プログラム１０２０２に指定されるプログラムファイル２０１をメモリ２２にプログラム２５１としてロードする（ステップ２５２０２）。次に、プログラム２５１を、デバッガ２５３を通じステップ実行する（ステップ２５２０３）。
【００６３】
次に、プログラム２５１の実行ステップが、定義された部分パスに該当するかを確認する。即ち、ステップ２５２０１で取得したレコードのプログラムファイル２０１と同じ値である実行プログラム１０４０１を有するプログラム構成情報ファイル１０４の、コンポーネント１０４０２のいずれかと同じ値を有するコンポーネント１０３０２を有する部分パス情報ファイル１０３の、ソースコード１０３０３と同じソースコードの開始行番号１０３０４から終了行番号１０３０５までの行を実行したかを確認する（ステップ２５２０４）。
【００６４】
ステップ２５２０４において該当する行を実行している場合は、次に、プログラム２５１が異常停止したかを確認する（ステップ２５２０５）。 
ステップ２５２０５において異常停止でない場合は、実行した部分パスの情報を記録する。即ち、部分パス実行結果一時情報２７２が現在のデバッグ処理実行部２５２の呼出において未だ作成されていない場合は新規に作成し、部分パスＩＤ１０３０１と同じ値の部分パスＩＤ１７２０２と、値が「実行済」である部分パス実行情報１７２０２からなるレコードを部分パス実行結果一時情報２７２に記入する（ステップ２５２０６）。
ステップ２５２０５において異常停止の場合は、停止した部分パスの情報を記録する。即ち、部分パス実行結果一時情報２７２が現在のデバッグ処理実行部２５２の呼出において未だ作成されていない場合は新規に作成し、部分パスＩＤ１０３０１と同じ値の部分パスＩＤ１７２０２と、値が「停止」である部分パス実行情報１７２０２からなるレコードを部分パス実行結果一時情報２７２に記入する（ステップ２５２０７）。
【００６５】
ステップ２５２０４において該当する行を実行していない場合、または、ステップ２５２０６を実行した場合、次に、プログラム２５１が終了したかを確認する（ステップ２５２０８）。ステップ２５２０８においてプログラム２５１が終了していない場合は、ステップ２５２０３に戻る。ステップ２５２０８においてプログラム２５１が終了している場合は、テストが成功したかを確認する。即ち、部分パス実行結果一時情報２７２に含まれる部分パスＩＤ１７２０１の集合と、ステップ２５２０１で取得した部分パスＩＤ１０１０２の集合が一致し、かつ、プログラム２５１をステップ実行した結果出力されるファイルの内容と、ステップ２５２０１で取得したテストケースリストファイル１０２のレコードの出力比較用ファイル１０２０３により示されるファイルの内容とが一致するかを確認する（ステップ２５２０９）。
【００６６】
ステップ２５２０９において確認した集合及びファイルの内容がいずれも一致した場合は、プログラム実行結果一時情報２７１を作成し、テストケースＩＤ１７１０１の値をステップ２５２０１で取得したレコードのテストケースＩＤ１０２０１とし、実行結果１７１０２の値を「成功」とする一つのレコードを追加する（ステップ２５２１０）。
ステップ２５２０９において確認した集合またはファイルの内容のいずれかが一致しなかった場合は、プログラム実行結果一時情報２７１を作成し、テストケースＩＤ１７１０１の値をステップ２５２０１で取得したレコードのテストケースＩＤ１０２０１とし、実行結果１７１０２の値を「失敗」とする一つのレコードを追加する（ステップ２５２１１）。ステップ２５２０７を実行した場合は、次に、ステップ２５２１１を実行する。
【００６７】
次に、テストケース実行可否情報更新処理部１５３にプログラム実行結果一時情報２７１と、部分パス実行結果一時情報２７２とを送信し（ステップ２５２１２）、最後に、プログラム実行結果一時情報２７１と、部分パス実行結果一時情報２７２とを削除し（ステップ２５２１３）、デバッグ実行処理部２５２の処理を終了する。なお、デバッグ実行処理部３５２の流れは、デバッグ実行処理部２５２の流れと同様である。
【００６８】
なお、本発明の実施の形態の装置構成において、テスト実行計算機は２台に制限される必要はなく、テスト実行計算機は1台でも、３台以上で実現してもよい。
また、テスト実行計算機を構成に含めず、管理用計算機１から外部のテスト実行計算機に命令を出す形、また出力装置１４に実行順序を出力し、人手でテストを実行した後、入力装置１３より入力結果を受け取る形で実現してもよい。
【００６９】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアを用いて実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することにより実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、磁気テープ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）等の記録媒体に置くことができる。
また、各構成要素の接続は説明上必要と考えられるものを示しており、必ずしも全ての接続を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【００７０】
最後に、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【符号の説明】
【００７１】
１      管理用計算機
２      テスト実行計算機
３      テスト実行計算機
１３    入力装置
１４    出力装置
１０１  テストケース実行条件ファイル
１０２  テストケースリストファイル
１０３  部分パス情報ファイル
１０４  プログラム構成情報ファイル
１０５  テスト実行環境情報ファイル
１５１  全体処理部
１５２  テストケース実行呼出処理部
１５３  テストケース選択処理部
１５４  テストケース実行可否情報更新処理部
１７１  プログラム実行結果一時情報
１７２  部分パス実行結果一時情報
１７３  テスト状況一覧情報
１７４  部分パス実行状況一覧情報
１７５  部分パス問題可能性情報
１７６  テストケースキュー情報
２５２  デバッグ実行処理部
３５２  デバッグ実行処理部
【図１】
2013175072.tif 000003
【図２】
2013175072.tif 000004
【図３】
2013175072.tif 000005
【図４】
2013175072.tif 000006
【図５】
2013175072.tif 000007
【図６】
2013175072.tif 000008
【図７】
2013175072.tif 000009
【図８】
2013175072.tif 000010
【図９】
2013175072.tif 000011
【図１０】
2013175072.tif 000012
【図１１】
2013175072.tif 000013
【図１２】
2013175072.tif 000014
【図１３】
2013175072.tif 000015
【図１４】
2013175072.tif 000016
【図１５】
2013175072.tif 000017
【図１６】
2013175072.tif 000018
【図１７】
2013175072.tif 000019
【図１８】
2013175072.tif 000020