(57)【要約】【課題】テストの効率化を図ること。【解決手段】演算部１ｂは、ソフトウェアのテストを開始する際に、存在しているプロセスＡ１，Ａ２，Ａ３ごとに、実行された累積の時間ｔ１０，ｔ２０，ｔ３０を示す第１の情報を取得する。演算部１ｂは、ソフトウェアのテストを終了する際に、存在しているプロセスＡ１，Ａ２，Ａ４ごとに、実行された累積の時間ｔ１１，ｔ２０，ｔ４１を示す第２の情報を取得する。演算部１ｂは、プロセスＡ１，Ａ２，Ａ３，Ａ４ごとに取得された第１および第２の情報に基づいて、ソフトウェアの情報収集の対象とするプロセスＡ１，Ａ３，Ａ４を選択する。【選択図】図１
2015001755.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセスを実行可能なコンピュータに、
ソフトウェアのテストを開始する際に、存在しているプロセスごとに、実行された累積の時間を示す第１の情報を取得し、
前記ソフトウェアのテストを終了する際に、存在しているプロセスごとに、実行された累積の時間を示す第２の情報を取得し、
プロセスごとに取得された第１および第２の情報に基づいて、前記ソフトウェアのテストを行う際に情報収集の対象とするプロセスを選択する、
処理を実行させるプログラム。
【請求項２】
前記選択では、プロセスごとに第１および第２の情報を比較し、第１および第２の情報が異なるプロセスを選択する、請求項１記載のプログラム。
【請求項３】
前記選択では、第１および第２の情報のうちの何れか一方のみが取得されているプロセスを選択する、請求項１または２記載のプログラム。
【請求項４】
プロセスが生成された履歴を示す情報を参照して、第１および第２の情報が取得されていないプロセスのうち、テストが行われた期間中に生成されたプロセスを情報収集の対象とする、請求項１乃至３の何れか１項に記載のプログラム。
【請求項５】
情報収集の対象とした第１のプロセスに関するテスト中の履歴に、第１のプロセスと通信する第２のプロセスの異常が記録されている場合、第２のプロセスを情報収集の対象とする、請求項１乃至４の何れか１項に記載のプログラム。
【請求項６】
前記ソフトウェアの前記テストを複数回行い、各回で選択されたプロセスが一致する割合に基づいて、前記テストが有効であるか否かを評価する、請求項１乃至５の何れか１項に記載のプログラム。
【請求項７】
第１および第２の情報の取得では、前記コンピュータにより実行されるオペレーティングシステムが現存しているプロセスごとに実行された累積の時間を格納する記憶装置を参照して、プロセスごとに第１および第２の情報を取得する、請求項１乃至６の何れか１項に記載のプログラム。
【請求項８】
複数のプロセスを実行可能な情報処理装置が、
ソフトウェアのテストを開始する際に、存在しているプロセスごとに、実行された累積の時間を示す第１の情報を取得し、
前記ソフトウェアのテストを終了する際に、存在しているプロセスごとに、実行された累積の時間を示す第２の情報を取得し、
プロセスごとに取得された第１および第２の情報に基づいて、前記ソフトウェアのテストを行う際に情報収集の対象とするプロセスを選択する、
プロセス選択方法。
【請求項９】
複数のプロセスを実行可能な情報処理装置であって、
現存しているプロセスごとに、実行された累積の時間を記憶する記憶部と、
ソフトウェアのテストを開始する際に、前記記憶部を参照して、存在しているプロセスごとに、実行された累積の時間を示す第１の情報を取得し、
前記ソフトウェアのテストを終了する際に、前記記憶部を参照して、存在しているプロセスごとに、実行された累積の時間を示す第２の情報を取得し、
プロセスごとに取得された第１および第２の情報に基づいて、前記ソフトウェアのテストを行う際に情報収集の対象とするプロセスを選択する、演算部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム、プロセス選択方法および情報処理装置に関する。
【背景技術】
【０００２】
現在、ソフトウェア開発では、ソフトウェアの品質向上を図るためにソフトウェアの動作を確認するテストが行われている。テストでは、例えばテスト対象のソフトウェアをコンピュータなどの情報処理装置に実行させる。そして、予定される入力に対し、ソフトウェアが設計された動作を適正に行えるかを確認する。動作が不正（エラー）であれば、当該エラーに関連する情報を採取して、当該情報からエラーの原因を分析し、対策し得る。
【０００３】
例えば、エラーの種別ごとにどのような情報があれば原因究明に役立つかを予め設定しておき、この設定に基づいて主メモリ上に採取された障害調査情報を磁気ディスク装置などの記憶媒体に出力することで、当該障害調査情報を容易に得る方法が提案されている。この提案では、障害調査情報として、エラー時におけるハードウェア、ソフトウェアの状態を示すログや各種プログラムの走行内容やその動作に関連して変化するハードウェアおよびソフトウェア資源の状態を動的・連続的に採取したトレース情報が挙げられている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−２６０８６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、ソフトウェアの実行状態は情報処理装置上でプロセスと呼ばれる単位で管理され得る。そこで、エラー時に採取対象とする情報を、当該プロセスの情報に基づいて指定することが考えられる。例えば、テストに関連するプロセスを予め指定して採取する情報を絞り込めば、余計な情報を採取するよりも、原因究明の分析作業を効率化し得る。
【０００６】
しかし、情報処理装置上ではテスト対象のソフトウェアに関連して動作するソフトウェアのみが実行されているとは限らない。テスト対象のソフトウェアとは無関係なソフトウェアも実行され得る。そこで、多数存在するソフトウェアのプロセスの中から、テスト時に情報収集の対象とするプロセスをどのようにして効率的に選択するかが問題となる。
【０００７】
１つの側面では、本発明は、テストの効率化を図れるプログラム、プロセス選択方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、複数のプロセスを実行可能なコンピュータによって実行されるプログラムが提供される。このプログラムは、コンピュータに、ソフトウェアのテストを開始する際に、存在しているプロセスごとに、実行された累積の時間を示す第１の情報を取得し、ソフトウェアのテストを終了する際に、存在しているプロセスごとに、実行された累積の時間を示す第２の情報を取得し、プロセスごとに取得された第１および第２の情報に基づいて、ソフトウェアのテストを行う際に情報収集の対象とするプロセスを選択する、処理を実行させる。
【０００９】
また、１つの態様では、複数のプロセスを実行可能な情報処理装置が実行するプロセス選択方法が提供される。このプロセス選択方法では、情報処理装置が、ソフトウェアのテストを開始する際に、存在しているプロセスごとに、実行された累積の時間を示す第１の情報を取得し、ソフトウェアのテストを終了する際に、存在しているプロセスごとに、実行された累積の時間を示す第２の情報を取得し、プロセスごとに取得された第１および第２の情報に基づいて、ソフトウェアのテストを行う際に情報収集の対象とするプロセスを選択する。
【００１０】
また、１つの態様では、複数のプロセスを実行可能な情報処理装置が提供される。この情報処理装置は、記憶部と演算部とを有する。記憶部は、現存しているプロセスごとに、実行された累積の時間を記憶する。演算部は、ソフトウェアのテストを開始する際に、記憶部を参照して、存在しているプロセスごとに、実行された累積の時間を示す第１の情報を取得し、ソフトウェアのテストを終了する際に、記憶部を参照して、存在しているプロセスごとに、実行された累積の時間を示す第２の情報を取得し、プロセスごとに取得された第１および第２の情報に基づいて、ソフトウェアのテストを行う際に情報収集の対象とするプロセスを選択する。
【発明の効果】
【００１１】
１つの側面では、テストの効率化を図れる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態の情報処理装置を示す図である。
【図２】第２の実施の形態のテスト装置のハードウェア例を示す図である。
【図３】テスト装置の機能例を示す図である。
【図４】プロセスの状態遷移を示す図である。
【図５】テスト時におけるプロセスの実行パターンの例を示す図である。
【図６】候補プロセステーブルの例を示す図である。
【図７】除外プロセステーブルの例を示す図である。
【図８】テスト管理テーブルの例を示す図である。
【図９】開始テーブルの例を示す図である。
【図１０】終了テーブルの例を示す図である。
【図１１】比較テーブルの例を示す図である。
【図１２】プロセス履歴テーブルの例を示す図である。
【図１３】プロセステーブルの例を示す図である。
【図１４】ソフトウェアのテストの処理例を示すフローチャートである。
【図１５】プロセス選択処理の例を示すフローチャートである。
【図１６】テスト開始時処理の例を示すフローチャートである。
【図１７】テスト終了時処理の例を示すフローチャートである。
【図１８】比較処理の例を示すフローチャートである。
【図１９】メモリダンプ取得処理の例を示すフローチャートである。
【図２０】トレースデータ取得処理の例を示すフローチャートである。
【図２１】プロセス選択処理の具体例を示すシーケンス図である。
【図２２】プロセス選択の具体例を示す図である。
【図２３】情報収集処理の具体例を示すシーケンス図である。
【図２４】テスト項目の有効性の検証例を示すフローチャートである。
【図２５】テスト項目の抽出処理の例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理装置を示す図である。情報処理装置１は、テスト対象のソフトウェアを実行し、当該ソフトウェアの動作テストを行う。情報処理装置１は、複数のプロセスを実行可能である。プロセスは情報処理装置１により実行される種々のソフトウェアのプログラムの実行単位の１つである。例えば、情報処理装置１により実行されるオペレーティングシステム（ＯＳ：Operating System）が、各ソフトウェアのプロセスの生成・実行待ち・実行・終了などを管理する。
【００１４】
情報処理装置１は、記憶部１ａおよび演算部１ｂを有する。記憶部１ａは、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部１ｂは、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。演算部１ｂは、プログラムを実行するプロセッサであってもよい。“プロセッサ”には、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。第１の実施の形態の情報処理は、演算部１ｂが記憶部１ａに記憶されたプログラムを実行することで実現されてもよい。
【００１５】
記憶部１ａは、現存しているプロセスごとの実行された累積の時間（累積実行時間ということがある）を示す管理情報２を記憶する。例えば、情報処理装置１により実行されるＯＳが、現時点において存在しているプロセスごとに実行された累積の時間を管理情報２に記録する。存在しているプロセスとは、生成済のプロセスである。存在しているプロセスは、ＯＳによるプロセッサやＲＡＭなどのリソースの割当てがあるプロセスともいえる。存在していないプロセスとは、過去に存在していたが、現在は終了して消去されたプロセスである。存在していないプロセスは、ＯＳにより割当てられていたリソースが解放されたプロセスともいえる。実行された累積の時間は、該当のプロセスが実行状態であった時間の累積である。
【００１６】
演算部１ｂは、テスト対象のソフトウェアのテストを開始する際に、存在しているプロセスごとに、実行された累積の時間を示す第１の情報を取得する。演算部１ｂは、記憶部１ａを参照して、当該テスト開始時に存在しているプロセスごとの第１の情報を取得し得る。例えば、演算部１ｂは、取得した第１の情報をプロセスに対応付けて記憶部１ａに格納された記録情報３に登録する。
【００１７】
演算部１ｂは、テスト対象のソフトウェアのテストを終了する際に、存在しているプロセスごとに、実行された累積の時間を示す第２の情報を取得する。演算部１ｂは、記憶部１ａを参照して、当該テスト終了時に存在しているプロセスごとの第２の情報を取得し得る。例えば、演算部１ｂは、取得した第２の情報をプロセスに対応付けて記録情報３に登録する。
【００１８】
演算部１ｂは、プロセスごとに取得された第１および第２の情報に基づいて、テスト対象のソフトウェアのテストを行う際に情報収集の対象とするプロセスを選択する。
ここで、図１の管理情報２および記録情報３では、あるソフトウェアのテストを行った後、所定時間が経過した時点の登録内容を例示している。例えば、当該時点において、管理情報２には各プロセスに対して次の累積実行時間が登録されている。プロセスＡ１の累積実行時間ｔ１２。プロセスＡ２の累積実行時間ｔ２２。プロセスＡ４の累積実行時間ｔ４２。プロセスＡ５の累積実行時間ｔ５２。
【００１９】
また、例えば記録情報３には、テスト開始時に存在していたプロセスに対して次のようにテスト開始時の累積実行時間が登録されている。登録なし（ハイフン“−”を表記）は、当該時点において存在していなかったため、累積実行時間を取得できなかったことを示す。プロセスＡ１の累積実行時間ｔ１０。プロセスＡ２の累積実行時間ｔ２０。プロセスＡ３の累積実行時間ｔ３０。同様に、テスト終了時に存在していたプロセスに対して次のようにテスト終了時の累積実行時間が登録されている。プロセスＡ１の累積実行時間ｔ１１。プロセスＡ２の累積実行時間ｔ２０。プロセスＡ４の累積実行時間ｔ４１。
【００２０】
例えば、演算部１ｂは、記録情報３を参照して、プロセスごとにテスト開始時の累積実行時間（第１の情報）とテスト終了時の累積実行時間（第２の情報）とを比較する。例えば、演算部１ｂは、テスト開始時の累積実行時間（第１の情報）とテスト終了時の累積実行時間（第２の情報）とが異なるプロセスを、情報収集の対象として選択する。テスト期間中に累積実行時間が変動していれば、当該プロセスは、テスト中のソフトウェアの処理に関連して実行された可能性が高いからである。
【００２１】
記録情報３の例でいえば、プロセスＡ１はテスト開始時とテスト終了時とで累積実行時間が異なっている。よって、演算部１ｂはプロセスＡ１を情報収集の対象とする。一方、演算部１ｂはテスト開始時およびテスト終了時の累積実行時間が同じであるプロセスＡ２を情報収集の対象としない。
【００２２】
演算部１ｂは、第１および第２の情報のうちの何れか一方のみが取得されているプロセスをソフトウェアの情報収集の対象として選択してもよい。例えば、テスト開始時には存在しておらず、テスト終了時には存在していたプロセスＡ４は、テスト中のソフトウェアの処理に関連して生成された可能性があるからである。また、テスト開始時には存在しており、テスト終了時には存在していなかったプロセスＡ３は、テスト中のソフトウェアの処理に関連して終了された可能性があるからである。よって、演算部１ｂはプロセスＡ３，Ａ４を情報収集の対象とする。
【００２３】
情報処理装置１によれば、演算部１ｂにより、ソフトウェアのテストが開始される際に、存在しているプロセスごとに、実行された累積の時間を示す第１の情報が取得される。演算部１ｂにより、ソフトウェアのテストを終了する際に、存在しているプロセスごとに、実行された累積の時間を示す第２の情報が取得される。演算部１ｂにより、プロセスごとに取得された第１および第２の情報に基づいて、情報収集の対象とするプロセスが選択される。
【００２４】
これにより、テストの効率化を図れる。ここで、例えば、情報収集の対象とするプロセスを選択して、エラー時に採取する情報を予め絞り込めば、余計な（ソフトウェアのテストとは明らかに関連のない）プロセスの情報を採取するよりも、原因究明の分析作業を効率化し得る。そこで、ソフトウェアのテストでは、情報処理装置１上に多数存在するソフトウェアのプロセスの中から、情報収集の対象とするプロセスをどのようにして効率的に選択するかが問題となる。
【００２５】
例えば、ソフトウェアのテストを行っている最中に、存在している全プロセスについてログやトレースデータなどの情報を網羅的に取得し、取得した情報を分析してテストと関連して実行されたプロセスを選択することも考えられる。しかし、網羅的に情報を取得しようとすると、当該情報を取得する処理に伴う情報処理装置１の負荷が問題となる。情報処理装置１の負荷が増大すると、テスト対象のソフトウェアの処理が適正に行われなくなるおそれがある。また、網羅的に情報を取得すると、取得される情報の情報量も増大し得る。分析対象の情報量が増大すると、分析作業におけるユーザの負担が過大となるおそれもある。
【００２６】
そこで、情報処理装置１では、テスト開始時およびテスト終了時に各プロセスの累積実行時間を取得し、当該累積実行時間に基づいて、情報収集の対象とするプロセスを選択する。取得した累積実行時間の変化は、プロセスが実行された実績を示すから、テスト中に累積実行時間に変化があったプロセスは、テストに関連して実行されたプロセスであると推測できる。よって、累積実行時間に基づいてプロセスを選択し、情報収集すれば、明らかにテストと関係ないと考えられるプロセスを情報収集の対象から除外できる。
【００２７】
また、例えば、累積実行時間は、情報処理装置１上のオペレーティングシステムにより、プロセスごとに記憶部１ａに格納される情報である。演算部１ｂは、累積実行時間を取得するために、記憶部１ａから該当のプロセスの累積実行時間を読み出せばよい。このため、上記のように網羅的に情報を取得しなくてよく、プロセス選択用の情報の取得に伴う負荷を比較的小さく抑えられる。よって、情報処理装置１の負荷がテストに与える影響を軽減できる。また、テスト開始時およびテスト終了時の各プロセスの累積実行時間に基づいて、情報収集の対象とするプロセスを選択するので、ユーザに対して当該プロセスを選択する作業を強いずに済む。よって、ユーザの作業の省力化を図れる。
【００２８】
特に、テスト対象のソフトウェアが他のソフトウェアと連携して所定の機能を実現する場合、当該連携が適正に行われるかをテストすることもある（システムテストと呼ばれることがある）。システムテストでは、他のソフトウェアとの連携で生ずるエラーの分析が行われる。しかし、他のソフトウェアは、自身とは異なる開発者、ベンダなどにより作成されたものである場合もある。このため、他のソフトウェアがブラックボックス化されていると、どのようなプロセスが実行されるのかを事前に把握することは容易でない。したがって、このような場合には、テスト対象のソフトウェアを実際に動かしてみて他のソフトウェアとの連携を確認することが多い。情報処理装置１によれば、このようなブラックボックステストを行う場合にも、情報収集の対象とするプロセスを効率的に選択でき、テストの効率化を図れる。
【００２９】
また、情報処理装置１は、テスト対象のソフトウェアのテストを再び行う際に、選択したプロセスを指定して、トレースログやメモリダンプなどの情報を収集し得る。すなわち、情報の収集範囲を、選択したプロセスに絞り込める。このため、当該情報収集に要する負荷を軽減できる。よって、当該テスト中にも情報処理装置１の負荷がテストに与える影響を軽減できる。また、ソフトウェアのテストとは明らかに関連しないプロセスに関する情報（余計な情報）を収集しない。よって、分析対象とする情報量を低減でき、分析作業の省力化を図れる。
【００３０】
［第２の実施の形態］
図２は、第２の実施の形態のテスト装置のハードウェア例を示す図である。テスト装置１００は、テスト対象のソフトウェアに関するテストを行うコンピュータである。第２の実施の形態では、当該ソフトウェアに対するシステムテストを想定する。システムテストでは、例えば、テスト対象のソフトウェアと他のソフトウェア（ＯＳやデバイスドライバなどを含む）とが連携して、設計された機能を実現できることを確認する。ただし、以下に示す機能をシステムテスト以外に適用することを妨げるものではない。例えば、単体テストや結合テストなどにも適用し得る。
【００３１】
テスト装置１００は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、通信部１０４、画像信号処理部１０５、入力信号処理部１０６、ディスクドライブ１０７および機器接続部１０８を有する。各ユニットはテスト装置１００のバスに接続されている。
【００３２】
プロセッサ１０１は、テスト装置１００の情報処理を制御する。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡのうちの２以上の要素の組合せであってもよい。
【００３３】
ＲＡＭ１０２は、テスト装置１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００３４】
ＨＤＤ１０３は、テスト装置１００の補助記憶装置である。ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。テスト装置１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００３５】
通信部１０４は、ネットワーク１０を介して他のコンピュータと無線通信を行えるインタフェースである。通信部１０４は、有線インタフェースでもよい。
画像信号処理部１０５は、プロセッサ１０１からの命令に従って、テスト装置１００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００３６】
入力信号処理部１０６は、テスト装置１００に接続された入力デバイス１２から入力信号を取得し、プロセッサ１０１に出力する。入力デバイス１２としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００３７】
ディスクドライブ１０７は、レーザ光などを利用して、光ディスク１３に記録されたプログラムやデータを読み取る駆動装置である。光ディスク１３として、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などを使用できる。ディスクドライブ１０７は、例えば、プロセッサ１０１からの命令に従って、光ディスク１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００３８】
機器接続部１０８は、テスト装置１００に周辺機器を接続するための通信インタフェースである。例えば、機器接続部１０８にはメモリ装置１４やリーダライタ装置１５を接続できる。メモリ装置１４は、機器接続部１０８との通信機能を搭載した記録媒体である。リーダライタ装置１５は、メモリカード１６へのデータの書き込み、またはメモリカード１６からのデータの読み出しを行う装置である。メモリカード１６は、カード型の記録媒体である。機器接続部１０８は、例えば、プロセッサ１０１からの命令に従って、メモリ装置１４またはメモリカード１６から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００３９】
図３は、テスト装置の機能例を示す図である。テスト装置１００は、記憶部１１０、ＯＳ１２０、テスト処理部１３０、情報収集部１４０、テスト対象ソフトウェア１５０およびソフトウェア群１６０を有する。記憶部１１０は、ＲＡＭ１０２やＨＤＤ１０３の所定の記憶領域を用いて実現できる。テスト処理部１３０および情報収集部１４０は、プロセッサ１０１によって実行されるプログラムのモジュールであってもよい。
【００４０】
記憶部１１０は、テスト装置１００の各部の処理に用いられる情報を記憶する。記憶部１１０は、現時点において存在しているプロセスごとに実行された累積の時間（累積実行時間）を記憶する。記憶部１１０が記憶する情報には、テスト管理テーブル、開始テーブルおよび終了テーブルが含まれる。
【００４１】
テスト管理テーブルは、テスト対象のソフトウェアとテスト内容との対応関係を示すテーブルである。テスト内容は、１以上のテスト項目と各テスト項目の実行順とを含む。開始テーブルおよび終了テーブルはプロセスごとの累積実行時間を記録するために用いられるテーブルである。
【００４２】
ＯＳ１２０は、各種ソフトウェアの実行を管理する基本ソフトウェアである。例えば、ＯＳ１２０は、各ソフトウェアのプロセスの生成・実行待ち・実行・終了などを管理する。プロセスは、ソフトウェアに含まれるプログラムのＯＳ１２０による実行単位の１つである。また、ＯＳ１２０は、現時点において存在しているプロセスごとの累積実行時間を記憶部１１０に格納する。ＯＳ１２０は、現存するプロセスの累積実行時間を常時計測し、記憶部１１０に記録された累積実行時間を更新する。
【００４３】
例えば、ＯＳ１２０として、Ｕｎｉｘ（登録商標）やＬｉｎｕｘ（登録商標）およびＷｉｎｄｏｗｓ（登録商標）などを利用できる。
テスト処理部１３０は、テスト管理テーブルを参照して、テスト対象ソフトウェア１５０に応じたテストを実行する。例えば、テスト処理部１３０は、テスト対象ソフトウェア１５０に対して所定のデータを入力し、テスト対象ソフトウェア１５０やソフトウェア群１６０から出力を得ることで、テスト管理テーブルに登録されたテスト項目を順次実行する。テスト処理部１３０は、入力に対する出力が適正か否かを判定することで、テストの成否を決定する。テスト処理部１３０は、次のようにテストを進める。まず、情報収集対象のプロセスを選択するためのテストを行う（１回目）。次に、選択されたプロセスについて情報収集を行うためのテストを行う（２回目以降）。
【００４４】
情報収集部１４０は、テスト処理部１３０による１回目のテストの際に、テスト項目ごとに情報収集の対象とするプロセスを選択する。具体的には、情報収集部１４０は、テスト項目ごとに、テスト開始時に存在していたプロセスに対し、累積実行時間を取得する。情報収集部１４０は、テスト開始時点のプロセスごとの累積実行時間を記憶部１１０に記憶された開始テーブルに記録する。情報収集部１４０は、テスト項目ごとに、テスト終了時に存在していたプロセスに対し、累積実行時間を取得する。情報収集部１４０は、テスト終了時点のプロセスごとの累積実行時間を記憶部１１０に記憶された終了テーブルに記録する。
【００４５】
各プロセスの各時点における累積実行時間は、前述のようにＯＳ１２０により記憶部１１０に格納されている。例えば、情報収集部１４０は、各時点において、ＯＳ１２０に対してプロセスを指定した所定のコマンドを発行することで、当該プロセスの累積実行時間を取得し得る。例えば、ＯＳ１２０がＵｎｉｘやＬｉｎｕｘであれば、ｐｓコマンドを用いてプロセスごとの累積実行時間を取得してもよい。あるいは、ＯＳ１２０がＷｉｎｄｏｗｓであれば、ＧｅｔＰｒｏｃｅｓｓＴｉｍｅｓコマンドを用いてプロセスごとの累積実行時間を取得してもよい。
【００４６】
情報収集部１４０は、プロセスごとのテスト開始時およびテスト終了時の累積実行時間に基づいて、テスト項目ごとに情報収集の対象とするプロセスを選択する。
情報収集部１４０は、テスト処理部１３０による２回目以降のテストの際に、テスト項目ごとに、選択したプロセスについて、エラー分析用の情報を収集する。具体的には、情報収集部１４０は、エラー分析用の情報として、プロセスごとのメモリダンプ（ＲＡＭ１０２上の任意領域をＨＤＤ１０３上にファイル出力したもの）やトレースデータを収集する。例えば、ＯＳ１２０がＵｎｉｘであれば、ｔｒｕｓｓコマンドを用いてプロセスごとのトレースデータを取得してもよい。あるいは、ＯＳ１２０がＬｉｎｕｘであれば、ｓｔｒａｃｅコマンドを用いてプロセスごとのトレースデータを取得してもよい。
【００４７】
テスト対象ソフトウェア１５０は、テストの対象とするソフトウェアである。テスト対象ソフトウェア１５０は、ＯＳ１２０やソフトウェア群１６０と連携して、所定の機能を実現する。
【００４８】
ソフトウェア群１６０は、ＯＳ１２０上で実行される、テスト対象ソフトウェア１５０以外のソフトウェアの集合である。ソフトウェア群１６０は、テスト装置１００のハードウェアを制御する各種のデバイスドライバを含む。ソフトウェア群１６０は、テスト対象ソフトウェア１５０を実行するための基盤となるミドルウェアを含む。ソフトウェア群１６０は、テスト対象ソフトウェア１５０と通信する他のアプリケーションを含む。
【００４９】
図４は、プロセスの状態遷移を示す図である。プロセスの状態は、ＯＳ１２０により次のように管理される。例えば、プロセスの状態は、実行中状態２１（Running）、ブロック状態２２（Blocked）および実行可能状態２３（Ready）を含む。実行中状態２１は、当該プロセスがプロセッサ１０１により実行されている状態である。ブロック状態２２は、所定の外部イベントが発生するまで当該プロセスが実行不可となっている状態である。実行可能状態２３は、プロセスに対してスケジューリングされたプロセッサ１０１の割当て時間を待機している状態である。ただし、上記の状態の他、プロセスは仮想メモリにスワップされることもある。
【００５０】
例えば、（１）プロセスの一連のステップにおいて、所定の外部イベント（リソースの確保や他のプロセスからの入力など）の発生を待つ段階になれば、実行中状態２１からブロック状態２２に遷移する。（２）第１のプロセスが実行中状態２１のときに、第２のプロセスのプロセッサ割当て時間になれば、第１のプロセスは実行可能状態２３に遷移する。（３）実行可能状態２３であった第２のプロセスは実行中状態２１に遷移する。（４）ブロック状態２２にあるプロセスは、所定の外部イベントが発生すれば、ブロック状態２２から実行可能状態２３に遷移する。
【００５１】
例えば、生成されたプロセスは実行可能状態２３となる。プロセスの一連のステップが終了すれば、当該プロセスに対するプロセッサ１０１、ＲＡＭ１０２およびＨＤＤ１０３などのリソースは解放され、当該プロセスは消滅する。
【００５２】
ブロック状態２２、実行可能状態２３およびスワップされた状態は、プロセスとしてＲＡＭ１０２やＨＤＤ１０３上に存在するが、実行を待っている状態といえる。例えば、前述の累積実行時間は、各プロセスが実行中状態２１であった時間でもよい。あるいは、累積実行時間は、実行中状態２１および実行可能状態２３であった時間の和でもよい。
【００５３】
図５は、テスト時におけるプロセスの実行パターンの例を示す図である。図５において、実線は、プロセスが継続的に、または、断続的に実行された（実行中状態２１であった）ことを示している。破線は、プロセスが実行されていない（実行中状態２１とならなかった）ことを示している。
【００５４】
実行パターンＰ１は、テスト開始時からテスト終了時までの間にプロセスが実行されるパターンである。実行パターンＰ１のプロセスは、テスト対象ソフトウェア１５０のテストに関連して実行された可能性が高いと判断できる。
【００５５】
実行パターンＰ２は、テスト開始時からテスト途中のある時点までにプロセスが実行されるが、テスト終了時までに当該プロセスが終了されるパターンである。実行パターンＰ２のプロセスはテスト対象ソフトウェア１５０のテストに関連して終了された可能性がある。
【００５６】
実行パターンＰ３は、テスト開始時には存在しておらず、テスト途中のある時点にプロセスが生成され、テスト終了時までの間に当該プロセスが実行されるパターンである。実行パターンＰ３のプロセスはテスト対象ソフトウェア１５０のテストに関連して生成され、実行された可能性がある。
【００５７】
実行パターンＰ４は、テスト開始時およびテスト終了時には存在しておらず、テスト途中で生成され、テスト終了時までに終了するパターンである。実行パターンＰ４のプロセスはテスト対象ソフトウェア１５０のテストに関連して生成され、実行された可能性がある。
【００５８】
実行パターンＰ５は、テスト開始時からテスト終了時の間に当該プロセスが実行されていないパターンである。実行パターンＰ５のプロセスは、テスト対象ソフトウェア１５０のテストに関連して実行されるものではないと判断できる。
【００５９】
図６は、候補プロセステーブルの例を示す図である。候補プロセステーブル１１１は、情報収集の対象とするプロセスの候補をテスト対象のソフトウェアごとに登録した情報である。例えば、ユーザは、情報収集の対象とするプロセスの候補を指定したい場合、候補プロセステーブル１１１に登録する。候補プロセステーブル１１１は、記憶部１１０に予め格納される。候補プロセステーブル１１１は、ソフトウェア名およびプロセス名の項目を含む。
【００６０】
ソフトウェア名の項目にはテスト対象のソフトウェアの名称が登録される。プロセス名の項目には情報収集の対象候補とするプロセスの名称が登録される。
例えば、候補プロセステーブル１１１には、ソフトウェア名が“ＳＷ１”、プロセス名が“ｓｍｓｓ、ｐｒｏｖｉｄｅｒＭＧＲ、ｐｒｏｖｉｄｅｒｍｏｎｉｔ、ｓｔｕｂｐｒｏｖｉｄｅｒ、ｃｃＳｖｃＨｓｔ、ｐｒｉｎｔＭＧＲ、・・・”という情報が登録されている。これは、テスト対象ソフトウェア１５０が“ＳＷ１”である場合、情報収集の対象候補のプロセスは“ｓｍｓｓ、ｐｒｏｖｉｄｅｒＭＧＲ、ｐｒｏｖｉｄｅｒｍｏｎｉｔ、ｓｔｕｂｐｒｏｖｉｄｅｒ、ｃｃＳｖｃＨｓｔ、ｐｒｉｎｔＭＧＲ、・・・”であることを示す。ここで、ソフトウェア名“ＳＷ１”は、テスト対象ソフトウェア１５０のソフトウェア名である。
【００６１】
図７は、除外プロセステーブルの例を示す図である。除外プロセステーブル１１２は、情報収集の対象外とするプロセスの候補をテスト対象のソフトウェアごとに登録した情報である。例えば、ユーザは、情報収集の対象外とするプロセスの候補を指定したい場合、除外プロセステーブル１１２に登録する。除外プロセステーブル１１２は、記憶部１１０に予め格納される。除外プロセステーブル１１２は、ソフトウェア名およびプロセス名の項目を含む。
【００６２】
ソフトウェア名の項目にはテスト対象のソフトウェアの名称が登録される。プロセス名の項目には情報収集の対象外するプロセスの名称が登録される。
例えば、除外プロセステーブル１１２には、ソフトウェア名が“ＳＷ１”、プロセス名が“Ｓｙｓｔｅｍ  Ｉｄｌｅ  Ｐｒｏｃｅｓｓ、Ｓｙｓｔｅｍ、ｓｖｃｈｏｓｔ、・・・”という情報が登録されている。これは、テスト対象ソフトウェア１５０が“ＳＷ１”である場合、情報収集の対象外のプロセスは“Ｓｙｓｔｅｍ  Ｉｄｌｅ  Ｐｒｏｃｅｓｓ、Ｓｙｓｔｅｍ、ｓｖｃｈｏｓｔ、Ｓｙｓｔｅｍ、ｓｖｃｈｏｓｔ、・・・”であることを示す。
【００６３】
図８は、テスト管理テーブルの例を示す図である。テスト管理テーブル１１３は、テスト対象のソフトウェアごとのテスト項目およびテスト項目で用いられる情報の対応関係を示す情報である。テスト管理テーブル１１３は、記憶部１１０に予め格納される。テスト管理テーブル１１３は、ソフトウェア名、テスト項目およびテスト情報の項目を含む。
【００６４】
ソフトウェア名の項目には、テスト対象のソフトウェア名が登録される。テスト項目の項目には、テスト項目の識別情報が登録される。テスト情報の項目には、当該テスト項目において用いられる入力データ、イベントを発生用の情報およびテスト成否の判定用の情報などが登録される。
【００６５】
例えば、テスト管理テーブル１１３には、ソフトウェア名が“ＳＷ１”、テスト項目が“Ｔ１”、テスト情報が“ｔｅｓｔ１”という情報が登録されている。また、ソフトウェア名が“ＳＷ１”、テスト項目が“Ｔ２”、テスト情報が“ｔｅｓｔ２”という情報が登録されている。これは、テスト対象ソフトウェア１５０について、テスト項目“Ｔ１”およびテスト項目“Ｔ２”を順にテストすることを示している。また、テスト項目“Ｔ１”のテストを行う場合、テスト情報として“ｔｅｓｔ１”を用いることを示す。テスト項目“Ｔ２”のテストを行う場合、テスト情報として“ｔｅｓｔ２”を用いることを示す。
【００６６】
図９は、開始テーブルの例を示す図である。開始テーブル１１４は、テスト開始時のプロセスごとの累積実行時間の記録に用いられる。開始テーブル１１４は、記憶部１１０に格納される。開始テーブル１１４は、ソフトウェア名、テスト項目、プロセス名および累積実行時間の項目を含む。
【００６７】
ソフトウェア名の項目には、テスト対象のソフトウェアの名称が登録される。テスト項目の項目には、テスト項目の識別情報が登録される。プロセス名の項目には、累積実行時間の取得対象のプロセス名が登録される。累積実行時間の項目には、テスト開始時に取得された累積実行時間が登録される。
【００６８】
例えば、開始テーブル１１４には、ソフトウェア名が“ＳＷ１”、テスト項目が“Ｔ１”、プロセス名が“ｓｍｓｓ”、累積実行時間が“００：０５：４５．１２６”という情報が登録されている。これは、テスト対象ソフトウェア１５０のテスト項目“Ｔ１”のテスト開始時におけるプロセス“ｓｍｓｓ”の累積実行時間が、“００：０５：４５．１２６”であったことを示す。
【００６９】
図１０は、終了テーブルの例を示す図である。終了テーブル１１５は、テスト終了時のプロセスごとの累積実行時間の記録に用いられる。終了テーブル１１５は、記憶部１１０に格納される。終了テーブル１１５は、ソフトウェア名、テスト項目、プロセス名および累積実行時間の項目を含む。
【００７０】
ソフトウェア名の項目には、テスト対象のソフトウェアの名称が登録される。テスト項目の項目には、テスト項目の識別情報が登録される。プロセス名の項目には、累積実行時間の取得対象のプロセス名が登録される。累積実行時間の項目には、テスト終了時に取得された累積実行時間が登録される。
【００７１】
例えば、終了テーブル１１５には、ソフトウェア名が“ＳＷ１”、テスト項目が“Ｔ１”、プロセス名が“ｓｍｓｓ”、累積実行時間が“００：１２：４５．８７７”という情報が登録されている。これは、テスト対象ソフトウェア１５０のテスト項目“Ｔ１”のテスト終了時におけるプロセス“ｓｍｓｓ”の累積実行時間が、“００：１２：４５．８７７”であったことを示す。
【００７２】
図１１は、比較テーブルの例を示す図である。比較テーブル１１６は、開始テーブル１１４および終了テーブル１１５を合わせた情報であり両者の比較用に用いられる。比較テーブル１１６は、記憶部１１０に格納される。比較テーブル１１６は、ソフトウェア名、テスト項目、プロセス名および累積実行時間（開始時および終了時）の項目を含む。
【００７３】
ソフトウェア名の項目には、テスト対象のソフトウェアの名称が登録される。テスト項目の項目には、テスト項目の識別情報が登録される。プロセス名の項目には、累積実行時間が取得されたプロセス名が登録される。累積実行時間（開始時）の項目には、テスト開始時に取得された累積実行時間が登録される。累積実行時間（終了時）の項目には、テスト終了時に取得された累積実行時間が登録される。
【００７４】
例えば、比較テーブル１１６には、ソフトウェア名が“ＳＷ１”、テスト項目が“Ｔ１”、プロセス名が“ｓｍｓｓ”、累積実行時間の開始時が“００：０５：４５．１２６”、累積実行時間の終了時が“００：１２：４５．８７７”という情報が登録されている。これは、テスト対象ソフトウェア１５０のテスト項目“Ｔ１”のテストを行ったときのプロセス“ｓｍｓｓ”のテスト開始時の累積実行時間が“００：０５：４５．１２６”、テスト終了時の累積実行時間が“００：１２：４５．８７７”であったことを示す。テスト開始時の累積実行時間とテスト終了時の累積実行時間が異なるので、プロセス“ｓｍｓｓ”はテスト中に実行されたことが分かる。すなわち、プロセス“ｓｍｓｓ”は実行パターンＰ１のプロセスである。
【００７５】
また、例えば、比較テーブル１１６には、ソフトウェア名が“ＳＷ１”、テスト項目が“Ｔ１”、プロセス名が“ｐｒｏｖｉｄｅｒＭＧＲ”、累積実行時間の開始時が“００：０１：１２．１２２”、累積実行時間の終了時が登録なし（“−（ハイフン）”）という情報が登録されている。これは、テスト対象ソフトウェア１５０のテスト項目“Ｔ１”のテストを行ったときのプロセス“ｐｒｏｖｉｄｅｒＭＧＲ”のテスト開始時の累積実行時間が“００：０１：１２．１２２”であったことを示す。また、テスト終了時にプロセス“ｐｒｏｖｉｄｅｒＭＧＲ”が終了していた（存在していなかった）ため、情報収集部１４０は累積実行時間を取得できなかったことを示す。プロセス“ｐｒｏｖｉｄｅｒＭＧＲ”は、テスト開始時には実行されていたが、テスト途中に当該プロセスは終了していたと判断できる。すなわち、プロセス“ｐｒｏｖｉｄｅｒＭＧＲ”は実行パターンＰ２のプロセスである。
【００７６】
また、例えば、比較テーブル１１６には、ソフトウェア名が“ＳＷ１”、テスト項目が“Ｔ１”、プロセス名が“ｐｒｏｖｉｄｅｒｍｏｎｉｔ”、累積実行時間の開始時が登録なし、累積実行時間の終了時が“００：００：００．０９８”という情報が登録されている。これは、テスト対象ソフトウェア１５０のテスト項目“Ｔ１”のテストを行ったときのプロセス“ｐｒｏｖｉｄｅｒｍｏｎｉｔ”のテスト終了時の累積実行時間が“００：００：００．０９８”であったことを示す。また、テスト開始時にプロセス“ｐｒｏｖｉｄｅｒｍｏｎｉｔ”が生成されていなかった（存在していなかった）ため、情報収集部１４０は累積実行時間を取得できなかったことを示す。プロセス“ｐｒｏｖｉｄｅｒｍｏｎｉｔ”は、テスト開始時には生成されていなかったが、テスト途中に生成され、実行されたと判断できる。すなわち、プロセス“ｐｒｏｖｉｄｅｒｍｏｎｉｔ”は、実行パターンＰ３のプロセスである。
【００７７】
また、例えば、比較テーブル１１６には、ソフトウェア名が“ＳＷ１”、テスト項目が“Ｔ１”、プロセス名が“ｃｃＳｖｃＨｓｔ”、累積実行時間の開始時が“００：００：０８．３５６”、累積実行時間の終了時が“００：００：０８．３５６”という情報が登録されている。これは、テスト対象ソフトウェア１５０のテスト項目“Ｔ１”のテストを行ったときのプロセス“ｃｃＳｖｃＨｓｔ”のテスト開始時の累積実行時間が“００：００：０８．３５６”、テスト終了時の累積実行時間が“００：００：０８．３５６”であったことを示す。テスト開始時の累積実行時間とテスト終了時の累積実行時間が同じなので、プロセス“ｃｃＳｖｃＨｓｔ”は、テスト時に実行されなかったと判断できる。すなわち、プロセス“ｃｃＳｖｃＨｓｔ”は、実行パターンＰ５のプロセスである。
【００７８】
図１２は、プロセス履歴テーブルの例を示す図である。プロセス履歴テーブル１１７は、記憶部１１０に格納される。プロセス履歴テーブル１１７は、プロセス名、ログＩＤ（IDentifier）、ログ生成時刻、種別および詳細情報の項目を含む。
【００７９】
プロセス名の項目には、プロセスの名称が登録される。ログＩＤの項目には、ログのＩＤが登録される。ログ生成時刻の項目には、ログの生成時刻が登録される。種別の項目には、ログの種別が登録される。例えば、プロセスの生成を示す場合、種別は“生成”となる。プロセスに関するエラーを示す場合、種別は“エラー”となる。プロセスの終了を示す場合、種別は“終了”となる。詳細情報の項目には、生成されたプロセスと通信する他のプロセスが異常を生じさせた場合にその内容を示す情報が登録される。
【００８０】
詳細情報には、エラーコード、関連プロセスＩＤ、関連プロセス名および検出箇所コードが含まれる。エラーコードは、異常内容を識別するための情報である。関連プロセスＩＤは、当該他のプロセスのプロセスＩＤである。関連プロセス名は、当該プロセスＩＤに対応するプロセス名である。検出箇所コードは、当該他のプロセスにおいて異常が検出されたステップを示す情報である。
【００８１】
例えば、プロセス履歴テーブル１１７には、プロセス名が“ｓｔｕｂｐｒｏｖｉｄｅｒ”、ログＩＤが“Ｌ１”、ログ生成時刻が“１５：１６：１７．２０３”、種別が“生成”という情報が登録されている。これは、時刻“１５：１６：１７．２０３”にプロセス名“ｓｔｕｂｐｒｏｖｉｄｅｒ”のプロセスが生成されたことを示す。
【００８２】
また、例えば、プロセス履歴テーブル１１７には、プロセス名が“ｓｔｕｂｐｒｏｖｉｄｅｒ”、ログＩＤが“Ｌ２”、ログ生成時刻が“１５：１６：１８．３５８”、種別が“エラー”、エラーコードが“１２７５”、関連プロセスＩＤが“１０５４”、関連プロセス名“ｒｃｖｙ”、検出箇所コード“３３８８”という情報が登録されている。
【００８３】
これは、プロセス名“ｓｔｕｂｐｒｏｖｉｄｅｒ”のプロセスで、時刻“１５：１６：１８．３５８”にエラーが発生したことを示す。また、当該エラーでは、当該プロセス“ｓｔｕｂｐｒｏｖｉｄｅｒ”と通信するプロセス“ｒｃｖｙ”がエラーコード“１２７５”で示される異常を生じさせたこと、当該異常のあったステップが“３３８８”で示される箇所であることを示す。
【００８４】
なお、プロセス履歴テーブル１１７に記録されるログは、情報収集部１４０により生成されるものでもよいし、ＯＳ１２０や他のソフトウェアが出力したログを収集したものでもよい。
【００８５】
図１３は、プロセステーブルの例を示す図である。プロセステーブル１１８は、情報収集対象として選択されたプロセスを登録するテーブルである。プロセステーブル１１８は、記憶部１１０に格納される。プロセステーブル１１８は、項番、テスト開始時間、テスト終了時間、ソフトウェア名、テスト項目およびプロセス名の項目を含む。
【００８６】
項番の項目には、レコードを識別するための番号が登録される。テスト開始時間の項目には、該当のテスト項目のテストを開始した時間が登録される。テスト終了時間の項目には、該当のテスト項目のテストを終了した時間が登録される。テスト開始時間やテスト終了時間として時分秒を記録するものとするが、年月日などを記録してもよい。ソフトウェア名の項目には、テスト対象のソフトウェアの名称が登録される。テスト項目の項目には、テスト項目の識別情報が登録される。プロセス名の項目には、情報収集の対象とするプロセスの名称が登録される。
【００８７】
例えば、プロセステーブル１１８には、項番が“１”、テスト開始時間が“１５：１６：１６”、テスト終了時間が“１５：１９：１７”、ソフトウェア名が“ＳＷ１”、テスト項目が“Ｔ１”、プロセス名が“ｓｍｓｓ、ｐｒｏｖｉｄｅｒＭＧＲ、ｐｒｏｖｉｄｅｒｍｏｎｉｔ、ｓｔｕｂｐｒｏｖｉｄｅｒ、ｒｃｖｙ、・・・”という情報が登録されている。
【００８８】
これは、時間“１５：１６：１６〜１５：１９：１７”に行われたテスト対象ソフトウェア１５０のテスト項目“Ｔ１”のテストにおいて、情報収集対象のプロセスとして“ｓｍｓｓ、ｐｒｏｖｉｄｅｒＭＧＲ、ｐｒｏｖｉｄｅｒｍｏｎｉｔ、ｓｔｕｂｐｒｏｖｉｄｅｒ、ｒｃｖｙ、・・・”が選択されたことを示す。
【００８９】
図１４は、ソフトウェアのテストの処理例を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。
（ステップＳ１１）テスト処理部１３０は、テスト対象としてテスト対象ソフトウェア１５０の指定を受け付ける。例えば、テスト対象のソフトウェアは、ユーザによって指定される。
【００９０】
（ステップＳ１２）情報収集部１４０は、プロセス選択モードの指定を受け付ける。プロセス選択モードは、情報収集対象のプロセスを選択する方法を示す。プロセス選択モードには、“プロセス指定”および“全プロセス指定”の２種類がある。“プロセス指定”は、ユーザにより指定された候補プロセス（候補プロセステーブル１１１）の中から、プロセスを絞り込むことで情報収集対象のプロセスを選択するモードである。“全プロセス指定”は、あらゆるプロセスの中からテストに関連して実行されたと推測されるプロセスを全て選択するモードである。“全プロセス指定”では、除外プロセステーブル１１２により、情報収集の対象外とするプロセスを設定できる。ユーザは、テストに応じて何れかの方法を選択できる。
【００９１】
（ステップＳ１３）テスト処理部１３０は、テスト対象ソフトウェア１５０に対して１回目のテストを行う。情報収集部１４０は、プロセス選択処理を行う。プロセス選択処理では、以降のステップにおいて情報収集の対象とするプロセスを選択する。
【００９２】
（ステップＳ１４）テスト処理部１３０は、テスト対象ソフトウェア１５０に対して２回目のテストを行う。情報収集部１４０は、ステップＳ１３で選択されたプロセスについてメモリダンプを取得する。
【００９３】
（ステップＳ１５）テスト処理部１３０は、テスト対象ソフトウェア１５０に対して３回目のテストを行う。情報収集部１４０は、ステップＳ１３で選択されたプロセスについて、トレースデータを取得する。
【００９４】
次に、ステップＳ１３のプロセス選択処理の手順を説明する。
図１５は、プロセス選択処理の例を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。
【００９５】
（ステップＳ２１）テスト処理部１３０は、変数ｎに１を代入する。
（ステップＳ２２）テスト処理部１３０は、記憶部１１０に記憶されたテスト管理テーブル１１３を参照し、テスト項目Ｔｎのテスト情報を取得する。例えば、テスト対象ソフトウェア１５０（“ＳＷ１”）のテスト項目“Ｔ１”であれば、テスト情報“ｔｅｓｔ１”を取得する。
【００９６】
（ステップＳ２３）テスト処理部１３０は、テスト対象ソフトウェア１５０に対するテスト項目Ｔｎのテスト開始を情報収集部１４０に通知する。
（ステップＳ２４）情報収集部１４０は、テスト開始時処理を行う。詳細は後述する。情報収集部１４０は、記憶部１１０に記憶されたプロセステーブル１１８にテスト開始時間、ソフトウェア名およびテスト項目を登録しておく。
【００９７】
（ステップＳ２５）テスト処理部１３０は、ステップＳ２２で取得したテスト情報を用いて、テスト対象ソフトウェア１５０に対するテスト項目Ｔｎのテストを行う。
（ステップＳ２６）情報収集部１４０は、テスト時に生成、エラー、終了となったプロセスのログを収集し、記憶部１１０に記憶されたプロセス履歴テーブル１１７に記録する。情報収集部１４０は、当該ログをソフトウェア名やテスト項目に対応付けて、プロセス履歴テーブル１１７に記録してもよい。
【００９８】
（ステップＳ２７）テスト処理部１３０は、テスト対象ソフトウェア１５０に対するテスト項目Ｔｎのテストを終了する。テスト処理部１３０は、情報収集部１４０にテスト項目Ｔｎのテスト終了を通知する。
【００９９】
（ステップＳ２８）情報収集部１４０は、テスト終了時処理を行う。詳細は後述する。情報収集部１４０は、プロセステーブル１１８に当該テストのテスト終了時間を登録しておく。
【０１００】
（ステップＳ２９）情報収集部１４０は、ステップＳ２４，Ｓ２８で取得されたプロセスごとの累積実行時間の比較処理を行う。詳細は後述する。
（ステップＳ３０）テスト処理部１３０は、テスト管理テーブル１１３を参照し、全てのテスト項目がテスト済みであるか判定する。全てテスト済みの場合、処理を終了する。未実行のテストがある場合、処理をステップＳ３１に進める。例えば、テスト対象ソフトウェア１５０（“ＳＷ１”）の場合、テスト管理テーブル１１３を参照し、テスト項目“Ｔ１”および“Ｔ２”の両方をテスト済みなら全てテスト済みである。
【０１０１】
（ステップＳ３１）テスト処理部１３０は、変数ｎに１を加算する。そして、処理をステップＳ２２に進める。
次に、ステップＳ２４のテスト開始時処理の手順を説明する。
【０１０２】
図１６は、テスト開始時処理の例を示すフローチャートである。以下、図１６に示す処理をステップ番号に沿って説明する。
（ステップＳ４１）情報収集部１４０は、ステップＳ４１の時点で存在しているプロセスを取得する。例えば、情報収集部１４０は、ＯＳ１２０に対して所定のコマンドを発行することで、現存しているプロセスのプロセスＩＤやプロセス名を取得できる。
【０１０３】
（ステップＳ４２）情報収集部１４０は、プロセス選択モードを判定する。“プロセス指定”の場合、処理をステップＳ４３に進める。“全プロセス指定”の場合、処理をステップＳ４４に進める。
【０１０４】
（ステップＳ４３）情報収集部１４０は、記憶部１１０に記憶された候補プロセステーブル１１１を参照し、テスト対象のソフトウェアに対応するプロセスを取得する。情報収集部１４０は、ステップＳ４１で取得したプロセスと候補プロセステーブル１１１から取得したプロセスの両方に存在するプロセスに絞り込む。例えば、ステップＳ４１で取得されたプロセスが、プロセス“ｓｍｓｓ、ｐｒｏｖｉｄｅｒＭＧＲ、ｃｃＳｖｃＨｓｔ、・・・”であるとする。候補プロセステーブル１１１によれば、ソフトウェア名“ＳＷ１”に対応する候補プロセスは“ｓｍｓｓ、ｐｒｏｖｉｄｅｒＭＧＲ、ｐｒｏｖｉｄｅｒｍｏｎｉｔ、ｓｔｕｂｐｒｏｖｉｄｅｒ、ｃｃＳｖｃＨｓｔ、ｐｒｉｎｔＭＧＲ、・・・”である。よって、情報収集部１４０は、両方に存在するプロセス“ｓｍｓｓ、ｐｒｏｖｉｄｅｒＭＧＲ、ｃｃＳｖｃＨｓｔ、・・・”に絞り込む。そして、処理をステップＳ４５に進める。
【０１０５】
（ステップＳ４４）情報収集部１４０は、記憶部１１０に記憶された除外プロセステーブル１１２を参照し、除外対象のプロセスを取得する。情報収集部１４０は、ステップＳ４１で特定したプロセスから除外対象のプロセスを除くことで、プロセスを絞り込む。除外プロセステーブル１１２によれば、ソフトウェア名“ＳＷ１”に対応する除外プロセスは、“Ｓｙｓｔｅｍ  Ｉｄｌｅ  Ｐｒｏｃｅｓｓ、Ｓｙｓｔｅｍ、ｓｖｃｈｏｓｔ、・・・”である。よって、情報収集部１４０は、ステップＳ４１で取得されたプロセスから当該除外プロセスを除外する。そして、処理をステップＳ４５に進める。
【０１０６】
（ステップＳ４５）情報収集部１４０は、ステップＳ４３またはステップＳ４４で絞り込んだプロセスを、記憶部１１０に記憶された開始テーブル１１４に登録する。
（ステップＳ４６）情報収集部１４０は、ステップＳ４５で開始テーブル１１４に登録したプロセスごとに、累積実行時間を取得し、開始テーブル１１４に登録する。ＯＳ１２０は、現存するプロセスの累積実行時間を記憶部１１０に格納している。情報収集部１４０は、記憶部１１０を参照することで、プロセスごとの累積実行時間を取得できる。情報収集部１４０は、前述のようにＯＳ１２０に対して所定のコマンドを発行することで、プロセスごとの累積実行時間を取得してもよい。
【０１０７】
次に図１５のステップＳ２８のテスト終了時処理の手順を説明する。
図１７は、テスト終了時処理の例を示すフローチャートである。以下、図１７に示す処理をステップ番号に沿って説明する。
【０１０８】
（ステップＳ５１）情報収集部１４０は、ステップＳ５１の時点で存在しているプロセスを取得する。例えば、情報収集部１４０は、ＯＳ１２０に対して所定のコマンドを発行することで、現存しているプロセスのプロセスＩＤやプロセス名を取得できる。
【０１０９】
（ステップＳ５２）情報収集部１４０は、プロセス選択モードを判定する。“プロセス指定”の場合、処理をステップＳ５３に進める。“全プロセス指定”の場合、処理をステップＳ５４に進める。
【０１１０】
（ステップＳ５３）情報収集部１４０は、記憶部１１０に記憶された候補プロセステーブル１１１を参照し、テスト対象のソフトウェアに対応するプロセスを取得する。情報収集部１４０は、ステップＳ５１で取得したプロセスと候補プロセステーブル１１１から取得したプロセスの両方に存在するプロセスに絞り込む。具体的な方法は、ステップＳ４３と同様である。そして、処理をステップＳ５５に進める。
【０１１１】
（ステップＳ５４）情報収集部１４０は、記憶部１１０に記憶された除外プロセステーブル１１２を参照し、除外対象のプロセスを取得する。情報収集部１４０は、ステップＳ５１で特定したプロセスから除外対象のプロセスを除くことで、プロセスを絞り込む。具体的な方法は、ステップＳ４４と同様である。そして、処理をステップＳ５５に進める。
【０１１２】
（ステップＳ５５）情報収集部１４０は、ステップＳ５３またはステップＳ５４で絞り込んだプロセスを、記憶部１１０に記憶された終了テーブル１１５に登録する。
（ステップＳ５６）情報収集部１４０は、ステップＳ５５で終了テーブル１１５に登録したプロセスごとに、累積実行時間を取得し、終了テーブル１１５に登録する。ＯＳ１２０は、現存するプロセスの累積実行時間を記憶部１１０に格納している。情報収集部１４０は、記憶部１１０を参照することで、プロセスごとの累積実行時間を取得できる。情報収集部１４０は、前述のようにＯＳ１２０に対して所定のコマンドを発行することで、プロセスごとの累積実行時間を取得してもよい。
【０１１３】
次に、図１５のステップＳ２９の比較処理の手順を説明する。
図１８は、比較処理の例を示すフローチャートである。以下、図１８に示す処理をステップ番号に沿って説明する。
【０１１４】
（ステップＳ６１）情報収集部１４０は、開始テーブル１１４および終了テーブル１１５に基づいて比較テーブル１１６を作成する。
（ステップＳ６２）情報収集部１４０は、比較テーブル１１６からプロセスを１つ抽出する。
【０１１５】
（ステップＳ６３）情報収集部１４０は、抽出したプロセスについて、テスト開始時およびテスト終了時の両方に累積実行時間が登録されているか判定する。登録されている場合、処理をステップＳ６４に進める。登録されていない場合、処理をステップＳ６５に進める。
【０１１６】
（ステップＳ６４）情報収集部１４０は、テスト開始時点およびテスト終了時点の累積実行時間は同じであるか判定する。同じである場合、処理をステップＳ６６に進める。同じでない場合、処理をステップＳ６５に進める。
【０１１７】
（ステップＳ６５）情報収集部１４０は、ステップＳ６２で抽出したプロセスをプロセステーブル１１８に登録する。ステップＳ６５では、実行パターンＰ１，Ｐ２，Ｐ３のプロセスが登録され得る。
【０１１８】
（ステップＳ６６）情報収集部１４０は、テスト対象ソフトウェア１５０のテスト項目Ｔｎの現テストについて、比較テーブル１１６の全てのプロセスを確認済みであるか判定する。確認済みの場合、処理をステップＳ６７に進める。確認済みでない場合、処理をステップＳ６２に進める。
【０１１９】
（ステップＳ６７）情報収集部１４０は、プロセス履歴テーブル１１７を参照し、テスト中に生成されたプロセスのログがあるか否か判定する。プロセス生成のログがある場合、処理をステップＳ６８に進める。ログがない場合、処理を終了する。なお、“プロセス指定”モードの場合、テスト中に生成されたプロセスが候補プロセスにもなっている（候補プロセステーブル１１１に登録されている）場合に、ステップＳ６８に進める（候補プロセスでなければ、処理を終了する）。また、“全プロセス指定”モードの場合、テスト中に生成されたプロセスが除外プロセスになっていない（除外プロセステーブル１１２に登録されていない）場合に、ステップＳ６８に進める（除外プロセスであれば処理を終了する）。なお、テスト中の時間帯はプロセステーブル１１８に登録されている。
【０１２０】
（ステップＳ６８）情報収集部１４０は、ステップＳ６７で特定したプロセス（テスト中に生成されたプロセス）をプロセステーブル１１８に登録する。ステップＳ６８では、実行パターンＰ４のプロセスが登録される。
【０１２１】
（ステップＳ６９）情報収集部１４０は、プロセス履歴テーブル１１７を参照し、プロセステーブル１１８に登録されたプロセスのうち、テスト中にエラーとなったプロセスを特定する。情報収集部１４０は、特定したプロセスのログの詳細情報に関連プロセスの登録があるか否かを判定する。登録がある場合、処理をステップＳ７０に進める。登録がない場合、処理を終了する。
【０１２２】
（ステップＳ７０）情報収集部１４０は、ステップＳ６９で特定した関連プロセスをプロセステーブル１１８に登録する。
次に、図１４のステップＳ１４のメモリダンプ取得処理の手順を説明する。
【０１２３】
図１９は、メモリダンプ取得処理の例を示すフローチャートである。以下、図１９に示す処理をステップ番号に沿って説明する。
（ステップＳ７１）テスト処理部１３０は、変数ｎに１を代入する。
【０１２４】
（ステップＳ７２）テスト処理部１３０は、記憶部１１０に記憶されたテスト管理テーブル１１３を参照し、テスト項目Ｔｎのテスト情報を取得する。
（ステップＳ７３）テスト処理部１３０は、テスト対象ソフトウェア１５０に対して、テスト項目Ｔｎのテストを開始する。
【０１２５】
（ステップＳ７４）テスト処理部１３０は、テスト対象ソフトウェア１５０に対するテスト項目Ｔｎのテストを終了する。
（ステップＳ７５）テスト処理部１３０は、ステップＳ７２で取得したテスト情報に基づいてテスト結果が不正（エラー）であるか否かを判定する。テスト結果が不正である場合、その旨を情報収集部１４０に通知して、処理をステップＳ７６に進める。テスト結果が適正である場合、処理をステップＳ７７に進める。
【０１２６】
（ステップＳ７６）情報収集部１４０は、プロセステーブル１１８を参照し、テスト対象ソフトウェア１５０（“ＳＷ１”）に対応するテスト項目Ｔｎのプロセスを特定する。情報収集部１４０は、特定したプロセスに関するメモリダンプをＨＤＤ１０３の所定の記憶領域にファイルとして出力する。
【０１２７】
（ステップＳ７７）テスト処理部１３０は、テスト管理テーブル１１３を参照し、全てのテスト項目がテスト済みであるか判定する。全てテスト済みの場合、処理を終了する。未実行のテストがある場合、処理をステップＳ７８に進める。
【０１２８】
（ステップＳ７８）テスト処理部１３０は、変数ｎに１を加算する。そして、処理をステップＳ７２に進める。
次に、図１４のステップＳ１５のトレースデータ取得処理の手順を説明する。
【０１２９】
図２０は、トレースデータ取得処理の例を示すフローチャートである。以下、図２０に示す処理をステップ番号に沿って説明する。
（ステップＳ８１）テスト処理部１３０は、変数ｎに１を代入する。
【０１３０】
（ステップＳ８２）テスト処理部１３０は、記憶部１１０に記憶されたテスト管理テーブル１１３を参照し、テスト項目Ｔｎのテスト情報を取得する。
（ステップＳ８３）テスト処理部１３０は、テスト対象ソフトウェア１５０のテスト項目Ｔｎについてトレースデータの取得開始を情報収集部１４０に指示する。情報収集部１４０は、プロセステーブル１１８を参照し、テスト対象ソフトウェア１５０（“ＳＷ１”）に対応するテスト項目Ｔｎのプロセスを特定する。情報収集部１４０は、特定したプロセスについて、トレースデータの取得を開始する。
【０１３１】
（ステップＳ８４）テスト処理部１３０は、テスト対象ソフトウェア１５０に対して、テスト項目Ｔｎのテストを開始する。
（ステップＳ８５）テスト処理部１３０は、テスト対象ソフトウェア１５０に対して、テスト項目Ｔｎのテストを終了する。
【０１３２】
（ステップＳ８６）テスト処理部１３０は、トレースデータの取得終了を情報収集部１４０に指示する。情報収集部１４０は、トレースデータの取得を終了する。
（ステップＳ８７）テスト処理部１３０は、ステップＳ８２で取得したテスト情報に基づいてテスト結果が不正（エラー）であるか否かを判定する。テスト結果が不正である場合、その旨を情報収集部１４０に通知して、処理をステップＳ８８に進める。テスト結果が適正である場合、処理をステップＳ８９に進める。
【０１３３】
（ステップＳ８８）情報収集部１４０は、ステップＳ８３〜Ｓ８６の間に取得されたプログラムごとのトレースデータをＨＤＤ１０３の所定の記憶領域にファイルとして出力する。
【０１３４】
（ステップＳ８９）テスト処理部１３０は、テスト管理テーブル１１３を参照し、全てのテスト項目がテスト済みであるか判定する。全てテスト済みの場合、処理を終了する。未実行のテストがある場合、処理をステップＳ９０に進める。
【０１３５】
（ステップＳ９０）テスト処理部１３０は、変数ｎに１を加算する。そして、処理をステップＳ８２に進める。
図２１は、プロセス選択処理の具体例を示すシーケンス図である。以下、図２１に示す処理をステップ番号に沿って説明する。
【０１３６】
（ステップＳＴ１０１）テスト処理部１３０は、情報収集部１４０にテスト項目Ｔ１のテスト開始を通知する。情報収集部１４０は、当該テスト開始の通知を受け付ける。
（ステップＳＴ１０２）情報収集部１４０は、テスト開始時処理を行う。具体的には、当該時点において存在しているプロセスについて、累積実行時間を取得する。
【０１３７】
（ステップＳＴ１０３）テスト処理部１３０は、テスト対象ソフトウェア１５０に対して、テスト項目Ｔ１のテストを開始する。
（ステップＳＴ１０４）テスト処理部１３０は、テスト対象ソフトウェア１５０に対して、テスト項目Ｔ１のテストを終了する。
【０１３８】
（ステップＳＴ１０５）テスト処理部１３０は、情報収集部１４０にテスト項目Ｔ１のテスト終了通知を行う。情報収集部１４０は、当該テスト終了の通知を受け付ける。
（ステップＳＴ１０６）情報収集部１４０は、テスト終了時処理を行う。具体的には、当該時点において存在しているプロセスについて、累積実行時間を取得する。
【０１３９】
（ステップＳＴ１０７）情報収集部１４０は、比較処理を行う。具体的には、ステップＳＴ１０２，ＳＴ１０６で取得したプロセスごとの累積実行時間に基づいて、テスト対象ソフトウェア１５０のテスト項目Ｔ１のテストの際に、情報収集の対象とするプロセスを選択する。
【０１４０】
（ステップＳＴ１０８）テスト処理部１３０は、情報収集部１４０にテスト項目Ｔ２のテスト開始通知を行う。
そして、テスト装置１００は、全てのテスト項目が終了するまで、ステップＳＴ１０１からステップＳＴ１０７までの処理を繰り返す。こうして、テスト項目ごとに情報収集の対象とするプロセスが選択される。
【０１４１】
図２２は、プロセス選択の具体例を示す図である。図２２では、テスト項目Ｔ１に対してプロセステーブル１１８に登録されたプロセスを例示している。情報収集部１４０は、開始テーブル１１４、終了テーブル１１５およびプロセス履歴テーブル１１７に登録された情報に基づいて、図１８の手順を実行することでテスト対象ソフトウェア１５０のテスト項目Ｔ１について、情報収集の対象とするプロセスを得る。
【０１４２】
例えば、プロセス“ｓｍｓｓ”の累積実行時間は、テスト開始時とテスト終了時で異なる。すなわち、プロセス“ｓｍｓｓ”は実行パターンＰ１のプロセスである。よって、情報収集部１４０は、プロセス“ｓｍｓｓ”を情報収集の対象として選択する。
【０１４３】
また、プロセス“ｐｒｏｖｉｄｅｒＭＧＲ”について、テスト開始時の累積実行時間は取得されているが、テスト終了時の累積実行時間は取得されていない。これは、テスト開始時からテスト終了時までの間にプロセス“ｐｒｏｖｉｄｅｒＭＧＲ”が実行され、終了したことを示す。すなわち、プロセス“ｐｒｏｖｉｄｅｒＭＧＲ”は、実行パターンＰ２のプロセスである。よって、情報収集部１４０は、プロセス“ｐｒｏｖｉｄｅｒＭＧＲ”を情報収集の対象として選択する。
【０１４４】
また、プロセス“ｐｒｏｖｉｄｅｒｍｏｎｉｔ”について、テスト開始時の累積実行時間は取得されていないが、テスト終了時の累積実行時間は取得されている。これは、テスト開始時からテスト終了時までの間にプロセス“ｐｒｏｖｉｄｅｒｍｏｎｉｔ”が生成され、実行されたことを示す。すなわち、プロセス“ｐｒｏｖｉｄｅｒｍｏｎｉｔ”は、実行パターンＰ３のプロセスである。よって、情報収集部１４０は、プロセス“ｐｒｏｖｉｄｅｒｍｏｎｉｔ”を情報収集の対象として選択する。
【０１４５】
また、プロセス“ｃｃＳｖｃＨｓｔ”の累積実行時間はテスト開始時とテスト終了時で同じであるため、プロセス“ｃｃＳｖｃＨｓｔ”はテスト中に実行されなかったことを示す。すなわち、プロセス“ｃｃＳｖｃＨｓｔ”は、実行パターンＰ５のプロセスである。よって、情報収集部１４０は、プロセス“ｃｃＳｖｃＨｓｔ”を情報収集の対象としない。
【０１４６】
更に、情報収集部１４０は、プロセス履歴テーブル１１７を参照し、テスト時に生成されたプロセス“ｓｔｕｂｐｒｏｖｉｄｅｒ”を特定する。プロセス“ｓｔｕｂｐｒｏｖｉｄｅｒ”は、テスト開始時およびテスト終了時に存在していなかったため、開始テーブル１１４および終了テーブル１１５に登録されていない。これは、テスト開始時からテスト終了時までの間にプロセス“ｐｒｏｖｉｄｅｒｍｏｎｉｔ”が生成され、実行され、終了されたことを示す。すなわち、プロセス“ｐｒｏｖｉｄｅｒｍｏｎｉｔ”は、実行パターンＰ４のプロセスである。よって、情報収集部１４０は、プロセス“ｓｔｕｂｐｒｏｖｉｄｅｒ”を情報収集の対象として選択する。
【０１４７】
また、情報収集部１４０は、プロセス履歴テーブル１１７を参照し、プロセス“ｓｔｕｂｐｒｏｖｉｄｅｒ”に関連するプロセスがテスト中に異常を生じさせたことを特定する。情報収集部１４０は、当該関連するプロセス“ｒｃｖｙ”を情報収集の対象として選択する。
【０１４８】
情報収集部１４０は、以上のようにして情報収集の対象とするプロセス“ｓｍｓｓ、ｐｒｏｖｉｄｅｒＭＧＲ、ｐｒｏｖｉｄｅｒｍｏｎｉｔ、ｓｔｕｂｐｒｏｖｉｄｅｒ、ｒｃｖｙ”を選択し、プロセステーブル１１８に登録する。情報収集部１４０は、このようにして、テスト対象のソフトウェアごと、テスト項目ごとに情報収集の対象とするプロセスを選択する。そして、情報収集部１４０は、選択したプロセスについて情報収集を行う。
【０１４９】
図２３は、情報収集処理の具体例を示すシーケンス図である。以下、図２３に示す処理をステップ番号に沿って説明する。
（ステップＳＴ１１１）テスト処理部１３０は、テスト対象ソフトウェア１５０に対して、テスト項目Ｔ１のテストを開始する。
【０１５０】
（ステップＳＴ１１２）テスト処理部１３０は、テスト対象ソフトウェア１５０に対して、テスト項目Ｔ１のテストを終了する。
（ステップＳＴ１１３）テスト処理部１３０は、テスト項目Ｔ１のテスト結果が不正であると判断する。
【０１５１】
（ステップＳＴ１１４）テスト処理部１３０は、メモリダンプの出力を情報収集部１４０に指示する。情報収集部１４０は、当該指示を受け付ける。
（ステップＳＴ１１５）情報収集部１４０は、テスト対象ソフトウェア１５０のテスト項目Ｔ１に対して情報収集の対象として選択済のプロセスに関するメモリダンプを、ＨＤＤ１０３にファイルとして出力する。情報収集部１４０は、出力したファイルがテスト対象ソフトウェア１５０のテスト項目Ｔ１に対して取得されたものであることが分かるように識別情報をファイルに付与する。
【０１５２】
（ステップＳＴ１１６）テスト処理部１３０は、テスト対象ソフトウェア１５０に対して、テスト項目Ｔ２のテストを開始する。
そして、全てのテスト項目が終了するまで、ステップＳＴ１１１からステップＳＴ１１５までの処理を繰り返す。
【０１５３】
（ステップＳＴ１１７）テスト処理部１３０は、テスト対象ソフトウェア１５０のテスト項目Ｔ１について、トレースデータの取得開始を情報収集部１４０に指示する。情報収集部１４０は、テスト対象ソフトウェア１５０のテスト項目Ｔ１について、情報収集の対象として選択済のプロセスに関してトレースデータの取得を開始する。
【０１５４】
（ステップＳＴ１１８）テスト処理部１３０は、テスト対象ソフトウェア１５０に対して、テスト項目Ｔ１のテストを開始する。
（ステップＳＴ１１９）テスト処理部１３０は、テスト対象ソフトウェア１５０に対して、テスト項目Ｔ１のテストを終了する。
【０１５５】
（ステップＳＴ１２０）テスト処理部１３０は、情報収集部１４０にトレースデータの取得終了を情報収集部１４０に指示する。情報収集部１４０は、トレースデータの取得を終了する。
【０１５６】
（ステップＳＴ１２１）テスト処理部１３０は、テスト項目Ｔ１のテスト結果が不正であると判断する。
（ステップＳＴ１２２）テスト処理部１３０は、トレースデータの出力を情報収集部１４０に指示する。情報収集部１４０は、当該指示を受け付ける。
【０１５７】
（ステップＳＴ１２３）情報収集部１４０は、ステップＳＴ１１７〜ＳＴ１２０の間に取得したトレースデータを、ＨＤＤ１０３にファイルとして出力する。情報収集部１４０は、出力したファイルがテスト対象ソフトウェア１５０のテスト項目Ｔ１に対して取得されたものであることが分かるように識別情報をファイルに付与する。
【０１５８】
（ステップＳＴ１２４）テスト処理部１３０は、テスト対象ソフトウェア１５０のテスト項目Ｔ２について、トレースデータの取得開始を情報収集部１４０に指示する。
そして、全てのテスト項目が終了するまで、ステップＳＴ１１７からステップＳＴ１２３までの処理を繰り返す。
【０１５９】
ここで、例えば、情報収集の対象とするプロセスを選択して、エラー時に採取する情報を予め絞り込めば、余計な（ソフトウェアのテストとは関連のない）プロセスの情報を採取するよりも、原因究明の分析作業を効率化し得る。そこで、ソフトウェアのテストでは、テスト装置１００上に多数存在するソフトウェアのプロセスの中から、情報収集の対象とするプロセスをどのようにして効率的に選択するかが問題となる。
【０１６０】
例えば、ソフトウェアのテストを行っている最中に、存在している全プロセスについてログやトレースデータなどの情報を網羅的に取得し、取得した情報を分析してテストと関連したプロセスを特定することも考えられる。しかし、網羅的に情報を取得しようとすると、当該情報の取得の処理に伴うテスト装置１００の負荷が問題となる。テスト装置１００の負荷が増大すると、テスト対象のソフトウェアの処理が適正に行われなくなるおそれがある。また、網羅的に情報を取得すると、その情報量も増大し得る。このため、分析作業におけるユーザの負担が過大となるおそれもある。
【０１６１】
そこで、テスト装置１００では、テスト開始時およびテスト終了時に各プロセスの累積実行時間を取得し、当該累積実行時間に基づいて、ソフトウェアのテストに関連するプロセスを選択する。このため、全てのプロセスについて網羅的に情報を取得しなくてよく、プロセス選択用の情報の取得に伴う負荷を比較的小さく抑えられる。よって、テスト装置１００の負荷がテストに与える影響を軽減できる。また、テスト開始時およびテスト終了時の各プロセスの累積実行時間に基づいて、情報収集の対象とするプロセスを選択するので、ユーザに対して当該プロセスを特定する作業を強いずに済む。よって、ユーザの作業の省力化を図れる。
【０１６２】
例えば、テスト装置１００は、当該テストを再実行する際に、選択したプロセスを指定して、トレースログやメモリダンプなどの情報を収集し得る。このとき、情報の収集範囲を選択したプロセスに絞り込めるので、当該情報収集に要する負荷を軽減できる。
【０１６３】
また、ソフトウェアのテストが成功しなかった場合、原因を特定し、テストが成功するまでテスト環境を保持しておくことが多い。テスト環境に用いるリソースを有効活用したい場合は、短期間でテストを終了して、当該リソースを解放することが求められる。この点、第２の実施の形態を用いることで、原因分析の負担を軽減できるため、短い期間でテストを終了できる可能性も高まる。
【０１６４】
また、前述のように、情報収集部１４０は、ＯＳ１２０が提供するＡＰＩ（Application Programming Interface）を利用して、テスト開始時およびテスト終了時の累積実行時間を取得してもよい。そうすれば、情報収集部１４０（または、ＯＳ１２０）は、例えばＲＡＭ１０２上の所定の領域を参照してプロセスごとの累積実行時間を取得できるので、プロセス選択用の情報を取得するための負荷を比較的小さくできる。すなわち、テスト中の余計な負荷を軽減し、テストのための本来の処理に対する影響を抑制できる。
【０１６５】
以上のように、テスト装置１００によれば、テストの効率化を図れる。
次に、プロセステーブル１１８の他の利用例を説明する。プロセステーブル１１８には、テスト対象のソフトウェアごとに情報収集の対象とするプロセスが登録されている。同じソフトウェアについてあるテスト項目を複数回実行した場合に、同じプロセスが複数回選択されていれば、プログラム走行時に同じルートで処理が実行された可能性が高い。このようなテスト項目は、テスト実行時のリソース利用に関して再現性が高く、有効性の高いテスト項目であるといえる。ブラックボックステストにおいて、リソース利用の再現性を確保できなければ、ソフトウェアのエラーに対して原因となる証拠を得るのが難しくなり、的確な分析を行えないからである。
【０１６６】
有効性の高いテスト項目を抽出できれば、テストの効率化を図れる。例えば、ソフトウェア改版に伴うリグレッションテスト（Regression Test）を行う場合である。改版前のソフトウェアのテスト結果に基づいて、有効性の高いテスト項目に絞って改版後のソフトウェアのテストを行うことが考えられる。そこで、プロセステーブル１１８に基づく、テスト項目の有効性の検証機能を提供する。
【０１６７】
図２４は、テスト項目の有効性の検証例を示すフローチャートである。以下、図２４に示す処理をステップ番号に沿って説明する。
（ステップＳ９１）情報収集部１４０は、ユーザの入力により検証対象のソフトウェアおよびテスト項目の指定を受け付ける。例えば、ソフトウェア名“ＳＷ２”およびテスト項目“Ｔ１”が指定される。
【０１６８】
（ステップＳ９２）情報収集部１４０は、プロセステーブル１１８を参照し、指定を受けたソフトウェアとテスト項目を特定する。
（ステップＳ９３）情報収集部１４０は、情報収集の対象とするプロセスが一致するかを判定する。例えば、プロセステーブル１１８によれば、項番“３”、“４”のそれぞれのレコードに含まれるプロセスが一致するか否かを判定する。
【０１６９】
（ステップＳ９４）情報収集部１４０は、判定結果をディスプレイ１１に出力する。そして、処理を終了する。情報収集部１４０は、一致するプロセスまたは不一致のプロセスを出力してもよい。例えば、情報収集部１４０は、全てのプロセスが一致する場合に、当該テスト項目を有効と評価し、当該テスト項目をリグレッションテストに採用すると決定してもよい。情報収集部１４０は、何れかのプロセスが一致しない場合に、当該テスト項目を有効でないと評価し、当該テスト項目をリグレッションテストに採用しないと決定してもよい。
【０１７０】
このように、情報収集部１４０は、テスト対象ソフトウェア１５０のテスト項目を複数回テストし、各回で選択されたプロセスが一致する割合に基づいて、当該テスト項目が有効であるか否かを評価する。例えば、各回で選択されたプロセスが一致する割合を次のようにして求めることが考えられる。第１には、あるテスト項目に対して今回選択されたプロセスのうち前回も選択されていたプロセスの数を、今回選択されたプロセスの総数で割ることで求めてもよい。第２には、各回で選択されたプロセスが一致する割合を、あるテスト項目に対して今回選択されたプロセスのうち前回までに選択されたことがあるプロセスの数を、今回選択されたプロセスの総数で割ることで求めてもよい。例えば、完全一致の場合に有効と判断する以外にも、所定の割合（例えば、９０％、９５％など）以上で一致する場合に有効と判断してもよい。
【０１７１】
これにより、テスト項目数の肥大化を抑制し、かつ、より有効性の高いテスト項目に絞れる。よって、リグレッションテスト時に、改版後のソフトウェアのテストを効率的に行えるようになる。
【０１７２】
また、ソフトウェア改版時のリグレッションテストでは、ソフトウェアに不具合がないかをテストすることもある。例えば、プロセステーブル１１８をリグレッションテスト時のテスト項目の抽出に用いることも考えられる。
【０１７３】
図２５は、テスト項目の抽出処理の例を示すフローチャートである。以下、図２５に示す処理をステップ番号に沿って説明する。
（ステップＳ１０１）情報収集部１４０は、ユーザの入力によりテスト対象のソフトウェアおよびプロセスの指定を受ける。プロセスの指定は複数であってもよい。例えば、情報収集部１４０は、ソフトウェア“ＳＷ１”およびプロセス“ｓｍｓｓ”の指定を受け付ける。
【０１７４】
（ステップＳ１０２）情報収集部１４０は、プロセステーブル１１８を参照し、ユーザから指定されたソフトウェアおよびプロセスを基にテスト項目を特定する。情報収集部１４０は、プロセステーブル１１８を参照する。情報収集部１４０は、ソフトウェア“ＳＷ１”でプロセス“ｓｍｓｓ”が登録されたテスト項目“Ｔ１”および“Ｔ２”を特定する。
【０１７５】
（ステップＳ１０３）情報収集部１４０は、特定したテスト項目をディスプレイ１１に出力する。そして、処理を終了する。
このように、プロセステーブル１１８を利用して、実行されるプロセスのテスト項目を容易に抽出できる。リグレッションテスト時には、ソフトウェアの改版前後で同じプロセスが実行され得る。よって、上記のようにテスト対象のソフトウェアとプロセスとを指定して改版前のテスト時のテスト項目を抽出することで、改版後のテスト項目を効率的に作成できる。情報収集部１４０は、抽出したテスト項目に基づいて、リグレッションテスト時のテスト項目を生成し、テスト管理テーブル１１３に登録してもよい。このようにすれば、ユーザによるテスト項目の作成作業の負担を軽減することができる。
【０１７６】
以上のように、テスト装置１００によればテストの効率化を図れる。
なお、前述のように、第１の実施の形態の情報処理は、演算部１ｂにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、プロセッサ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体（例えば、光ディスク、メモリ装置およびメモリカードなど）に記録できる。
【０１７７】
プログラムを流通させる場合、例えば、当該プログラムを記録した可搬記録媒体が提供される。また、プログラムを他のコンピュータの記憶装置に格納しておき、ネットワーク経由でプログラムを配布することもできる。コンピュータは、例えば、可搬記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、記憶装置に格納し、当該記憶装置からプログラムを読み込んで実行する。ただし、可搬記録媒体から読み込んだプログラムを直接実行してもよく、他のコンピュータからネットワークを介して受信したプログラムを直接実行してもよい。
【０１７８】
また、上記の情報処理の少なくとも一部を、ＤＳＰ、ＡＳＩＣ、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【符号の説明】
【０１７９】
１  情報処理装置
１ａ  記憶部
１ｂ  演算部
２  管理情報
３  記録情報
【図１】
2015001755.tif 000003
【図２】
2015001755.tif 000004
【図３】
2015001755.tif 000005
【図４】
2015001755.tif 000006
【図５】
2015001755.tif 000007
【図６】
2015001755.tif 000008
【図７】
2015001755.tif 000009
【図８】
2015001755.tif 000010
【図９】
2015001755.tif 000011
【図１０】
2015001755.tif 000012
【図１１】
2015001755.tif 000013
【図１２】
2015001755.tif 000014
【図１３】
2015001755.tif 000015
【図１４】
2015001755.tif 000016
【図１５】
2015001755.tif 000017
【図１６】
2015001755.tif 000018
【図１７】
2015001755.tif 000019
【図１８】
2015001755.tif 000020
【図１９】
2015001755.tif 000021
【図２０】
2015001755.tif 000022
【図２１】
2015001755.tif 000023
【図２２】
2015001755.tif 000024
【図２３】
2015001755.tif 000025
【図２４】
2015001755.tif 000026
【図２５】
2015001755.tif 000027