(57)【要約】【課題】過去のテスト結果を考慮して好適なテストケースを効率良く抽出することができる装置を提供することを目的とする。【解決手段】テストケーステーブル３２に作成済のテストケースと各テストケースの各回のテスト結果が格納される。オペレータは、テストケース抽出ダイアログ４００でテストケースの間引き率を設定し、間引きパラメータ設定ダイアログ５００でテストケースの抽出に適用されるロジックの優先順位を設定する。テストケースの抽出処理が実行されると、設定されたロジックの優先順位に従い、各テストケースの各回のテスト結果に基づいて、抽出のための優先順位が各テストケースに設定される。そして、設定されている間引き率に基づいて、優先順位の高いテストケースが抽出される。【選択図】図１
2007102475.tif 000002
【特許請求の範囲】
【請求項１】
予め作成され繰り返しテストが実施される複数のテストケースである作成済テストケース群から今回テストが実施されるべき複数のテストケースである実施対象テストケース群を抽出するテストケース抽出装置であって、
前記作成済テストケース群を保持するテストケース保持手段と、
前記作成済テストケース群の各テストケースと対応付けられる当該各テストケースについての各回のテスト結果を保持するテスト結果保持手段と、
前記テスト結果保持手段に保持されている各テストケースについての各回のテスト結果を読み出すテスト結果読み出し手段と、
前記テスト結果読み出し手段によって読み出された各テストケースについての各回のテスト結果に基づいて前記作成済テストケース群から前記実施対象テストケース群を抽出するテストケース抽出手段とを備えていることを特徴とする、テストケース抽出装置。
【請求項２】
前記テストケース抽出手段は、前記実施対象テストケース群として抽出されるテストケースを決定するために、前記テスト結果読み出し手段によって読み出された各テストケースについての各回のテスト結果に基づいて各テストケースの優先順位を設定する優先順位設定手段を備え、
前記優先順位に基づいて、前記作成済テストケース群から前記実施対象テストケース群が抽出されることを特徴とする、請求項１に記載のテストケース抽出装置。
【請求項３】
前記優先順位設定手段は、前記テスト結果読み出し手段によって読み出された各テストケースについての各回のテスト結果に基づいて前記作成済テストケース群の並び替えを行うテストケース並び替え手段を備えることを特徴とする、請求項２に記載のテストケース抽出装置。
【請求項４】
前記作成済テストケース群から前記実施対象テストケース群として抽出されるテストケースの割合または前記作成済テストケース群から前記実施対象テストケース群として抽出されないテストケースの割合を設定するための抽出率設定手段を更に備え、
前記テストケース抽出手段は、前記抽出率設定手段によって設定された割合に基づいて、前記作成済テストケース群から前記実施対象テストケース群を抽出することを特徴とする、請求項１から３までのいずれか１項に記載のテストケース抽出装置。
【請求項５】
前記作成済テストケース群から前記実施対象テストケース群を抽出するための複数のロジックにつき優先順位を設定する抽出ロジック設定手段を更に備え、
前記テストケース抽出手段は、前記作成済テストケース群から前記実施対象テストケース群を抽出する際に、前記抽出ロジック設定手段によって設定された優先順位に従って前記複数のロジックを適用することを特徴とする、請求項１から４までのいずれか１項に記載のテストケース抽出装置。
【請求項６】
前記実施対象テストケース群のうち今回のテストが実施されていないテストケースを抽出する未実施テストケース抽出手段を更に備え、
前記未実施テストケース抽出手段によって抽出されたテストケースから今回テストが実施されるべきテストケースが抽出されることを特徴とする、請求項１から５までのいずれか１項に記載のテストケース抽出装置。
【請求項７】
前記作成済テストケース群のうち今回のテスト対象から除外されているテストケースを抽出する今回テスト対象外テストケース抽出手段を更に備え、
前記今回テスト対象外テストケース抽出手段によって抽出されたテストケースから今回テストが実施されるべきテストケースが抽出されることを特徴とする、請求項１から６までのいずれか１項に記載のテストケース抽出装置。
【請求項８】
前記テスト結果保持手段には、前記各テストケースについての各回のテスト結果として、テストが成功したのか失敗したのかを識別することができる成否識別情報が保持され、
前記テストケース抽出手段は、前記成否識別情報に基づいて、前記作成済テストケース群から前記実施対象テストケース群を抽出することを特徴とする、請求項１から７までのいずれか１項に記載のテストケース抽出装置。
【請求項９】
前記テスト結果保持手段には、前記各テストケースについての各回のテスト結果として、テストが実施されなかったことを示す不実施情報が保持され、
前記テストケース抽出手段は、前記不実施情報に基づいて、前記作成済テストケース群から前記実施対象テストケース群を抽出することを特徴とする、請求項８に記載のテストケース抽出装置。
【請求項１０】
前記テストケース抽出手段は、前記作成済テストケース群の各テストケースについての各回のテスト結果のうちテストケースが不存在であるため又はテストケースに係る所定の機能が不存在であるためにテスト結果の存在しない回があるとき、当該テスト結果の存在しない回があることを考慮して、前記作成済テストケース群から前記実施対象テストケース群を抽出することを特徴とする、請求項８または９に記載のテストケース抽出装置。
【請求項１１】
予め作成され繰り返しテストが実施される複数のテストケースである作成済テストケース群から今回テストが実施されるべき複数のテストケースである実施対象テストケース群を抽出するためにコンピュータを、
前記作成済テストケース群を保持するテストケース保持手段、
前記作成済テストケース群の各テストケースと対応付けられる当該各テストケースについての各回のテスト結果を保持するテスト結果保持手段、
前記テスト結果保持手段に保持されている各テストケースについての各回のテスト結果を読み出すテスト結果読み出し手段、及び、
前記テスト結果読み出し手段によって読み出された各テストケースについての各回のテスト結果に基づいて前記作成済テストケース群から前記実施対象テストケース群を抽出するテストケース抽出手段、
として機能させるためのテストケース抽出プログラム。
【請求項１２】
前記テストケース抽出手段は、前記実施対象テストケース群として抽出されるテストケースを決定するために、前記テスト結果読み出し手段によって読み出された各テストケースについての各回のテスト結果に基づいて各テストケースの優先順位を設定する優先順位設定手段を含み、
前記優先順位に基づいて、前記作成済テストケース群から前記実施対象テストケース群が抽出されることを特徴とする、請求項１１に記載のテストケース抽出プログラム。
【請求項１３】
前記優先順位設定手段は、前記テスト結果読み出し手段によって読み出された各テストケースについての各回のテスト結果に基づいて前記作成済テストケース群の並び替えを行うテストケース並び替え手段を含むことを特徴とする、請求項１２に記載のテストケース抽出プログラム。
【請求項１４】
前記作成済テストケース群から前記実施対象テストケース群として抽出されるテストケースの割合または前記作成済テストケース群から前記実施対象テストケース群として抽出されないテストケースの割合を設定するための抽出率設定手段を更に含み、
前記テストケース抽出手段は、前記抽出率設定手段によって設定された割合に基づいて、前記作成済テストケース群から前記実施対象テストケース群を抽出することを特徴とする、請求項１１から１３までのいずれか１項に記載のテストケース抽出プログラム。
【請求項１５】
前記作成済テストケース群から前記実施対象テストケース群を抽出するための複数のロジックにつき優先順位を設定する抽出ロジック設定手段を更に含み、
前記テストケース抽出手段は、前記作成済テストケース群から前記実施対象テストケース群を抽出する際に、前記抽出ロジック設定手段によって設定された優先順位に従って前記複数のロジックを適用することを特徴とする、請求項１１から１４までのいずれか１項に記載のテストケース抽出プログラム。
【請求項１６】
前記実施対象テストケース群のうち今回のテストが実施されていないテストケースを抽出する未実施テストケース抽出手段を更に含み、
前記未実施テストケース抽出手段によって抽出されたテストケースから今回テストが実施されるべきテストケースが抽出されることを特徴とする、請求項１１から１５までのいずれか１項に記載のテストケース抽出プログラム。
【請求項１７】
前記作成済テストケース群のうち今回のテスト対象から除外されているテストケースを抽出する今回テスト対象外テストケース抽出手段を更に備え、
前記今回テスト対象外テストケース抽出手段によって抽出されたテストケースから今回テストが実施されるべきテストケースが抽出されることを特徴とする、請求項１１から１６までのいずれか１項に記載のテストケース抽出プログラム。
【請求項１８】
前記テスト結果保持手段には、前記各テストケースについての各回のテスト結果として、テストが成功したのか失敗したのかを識別することができる成否識別情報が保持され、
前記テストケース抽出手段は、前記成否識別情報に基づいて、前記作成済テストケース群から前記実施対象テストケース群を抽出することを特徴とする、請求項１１から１７までのいずれか１項に記載のテストケース抽出プログラム。
【請求項１９】
前記テスト結果保持手段には、前記各テストケースについての各回のテスト結果として、テストが実施されなかったことを示す不実施情報が保持され、
前記テストケース抽出手段は、前記不実施情報に基づいて、前記作成済テストケース群から前記実施対象テストケース群を抽出することを特徴とする、請求項１８に記載のテストケース抽出プログラム。
【請求項２０】
前記テストケース抽出手段は、前記作成済テストケース群の各テストケースについての各回のテスト結果のうちテストケースが不存在であるため又はテストケースに係る所定の機能が不存在であるためにテスト結果の存在しない回があるとき、当該テスト結果の存在しない回があることを考慮して、前記作成済テストケース群から前記実施対象テストケース群を抽出することを特徴とする、請求項１８または１９に記載のテストケース抽出プログラム。
【請求項２１】
予め作成され繰り返しテストが実施される複数のテストケースである作成済テストケース群から今回テストが実施されるべき複数のテストケースである実施対象テストケース群を抽出するテストケース抽出方法であって、
前記複数のテストケースのテスト結果を保持する所定のテスト結果保持手段から所定のテストケース保持手段に保持された前記作成済テストケース群の各テストケースと対応付けられる当該各テストケースについての各回のテスト結果を読み出すテスト結果読み出しステップと、
前記テスト結果読み出しステップで読み出された各テストケースについての各回のテスト結果に基づいて前記作成済テストケース群から前記実施対象テストケース群を抽出するテストケース抽出ステップとを備えていることを特徴とする、テストケース抽出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアシステムのテスト技術に関し、特に、テストが繰り返し実行される際のテストケースを絞り込む技術に関する。
【背景技術】
【０００２】
従来より、ソフトウェアシステムの開発技法として、「ウォーターフォール型開発技法」、「プロトタイプ型開発技法」、「スパイラル型開発技法」など様々な技法が知られている。これら様々な開発技法によるソフトウェアシステムの開発工程には、「要件定義」、「設計」、「プログラミング」、「テスト」などの工程（フェーズ）が含まれている。これらの各工程のうちソフトウェアシステムのテストは、一般的にはテスト仕様書に基づいて行われる。テスト仕様書には、テストケース毎に、テストの方法や合否（成功または失敗）を判定するための条件などが記載されている。また、テストには、主にモジュール単位の動作をテストする「単体テスト」、主にモジュール間の整合性をテストする「結合テスト」、システム全体として運用に問題がないか等をテストする「システムテスト」などがある。
【０００３】
ソフトウェアシステムの開発においては、上述した各工程が繰り返されることがある。このような場合、開発当初に作成されたテストケースあるいは仕様変更等に伴って作成されたテストケースについて、繰り返しテストが行われる。ところが、ソフトウェアシステムの開発においては、開発期間や人的資源等の制約上、「全てのテストケースについてテストする」ということが困難な場合がある。このような場合、過去に実施されているテストの結果等に基づいて、今回のフェーズでテストの対象とするべきテストケースを全テストケースから抽出する必要がある。テストケースの件数が少なければ、テストケースの抽出は手作業であっても比較的容易に行われる。しかし、テストケースの件数が多くなるに従い、手作業によるテストケースの抽出は困難になる。
【０００４】
従来においては、コンピュータのソフトウェア処理によって、テストケースの重要度に応じたテストケースの抽出は行われている。例えば、各テストケースが重要度に応じてＨ（Ｈｉｇｈ：高）ランク、Ｍ（Ｍｉｄｄｌｅ：中）ランク、Ｌ（Ｌｏｗ：低）ランクに分類され、「Ｈランクのテストケースのみをテストする」あるいは「ＨランクとＭランクのテストケースのみをテストする」ということが行われている。また、特開２００３−９９２８３号公報には、状況に応じて重要な機能を優先的かつ重点的にテストできるようなテストケースの設計支援方法が開示されている。
【特許文献１】特開２００３−９９２８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところが、上述のような従来技術によると、テストケースはソフトウェアシステムの特徴等に基づいて設定された優先度や重要度に従って抽出され、抽出の際に過去のテスト結果は考慮されていない。一般的に、ソフトウェアシステムにおいては、過去に全く不具合の生じていない機能については、新たに不具合が生じることは比較的少ない。一方、過去に頻繁に不具合が生じている機能については、再度不具合が生じる可能性が比較的高いと言える。従って、上述のように過去のテスト結果を考慮することなくテストケースの抽出が行われている場合には、「好適なテストケースが抽出されている」と言うことはできない。また、上述の従来技術によっては、抽出されるテストケースの件数を開発期間の長短等に応じて増減させることもできない。
【０００６】
そこで、本発明では、ソフトウェアシステムの開発において、予め作成されているテストケースから今回のテスト対象とされるべき好適なテストケースを、過去のテスト結果を考慮して効率良く抽出することができる装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
第１の発明は、予め作成され繰り返しテストが実施される複数のテストケースである作成済テストケース群から今回テストが実施されるべき複数のテストケースである実施対象テストケース群を抽出するテストケース抽出装置であって、
前記作成済テストケース群を保持するテストケース保持手段と、
前記作成済テストケース群の各テストケースと対応付けられる当該各テストケースについての各回のテスト結果を保持するテスト結果保持手段と、
前記テスト結果保持手段に保持されている各テストケースについての各回のテスト結果を読み出すテスト結果読み出し手段と、
前記テスト結果読み出し手段によって読み出された各テストケースについての各回のテスト結果に基づいて前記作成済テストケース群から前記実施対象テストケース群を抽出するテストケース抽出手段とを備えていることを特徴とする。
【０００８】
第２の発明は、第１の発明において、
前記テストケース抽出手段は、前記実施対象テストケース群として抽出されるテストケースを決定するために、前記テスト結果読み出し手段によって読み出された各テストケースについての各回のテスト結果に基づいて各テストケースの優先順位を設定する優先順位設定手段を備え、
前記優先順位に基づいて、前記作成済テストケース群から前記実施対象テストケース群が抽出されることを特徴とする。
【０００９】
第３の発明は、第２の発明において、
前記優先順位設定手段は、前記テスト結果読み出し手段によって読み出された各テストケースについての各回のテスト結果に基づいて前記作成済テストケース群の並び替えを行うテストケース並び替え手段を備えることを特徴とする。
【００１０】
第４の発明は、第１から第３までのいずれかの発明において、
前記作成済テストケース群から前記実施対象テストケース群として抽出されるテストケースの割合または前記作成済テストケース群から前記実施対象テストケース群として抽出されないテストケースの割合を設定するための抽出率設定手段を更に備え、
前記テストケース抽出手段は、前記抽出率設定手段によって設定された割合に基づいて、前記作成済テストケース群から前記実施対象テストケース群を抽出することを特徴とする。
【００１１】
第５の発明は、第１から第４までのいずれかの発明において、
前記作成済テストケース群から前記実施対象テストケース群を抽出するための複数のロジックにつき優先順位を設定する抽出ロジック設定手段を更に備え、
前記テストケース抽出手段は、前記作成済テストケース群から前記実施対象テストケース群を抽出する際に、前記抽出ロジック設定手段によって設定された優先順位に従って前記複数のロジックを適用することを特徴とする。
【００１２】
第６の発明は、第１から第５までのいずれかの発明において、
前記実施対象テストケース群のうち今回のテストが実施されていないテストケースを抽出する未実施テストケース抽出手段を更に備え、
前記未実施テストケース抽出手段によって抽出されたテストケースから今回テストが実施されるべきテストケースが抽出されることを特徴とする。
【００１３】
第７の発明は、第１から第６までのいずれかの発明において、
前記作成済テストケース群のうち今回のテスト対象から除外されているテストケースを抽出する今回テスト対象外テストケース抽出手段を更に備え、
前記今回テスト対象外テストケース抽出手段によって抽出されたテストケースから今回テストが実施されるべきテストケースが抽出されることを特徴とする。
【００１４】
第８の発明は、第１から第７までのいずれかの発明において、
前記テスト結果保持手段には、前記各テストケースについての各回のテスト結果として、テストが成功したのか失敗したのかを識別することができる成否識別情報が保持され、
前記テストケース抽出手段は、前記成否識別情報に基づいて、前記作成済テストケース群から前記実施対象テストケース群を抽出することを特徴とする。
【００１５】
第９の発明は、第８の発明において、
前記テスト結果保持手段には、前記各テストケースについての各回のテスト結果として、テストが実施されなかったことを示す不実施情報が保持され、
前記テストケース抽出手段は、前記不実施情報に基づいて、前記作成済テストケース群から前記実施対象テストケース群を抽出することを特徴とする。
【００１６】
第１０の発明は、第８の発明または第９の発明において、
前記テストケース抽出手段は、前記作成済テストケース群の各テストケースについての各回のテスト結果のうちテストケースが不存在であるため又はテストケースに係る所定の機能が不存在であるためにテスト結果の存在しない回があるとき、当該テスト結果の存在しない回があることを考慮して、前記作成済テストケース群から前記実施対象テストケース群を抽出することを特徴とする。
【００１７】
第１１の発明は、テストケース抽出プログラムであって、
予め作成され繰り返しテストが実施される複数のテストケースである作成済テストケース群から今回テストが実施されるべき複数のテストケースである実施対象テストケース群を抽出するためにコンピュータを、
前記作成済テストケース群を保持するテストケース保持手段、
前記作成済テストケース群の各テストケースと対応付けられる当該各テストケースについての各回のテスト結果を保持するテスト結果保持手段、
前記テスト結果保持手段に保持されている各テストケースについての各回のテスト結果を読み出すテスト結果読み出し手段、及び、
前記テスト結果読み出し手段によって読み出された各テストケースについての各回のテスト結果に基づいて前記作成済テストケース群から前記実施対象テストケース群を抽出するテストケース抽出手段、
として機能させることを特徴とする。
【００１８】
第１２の発明は、第１１の発明において、
前記テストケース抽出手段は、前記実施対象テストケース群として抽出されるテストケースを決定するために、前記テスト結果読み出し手段によって読み出された各テストケースについての各回のテスト結果に基づいて各テストケースの優先順位を設定する優先順位設定手段を含み、
前記優先順位に基づいて、前記作成済テストケース群から前記実施対象テストケース群が抽出されることを特徴とする。
【００１９】
第１３の発明は、第１２の発明において、
前記優先順位設定手段は、前記テスト結果読み出し手段によって読み出された各テストケースについての各回のテスト結果に基づいて前記作成済テストケース群の並び替えを行うテストケース並び替え手段を含むことを特徴とする。
【００２０】
第１４の発明は、第１１から第１３までのいずれかの発明において、
前記作成済テストケース群から前記実施対象テストケース群として抽出されるテストケースの割合または前記作成済テストケース群から前記実施対象テストケース群として抽出されないテストケースの割合を設定するための抽出率設定手段を更に含み、
前記テストケース抽出手段は、前記抽出率設定手段によって設定された割合に基づいて、前記作成済テストケース群から前記実施対象テストケース群を抽出することを特徴とする。
【００２１】
第１５の発明は、第１１から第１４までのいずれかの発明において、
前記作成済テストケース群から前記実施対象テストケース群を抽出するための複数のロジックにつき優先順位を設定する抽出ロジック設定手段を更に含み、
前記テストケース抽出手段は、前記作成済テストケース群から前記実施対象テストケース群を抽出する際に、前記抽出ロジック設定手段によって設定された優先順位に従って前記複数のロジックを適用することを特徴とする。
【００２２】
第１６の発明は、第１１から第１５までのいずれかの発明において、
前記実施対象テストケース群のうち今回のテストが実施されていないテストケースを抽出する未実施テストケース抽出手段を更に含み、
前記未実施テストケース抽出手段によって抽出されたテストケースから今回テストが実施されるべきテストケースが抽出されることを特徴とする。
【００２３】
第１７の発明は、第１１から第１６までのいずれかの発明において、
前記作成済テストケース群のうち今回のテスト対象から除外されているテストケースを抽出する今回テスト対象外テストケース抽出手段を更に備え、
前記今回テスト対象外テストケース抽出手段によって抽出されたテストケースから今回テストが実施されるべきテストケースが抽出されることを特徴とする。
【００２４】
第１８の発明は、第１１から第１７までのいずれかの発明において、
前記テスト結果保持手段には、前記各テストケースについての各回のテスト結果として、テストが成功したのか失敗したのかを識別することができる成否識別情報が保持され、
前記テストケース抽出手段は、前記成否識別情報に基づいて、前記作成済テストケース群から前記実施対象テストケース群を抽出することを特徴とする。
【００２５】
第１９の発明は、第１８の発明において、
前記テスト結果保持手段には、前記各テストケースについての各回のテスト結果として、テストが実施されなかったことを示す不実施情報が保持され、
前記テストケース抽出手段は、前記不実施情報に基づいて、前記作成済テストケース群から前記実施対象テストケース群を抽出することを特徴とする。
【００２６】
第２０の発明は、第１８の発明または第１９の発明において、
前記テストケース抽出手段は、前記作成済テストケース群の各テストケースについての各回のテスト結果のうちテストケースが不存在であるため又はテストケースに係る所定の機能が不存在であるためにテスト結果の存在しない回があるとき、当該テスト結果の存在しない回があることを考慮して、前記作成済テストケース群から前記実施対象テストケース群を抽出することを特徴とする。
【００２７】
第２１の発明は、予め作成され繰り返しテストが実施される複数のテストケースである作成済テストケース群から今回テストが実施されるべき複数のテストケースである実施対象テストケース群を抽出するテストケース抽出方法であって、
前記複数のテストケースのテスト結果を保持する所定のテスト結果保持手段から所定のテストケース保持手段に保持された前記作成済テストケース群の各テストケースと対応付けられる当該各テストケースについての各回のテスト結果を読み出すテスト結果読み出しステップと、
前記テスト結果読み出しステップで読み出された各テストケースについての各回のテスト結果に基づいて前記作成済テストケース群から前記実施対象テストケース群を抽出するテストケース抽出ステップとを備えていることを特徴とする。
【発明の効果】
【００２８】
上記第１の発明によれば、予め作成されている複数のテストケースである作成済テストケース群はテストケース保持手段に保持され、各テストケースの過去のテスト結果はテスト結果保持手段に保持されている。そして、テストケース抽出手段によって、テスト結果保持手段に保持されているテスト結果に基づき、作成済テストケース群から今回のテスト対象とされるべきテストケースの抽出が行われる。これにより、過去のテスト結果を考慮したテストケースの抽出が容易に行われ、効率的にソフトウェアシステムのテストを行うことが可能になる。
【００２９】
上記第２の発明によれば、優先順位設定手段によって、テストケースを抽出するための優先順位が各テストケースに設定される。そして、その優先順位に従って、作成済テストケース群から今回のテスト対象とされるべきテストケースの抽出が行われる。これにより、容易にテストケースの抽出が行われる。
【００３０】
上記第３の発明によれば、テストケース並び替え手段によって、各テストケースの各回のテスト結果に基づいて作成済テストケース群の並び替えが行われる。これにより、上記優先順位の設定がより確実に行われ、容易かつ確実にテストケースの抽出が行われる。
【００３１】
上記第４の発明によれば、作成済テストケース群から今回のテスト対象として抽出されるテストケースの割合を設定するための抽出率設定手段が設けられている。このため、システムの開発期間の長短やテストのために許容される工数等に応じて、全てのテストケースの中から今回のテスト対象とされるべきテストケースを抽出することが可能となる。これにより、効率良くテストケースの抽出が行われ、より少ないテスト工数でシステムに存在する不具合を洗い出すことが可能となる。その結果、より少ない工数で高品質なシステムを提供することが可能となる。
【００３２】
上記第５の発明によれば、テストケースを抽出するための複数のロジックの優先順位を設定することができ、その設定に基づいてテストケースが抽出される。このため、システムの特性等に応じて、より柔軟にテストケースを抽出することが可能となる。
【００３３】
上記第６の発明によれば、未実施テストケース抽出手段によって、今回のテスト対象とされているテストケースから未だ今回のテストが実施されていないテストケースが抽出される。これにより、当初抽出されたテストケースから今回のテスト対象とされるべきテストケースを更に絞り込むことが可能となる。このため、テストの進捗に遅れが生じているときなどに、テストケースを絞り込んで、今回のテスト対象とされるテストケースを効率的に削減することが可能となる。
【００３４】
上記第７の発明によれば、今回テスト対象外テストケース抽出手段によって、作成済テストケース群から今回のテスト対象とされていないテストケースが抽出される。これにより、今回のテスト対象とされていないテストケースから今回のテスト対象とされるべきテストケースを追加的に抽出することが可能となる。このため、テストの進捗に余裕が生じているときなどに、今回のテスト対象とされるテストケースを増加させることによって、よりシステムの品質を向上することが可能となる。
【００３５】
上記第８から第１０の発明によれば、検証信頼性が低いため今回テストが実施されると失敗する可能性が比較的高いと考えられるテストケースが抽出される。これにより、検査に好適なテストケースが効率的に抽出される。
【発明を実施するための最良の形態】
【００３６】
以下、添付図面を参照しつつ、本発明の一実施形態について説明する。
【００３７】
＜１．全体構成＞
図２は、本発明の一実施形態に係るテストケース抽出装置を含む、ソフトウェアシステムの開発環境全体のハードウェア構成図である。このシステムは、サーバ機１００と複数のパソコン２００とによって構成され、サーバ機１００および各パソコン２００はＬＡＮ３００によって互いに接続されている。サーバ機１００は、各パソコン２００からの要求に応じた処理の実行や各パソコン２００から共通して参照等可能なファイル、データベース等の格納などを行う。また、サーバ機１００は、ソフトウェアシステムの開発において、今回のテスト対象とされるべきテストケースを開発期間の長短等に応じて抽出するための装置としても機能する。このため、以下、サーバ機１００のことを「テストケース抽出装置」という。パソコン２００では、ソフトウェアシステムの開発のためのプログラミング等の作業、テストの実施、テスト結果の入力等が行われる。
【００３８】
図１は、テストケース抽出装置１００の構成を示すブロック図である。このテストケース抽出装置１００は、ＣＰＵ１０と表示部４０と入力部５０とメモリ６０と補助記憶装置７０とを備えている。補助記憶装置７０には、プログラム格納部２０とデータベース３０とが含まれている。ＣＰＵ１０は、与えられた命令に従い演算処理を行う。プログラム格納部２０には、プログラム名をそれぞれ「テーブル作成」、「テスト結果優先ロジック」、「テスト実施優先ロジック」、および「テスト結果最終順位付け」とする４つのプログラム（実行モジュール）２１〜２４が格納されている。データベース３０には、テーブル名をそれぞれ「テスト仕様書」、「テストケース」とする２つのテーブル３１、３２が格納されている。表示部４０は、例えば、オペレータがテストケースの抽出を実行する際の操作用画面を表示する。入力部５０は、マウスやキーボードによるオペレータからの入力を受け付ける。メモリ６０には、ＣＰＵ１０の演算処理に必要なデータが一時的に格納される。
【００３９】
＜２．テスト仕様書＞
一般に、ソフトウェアシステムの開発においては、システムのテストを計画するためのテストプロジェクトが策定される。本実施形態においては、１つのソフトウェアシステムの開発について１つのテストプロジェクトが策定される。図３は、本実施形態におけるテストプロジェクトについて説明するための概念図である。図３に示すように、１つのテストプロジェクトにつき複数のテスト仕様書が作成されている。各テスト仕様書には複数のテストケースが含まれており、テストが実施される都度、テストケースの属性としてテスト結果が追加される。
【００４０】
各テスト仕様書は、データベース３０内のテスト仕様書テーブル３１の１レコードとして実現されている。各テストケースは、データベース３０内のテストケーステーブル３２の１レコードとして実現されている。また、各テスト結果は、テストケーステーブル３２に含まれる項目の１つとなる。
【００４１】
図４は、テスト仕様書テーブル３１のレコードフォーマットを示す図である。テスト仕様書テーブル３１には、項目名をそれぞれ「テスト仕様書Ｎｏ」、「テスト仕様書名」、「バージョン」、「概要」、「対象モジュール」、「作成者」、「作成日」、「更新者」、「更新日」、「承認者」、および「テストケース番号」とする複数の項目が含まれている。なお、「テストケース番号」については、テスト仕様書に含まれるテストケースの数だけ繰り返される。
【００４２】
テスト仕様書テーブル３１の各項目のフィールド（個々のデータが格納される領域）には、それぞれ以下のような内容のデータが格納される。「テスト仕様書Ｎｏ」には、テスト仕様書を識別するための番号であって、テストプロジェクト毎に一意に割り当てられる番号が格納される。「テスト仕様書名」には、開発者やテスト実施者等がテスト仕様書を特定するための名称が格納される。「バージョン」には、テスト仕様書のバージョンが格納される。「概要」には、テスト仕様書の概要を説明した記述が格納される。「作成者」には、テスト仕様書の作成者の氏名が格納される。「作成日」には、テスト仕様書の作成日付が格納される。「更新者」には、テスト仕様書を最も新しく更新した者の氏名が格納される。「更新日」には、テスト仕様書の更新日付が格納される。「承認者」には、テスト仕様書の内容を承認した者の氏名が格納される。「テストケース番号」には、テストケースを識別するための番号であって、１つのテストプロジェクト内で一意に割り当てられる番号が格納される。
【００４３】
図５は、テストケーステーブル３２のレコードフォーマットを示す図である。テストケーステーブル３２には、項目名をそれぞれ「テストケース番号」、「作成者」、「テスト分類１」、「テスト分類２」、「テスト方法」、「テストデータ」、「テストデータ概要」、「テストレベル」、「ランク」、「判定条件」、「テスト結果ＩＤ」、「テスト結果」、「報告者」、「報告日」、「環境」、および「備考」とする複数の項目が含まれている。なお、「テスト結果ＩＤ」、「テスト結果」、「報告者」、「報告日」、「環境」、および「備考」については、当該テストケースについてのテストが実施された回数だけ繰り返される。なお、本実施形態においては、テストケーステーブル３２によってテストケース保持手段が実現されている。また、テストケーステーブル３２内の上記「テスト結果」のフィールドによってテスト結果保持手段が実現されている。さらにまた、このテストケーステーブル３２に格納される全てのレコードによって作成済テストケース群が実現されている。
【００４４】
テストケーステーブル３２の各項目のフィールドには、それぞれ以下のような内容のデータが格納される。「テストケース番号」には、テストケースを識別するための番号であって、１つのテストプロジェクト内で一意に割り当てられる番号が格納される。なお、テスト仕様書テーブル３１の「テストケース番号」とテストケーステーブル３２の「テストケース番号」とはリンク付けされている。「作成者」には、テストケースの作成者の氏名が格納される。「テスト分類１」には、所定の指標に従ってテストケースを分類した分類名が格納される。この分類名には、例えば、「正常系」、「異常系」、「負荷」等がある。「テスト分類２」には、「テスト分類１」とは異なる指標に従ってテストケースを分類した分類名が格納される。この分類名には、例えば、「機能」、「境界値」等がある。「テスト方法」には、テストを実施する方法を説明した記述が格納される。「テストデータ」には、テストを実施するためのデータを特定する記述（例えばフルパス名）が格納される。「テストデータ概要」には、テストデータの概要を説明した記述が格納される。「テストレベル」には、テストケースのレベルが格納される。このレベルには、例えば、「単体テスト」、「結合テスト」、「システムテスト」等がある。「ランク」には、テストケースの重要度が格納される。この重要度には、例えば、「Ｈ」、「Ｍ」、「Ｌ」等がある。「判定条件」には、テストの合否を判定する基準を説明した記述が格納される。「テスト結果ＩＤ」には、各テストケース内でテスト結果を識別するための番号が格納される。「テスト結果」には、テストを実施した結果が格納される。本実施形態においては、このテスト結果には、「成功」、「失敗」、「見送り」、「未実施」がある。「報告者」には、テスト結果を報告した者の氏名が格納される。「報告日」には、テスト結果が報告された日の日付が格納される。「環境」には、テストが実施された時のシステム等の環境を説明した記述が格納される。「備考」には、テストの実施に関する注釈等の記述が格納される。
【００４５】
上記テスト結果に関し、「成功」とは、テストの結果が成功（合格）であったことを意味する。「失敗」とは、テストの結果が失敗（不合格）であったことを意味する。「見送り」とは、当該テストケースについてはテストが実施されなかったことを意味する。「未実施」とは、現在テストフェーズにあるが、当該テストケースについては未だテストが実施されていないことを意味する。なお、「成功」を示すテスト結果と「失敗」を示すテスト結果とによって成否識別情報が実現され、「見送り」、「未実施」を示すテスト結果によって不実施情報が実現されている。
【００４６】
本実施形態においては、テスト仕様書テーブル３１およびテストケーステーブル３２に格納されているデータ（レコード）に基づいてテストケースを抽出するための処理（テストケース抽出処理）が行われる。従って、テストケース抽出処理が行われるまでに、上記各テーブル３１、３２に予めデータが格納されていることが前提となる。
【００４７】
＜３．テストケース抽出処理＞
＜３．１  全体処理＞
次に、テストケース抽出処理について説明する。図６は、本実施形態におけるテストケース抽出処理の処理手順の一例を示すフローチャートである。テストケース抽出装置１００は、オペレータからのテストケース抽出処理の実行指示に従い、テストケース抽出ダイアログを表示部４０に表示する（ステップＳ１１０）。
【００４８】
図７は、テストケース抽出ダイアログ４００を示す図である。テストケース抽出ダイアログ４００には、テストプロジェクト名を選択するためのリストボックス４０１と、当該リストボックス４０１で選択されたテストプロジェクトに含まれるテスト仕様書の数を表示する表示領域（以下、「テスト仕様書数表示領域」という。）４０２と、テストケース抽出処理の実行前後のテストケース数を表示する表示領域（以下、「テストケース数表示領域」という。）４０３と、テストケース抽出処理の実行前後のテスト工数を表示する表示領域（以下、「テスト工数表示領域」という。）４０４と、テストケース抽出処理の実行前後についてのテスト仕様書毎のテストケース数を表示する表示領域（以下、「抽出結果表示領域」という。）４０５と、後述する間引きパラメータ設定ダイアログ５００を表示するための詳細ボタン４０６と、テスト仕様書毎のテストケースの最大の間引き率を設定するためのテキストボックス（以下、「テスト仕様書間引き率設定テキストボックス」という。）４０７と、テストプロジェクト全体でのテストケースの間引き率を設定するためのテキストボックス（以下、「テストプロジェクト間引き率設定テキストボックス」という。）４０８と、オペレータによって設定されたパラメータ等に基づいて抽出処理を実行するための適用ボタン４０９と、抽出結果表示領域４０５に表示された抽出結果をテストケーステーブル３２に反映させるための確定ボタン４１０と、テストケース抽出処理をキャンセル終了するためのキャンセルボタン４１１とが含まれている。なお、テスト仕様書間引き率設定テキストボックス４０７とテストプロジェクト間引き率設定テキストボックス４０８とによって、抽出率設定手段が実現されている。
【００４９】
ステップＳ１１０の終了後、ステップＳ１２０に進み、テストケース抽出装置１００は、オペレータによる詳細ボタン４０６の押下を受け付ける。これにより、テストケース抽出装置１００は、間引きパラメータ設定ダイアログ５００を表示部４０に表示する（ステップＳ１３０）。
【００５０】
図８は、間引きパラメータ設定ダイアログ５００を示す図である。間引きパラメータ設定ダイアログ５００には、テストケースを抽出する際に適用されるロジックの優先順位を設定するためのリストボックス５０１、５０２と、設定内容を確定するためのＯＫボタン５０３と、設定内容を取り消すためのキャンセルボタン５０４とが含まれている。なお、間引きパラメータ設定ダイアログ５００によって抽出ロジック設定手段が実現されている。
【００５１】
ステップＳ１３０の終了後、オペレータは、間引きパラメータ設定ダイアログ５００のリストボックス５０１、５０２でテストケースを抽出する際に適用されるロジックの優先順位を設定する。設定後、オペレータがＯＫボタン５０３を押下すると、テストケース抽出装置１００は、テストケースを抽出する際に適用されるロジックの優先順位を受け付ける（ステップＳ１４０）。なお、間引きパラメータ設定ダイアログ５００のＯＫボタン５０３あるいはキャンセルボタン５０４が押下されると、間引きパラメータ設定ダイアログ５００は非表示となり、テストケース抽出ダイアログ４００が再度表示される。
【００５２】
テストケース抽出装置１００は、テストケース抽出ダイアログ４００の再表示後、オペレータによるテスト仕様書間引き率設定テキストボックス４０７およびテストプロジェクト間引き率設定テキストボックス４０８への間引き率の入力を受け付ける（ステップＳ１５０）。ここで、「間引き率」とは、テストケーステーブル３２に格納されているテストケースのうち今回のテスト対象から除外するテストケースの割合のことをいう。例えば、テストケースが１０件ある場合に間引き率を９０パーセントと設定すると、今回のテスト対象となるテストケースは１件だけになる。
【００５３】
ステップＳ１５０の終了後、オペレータが適用ボタン４０９を押下すると、テストケース抽出装置１００は、抽出処理を実行する（ステップＳ１６０）。この抽出処理の詳細については後述する。なお、このステップＳ１６０によってテストケース抽出手段が実現されている。
【００５４】
ステップＳ１６０の終了後、ステップＳ１７０に進み、テストケース抽出装置１００はテストケース数表示領域４０３とテスト工数表示領域４０４と抽出結果表示領域４０５とに抽出結果を表示する。その後、テストケース抽出装置１００は、オペレータによって確定ボタン４１０もしくはキャンセルボタン４１１のいずれが押下されたのかを判定する（ステップＳ１８０）。判定の結果、確定ボタン４１０が押下されていればステップＳ１９０に進む。一方、キャンセルボタン４１１が押下されていればテストケース抽出処理は終了する。なお、キャンセルボタン４１１が押下されていた場合、テストケース抽出ダイアログ４００を一旦クリアして、ステップＳ１１０に戻る構成としても良い。
【００５５】
ステップＳ１９０では、テストケース抽出装置１００は、抽出結果をテストケーステーブル３２に反映させる。具体的には、抽出処理によって今回のテスト対象から除外されたテストケースについて、テストケーステーブル３２の今回のテスト結果を「見送り」とする。ステップＳ１９０の終了後、テストケース抽出処理は終了する。
【００５６】
＜３．２  抽出処理＞
次に、上述したステップＳ１６０の抽出処理について、詳しく説明する。図９は、本実施形態における抽出処理の詳細な処理手順を示すフローチャートである。テストケース抽出装置１００は、抽出処理の開始後、テストケースの優先順位付けを行うためのテーブル（以下、「優先順位付けテーブル」という。）を作成する（ステップＳ２１０）。ステップＳ２１０の終了後、ステップＳ２２０に進み、テストケースを抽出する際に過去に実施されたテストのテスト結果を考慮するか否かが判定される。なお、テスト結果を考慮するか否かは、間引きパラメータ設定ダイアログ５００におけるオペレータによる設定に基づいて決定される。判定の結果、テスト結果を考慮するのであれば、ステップＳ２３０に進む。一方、テスト結果を考慮しないのであれば、ステップＳ２４０に進む。ステップＳ２３０では、テスト結果優先ロジック処理が行われる。このテスト結果優先ロジック処理の詳細については後述する。テスト結果優先ロジック処理の終了後、ステップＳ２４０に進む。
【００５７】
ステップＳ２４０では、テストケースを抽出する際に間引いたテストケースを考慮するか否かが判定される。ここで、「間引いたテストケースを考慮する」とは、テスト結果が「成功」となっているテストケースよりもテスト結果が「見送り」となっているテストケースの方を今回のテスト対象として優先的に抽出するということである。なお、間引いたテストケースを考慮するか否かは、間引きパラメータ設定ダイアログ５００におけるオペレータによる設定に基づいて決定される。判定の結果、間引いたテストケースを考慮するのであれば、ステップＳ２５０に進む。一方、間引いたテストケースを考慮しないのであれば、ステップＳ２６０に進む。ステップＳ２５０では、テスト実施優先ロジック処理が行われる。このテスト実施優先ロジック処理の詳細については後述する。テスト実施優先ロジック処理の終了後、ステップＳ２６０に進む。
【００５８】
ステップＳ２６０では、テスト結果最終順位付け処理が行われる。このテスト結果最終順位付け処理の詳細については後述する。テスト結果最終順位付け処理の終了後、ステップＳ２７０に進む。ステップＳ２７０では、既に設定されているパラメータに基づいて、優先順位の高いテストケース（実施対象テストケース群）の抽出が行われる。ここで、「優先順位が高い」とは、優先順位を示す値（数値）が小さいことを意味する。ステップＳ２７０の終了後、抽出処理は終了する。
【００５９】
なお、本実施形態においては、上記ステップＳ２２０からステップＳ２６０によって優先順位設定手段が実現されている。
【００６０】
＜３．３  テーブル作成＞
図１０は、図９のステップＳ２１０のテーブル作成処理の詳細な処理手順を示すフローチャートである。テストケース抽出装置１００は、テーブル作成処理の開始後、優先順位付けテーブル３３の初期化を行う（ステップＳ３１０）。図１１は、優先順位付けテーブル３３のテーブルレイアウトを示す図である。優先順位付けテーブル３３には、項目名をそれぞれ「テストケース番号」、「１回目」、「２回目」、・・・、「Ａ回目」（Ａ：既に実施されているテストの回数）、「テスト結果積算値」、「テスト実施加算値」、「最終順位付け値」、「テスト結果優先順位」、「テスト実施優先順位」、および「最終順位」とする複数の項目が含まれている。なお、優先順位付けテーブル３３に格納されるレコードのことを以下「テストケース結果レコード」という。ステップＳ３１０の終了後、ステップＳ３２０に進み、テストプロジェクトに含まれているテスト仕様書のテストケースのレコードの読み出しが行われる。具体的には、テスト仕様書テーブル３１とテストケーステーブル３２とに基づいて、当該テストプロジェクトに含まれるテストケースのテストケース番号と各テストケースについての各回のテスト結果とが読み出される。その後、ステップＳ３３０に進み、ステップＳ３２０で読み出されたテストケースのレコードについて、テストケース番号およびテスト結果（１回目〜Ａ回目）の優先順位付けテーブル３３への書き込みが行われる。ステップＳ３３０の終了後、ステップＳ３４０に進み、テストプロジェクトに含まれている全てのテスト仕様書の全てのテストケースのレコードの読み出しが終了したか否かが判定される。判定の結果、読み出しが終了していなければ、ステップＳ３２０に戻る。一方、読み出しが終了していれば、テーブル作成処理は終了する。なお、上記ステップＳ３２０によってテスト結果読み出し手段が実現されている。また、このテーブル作成処理を実現するためのプログラムは、図１に示すように、プログラム名を「テーブル作成」としてプログラム格納部２０に格納されている。
【００６１】
＜３．４  テスト結果優先ロジック処理＞
＜３．４．１  テスト結果優先ロジックの考え方＞
次に、テスト結果優先ロジック処理について説明する。まず、図１２に示すように２件のテストケースについて既に９回のテストが実施されている場合に、それら２件のテストケースのうちのいずれの優先順位を高くするべきかを検討する。テストケース１については、１回目のテスト結果が失敗になっているが、プログラムの修正が行われて、２回目以降のテスト結果は全て成功になっている。一方、テストケース２については、１回目から７回目までのテスト結果は成功になっているが、７回目のテスト実施後にプログラムの修正が行われて、８回目のテスト結果は失敗になっている。その後、プログラムの修正が行われて、９回目のテスト結果は成功になっている。このような場合、次にテストが実施されたとき、より最近に失敗しているテストケース２の方が、テストケース１よりも失敗する可能性が高いものと考えられる。何故ならば、テストケース２に関連するプログラムが、より最近に修正されており、当該プログラムの方が安定動作しているとは言えず、テストによる検証信頼性が低いためである。従って、図１２に示すようなテスト結果が得られている場合、テスト結果優先ロジックに従えば、テストケース１の優先順位よりもテストケース２の優先順位の方が高くなる。
【００６２】
上記においては簡単な例を挙げて説明したが、次に、やや複雑な例を挙げて説明する。図１３に示すように５件のテストケースについて既に４回のテストが実施されており、それら５件のテストケースのうち３件のテストケースを抽出する場合について検討する。このような場合、例えば以下のような条件に従ってテストケースを抽出することが考えられる。「前回のテスト結果が失敗であるテストケースを優先する」という条件を第１の条件とする。さらに、「過去に最も失敗の回数が多いテストケースを優先する」という条件を第２の条件とする。このような場合、まず、第１の条件に従えば、テストケース１１が抽出される。次に、第２の条件に従えば、テストケース１２、テストケース１３、およびテストケース１４の３件が選択される。ところが、それら３件のうち２件だけが抽出されなければならないから、さらなる条件等の設定が必要となる。
【００６３】
そこで、本実施形態においては、より最近に失敗しているテストケースの優先順位が高くなるように過去のテスト結果の数値化を行い、テストケースを抽出する際の優先順位がその数値に基づいて決定されるものとする。図１４は、テスト結果の数値化の例を説明するための図である。図１４（ａ）に示すように、２件のテストケースについて既に５回のテストが実施されている。テストケース１については２回目と４回目とが失敗になっており、テストケース２については３回目と４回目とが失敗になっている。ここで、本実施形態においては、成功したテスト結果については、「１」に数値化される。一方、失敗したテスト結果については、ｍ回目（ｍ：整数）のテスト結果であれば「ｍ＋１」に数値化される。例えば、２回目のテスト結果が失敗の場合、２回目のテスト結果については「３」に数値化される。その結果、図１４（ａ）に示すテスト結果については、図１４（ｂ）に示すように数値化される。
【００６４】
個々のテスト結果についての数値化がなされた後、各テストケースについて、各回のテスト結果が数値化された値の積を算出する。以下、この積の値を「テスト結果積算値」という。本実施形態においては、テスト結果優先ロジックに従えば、テスト結果積算値の大きいテストケースほど優先順位が高く設定される。
【００６５】
図１４（ｂ）に示す例においては、テストケース１のテスト結果積算値Ｊ１は次式（１）で算出される。
Ｊ１＝１×３×１×５×１＝１５      ・・・（１）
また、テストケース２のテスト結果積算値Ｊ２は次式（２）で算出される。
Ｊ２＝１×１×４×５×１＝２０      ・・・（２）
以上より、テスト結果優先ロジックに従えば、テストケース１の優先順位よりもテストケース２の優先順位の方が高くなる。
【００６６】
次に、別の例について説明する。２件のテストケースについて図１５（ａ）に示すようなテスト結果が得られている場合、図１５（ｂ）に示すようにテスト結果の数値化が行われる。このとき、テストケース３のテスト結果積算値は「６」となる。一方、テストケース４のテスト結果積算値についても「６」となる。ここで、テスト結果積算値のみに基づいて優先順位が決定されると、テストケース３の優先順位とテストケース４の優先順位とは同じになる。このような場合、本実施形態においては、より最近に失敗しているテストケース４の優先順位をテストケース３の優先順位よりも高くする。
【００６７】
＜３．４．２  テスト結果優先ロジック処理の処理手順＞
図１６は、図９のステップＳ２３０のテスト結果優先ロジック処理の詳細な処理手順を示すフローチャートである。テストケース抽出装置１００は、テスト結果優先ロジック処理の開始後、テストプロジェクトに含まれている全てのテスト仕様書の全てのテストケースについてのテスト結果積算値の算出を行う（ステップＳ４１０）。算出された各テストケースのテスト結果積算値は、優先順位付けテーブル３３の項目名「テスト結果積算値」のフィールドに書き込まれる。ステップＳ４１０の終了後、ステップＳ４２０に進み、優先順位付けテーブル３３に格納されているテストケース結果レコードについて、テスト結果積算値の降順での並び替えが行われる。その後、ステップＳ４３０に進み、優先順位付けテーブル３３の項目名「テスト結果優先順位」のフィールドに各テストケースの優先順位が書き込まれる。ステップＳ４３０が終了すると、テスト結果優先ロジック処理は終了する。なお、このテスト結果優先ロジック処理を実現するためのプログラムは、図１に示すように、プログラム名を「テスト結果優先ロジック」としてプログラム格納部２０に格納されている。
【００６８】
＜３．５  テスト実施優先ロジック処理＞
＜３．５．１  テスト実施優先ロジックの考え方＞
次に、テスト実施優先ロジック処理について説明する。まず、図１７に示すように２件のテストケースについて既に９回のテストが実施されている場合に、それら２件のテストケースのうちのいずれの優先順位を高くするべきかを検討する。なお、テスト結果の「見送り」とは、テストが実施されなかったことを表わしている。テストケース１については、１回目および２回目のテスト結果が見送りになっているが、３回目以降のテスト結果は全て成功になっている。一方、テストケース２については、１回目から７回目までのテスト結果は成功になっているが、８回目および９回目のテスト結果は見送りになっている。このような場合、次にテストが実施されたとき、より最近にテスト結果に見送りがあるテストケース２の方が、テストケース１よりも失敗する可能性が高いものと考えられる。何故ならば、最近のプログラム修正に対して、テストケース１についてはテストが実施されているが、テストケース２についてはテストが実施されておらず、当該プログラム修正がテストケース２のテスト結果に影響が及んでいる可能性があると言えるからである。従って、図１７に示すようなテスト結果が得られている場合、テスト実施優先ロジックに従えば、テストケース１の優先順位よりもテストケース２の優先順位の方が高くなる。
【００６９】
上記においては簡単な例について説明したが、次に、やや複雑な例について説明する。図１８に示すように５件のテストケースについて既に４回のテストが実施されており、それら５件のテストケースのうち３件のテストケースを抽出する場合について検討する。このような場合、例えば以下のような条件に従ってテストケースを抽出することが考えられる。「前回のテスト結果が失敗であるテストケースを優先する」という条件を第１の条件とする。さらに、「最も近い回にテスト結果に見送りがあるテストケースを優先する」という条件を第２の条件とする。このような場合、まず、第１の条件に従えば、テストケース１１が抽出される。次に、第２の条件に従えば、テストケース１３、テストケース１４、およびテストケース１５の３件が選択される。ところが、上記３件のうち２件だけが抽出されなければならないから、さらなる条件等の設定が必要となる。
【００７０】
そこで、上述したテスト結果優先ロジック処理と同様、テスト結果の数値化を行う。本実施形態においては、より最近にテスト結果に見送りのあるテストケースの優先順位が高くなるように過去のテスト結果の数値化を行い、テストケースを抽出する際の優先順位がその数値に基づいて決定されるものとする。図１９は、テスト結果の数値化の例を説明するための図である。図１９（ａ）に示すように、３件のテストケースについて既に５回のテストが実施されている。ここで、本実施形態においては、成功したテスト結果については、「０」に数値化される。また、失敗したテスト結果については、ｍ回目（ｍ：整数）であれば「ｍ＋１」に数値化される。例えば、２回目のテスト結果が失敗の場合、２回目のテスト結果については「３」に数値化される。さらに、テスト結果が見送りのものについては、ｎ回目（ｎ：整数）のテスト結果であれば「（ｎ＋１）×０．５」に数値化される。例えば、２回目のテスト結果が見送りの場合、２回目のテスト結果については「１．５」に数値化される。その結果、図１９（ａ）に示すテスト結果については、図１９（ｂ）に示すように数値化される。
【００７１】
個々のテスト結果についての数値化がなされた後、各テストケースについて、各回のテスト結果が数値化された値の和を算出する。以下、この和の値を「テスト実施加算値」という。本実施形態においては、テスト実施優先ロジックに従えば、テスト実施加算値の大きいテストケースほど優先順位が高く設定される。
【００７２】
図１９（ｂ）に示す例においては、テストケース１のテスト実施加算値Ｋ１は次式（３）で算出される。
Ｋ１＝１＋１．５＋０＋５＋０＝７．５      ・・・（３）
また、テストケース２のテスト実施加算値Ｋ２は次式（４）で算出される。
Ｋ２＝１＋０＋２＋５＋０＝８              ・・・（４）
さらに、テストケース３のテスト実施加算値Ｋ３は次式（５）で算出される。
Ｋ３＝１＋０＋２＋０＋６＝９              ・・・（５）
以上より、テスト実施優先ロジックに従えば、上記３件の優先順位については、テストケース３が最も高くなり、テストケース１が最も低くなる。
【００７３】
次に、別の例について説明する。４件のテストケースについて図２０（ａ）に示すようなテスト結果が得られている場合、図２０（ｂ）に示すようにテスト結果の数値化が行われる。このとき、テストケース４からテストケース７までのいずれについてもテスト実施加算値は「７」となる。ここで、テスト実施加算値のみに基づいて優先順位が決定されると、テストケース４からテストケース７までの全ての優先順位は同じになる。このような場合、本実施形態においては、以下の３つの条件に従って優先順位を決定する。「より最近に失敗しているテストケースの優先順位を高くする」という条件を第１の条件とする。「過去に失敗の回数が多いテストケースの優先順位を高くする」という条件を第２の条件とする。「より最近にテスト結果に見送りのあるテストケースの優先順位を高くする」という条件を第３の条件とする。このような場合、まず、第１の条件に従えば、テストケース６が抽出される。次に、第２の条件に従えば、テストケース５が抽出される。さらに、第３の条件に従えば、テストケース４が抽出される。その結果、上記４件の優先順位については、「テストケース６、テストケース５、テストケース４、テストケース７」の順になる。
【００７４】
＜３．５．２  テスト実施優先ロジック処理の処理手順＞
図２１は、図９のステップＳ２５０のテスト実施優先ロジック処理の詳細な処理手順を示すフローチャートである。テストケース抽出装置１００は、テスト実施優先ロジック処理の開始後、テストプロジェクトに含まれている全てのテスト仕様書の全てのテストケースについて、テスト実施加算値の算出を行う（ステップＳ５１０）。算出された各テストケースのテスト実施加算値は、優先順位付けテーブル３３の項目名「テスト実施加算値」のフィールドに書き込まれる。ステップＳ５１０の終了後、ステップＳ５２０に進み、優先順位付けテーブル３３に格納されているテストケース結果レコードについて、テスト実施加算値の降順での並び替えが行われる。その後、ステップＳ５３０に進み、優先順位付けテーブル３３の項目名「テスト実施優先順位」のフィールドに各テストケースの優先順位が書き込まれる。ステップＳ５３０が終了すると、テスト実施優先ロジック処理は終了する。なお、このテスト実施優先ロジック処理を実現するためのプログラムは、図１に示すように、プログラム名を「テスト実施優先ロジック」としてプログラム格納部２０に格納されている。
【００７５】
＜３．６  テスト結果最終順位付け処理＞
次に、テスト結果最終順位付け処理について説明する。上述したように、テスト結果優先ロジック処理が行われていれば、優先順位付けテーブル３３の項目名「テスト結果優先順位」のフィールドには、テスト結果優先ロジック処理に基づいた優先順位（以下、「テスト結果優先順位値」という。）が格納されている。また、テスト実施優先ロジック処理が行われていれば、優先順位付けテーブル３３の項目名「テスト実施優先順位」のフィールドには、テスト実施優先ロジックに基づいた優先順位（以下、「テスト実施優先順位値」という。）が格納されている。本実施形態においては、各テストケースについて、テスト結果優先順位値に第１の係数を乗じた値とテスト実施優先順位値に第２の係数を乗じた値との和（以下、「最終順位付け値」という。）を算出する。そして、最終順位付け値の大きいテストケースほど優先順位が高く設定される。
【００７６】
上述の第１の係数および第２の係数については、例えば、第１の係数を「１．０」として、第２の係数を「０．８」とすることができる。この場合に、図８に示すように、優先順位１に「テスト結果を考慮」が選択され、優先順位２に「間引いたテストケースを考慮」が選択されていれば、最終順位付け値Ｚは次式（６）で算出される。
Ｚ＝Ｘ×１．０＋Ｙ×０．８      ・・・（６）
ここで、Ｘはテスト結果優先順位値を示し、Ｙはテスト実施優先順位値を示している。
【００７７】
図２２は、図９のステップＳ２６０のテスト結果最終順位付け処理の詳細な処理手順を示すフローチャートである。テストケース抽出装置１００は、テスト結果最終順位付け処理の開始後、テストプロジェクトに含まれている全てのテスト仕様書の全てのテストケースについての最終順位付け値の算出を行う（ステップＳ６１０）。算出された各テストケースの最終順位付け値は、優先順位付けテーブル３３の項目名「最終順位付け値」のフィールドに書き込まれる。ステップＳ６１０の終了後、ステップＳ６２０に進み、優先順位付けテーブル３３に格納されているテストケース結果レコードについて、最終順位付け値の降順での並び替えが行われる。その後、ステップＳ６３０に進み、優先順位付けテーブル３３の項目名「最終順位」のフィールドに各テストケースの優先順位が書き込まれる。ステップＳ６３０が終了すると、テスト結果最終順位付け処理は終了する。なお、このテスト結果最終順位付け処理を実現するためのプログラムは、図１に示すように、プログラム名を「テスト結果最終順位付け」としてプログラム格納部２０に格納されている。
【００７８】
以上のようにしてテスト結果最終順位付け処理が終了すると、図２３に示すように、優先順位付けテーブル３３の項目名「最終順位」のフィールドには、テストケースを抽出する際の各テストケースの優先順位が格納されている。そして、図９に示すステップＳ２７０で、上記優先順位と図７に示すテスト仕様書間引き率設定テキストボックス４０７およびテストプロジェクト間引き率設定テキストボックス４０８に入力された間引き率とに基づいて、今回のテスト対象とされるテストケースが抽出される。
【００７９】
なお、図１６に示すステップＳ４２０と図２１に示すステップＳ５２０と図２２に示すステップＳ６２０とによって、テストケース並び替え手段が実現されている。
【００８０】
＜４．効果＞
以上のように、本実施形態によると、各テストケースの過去のテスト結果は、テスト結果優先ロジックとテスト実施優先ロジックのそれぞれに基づいて数値化される。そして、各テストケースについて、テスト結果積算値およびテスト実施加算値が算出される。さらに、テスト結果積算値とテスト実施加算値とに基づいて、今回のテスト対象とされるべきテストケースを抽出する優先順位を決める最終順位付け値が算出される。このため、最終順位付け値に従ってテストケースを抽出することで、全てのテストケースの中から今回のテスト対象とされるべき好適なテストケースが過去のテスト結果を考慮して抽出されることになる。これにより、過去のテスト結果を考慮したテストケースの抽出が容易に行われ、効率的にソフトウェアシステムのテストを行うことが可能となる。
【００８１】
また、オペレータは、間引きパラメータ設定ダイアログ５００によって、テストケースを抽出する際に適用されるロジックの優先順位を設定することができる。このため、過去のテストの実施状況やシステムの特性等を考慮して、テストケースを抽出することができる。さらに、オペレータは、テストケース抽出ダイアログ４００のテスト仕様書間引き率設定テキストボックス４０７およびテストプロジェクト間引き率設定テキストボックス４０８によって、テストケースの間引き率を設定することができる。このため、システムの開発期間の長短やテストのために許容される工数等に応じて、全てのテストケースの中から今回のテスト対象とされるべきテストケースを抽出することができる。これにより、効率良くテストケースの抽出が行われ、より少ないテスト工数でシステムに存在する不具合を洗い出すことが可能となる。その結果、より少ない工数で高品質なシステムを提供することが可能となる。
【００８２】
＜５．変形例＞
＜５．１  第１の変形例＞
図４に示すように、上記実施形態においては、テスト仕様書テーブル３１には、「テストケース番号」がテストケースの数だけ繰り返されている。このテスト仕様書テーブル３１については、正規化をしても良い。すなわち、図２４（ａ）および（ｂ）に示すようなレコードフォーマットの２つのテーブルにすることができる。
【００８３】
また、図５に示すように、上記実施形態においては、テストケーステーブル３２には、「テスト結果ＩＤ」、「テスト結果」、「報告者」、「報告日」、「環境」、および「備考」がテストが実施された回数だけ繰り返されている。このテストケーステーブル３２についても、正規化をしても良い。すなわち、図２５（ａ）および（ｂ）に示すようなレコードフォーマットの２つのテーブルにすることができる。
【００８４】
このようにテスト仕様書テーブル３１およびテストケーステーブル３２を正規化することにより、各テーブルの構造が簡潔なものになり、テストケース抽出処理のためのプログラムの設計やプログラミング等が容易になる。なお、本変形例においては、図２５（ａ）に示すレコードフォーマットのテーブルによってテストケース保持手段が実現され、図２５（ｂ）に示すレコードフォーマットのテーブルによってテスト結果保持手段が実現される。
【００８５】
＜５．２  第２の変形例＞
次に、テスト実施優先ロジック処理について、上記実施形態における考え方とは別の考え方について説明する。まず、図２６に示すように２件のテストケースについて既に９回のテストが実施されている場合に、それら２件のテストケースのうちのいずれの優先順位を高くするべきかを検討する。なお、テスト結果の「なし」とは、当該テストケースが作成されていなかったこと、あるいは、テスト対象となる機能が実装されていなかったためにテストが実施されていないことを表わしている。テストケース１については、１回目から９回目までの全てのテスト結果が成功になっている。一方、テストケース２については、１回目から８回目までのテスト結果は「なし」になっており、９回目のみ成功になっている。このような場合、次にテストが実施されたとき、よりテスト回数の少ないテストケース２の方が、テストケース１よりも失敗する可能性が高いものと考えられる。従って、図２６に示すようなテスト結果が得られている場合、本変形例に係るテスト実施優先ロジックに従えば、テストケース１の優先順位よりもテストケース２の優先順位の方が高くなる。
【００８６】
上記においては簡単な例について説明したが、次に、やや複雑な例について説明する。図２７に示すように５件のテストケースについて既に６回のテストが実施されており、それら５件のテストケースのうち３件のテストケースを抽出する場合について検討する。このような場合、例えば以下のような条件に従ってテストケースを抽出することが考えられる。「前回のテスト結果が失敗であるテストケースを優先する」という条件を第１の条件とする。さらに、「過去に実施されているテスト回数の少ないテストケースを優先する」という条件を第２の条件とする。このような場合、まず、第１の条件に従えば、テストケース１１が抽出される。次に、第２の条件に従えば、テストケース１３、テストケース１４、およびテストケース１５の３件が選択される。ところが、上記３件のうち２件だけが抽出されなければならないから、さらなる条件等の設定が必要となる。
【００８７】
そこで、上記実施形態と同様、テスト結果の数値化を行う。本変形例においては、各テスト結果について以下のように数値化を行う。成功したテスト結果については、「０」に数値化される。失敗したテスト結果については、ｍ回目（ｍ：整数）であれば「ｍ＋１」に数値化される。テスト結果が見送りのものについては、ｎ回目（ｎ：整数）のテスト結果であれば「（ｎ＋１）×０．５」に数値化される。テスト結果が「なし」のものについては、ｐ回目（ｐ：整数）のテスト結果であれば「（ｐ＋１）×０．８」に数値化される。以上のようにして個々のテスト結果についての数値化がなされた後、上記実施形態と同様、各テストケースのテスト実施加算値を算出する。そして、テスト実施加算値に基づいて、テストケースの優先順位が設定される。
【００８８】
＜５．３  第３の変形例＞
上記実施形態においては、過去に何回かテストが実施されていて新たにテストを実施する場合について、例えば、図１３に示すように過去にテストが４回実施されていて新たに５回目のテストを実施する場合について説明しているが、本発明はこれに限定されない。例えば、５回目のテストを実施するにあたり、テストケース抽出処理によって「１０００件のテストケースのうち３００件のテストケースが抽出された」と仮定する。そして、テストが開始されたが、例えば、１００件のテストが終了した時点で進捗の遅れ等により「残りの２００件のテストケースから更にテストケースを絞り込みたい」というようなことがある。このような場合にも、以下のようにして、本発明を適用することができる。
【００８９】
図２８は、テストを実施する過程における各テスト結果の全体に占める割合の変化を示す図である。新たにテストを実施する場合でテストケース抽出処理の実行前においては、図２８（ａ）に示すように、全てのテストケースのテスト結果は「未実施」になっている。テストケース抽出処理を実行すると、図２８（ｂ）に示すように、今回のテスト対象から除外されたテストケースのテスト結果が「見送り」になる。その後、テストが実施される都度、「未実施」のテスト結果が「成功」あるいは「失敗」になる。このようにして、テストフェーズの途中には、各テスト結果の全体に占める割合は、図２８（ｃ）に示すようなものとなる。
【００９０】
図２９は、本変形例におけるテストフェーズ中の処理の流れを説明するためのフローチャートである。テストフェーズになると、まず、オペレータはテストを１件実施する（ステップＳ７１０）。テスト結果は、テストケーステーブル３２の当該回数目の項目名「テスト結果」のフィールドに書き込まれる。ステップＳ７１０の終了後、ステップＳ７２０に進み、テスト結果が「未実施」になっているテストケースが有るか否かが判定される。判定の結果、「未実施」になっているテストケースがあればステップＳ７３０に進む。一方、「未実施」になっているテストケースがなければ終了する。ステップＳ７３０では、テストを中断するか否かが判定される。判定の結果、テストを中断する場合にはステップＳ７４０に進む。一方、テストを中断しない場合には、ステップＳ７１０に戻りテストを継続する。ステップＳ７４０では、テストケーステーブル３２から当該回数目のテスト結果が「未実施」になっているテストケースが抽出される。その後、ステップＳ７５０に進み、ステップＳ７４０で抽出されたテストケースの中から更にテストケースの絞り込み（抽出）が行われる。その結果、今回のテスト対象から除外されたテストケースのテスト結果については、「未実施」から「見送り」へと変更される。ステップＳ７５０の終了後、ステップＳ７１０に戻りテストが継続される。
【００９１】
以上の構成により、テストの進捗に遅れが生じているときなどに、テストケースを絞り込んで、今回のテスト対象とされるテストケースを効率的に削減することが可能となる。なお、上記ステップＳ７４０によって、未実施テストケース抽出手段が実現されている。
【００９２】
また、上記ステップＳ７４０においては、テスト結果が「未実施」になっているテストケースの抽出が行われているが、これに替えて、テスト結果が「未実施」になっているテストケースとテスト結果が「見送り」になっているテストケースとの抽出が行われても良い。これにより、ステップＳ７４０によって、未実施テストケース抽出手段と今回対象外テストケース抽出手段が実現される。この構成によると、上記とは逆に、今回のテスト対象となるテストケースを増加させることが可能となる。その結果、今回テストされるテストケースの数が増加し、システムの品質を向上することが可能となる。
【００９３】
＜５．４  第４の変形例＞
上記実施形態においては、過去のテスト結果のみに基づいてテストケースが抽出されているが、本発明はこれに限定されない。例えば、過去のテスト結果に加え、テストケースの重要度をも考慮してテストケースを抽出する構成にしても良い。これにより、重要なテストケースについては、過去のテスト結果が全て「成功」であっても、今回のテスト対象として抽出されるようにすることができる。その結果、過去のテスト結果が考慮され、かつ、重要なテストケースが漏れることなく、テストケースの抽出が行われる。
【００９４】
＜６．その他＞
上述のテストケース抽出装置１００は、メモリ６０や補助記憶装置７０等のハードウェアの存在を前提として、ＣＰＵ１０によって実行されるテーブル作成等のプログラム２１〜２４に基づき実現される。このようなプログラム２１〜２４の一部または全部は、例えば、そのプログラム２１〜２４を記録したＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体によって提供される。使用者は、上記プログラム２１〜２４の記録媒体としてのＣＤ−ＲＯＭを購入して、ＣＤ−ＲＯＭ駆動装置（図示せず）に装着し、そのＣＤ−ＲＯＭからそのプログラム２１〜２４を読み出してテストケース抽出装置１００の補助記憶装置７０にインストールすることができる。このように、図６等に示す各ステップをコンピュータに実行させるプログラムの形態として提供することもできる。
【図面の簡単な説明】
【００９５】
【図１】本発明の一実施形態におけるテストケース抽出装置の構成を示すブロック図である。
【図２】上記実施形態におけるソフトウェアシステムの開発環境全体のハードウェア構成図である。
【図３】上記実施形態において、テストプロジェクトについて説明するための概念図である。
【図４】上記実施形態において、テスト仕様書テーブルのレコードフォーマットを示す図である。
【図５】上記実施形態において、テストケーステーブルのレコードフォーマットを示す図である。
【図６】上記実施形態において、テストケース抽出処理の処理手順の一例を示すフローチャートである。
【図７】上記実施形態において、テストケース抽出ダイアログを示す図である。
【図８】上記実施形態において、間引きパラメータ設定ダイアログを示す図である。
【図９】上記実施形態において、抽出処理の詳細な処理手順を示すフローチャートである。
【図１０】上記実施形態において、テーブル作成処理の詳細な処理手順を示すフローチャートである。
【図１１】上記実施形態において、優先順位付けテーブルのテーブルレイアウトを示す図である。
【図１２】上記実施形態において、テスト結果優先ロジック処理について説明するための図である。
【図１３】上記実施形態において、テスト結果優先ロジック処理について説明するための図である。
【図１４】上記実施形態において、テスト結果優先ロジック処理について説明するための図である。
【図１５】上記実施形態において、テスト結果優先ロジック処理について説明するための図である。
【図１６】上記実施形態において、テスト結果優先ロジック処理の詳細な処理手順を示すフローチャートである。
【図１７】上記実施形態において、テスト実施優先ロジック処理について説明するための図である。
【図１８】上記実施形態において、テスト実施優先ロジック処理について説明するための図である。
【図１９】上記実施形態において、テスト実施優先ロジック処理について説明するための図である。
【図２０】上記実施形態において、テスト実施優先ロジック処理について説明するための図である。
【図２１】上記実施形態において、テスト実施優先ロジック処理の詳細な処理手順を示すフローチャートである。
【図２２】上記実施形態において、テスト結果最終順位付け処理の詳細な処理手順を示すフローチャートである。
【図２３】上記実施形態において、テスト結果最終順位付け処理について説明するための図である。
【図２４】上記実施形態の第１の変形例において、テスト仕様書テーブルの正規化後のレコードフォーマットを示す図である。
【図２５】上記実施形態の第１の変形例において、テストケーステーブルの正規化後のレコードフォーマットを示す図である。
【図２６】上記実施形態の第２の変形例において、テスト実施優先ロジック処理について説明するための図である。
【図２７】上記実施形態の第２の変形例において、テスト実施優先ロジック処理について説明するための図である。
【図２８】上記実施形態の第３の変形例において、テストを実施する過程における各テスト結果の全体に占める割合の変化を示す図である。
【図２９】上記実施形態の第３の変形例において、テストフェーズ中の処理の流れを説明するためのフローチャートである。
【符号の説明】
【００９６】
２０…プログラム格納部
３０…データベース
３１…テスト仕様書テーブル
３２…テストケーステーブル
３３…優先順位付けテーブル
１００…テストケース抽出装置（サーバ機）
２００…パソコン
３００…ＬＡＮ
４００…テストケース抽出ダイアログ
４０７…テスト仕様書間引き率設定テキストボックス
４０８…テストプロジェクト間引き率設定テキストボックス
５００…間引きパラメータ設定ダイアログ
【図１】
2007102475.tif 000003
【図２】
2007102475.tif 000004
【図３】
2007102475.tif 000005
【図４】
2007102475.tif 000006
【図５】
2007102475.tif 000007
【図６】
2007102475.tif 000008
【図７】
2007102475.tif 000009
【図８】
2007102475.tif 000010
【図９】
2007102475.tif 000011
【図１０】
2007102475.tif 000012
【図１１】
2007102475.tif 000013
【図１２】
2007102475.tif 000014
【図１３】
2007102475.tif 000015
【図１４】
2007102475.tif 000016
【図１５】
2007102475.tif 000017
【図１６】
2007102475.tif 000018
【図１７】
2007102475.tif 000019
【図１８】
2007102475.tif 000020
【図１９】
2007102475.tif 000021
【図２０】
2007102475.tif 000022
【図２１】
2007102475.tif 000023
【図２２】
2007102475.tif 000024
【図２３】
2007102475.tif 000025
【図２４】
2007102475.tif 000026
【図２５】
2007102475.tif 000027
【図２６】
2007102475.tif 000028
【図２７】
2007102475.tif 000029
【図２８】
2007102475.tif 000030
【図２９】
2007102475.tif 000031