(57)【特許請求の範囲】
【請求項１】
コンピュータに、
複数のプロセスのそれぞれについての起動中の動作状態の履歴情報を、各プロセスに対応付けて記憶する記憶部を参照し、前記複数のプロセスのうちの指定されたプロセスである特定のプロセスに対応する履歴情報に基づき、前記特定のプロセスの休止時間を算出し、
前記複数のプロセスに含まれるプロセスであって他のプロセスの呼び出しを行うプロセスである呼び出し元のプロセスごとに、前記複数のプロセスに含まれるプロセスであって前記呼び出し元のプロセスによって呼び出されるプロセスである呼び出し先のプロセスの識別情報を、該呼び出し先のプロセスの応答待ちに起因して前記呼び出し元のプロセスにおいてタイムアウトが生じるまでの応答待ち時間に対応付けて記憶する記憶部を参照して、算出した前記休止時間に応じた前記応答待ち時間に対応付けられた前記呼び出し先のプロセスを特定し、
特定した前記呼び出し先のプロセスの識別情報を出力する、
処理を実行させることを特徴とするテスト支援プログラム。
【請求項２】
請求項１において、さらに、
前記休止時間を算出する処理の前に、各プロセスに対応する前記履歴情報を取得して記憶部に記憶する、
ことを特徴とするテスト支援プログラム。
【請求項３】
請求項１において、
前記履歴情報は、各プロセスによる処理の停止時間と再開時間とを含み、
前記休止時間を算出する処理では、前記特定のプロセスに対応する前記停止時間と前記再開時間との時間差を、前記休止時間として算出する、
ことを特徴とするテスト支援プログラム。
【請求項４】
請求項１において、さらに、
前記休止時間を算出する処理の前に、前記呼び出し元のプロセスをそれぞれ起動し、
起動中の前記呼び出し元のプロセスによって前記呼び出し先のプロセスに対する処理要求が行われたことに応じて、前記呼び出し先のプロセスが前記呼び出し元のプロセスに対して前記処理要求に対する処理結果を送信する前に、前記呼び出し先のプロセスによる処理を停止し、
前記処理要求が行われたことに伴う前記呼び出し元のプロセスによる処理の停止時間と、前記処理結果の送信待ちに起因する前記呼び出し元のプロセスにおけるタイムアウトの発生時間との時間差を、前記応答待ち時間として算出する、
ことを特徴とするテスト支援プログラム。
【請求項５】
請求項４において、さらに、
前記識別情報を出力する処理の後、前記特定のプロセスを再度起動し、
前記タイムアウトが生じる際の前記処理要求が行われた前記呼び出し先のプロセスのメモリダンプを取得する、
ことを特徴とするテスト支援プログラム。
【請求項６】
請求項１において、
前記呼び出し先のプロセスを特定する処理では、特定した前記呼び出し先のプロセスの識別情報に、前記休止時間に応じた前記応答待ち時間を対応付けて記憶部に記憶し、さらに、
前記呼び出し先のプロセスを特定する処理の後、前記特定のプロセスの休止時間を再度算出し、
再度算出した前記休止時間に応じた前記応答待ち時間に対応付けられた前記呼び出し先のプロセスを再度特定し、
再度特定した前記呼び出し先のプロセスの識別情報が、再度算出した前記休止時間に応じた前記応答待ち時間に対応付けられて記憶部に記憶されていない場合、再度特定した前記呼び出し先のプロセスの識別情報を出力する、
処理をコンピュータに実行させることを特徴とするテストプログラム。
【請求項７】
複数のプロセスのそれぞれについての起動中の動作状態の履歴情報を、各プロセスに対応付けて記憶する記憶部を参照し、前記複数のプロセスのうちの指定されたプロセスである特定のプロセスに対応する履歴情報に基づき、前記特定のプロセスの休止時間を算出する休止時間算出部と、
前記複数のプロセスに含まれるプロセスであって他のプロセスの呼び出しを行うプロセスである呼び出し元のプロセスごとに、前記複数のプロセスに含まれるプロセスであって前記呼び出し元のプロセスによって呼び出されるプロセスである呼び出し先のプロセスの識別情報を、該呼び出し先のプロセスの応答待ちに起因して前記呼び出し元のプロセスにおいてタイムアウトが生じるまでの応答待ち時間に対応付けて記憶する記憶部を参照して、算出した前記休止時間に応じた前記応答待ち時間に対応付けられた前記呼び出し先のプロセスを特定するプロセス特定部と、
特定した前記呼び出し先のプロセスの識別情報を出力する情報出力部と、を有する、
ことを特徴とするテスト支援装置。
【請求項８】
複数のプロセスのそれぞれについての起動中の動作状態の履歴情報を、各プロセスに対応付けて記憶する記憶部を参照し、前記複数のプロセスのうちの指定されたプロセスである特定のプロセスに対応する履歴情報に基づき、前記特定のプロセスの休止時間を算出し、
前記複数のプロセスに含まれるプロセスであって他のプロセスの呼び出しを行うプロセスである呼び出し元のプロセスごとに、前記複数のプロセスに含まれるプロセスであって前記呼び出し元のプロセスによって呼び出されるプロセスである呼び出し先のプロセスの識別情報を、該呼び出し先のプロセスの応答待ちに起因して前記呼び出し元のプロセスにおいてタイムアウトが生じるまでの応答待ち時間に対応付けて記憶する記憶部を参照して、算出した前記休止時間に応じた前記応答待ち時間に対応付けられた前記呼び出し先のプロセスを特定し、
特定した前記呼び出し先のプロセスの識別情報を出力する、
ことを特徴とするテスト支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト支援プログラム、テスト支援装置及びテスト支援方法に関する。
【背景技術】
【０００２】
利用者に対してサービスを提供する事業者（以下、単に事業者とも呼ぶ）は、利用者に対して各種サービスの提供を行うために、用途に応じた業務システムを構成して稼働させる。そして、事業者は、例えば、利用者に対する新たなサービスの追加等に応じて、業務システムを構成するプログラムの改修を適宜実施する。
【０００３】
この場合、事業者は、業務システムを構成するプログラムの改修によって、改修されたプログラム（以下、改修済プログラムとも呼ぶ）によって実現される既存機能の性能が劣化していないことを確認するためのテスト（以下、リグレッションテストとも呼ぶ）を実施する。そして、事業者は、例えば、既存機能の性能が劣化していないことを確認した場合に、改修済プログラムを業務システムに導入する。
【０００４】
一方、プログラムの改修によって既存機能の性能が劣化することを確認した場合、事業者は、性能劣化の原因の特定を行う。そして、事業者は、この場合、特定した原因を解消するための更なる改修等を行う。これにより、事業者は、プログラムの改修に伴う既存機能への影響を防止することが可能になる（例えば、特許文献１から３参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−１６７７１５号公報
【特許文献２】特開２０１３−１７１５４２号公報
【特許文献３】特開平８−２８６８９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ここで、プログラムの改修によって既存機能の性能が劣化した場合、事業者は、例えば、改修済プログラムの実行時にトレースを行う。これにより、事業者は、既存機能の性能が劣化した原因を特定することが可能になる。
【０００７】
しかしながら、改修済プログラムの実行時にトレースを行う場合、トレースを行う処理が実行されることにより、複数のプロセス間における通信のタイミング等が変わる場合がある。そのため、この場合、既存機能の性能劣化が再現しない場合がある。
【０００８】
また、事業者は、既存機能の性能劣化の原因を特定するために、例えば、改修済プログラムの実行時におけるメモリダンプや改修済プログラムのソースコードによる解析を行う場合がある。しかしながら、解析を行う対象が膨大である場合、事業者は、既存機能の性能劣化の原因を容易に特定することができない。そのため、事業者は、プログラムの改修に伴うテストを効率的に行うことができない場合がある。
【０００９】
そこで、一つの側面では、本発明は、テストを効率的に行うことを可能とするテスト支援プログラム、テスト支援装置及びテスト支援方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
実施の形態の一態様では、コンピュータに、起動中の各プロセスの動作状態についての履歴情報を、各プロセスに対応付けて記憶する記憶部を参照し、特定のプロセスに対応する履歴情報に基づき、前記特定のプロセスの休止時間を算出し、呼び出し元のプロセスごとに、呼び出し先のプロセスの識別情報を、該呼び出し先のプロセスの応答待ちに起因して前記呼び出し元のプロセスにおいてタイムアウトが生じるまでの応答待ち時間に対応付けて記憶する記憶部を参照して、算出した前記休止時間に応じた前記応答待ち時間に対応付けられた前記呼び出し先のプロセスを特定し、特定した前記呼び出し先のプロセスの識別情報を出力する、処理を実行させる。
【発明の効果】
【００１１】
一つの側面によれば、テストを効率的に行うことを可能とする。
【図面の簡単な説明】
【００１２】
【図１】図１は、情報処理システム１０の構成を示す図である。
【図２】図２は、改修前プログラムの動作の具体例を説明する図である。
【図３】図３は、改修済プログラムの動作の具体例を説明する図である。
【図４】図４は、情報処理装置１のハードウエア構成を示す図である。
【図５】図５は、情報処理装置１の機能のブロック図である。
【図６】図６は、情報格納領域１３０に記憶された情報のブロック図である。
【図７】図７は、第１の実施の形態におけるテスト支援処理の概略を説明するフローチャート図である。
【図８】図８は、第１の実施の形態におけるテスト支援処理の概略を説明する図である。
【図９】図９は、第１の実施の形態におけるテスト支援処理の概略を説明する図である。
【図１０】図１０は、第１の実施の形態におけるテスト支援処理の詳細を説明するフローチャート図である。
【図１１】図１１は、第１の実施の形態におけるテスト支援処理の詳細を説明するフローチャート図である。
【図１２】図１２は、第１の実施の形態におけるテスト支援処理の詳細を説明するフローチャート図である。
【図１３】図１３は、第１の実施の形態におけるテスト支援処理の詳細を説明するフローチャート図である。
【図１４】図１４は、第１の実施の形態におけるテスト支援処理の詳細を説明するフローチャート図である。
【図１５】図１５は、第１の実施の形態におけるテスト支援処理の詳細を説明するフローチャート図である。
【図１６】図１６は、第１の実施の形態におけるテスト支援処理の詳細を説明するフローチャート図である。
【図１７】図１７は、第１の実施の形態におけるテスト支援処理の詳細を説明するフローチャート図である。
【図１８】図１８は、第１の実施の形態におけるテスト支援処理の詳細を説明するフローチャート図である。
【図１９】図１９は、Ｓ３４の処理の具体例を説明する図である。
【図２０】図２０は、履歴情報１３２の具体例を説明する図である。
【図２１】図２１は、履歴情報１３２の具体例を説明する図である。
【図２２】図２２は、履歴情報１３２の具体例を説明する図である。
【図２３】図２３は、履歴情報１３２の具体例を説明する図である。
【図２４】図２４は、操作ログ情報１３３の具体例を説明する図である。
【図２５】図２５は、操作ログ情報１３３の具体例を説明する図である。
【図２６】図２６は、デバッグ時間情報１３４ａの具体例を説明する図である。
【図２７】図２７は、ブレイク時間情報１３４ｂの具体例を説明する図である。
【図２８】図２８は、応答待ち時間情報１３４の具体例を説明する図である。
【図２９】図２９は、前回のテスト結果情報１３５の具体例を説明する図である。
【図３０】図３０は、今回のテスト結果情報１３５の具体例を説明する図である。
【発明を実施するための形態】
【００１３】
［情報処理システムの構成］
図１は、情報処理システム１０の構成を示す図である。図１に示す情報処理システム１０は、情報処理装置１（以下、テスト支援装置１とも呼ぶ）と、記憶装置２とを有する。情報処理装置１は、インターネットやイントラネット等からなるネットワークＮＷを介して事業者端末３にアクセスすることが可能である。
【００１４】
情報処理装置１は、例えば、改修済プログラムの既存機能のテストを支援する処理（以下、テスト支援処理とも呼ぶ）を実行する。
【００１５】
記憶装置２は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等からなる外部ディスク装置である。具体的に、記憶装置２は、例えば、情報処理装置１がテスト支援処理を実行する際に参照する各種情報を記憶する。記憶装置２は、情報処理装置１の内部に設けられたディスク装置であってもよい。
【００１６】
事業者端末３は、プログラムの各種テスト（単体テストやリグレッションテスト等）を行う際に、事業者が利用する端末である。以下、改修が行われる前のプログラム（以下、改修前プログラムとも呼ぶ）の動作の具体例について説明を行う。
【００１７】
［改修前プログラムの動作の具体例］
図２は、改修前プログラムの動作の具体例を説明する図である。図２に示す例において、情報処理装置１では、改修前プログラムが実行されることによって起動されるプロセスＡと、他のプログラム（改修対象ではないプログラム）が実行されることによって起動されるプロセスＢとが動作している。
【００１８】
具体的に、図２に示すプロセスＡは、所定のタイミングでプロセスＢに対して呼び出し（処理の実行依頼）を行う（Ｓ１０１）。その後、プロセスＡは、プロセスＢから実行結果の送信があるまで待機する（Ｓ１０２）。
【００１９】
一方、図２に示すプロセスＢは、プロセスＡから呼び出しがあった場合、呼び出しの受け付けを行い、受け付けた呼び出しに対応する処理を実行する（Ｓ１１１、Ｓ１１２）。この場合、プロセスＢは、例えば、設定値に「ＯＮ」が設定されている場合に、処理の実行を開始する。その後、プロセスＢは、所定の処理を実行した結果である実行結果を、プロセスＡに対して送信する（Ｓ１１３）。そして、プロセスＡは、プロセスＢから実行結果の送信があったことに応じて、後続処理の実行を再開する（Ｓ１０３）。
【００２０】
［改修済プログラムの動作の具体例］
次に、改修済プログラムの具体例について説明を行う。図３は、改修済プログラムの動作の具体例を説明する図である。
【００２１】
事業者は、プログラム（例えば、図２で説明した改修前プログラム）の改修を行った場合、例えば、開発環境において改修済プログラムを動作についてのテストを実施する。そして、事業者は、プログラムの改修に伴う処理ルートの変更や共有資源の獲得競合の発生等に伴って、改修済プログラムの性能が改修前プログラムの性能と比較して劣化していないことの確認を行う。その後、事業者は、改修済プログラムの性能が劣化していないことを確認した場合、改修済プログラムを業務システム（図示しない）に導入する。
【００２２】
一方、改修済プログラムの性能が劣化することを確認した場合、事業者は、性能が劣化した原因の特定を行う。具体的に、事業者は、例えば、改修済プログラムを実行することにより起動するプロセスＡの実行時間が、改修前プログラムを実行することにより起動するプロセスＡの実行時間よりも所定時間以上長い場合に、改修済プログラムの性能が劣化したものと判定する。そして、事業者は、例えば、改修済プログラムの実行時にトレースを行うことにより、性能が劣化した原因の特定を行う。
【００２３】
具体的に、プロセスＡ（改修済プログラムを実行することにより起動するプロセスＡ）は、図３に示すように、プロセスＢに対して呼び出しを行う（Ｓ１２１）。なお、図３に示す例におけるＳ１２１の処理の実行タイミングは、プログラムの改修が行われたことに伴って、図２で説明した例におけるＳ１０１の処理の実行タイミングと異なっている。そして、プロセスＡは、図２で説明した場合と同様に、プロセスＢから実行結果の送信があるまで待機する（Ｓ１２２）。
【００２４】
一方、プロセスＢは、図３に示すように、プロセスＡから呼び出しがあった場合、図２で説明した場合と同様に、呼び出しの受け付けを行う（Ｓ１３１）。しかしながら、Ｓ１３１の処理が行われた際の設定値には、「ＯＦＦ」が設定されている。そのため、プロセスＢは、この場合、設定値に「ＯＮ」が設定されるまでＳ１３２の処理の開始を待つ必要がある。すなわち、図３に示すＳ１３２の処理の実行タイミングは、プログラムの改修が行われたことにより、図２で説明したＳ１１２の処理の実行タイミングと異なる。そのため、図３に示す例において、Ｓ１３１の処理が行われた際の設定値は、図２で説明した場合と異なっている。
【００２５】
したがって、プロセスＡでは、図３に示すように、例えば、プロセスＢから実行結果の送信がないことによるタイムアウトが発生する（Ｓ１２３）。
【００２６】
その後、プロセスＢは、設定値に「ＯＮ」が設定されたことに応じて処理の実行を行い、その処理結果をプロセスＡに送信する（Ｓ１３２、Ｓ１３３）。そして、プロセスＡは、例えば、プロセスＢからの実行結果の送信が再待ち合わせ中に行われた場合、後続処理の実行を再開する（Ｓ１２４、Ｓ１２５）。
【００２７】
この場合、事業者は、例えば、改修済プログラムに対し、Ｓ１２１の処理が行われるタイミングを変えるための更なる改修を行う。これにより、事業者は、改修済プログラムの導入による既存機能の性能劣化を抑制することが可能になる。
【００２８】
しかしながら、改修済プログラムの実行時にトレースを行う場合、トレースを行う処理が実行されることにより、プロセスＡがプロセスＢを呼び出すタイミング等が更に変わる場合がある。そのため、改修済プログラムの実行時にトレースを行う場合、改修済プログラムにおける既存機能の性能劣化が再現しない場合がある。
【００２９】
また、事業者は、既存機能の性能劣化の原因を特定するために、例えば、改修済プログラムの実行時におけるメモリダンプや改修済プログラムのソースコードによる解析を行う。しかしながら、解析を行う対象が膨大である場合、事業者は、既存機能の性能が劣化した原因を容易に特定することができない。そのため、事業者は、この場合、プログラムの改修に伴うテストを効率的に行うことができない。
【００３０】
そこで、本実施の形態における情報処理装置１は、例えば、事業者によって指定されたプロセスや、事業者によるテストセット（テスト項目の集合体）の実行に伴って動作するプロセス（以下、特定のプロセスまたは測定対象プロセスとも呼ぶ）が起動時において動作を停止した時間（以下、休止時間とも呼ぶ）を算出する。具体的に、情報処理装置１は、起動中の各プロセスの動作状態についての履歴情報を、各プロセスに対応付けて記憶する記憶部を参照し、測定対象プロセスに対応する履歴情報に基づき、測定対象プロセスの休止時間を算出する。
【００３１】
その後、情報処理装置１は、呼び出し元のプロセスごとに、呼び出し先のプロセスの識別情報を、呼び出し先のプロセスの応答待ちに起因して呼び出し元のプロセスにおいてタイムアウトが生じるまでの応答待ち時間に対応付けて記憶する記憶部を参照する。そして、情報処理装置１は、算出した休止時間に応じた応答待ち時間に対応付けられた呼び出し先のプロセスを特定し、特定した呼び出し先のプロセスの識別情報を出力する。
【００３２】
すなわち、情報処理装置１は、業務システムを構成する各プログラムの実行に伴って起動するプロセスから他のプロセス（呼び出し先のプロセス）に対する呼び出しが行われた結果、タイムアウトが発生した場合における応答待ち時間を示す情報を予め取得する。その後、情報処理装置１は、例えば、測定対象プロセスの休止時間に応じた応答待ち時間（例えば、休止時間と一致する応答待ち時間）を特定する。そして、情報処理装置１は、測定対象プロセスの休止時間に応じた応答待ち時間が存在する場合、測定対象プロセスの起動中における休止時間の発生が、呼び出し先のプロセスの実行時間の遅延に伴うタイムアウトの発生によるものであると判定する。
【００３３】
これにより、情報処理装置１は、測定対象プロセスの起動時において休止時間が発生した場合、その休止時間の発生の原因が、呼び出し元のプロセスにおいて発生したタイムアウトであるか否かについて特定することが可能になる。そして、情報処理装置１は、測定対象プロセスの中から、タイムアウトの原因となった呼び出し先のプロセスを特定することが可能になる。すなわち、情報処理装置１は、測定対象プロセスのうち、タイムアウトを発生させる呼び出し元のプロセスが明らかでない場合であっても、タイムアウトが発生した場合におけるテストを行うことが可能になる。そのため、情報処理装置１は、改修済プログラムにおける既存機能の性能劣化が発生した場合、発生した性能劣化の原因を特定することが可能になる。
【００３４】
［情報処理装置のハードウエア構成］
次に、情報処理装置１のハードウエア構成について説明する。図４は、情報処理装置１のハードウエア構成を示す図である。
【００３５】
情報処理装置１は、プロセッサであるＣＰＵ１０１と、メモリ１０２と、外部インターフェース（Ｉ／Ｏユニット）１０３と、記憶媒体１０４とを有する。各部は、バス１０５を介して互いに接続される。
【００３６】
記憶媒体１０４は、例えば、テスト支援処理を行うためのプログラム１１０を記憶する。また、記憶媒体１０４は、例えば、テスト支援処理を行う際に用いられる情報を記憶する情報格納領域１３０（以下、記憶部１３０とも呼ぶ）を有する。なお、図１で説明した記憶装置２は、例えば、記憶媒体１０４に対応する。
【００３７】
ＣＰＵ１０１は、図４に示すように、プログラム１１０の実行時に、プログラム１１０を記憶媒体１０４からメモリ１０２にロードし、プログラム１１０と協働してテスト支援処理を行う。
【００３８】
外部インターフェース１０３は、例えば、ネットワークＮＷを介して事業者端末３と通信を行う。
【００３９】
［情報処理装置の機能］
次に、情報処理装置１の機能について説明する。図５は、情報処理装置１の機能のブロック図である。また、図６は、情報格納領域１３０に記憶された情報のブロック図である。
【００４０】
ＣＰＵ１０１は、図５に示すように、プログラム１１０と協働することにより、例えば、情報受付部１１１と、テスト実行部１１２と、休止時間算出部１１３と、プロセス特定部１１４として動作する。また、ＣＰＵ１０１は、図５に示すように、プログラム１１０と協働することにより、例えば、情報出力部１１５と、履歴情報取得部１１６と、操作ログ取得部１１７と、応答待ち時間算出部１１８と、ダンプ取得部１１９として動作する。
【００４１】
また、情報格納領域１３０には、図６に示すように、例えば、各プロセスを起動させるための実行ファイル１３１と、履歴情報１３２と、操作ログ情報１３３と、応答待ち時間情報１３４と、テスト結果情報１３５とが記憶されている。
【００４２】
なお、以下、情報受付部１１１、テスト実行部１１２、休止時間算出部１１３、プロセス特定部１１４、情報出力部１１５、履歴情報取得部１１６、操作ログ取得部１１７、応答待ち時間算出部１１８及びダンプ取得部１１９を総称して、テスト支援部１２０とも呼ぶ。
【００４３】
情報受付部１１１は、例えば、プログラムの改修が行われたことに伴って事業者がリグレッションテストを実施するテストセットの指定を行った場合に、その指定を受け付ける。
【００４４】
テスト実行部１１２は、情報格納領域１３０に記憶された実行ファイル１３１を実行する。具体的に、テスト実行部１１２は、例えば、情報受付部１１１が指定を受け付けたテストセットを実行させるための実行ファイル１３１を実行する。
【００４５】
休止時間算出部１１３は、例えば、各プロセスの識別情報が対応付けられた情報であって、実行ファイル１３１の実行によって動作する各プロセスの動作状態を示す情報である履歴情報１３２を参照する。そして、休止時間算出部１１３は、情報受付部１１１が指定を受け付けたテストセットの実行に伴って動作する測定対象プロセスに対応する履歴情報１３２に基づき、測定対象プロセスの休止時間を算出する。
【００４６】
なお、情報受付部１１１は、測定対象プロセスの指定を直接受け付けるものであってもよい。そして、休止時間算出部１１３は、この場合、情報受付部１１１が指定を受け付けた測定対象プロセスの休止時間の算出を行うものであってよい。
【００４７】
プロセス特定部１１４は、呼び出し元のプロセスごとに、呼び出し先のプロセスの識別情報と、呼び出し先のプロセスの応答待ちに起因して呼び出し元のプロセスにおいてタイムアウトが生じるまでの応答待ち時間とを対応付けた応答待ち時間情報１３４を参照する。そして、プロセス特定部１１４は、休止時間算出部１１３が算出した休止時間に応じた応答待ち時間に対応付けられた呼び出し先のプロセスを特定する。呼び出し元のプロセスは、業務システム（図示しない）で動作する各プログラム（改修済プログラムを含む）に対応するプロセスのうち、起動中に他のプロセスの呼び出しを行うプロセスである。また、呼び出し先のプロセスは、呼び出し元のプロセスによって呼び出されるプロセスである。
【００４８】
情報出力部１１５は、プロセス特定部１１４が特定した呼び出し先のプロセスの識別情報を出力する。
【００４９】
履歴情報取得部１１６は、実行ファイル１３１の実行中における各プロセスの動作状態を示す情報である履歴情報１３２を取得する。具体的に、履歴情報取得部１１６は、例えば、オペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が有する情報から、履歴情報１３２の取得を行う。
【００５０】
操作ログ取得部１１７は、事業者が事業者端末３において操作を行った内容に対応するログである操作ログ情報１３３を取得する。
【００５１】
応答待ち時間算出部１１８は、操作ログ取得部１１７が取得した操作ログ情報１３３を参照し、応答待ち時間情報１３４を作成する。
【００５２】
具体的に、応答待ち時間算出部１１８は、例えば、測定対象プロセスのリグレッションテストが実施される前に、改修済プログラムの改修が行われる前に実施されたテスト（例えば、改修済プログラムの単体テスト）における操作ログ情報１３３を参照する。そして、応答待ち時間算出部１１８は、業務システムを構成するプログラムの実行により起動するプロセスに含まれる呼び出し元のプロセスにおいて、呼び出し先のプロセスの応答待ちによるタイムアウトが発生した場合における応答待ち時間を含む応答待ち時間情報１３４を作成する。
【００５３】
これにより、プロセス特定部１１４は、測定対象プロセスのリグレッションテストが行われる際に、応答待ち時間情報１３４を参照することが可能になる。そして、プロセス特定部１１４は、休止時間算出部１１３が算出した休止時間に応じた応答待ち時間に対応するプロセスを、リグレッションテストの実行時において発生したタイムアウトの原因であるプロセス（呼び出し先のプロセス）として特定することが可能になる。
【００５４】
ダンプ取得部１１９は、例えば、呼び出し元のプロセスにおいてタイムアウトが発生する直前の呼び出し先のプロセスに関するメモリ１０２の状態を示すメモリダンプを取得する。
【００５５】
［第１の実施の形態］
次に、第１の実施の形態について説明する。図７は、第１の実施の形態におけるテスト支援処理の概略を説明するフローチャート図である。また、図８及び図９は、第１の実施の形態におけるテスト支援処理の概略を説明する図である。図８及び図９を参照しながら図７のテスト支援処理の概略について説明する。
【００５６】
情報処理装置１（テスト支援部１２０）は、図７に示すように、プロセス特定タイミングまで待機する（Ｓ１のＮＯ）。プロセス特定タイミングは、例えば、事業者が情報処理装置１に対してテストセットの指定等を行ったタイミングである。
【００５７】
そして、プロセス特定タイミングになった場合（Ｓ１のＹＥＳ）、情報処理装置１は、図８に示すように、履歴情報１３２が記憶された情報格納領域１３０を参照し、測定対象プロセスに対応する履歴情報１３２に基づき、測定対象プロセスの休止時間を算出する（Ｓ２）。
【００５８】
すなわち、事業者は、例えば、実行時間が所定時間以上遅延した測定対象プロセスが存在する場合、その原因を特定する必要がある。そのため、情報処理装置１は、測定対象プロセスの履歴情報１３２を参照することにより、測定対象プロセスの起動時における休止時間を算出する。
【００５９】
その後、情報処理装置１は、図９に示すように、応答待ち時間情報１３４が記憶された情報格納領域１３０を参照し、Ｓ２の処理で算出した休止時間に応じた応答待ち時間に対応付けられたプロセス（呼び出し先のプロセス）を特定する（Ｓ３）。そして、情報処理装置１は、Ｓ３の処理で特定した呼び出し先のプロセスの識別情報を出力する（Ｓ４）。
【００６０】
すなわち、Ｓ２の処理で算出した休止時間に対応する呼び出し元のプロセスにおいてタイムアウトが発生する場合のテストは、単体テスト等においても行われている可能性がある。そのため、情報処理装置１は、Ｓ３の処理において、例えば、測定対象プロセスの単体テストが行われる際の操作ログ情報１３３から作成された応答待ち時間情報１３４を参照する。そして、情報処理装置１は、応答待ち時間情報１３４において、Ｓ２の処理で算出した休止時間に応じた応答待ち時間に対応付けられたプロセスを、Ｓ２の処理で算出した休止時間の発生の原因である呼び出し先のプロセスとして特定する。
【００６１】
これにより、事業者は、例えば、測定対象プロセスにおいて休止時間が発生した理由が、Ｓ３の処理で特定した呼び出し先のプロセスの動作に起因したタイムアウトによるものであると特定することが可能になる。
【００６２】
このように、本実施の形態における情報処理装置１は、例えば、測定対象プロセスの起動時における休止時間を算出する。具体的に、情報処理装置１は、起動中の各プロセスの動作状態についての履歴情報を、各プロセスに対応付けて記憶する記憶部を参照し、測定対象プロセスに対応する履歴情報に基づき、測定対象プロセスの休止時間を算出する。
【００６３】
その後、情報処理装置１は、呼び出し元のプロセスごとに、呼び出し先のプロセスの識別情報を、呼び出し先のプロセスの応答待ちに起因して呼び出し元のプロセスにおいてタイムアウトが生じるまでの応答待ち時間に対応付けて記憶する記憶部を参照する。そして、情報処理装置１は、算出した休止時間に応じた応答待ち時間に対応付けられた呼び出し先のプロセスを特定し、特定した呼び出し先のプロセスの識別情報を出力する。
【００６４】
これにより、情報処理装置１は、測定対象プロセスの起動時において休止時間が発生した場合、その休止時間の発生の原因が、呼び出し元のプロセスにおいて発生したタイムアウトであるか否かについて特定することが可能になる。そして、情報処理装置１は、測定対象プロセスの中から、タイムアウトの原因となった呼び出し先のプロセスを特定することが可能になる。すなわち、情報処理装置１は、測定対象プロセスのうち、タイムアウトを発生させる呼び出し元のプロセスが明らかでない場合であっても、タイムアウトが発生した場合におけるテストを行うことが可能になる。そのため、情報処理装置１は、改修済プログラムにおける既存機能の性能劣化が発生した場合、発生した性能劣化の原因を特定することが可能になる。
【００６５】
［第１の実施の形態の詳細］
次に、第１の実施の形態の詳細について説明する。図１０から図１８は、第１の実施の形態におけるテスト支援処理の詳細を説明するフローチャート図である。また、図１９から図３０は、第１の実施の形態におけるテスト支援処理の詳細を説明する図である。図１９から図３０を参照しながら、図１０から図１８のテスト支援処理の詳細を説明する。
【００６６】
［単体テストの実施時における履歴情報取得処理］
初めに、第１の実施の形態におけるテスト支援処理のうち、リグレッションテストの前に実施される単体テストの実施時において履歴情報１３２を取得する処理（以下、履歴情報取得処理とも呼ぶ）について説明を行う。
【００６７】
履歴情報取得部１１６は、図１０に示すように、履歴情報取得タイミングになるまで待機する（Ｓ１１のＮＯ）。履歴情報取得タイミングは、例えば、０．１（秒）間隔等、所定の時間間隔毎であってよい。そして、履歴情報取得タイミングになった場合（Ｓ１１のＹＥＳ）、履歴情報取得部１１６は、起動中のプロセスの動作状態を示す履歴情報１３２を作成する（Ｓ１２）。具体的に、履歴情報取得部１１６は、ＯＳが有する情報を取得することにより、履歴情報１３２の作成を行う。
【００６８】
その後、情報出力部１１５は、Ｓ１２の処理で作成した履歴情報１３２を情報格納領域１３０に記憶する（Ｓ１３）。以下、履歴情報１３２の具体例について説明を行う。
【００６９】
［履歴情報の具体例］
図２０から図２３は、履歴情報１３２の具体例を説明する図である。図２０から図２３は、履歴情報１３２に含まれる各情報を識別する「項番」と、プロセスを識別する「識別情報」と、プロセスの動作状態を示す「動作状態」と、履歴情報１３２が作成された時間を示す「タイムスタンプ」とを項目として有する。「動作状態」には、履歴情報１３２が前回作成されてから今回作成されるまでの間にプロセスが動作したことを示す「Ｒ（ＲＵＮ）」が設定される。また、「動作状態」には、履歴情報１３２が前回作成されてから今回作成されるまでの間にプロセスが動作しなかったことを示す「Ｓ（ＳＬＥＥＰ）」が設定される。なお、以下、履歴情報１３２が０．１（秒）毎に作成されるものとして説明を行う。
【００７０】
具体的に、図２０に示す履歴情報１３２において、「項番」が「１」である情報には、「識別情報」として「Ａ−１」が設定され、動作状態として「Ｓ」が設定され、「タイムスタンプ」として「１１：１１．１６．１００」が設定されている。すなわち、図２０に示す履歴情報１３２は、「１１：１１．１６．０００」から「１１：１１．１６．１００」までの時間において、「識別情報」が「Ａ−２」であるプロセスが動作しなかったことを示している。
【００７１】
そして、図２１に示す履歴情報１３２は、図２０に示す履歴情報１３２の次に作成された履歴情報１３２である。すなわち、図２１に示す履歴情報１３２は、図２０に示す履歴情報１３２よりも０．１（秒）後に作成された履歴情報１３２である。
【００７２】
具体的に、図２１に示す履歴情報１３２において、図２０に示す履歴情報１３２に対し、「項番」が「２」である情報の「動作状態」に設定された情報に「Ｓ」が設定されている。すなわち、図２１に示す履歴情報１３２は、「１１：１１．１６．１００」から「１１：１１．１６．２００」までの時間において、「識別情報」が「Ａ−２」であるプロセスが動作しなかったことを示している。また、図２１に示す履歴情報１３２において、図２０に示す履歴情報１３２に対し、「項番」が「３」である情報の「動作状態」に設定された情報に「Ｒ」が設定されている。すなわち、図２１に示す履歴情報１３２は、「１１：１１．１６．１００」から「１１：１１．１６．２００」までの時間において、「識別情報」が「Ｂ−１」であるプロセスが動作したことを示している。
【００７３】
さらに、図２２に示す履歴情報１３２は、図２１に示す履歴情報１３２の次に作成された履歴情報１３２である。すなわち、図２２に示す履歴情報１３２は、図２１に示す履歴情報１３２よりも０．１（秒）後に作成された履歴情報１３２である。具体的に、図２２に示す履歴情報１３２において、図２１に示す履歴情報１３２に対し、「項番」が「３」である情報の「動作状態」に設定された情報に「Ｓ」が設定されている。
【００７４】
そして、図２３に示す履歴情報１３２は、図２２に示す履歴情報１３２に含まれる情報の更新が次に行われた場合における履歴情報１３２である。具体的に、図２３に示す履歴情報１３２の「タイムスタンプ」には、「１１：１１．３６．１００」がそれぞれ設定されている。そして、図２３に示す履歴情報１３２における「項番」が「２」である情報の「動作状態」には、「Ｒ」が設定されている。図２０から図２３に含まれる他の情報については説明を省略する。
【００７５】
［単体テストの実施時における操作ログ取得処理］
次に、第１の実施の形態におけるテスト支援処理のうち、単体テストの実施時において操作ログ情報１３３を取得する処理（以下、操作ログ取得処理とも呼ぶ）について説明を行う。
【００７６】
操作ログ取得部１１７は、図１１に示すように、事業者端末３において事業者が操作を行ったことを検知するまで待機する（Ｓ２１のＮＯ）。そして、事業者端末３における操作を検知した場合（Ｓ２１のＹＥＳ）、操作ログ取得部１１７は、Ｓ２１の処理で検知した操作に対応する操作ログ情報１３３を作成する（Ｓ２２）。その後、情報出力部１１５は、Ｓ２２の処理で作成した操作ログ情報１３３を情報格納領域１３０に記憶する（Ｓ２３）。以下、操作ログ情報１３３の具体例について説明を行う。
【００７７】
［操作ログ情報の具体例］
図２４及び図２５は、操作ログ情報１３３の具体例を説明する図である。図２４及び図２５は、操作ログ情報１３３に含まれる各情報を識別する「項番」と、事業者端末３において操作が行われた時間を示す「タイムスタンプ」と、事業者端末３における操作の内容を示す「文字列」とを項目として有する。なお、図２４及び図２５に示す操作ログ情報１３３は、それぞれ「識別情報」が「Ａ−２」及び「Ｂ−１」であるプロセス（以下、それぞれプロセスＡ−２、プロセスＢ−１とも呼ぶ）に対応する操作ログ情報１３３である。
【００７８】
具体的に、図２４に示す操作ログ情報１３３において、「項番」が「１」である情報の「タイムスタンプ」には、「１１：１１．０５．３３３」が設定されている。そして、「項番」が「１」である情報の「文字列」には、プロセスＡ−２のデバッグが開始されたことを示す「ｄｅｂｕｇ，Ａ−２」が設定されている。
【００７９】
また、図２４に示す操作ログ情報１３３において、「項番」が「２」である情報の「文字列」には、アドレスが「０ｘ００２２ｂ００ｅｏ１２１２」及び「０ｘ００２２ｂ８８５５ａｂ００」である位置がブレイクポイントに設定されたことを示す「ｂ，０ｘ００２２ｂ００ｅｏ１２１２，０ｘ００２２ｂ８８５５ａｂ００」が設定されている。そして、図２４に示す操作ログ情報１３３において、「項番」が「３」である情報の「文字列」には、設定されたブレイクポイントに到達したことによってプロセスＡ−２の動作が停止したことを示す「ｂｒｅａｋ，０ｘ００２２ｂ００ｅｏ１２１２」が設定されている。
【００８０】
さらに、図２４に示す操作ログ情報１３３において、「項番」が「４」である情報の「文字列」には、プロセスＡ−２を動作させたことを示す「ｇｏ」が設定されている。そして、「項番」が「７」である情報の「文字列」には、設定されたブレイクポイントの設定を解除したことを示す「ｂ，ｃｌｅａｒ」が設定されている。
【００８１】
また、図２４に示す操作ログ情報１３３において、「項番」が「８」である情報の「文字列」には、プロセスＡ−２のデバッグが終了したことを示す「ｅｎｄ」が設定されている。図２４及び図２５に含まれる他の情報については説明を省略する。
【００８２】
なお、事業者は、プロセスＡとプロセスＢとを異なる事業者端末３において動作させるものであってもよい。そして、操作ログ取得部１１７は、プロセスＡとプロセスＢとがそれぞれ動作する事業者端末３から、図２４及び図２５で説明した操作ログ情報１３３をそれぞれ取得するものであってもよい。
【００８３】
［単体テストの実施時におけるテスト実行処理］
次に、第１の実施の形態におけるテスト支援処理のうち、タイムアウトが発生する場合の単体テストを実行する処理（以下、テスト実行処理とも呼ぶ）について説明を行う。
【００８４】
テスト実行部１１２は、図１２に示すように、テスト実行タイミングまで待機する（Ｓ３１のＮＯ）。テスト実行タイミングは、例えば、事業者が情報処理装置１に単体テストを行う旨を入力したタイミングであってよい。そして、テスト実行タイミングになった場合（Ｓ３１のＹＥＳ）、テスト実行部１１２は、各プログラムを実行することにより、各プロセスを起動する（Ｓ３２）。テスト実行部１１２は、Ｓ３２の処理において、例えば、業務システムを構成する全てのプログラムを実行する。
【００８５】
その後、Ｓ３２の処理で起動されたプロセスのうちのいずれかが他のプロセスの呼び出しを行った場合（Ｓ３３のＹＥＳ）、テスト実行部１１２は、呼び出し先のプロセスの動作を停止する（Ｓ３４）。そして、全てのプロセスの実行が終了していない場合（Ｓ３５のＮＯ）、テスト実行部１１２は、Ｓ３３以降の処理を再度実行する。
【００８６】
一方、全てのプロセスの実行が終了するまで他のプロセスの呼び出しが行われない場合（Ｓ３３のＮＯ、Ｓ３５のＹＥＳ）、テスト実行部１１２は、次のテスト実行タイミングまで待機する（Ｓ３１のＮＯ）。以下、Ｓ３４の処理の具体例について説明を行う。
【００８７】
［Ｓ３４の処理の具体例］
図１９は、Ｓ３４の処理の具体例を説明する図である。テスト実行部１１２は、図１９に示すように、プロセスＡがプロセスＢを呼び出した後、プロセスＢの動作を停止する。具体的に、テスト実行部１１２は、事業者によって予め設定されたブレイクポイントにプロセスＢの処理が到達したことに応じて、プロセスＢの動作を停止する。
【００８８】
これにより、テスト実行部１１２は、プロセスＢの実行結果がプロセスＡに送信されることを防ぐことが可能になる。そのため、テスト実行部１１２は、プロセスＡにおいてタイムアウトを容易に発生させることが可能になる。
【００８９】
なお、以下、図１２で説明したテスト実行処理が実行されたことに伴って、図２０から図２５で説明した履歴情報１３２及び操作ログ情報１３３が作成されたものとして説明を行う。
【００９０】
［応答待ち時間算出処理］
次に、第１の実施の形態におけるテスト支援処理のうち、応答待ち時間情報１３４を作成する処理（以下、応答待ち時間算出処理とも呼ぶ）について説明を行う。なお、応答待ち時間算出処理は、例えば、図１２で説明したテスト実行処理の後であって、改修済プログラムの改修に伴ってリグレッションテストが行われる前に実行される処理である。
【００９１】
応答待ち時間算出部１１８は、図１３に示すように、応答待ち時間算出タイミングまで待機する（Ｓ４１のＮＯ）。応答待ち時間算出タイミングは、例えば、テスト実行処理の後であって、改修済プログラムの改修に伴ってリグレッションテストが行われる前の所定のタイミングであってよい。また、応答待ち時間算出タイミングは、例えば、事業者が応答待ち時間情報１３４を作成する旨の入力を行ったタイミングであってよい。
【００９２】
そして、応答待ち時間算出タイミングになった場合（Ｓ４１のＹＥＳ）、応答待ち時間算出部１１８は、情報格納領域１３０に記憶された操作ログ情報１３３を参照し、各プロセスについてデバッグが行われていた時間（以下、デバッグ時間とも呼ぶ）を特定する（Ｓ４２）。具体的に、応答待ち時間算出部１１８は、例えば、各プロセスについてのデバッグが開始した時間（以下、デバッグ開始時間とも呼ぶ）と、デバッグが終了した時間（以下、デバッグ終了時間とも呼ぶ）とを特定する。以下、デバッグ開始時間とデバッグ終了時間とを含むデバッグ時間情報１３４ａの具体例について説明を行う。
【００９３】
［デバッグ時間情報の具体例］
図２６は、デバッグ時間情報１３４ａの具体例を説明する図である。図２６に示すデバッグ時間情報１３４ａは、デバッグ時間情報１３４ａに含まれる各情報を識別する「項番」と、デバッグを行う各プロセスを特定する「識別情報」とを項目として有する。また、図２６に示すデバッグ時間情報１３４ａは、デバッグ開始時間が設定される「デバッグ開始時間」と、デバッグ終了時間が設定される「デバッグ終了時間」とを項目として有する。
【００９４】
具体的に、図２４で説明したプロセスＡ−２に関する操作ログ情報１３３において、「文字列」に「ｄｅｂｕｇ」が含まれる情報の「タイムスタンプ」には、「１１：１１．０５．３３３」が設定されている。また、図２４で説明したプロセスＡ−２に関する操作ログ情報１３３において、「文字列」に「ｅｎｄ」が含まれる情報の「タイムスタンプ」には、「１２：０８．２０．６６８」が設定されている。すなわち、この場合、応答待ち時間算出部１１８は、デバッグ開始時間が「１１：１１．０５．３３３」であり、デバッグ終了時間が「１２：０８．２０．６６８」であると特定する。そのため、応答待ち時間算出部１１８は、図２６に示すように、例えば、「項番」が「１」である情報の「識別情報」として「Ａ−２」を設定し、「デバッグ開始時間」として「１１：１１．０５．３３３」を設定し、「デバッグ終了時間」として「１２：１８．２０．６６８」を設定する。図２６に含まれる他の情報については説明を省略する。
【００９５】
図１３に戻り、応答待ち時間算出部１１８は、デバッグ時間が包含関係にあるプロセスの組み合わせが存在するか否かを判定する（Ｓ４３）。そして、デバッグ時間が包含関係にあるプロセスの組み合わせが存在すると判定した場合（Ｓ４３のＹＥＳ）、応答待ち時間算出部１１８は、Ｓ４３の処理で存在したプロセスの組み合わせを、呼び出し元のプロセス及び呼び出し先のプロセスの組み合わせとして特定する（Ｓ４４）。
【００９６】
具体的に、図２６で説明したデバッグ時間情報１３４ａにおいて、「識別情報」が「Ａ−２」である情報には、「デバッグ開始時間」として「１１：１１．０５．３３３」が設定され、「デバッグ終了時間」として「１２：０８．２０．６６８」が設定されている。また、図２６で説明したデバッグ時間情報１３４ａにおいて、「識別情報」が「Ｂ−１」である情報には、「デバッグ開始時間」として「１１：１１．０７．０８８」が設定され、「デバッグ終了時間」として「１２：０８．０７．３５６」が設定されている。
【００９７】
すなわち、図２６で説明したデバッグ時間情報１３４ａにおいて、プロセスＡ−２のデバッグが行われていた時間には、プロセスＢ−１のデバッグが行われていた時間が包含されている。そのため、応答待ち時間算出部１１８は、プロセスＡ−２及びプロセスＢ−１が呼び出し元のプロセス及び呼び出し先のプロセスの関係にあるものと判定する。したがって、応答待ち時間算出部１１８は、この場合、Ｓ４４の処理において、プロセスＡ−２及びプロセスＢ−１の組み合わせを、呼び出し元プロセス及び呼び出し先プロセスの組み合わせとして特定する。
【００９８】
その後、応答待ち時間算出部１１８は、情報格納領域１３０に記憶された操作ログ情報１３３を参照し、Ｓ４４の処理で特定した組み合わせに含まれるプロセスの動作が停止した時間（以下、ブレイク時間とも呼ぶ）を特定する（Ｓ４５）。具体的に、応答待ち時間算出部１１８は、Ｓ４４の処理で特定した組み合わせに含まれる各プロセスがブレイクポイントに到達した時間をブレイク時間として特定する。
【００９９】
すなわち、業務システムを構成する各プログラムの単体テストの実行時において、ブレイクポイントが設定されることによる呼び出し先のプロセスの動作の停止には、呼び出し元のプロセスにおいてタイムアウトが発生させるために行われたプロセスの動作の停止が含まれている。そのため、応答待ち時間算出部１１８は、ブレイクポイントを設定することによって呼び出し先のプロセスの動作の停止が行われている場合、タイムアウトが発生した場合におけるテストが行われていた可能性があると判定することが可能になる。したがって、応答待ち時間算出部１１８は、ブレイクポイントが設定されたことに伴って呼び出し先のプロセスの動作が停止したブレイク時間を特定する。以下、ブレイク時間を含むブレイク時間情報１３４ｂの具体例について説明を行う。
【０１００】
［ブレイク情報の具体例］
図２７は、ブレイク時間情報１３４ｂの具体例を説明する図である。図２７に示すブレイク時間情報１３４ｂは、ブレイク時間情報１３４ｂに含まれる各情報を識別する「項番」と、呼び出し先のプロセスを識別する「識別情報」と、ブレイク時間が設定される「ブレイク時間」とを項目として有する。
【０１０１】
具体的に、図２４で説明したプロセスＡ−２に関する操作ログ情報１３３において、「文字列」に「ｂｒｅａｋ」を含む文字列が設定された情報の「タイムスタンプ」には、「１１：１１．１０．１２１」及び「１１：１１．３６．０７５」が設定されている。そのため、応答待ち時間算出部１１８は、図２７に示すように、「項番」が「１」及び「２」である情報の「識別情報」として「Ａ−２」を設定し、「ブレイク時間」として「１１：１１．１０．１２１」及び「１１：１１．３６．０７５」をそれぞれ設定する。
【０１０２】
また、図２５で説明したプロセスＢ−１に関する操作ログ情報１３３において、「文字列」に「ｂｒｅａｋ」を含む文字列が設定された情報の「タイムスタンプ」には、「１１：１１．１６．１６２」が設定されている。そのため、応答待ち時間算出部１１８は、図２７に示すように、「項番」が「３」である情報の「識別情報」として「Ｂ−１」を設定し、「ブレイク時間」として「１１：１１．１６．１６２」を設定する。
【０１０３】
図１３に戻り、応答待ち時間算出部１１８は、情報格納領域１３０に記憶され履歴情報１３２を参照し、Ｓ４５の処理で特定したブレイク時間から、Ｓ４４の処理で特定した組み合わせに含まれる呼び出し元のプロセスの動作の停止時間及び再開時間を特定する（Ｓ４６）。
【０１０４】
具体的に、応答待ち時間算出部１１８は、Ｓ４６の処理において、図２０等で説明した履歴情報１３２のうち、図２７で説明したブレイク時間情報１３４ｂの「ブレイク時間」に設定された時間の前後の情報を参照する。
【０１０５】
ここで、呼び出し元のプロセスにおいてタイムアウトが発生する場合、呼び出し元のプロセス及び呼び出し先のプロセスの「動作状態」に「Ｓ」が設定されている状態が連続する。そして、この場合、呼び出し元のプロセスの「動作状態」が先に「Ｒ」に更新される。そのため、応答待ち時間算出部１１８は、図２０等で説明した履歴情報１３２を参照し、プロセスＡ−２及びプロセスＢ−１の「動作状態」が「Ｓ」である状態が連続した後、いずれかの「動作状態」が「Ｒ」に更新されている情報を特定する。
【０１０６】
具体的に、図２２で説明した履歴情報１３２において、「識別情報」が「Ａ−２」である情報には、「動作状態」として「Ｓ」が設定され、「識別情報」が「Ｂ−１」である情報には、「動作状態」として「Ｓ」が設定されている。また、図２３で説明した履歴情報１３２において、「識別情報」が「Ａ−２」である情報には、「動作状態」として「Ｒ」が設定され、「識別情報」が「Ｂ−１」である情報には、「動作状態」として「Ｓ」が設定されている。そして、図２３で説明した履歴情報１３２は、図２２で説明した履歴情報１３２の次に内容が更新された情報であり、図２２で説明した履歴情報１３２の約２０秒後に取得された情報である。すなわち、図２３で説明した履歴情報１３２において、プロセスＡ−２の「動作状態」は、プロセスＡ−２及びプロセスＢ−１の「動作状態」が「Ｓ」である状態が連続した後に、「Ｒ」に更新されている。
【０１０７】
そのため、応答待ち時間算出部１１８は、この場合、「動作状態」が「Ｓ」である状態が連続した後に、最初に動作を再開したプロセスであるプロセスＡ−２を、呼び出し元のプロセスとして特定する。また、応答待ち時間算出部１１８は、プロセスＡ−２及びプロセスＢ−１のうち、呼び出し元のプロセスとして特定されなかったプロセスＢ−１を、呼び出し先のプロセスとして特定する。
【０１０８】
そして、応答待ち時間算出部１１８は、図２３で説明した履歴情報１３２を参照し、「１１：１１．３６．０００」から「１１：１１．３６．１００」までの時間内に、プロセスＡ−２がプロセスＢ−１を呼び出したと特定する。そのため、応答待ち時間算出部１１８は、Ｓ４６の処理において、例えば、「タイムスタンプ」が「１１：１１：３６．１００」である時間を、呼び出し元のプロセスであるプロセスＡ−２の再開時間として仮定する。
【０１０９】
さらに、呼び出し元のプロセスが呼び出し先にプロセスを呼び出した場合、呼び出し元のプロセスの動作は停止する。そのため、応答待ち時間算出部１１８は、呼び出し元のプロセスの「動作状態」が「Ｓ」である状態が連続する前であって、最後に「動作状態」が「Ｒ」である履歴情報１３２に対応する時間を、呼び出し元のプロセスが呼び出し先にプロセスを呼び出した時間として特定する。
【０１１０】
具体的に、図２１で説明した履歴情報１３２において、「識別情報」が「Ａ−２」である情報には、「動作状態」として「Ｓ」が設定されている。一方、図２０で説明した履歴情報１３２において、「識別情報」が「Ａ−２」である情報には、「動作状態」として「Ｒ」が設定されている。そのため、応答待ち時間算出部１１８は、「１１：１１．１６．０００」から「１１：１１．１６．１００」までの時間内に、プロセスＡ−２がプロセスＢ−１を呼び出したと特定する。そのため、応答待ち時間算出部１１８は、Ｓ４６の処理において、例えば、「タイムスタンプ」が「１１：１１．１６．１００」である時間を、呼び出し元のプロセスであるプロセスＡ−２の停止時間として仮定する。
【０１１１】
その後、応答待ち時間算出部１１８は、図１４に示すように、Ｓ４６の処理で特定した停止時間と再開時間との時間差を、応答待ち時間として算出する（Ｓ５１）。
【０１１２】
具体的に、応答待ち時間算出部１１８は、停止時間である「１１：１１．１６．１００」から、再開時間である「１１：１１．３６．１００」までの２０（秒）を、プロセスＢ−１を呼び出した後にタイムアウトが発生する場合におけるプロセスＡ−２の応答待ち時間として特定する。
【０１１３】
そして、情報出力部１１５は、Ｓ５１の処理で算出した応答待ち時間と、呼び出し元のプロセス及び呼び出し先のプロセスの識別情報とを対応付けた情報を、応答待ち時間情報１３４として情報格納領域１３０に記憶する（Ｓ５２）。以下、応答待ち時間情報１３４の具体例について説明を行う。
【０１１４】
［応答待ち時間情報の具体例］
図２８は、応答待ち時間情報１３４の具体例を説明する図である。図２８に示す応答待ち時間情報１３４は、応答待ち時間情報１３４に含まれる各情報を識別する「項番」と、呼び出し元のプロセスの識別情報が設定される「呼び出し元の識別情報」とを項目として有する。また、図２８に示す応答待ち時間情報１３４は、呼び出し先のプロセスの識別情報が設定される「呼び出し先の識別情報」と、Ｓ５１の処理で算出された応答待ち時間が設定される「応答待ち時間」とを項目として有する。
【０１１５】
具体的に、図２８に示す応答待ち時間情報１３４において、「項番」が「１」である情報には、「呼び出し元の識別情報」として「Ａ−２」が設定され、「呼び出し元の識別情報」として「Ｂ−１」が設定され、「応答待ち時間」として「２０（秒）」が設定される。図２８に含まれる他の情報については説明を省略する。
【０１１６】
［リグレッションテストの実施時における履歴情報取得処理］
次に、第１の実施の形態におけるテスト支援処理のうち、リグレッションテストの実施時における履歴情報取得処理（改修済プログラムの改修が行われた後に実施される履歴情報取得処理）について説明を行う。
【０１１７】
履歴情報取得部１１６は、図１５に示すように、履歴情報取得タイミングになるまで待機する（Ｓ６１のＮＯ）。そして、履歴情報取得タイミングになった場合（Ｓ６１のＹＥＳ）、履歴情報取得部１１６は、例えば、Ｓ４６の処理で特定した呼び出し元のプロセス及び呼び出し先のプロセスの動作状態を示す履歴情報１３２を作成する（Ｓ６２）。その後、情報出力部１１５は、図１０で説明した場合と同様に、Ｓ６２の処理で作成した履歴情報１３２を情報格納領域１３０に記憶する（Ｓ６３）。
【０１１８】
［リグレッションテストの実施時におけるテスト実行処理］
次に、第１の実施の形態におけるテスト支援処理のうち、リグレッションテストの実施時におけるテスト実行処理（改修済プログラムの改修が行われた後に実施されるテスト実行処理）について説明を行う。
【０１１９】
テスト実行部１１２は、図１６に示すように、テスト実行タイミングまで待機する（Ｓ７１のＮＯ）。テスト実行タイミングは、例えば、事業者が情報処理装置１にリグレッションテストを行う旨を入力したタイミングであってよい。そして、テスト実行タイミングになった場合（Ｓ７１のＹＥＳ）、テスト実行部１１２は、例えば、情報受付部１１１が指定を受け付けたテストセットを実行する（Ｓ７２）。具体的に、テスト実行部１１２は、例えば、改修済プログラム及び改修済プログラムの改修に伴って影響が生じる可能性があるプログラムに対するテスト項目を含むテストセットを実行する。すなわち、テスト実行部１１２は、改修済プロセス等に対して測定対象プロセスを動作させる。その後、テストセットの実行が終了した場合（Ｓ７３のＹＥＳ）、テスト実行部１１２は、測定対象プロセスのうち、今回及び過去の実行時間の差が所定時間以上であるプロセスが存在するか否かを判定する（Ｓ７４）。具体的に、テスト実行部１１２は、例えば、過去の実行時（例えば、単体テストにおける実行時を含む）における各プロセスの実行時間を含む実行時間情報（図示しない）を参照するものであってよい。そして、テスト実行部１１２は、測定対象プロセスのうち、今回の実行時間が過去の実行時間よりも所定時間以上遅延しているプロセスが存在するか否かを判定するものであってよい。
【０１２０】
その結果、今回及び過去の実行時間の差が所定時間以上であるプロセスが存在すると判定した場合（Ｓ７４のＹＥＳ）、プロセス特定部１１４は、図１７に示すように、プロセス特定タイミングになるまで待機する（Ｓ８１のＮＯ）。すなわち、測定対象プロセスの実行時間が遅延していると判定した場合、プロセス特定部１１４は、測定対象プロセスの実行時間が遅延した原因を特定するための処理を行う。
【０１２１】
そして、プロセス特定タイミングになった場合（Ｓ８１のＹＥＳ）、プロセス特定部１１４は、情報格納領域１３０に記憶された履歴情報１３２を参照し、Ｓ７４の処理で存在したプロセス（測定対象プロセス）の動作の停止時間と再開時間とを特定する（Ｓ８２）。さらに、プロセス特定部１１４は、Ｓ８２の処理で特定した停止時間と再開時間との時間差を、休止時間として算出する（Ｓ８３）。
【０１２２】
続いて、プロセス特定部１１４は、テスト結果情報１３５を参照し、Ｓ８３の処理で算出した休止時間のうち、過去に存在しなかった休止時間が存在するか否かを判定する（Ｓ８４）。
【０１２３】
すなわち、同一の改修済プログラムに対する改修が複数回行われる場合がある。そのため、プロセス特定部１１４は、Ｓ８３の処理で算出した休止時間に、前回行われたリグレッションテストの際に存在しなかった休止時間が存在するか否かを判定する。その結果、前回行われたリグレッションテストの際に存在しなかった休止時間が存在する場合、プロセス特定部１１４は、存在した休止時間を、改修済プログラムに対する今回の改修によって発生した休止時間であると特定する。これにより、プロセス特定部１１４は、改修済プログラムに対する今回の改修によって発生した休止時間を特定することが可能になる。そして、プロセス特定部１１４は、今回の改修によって発生した休止時間についてのみ、後述する処理を行うことが可能になる。
【０１２４】
そのため、プロセス特定部１１４は、後述するように、リグレッションテストが行われる毎に、Ｓ８３の処理で算出された休止時間を含むテスト結果情報１３５を蓄積する。そして、プロセス特定部１１４は、Ｓ８４の処理において、過去にリグレッションテストが行われる際に算出された休止時間を含むテスト結果情報１３５を参照し、改修済プログラムに対する今回の改修によって発生した休止時間が存在するか否かを判定する。以下、前回のテスト結果情報１３５の具体例について説明を行う。
【０１２５】
［前回のテスト結果情報の具体例］
図２９は、前回のテスト結果情報１３５の具体例を説明する図である。図２９に示すテスト結果情報１３５は、テスト結果情報１３５に含まれる各情報を識別する「項番」と、呼び出し元のプロセスの識別情報が設定される「呼び出し元の識別情報」とを項目として有している。また、図２９に示すテスト結果情報１３５は、Ｓ８３の処理で算出した休止時間が設定される「休止時間」を項目として有している。
【０１２６】
具体的に、図２９に示すテスト結果情報１３５において、「項番」が「１」である情報には、「呼び出し元の識別情報」として「Ａ−１」が設定され、「休止時間」として「１５（秒）」が設定されている。
【０１２７】
ここで、呼び出し元のプロセスがプロセスＡ−２であり、Ｓ８３の処理で算出された休止時間が「２０（秒）」である場合、テスト結果情報１３５には、「呼び出し元の識別情報」に「Ａ−２」が設定され、「休止時間」に「２０（秒）」が設定されている情報が含まれていない。そのため、プロセス特定部１１４は、この場合、Ｓ８４の処理において、Ｓ８３の処理で算出した休止時間のうち、過去に存在しなかった休止時間が存在すると判定する。図２９に含まれる他の情報については説明を省略する。
【０１２８】
図１７に戻り、Ｓ８３の処理で算出した休止時間のうち、過去に存在しなかった休止時間が存在すると判定した場合（Ｓ８４のＹＥＳ）、プロセス特定部１１４は、図１８に示すように、応答待ち時間情報１３４を参照する。そして、プロセス特定部１１４は、応答待ち時間情報１３４において、Ｓ８４の処理で存在すると判定した休止時間に応じた応答待ち時間に対応付けられた呼び出し先のプロセスを特定する（Ｓ９１）。
【０１２９】
具体的に、プロセス特定部１１４は、例えば、図２８で説明した応答待ち時間情報１３４を参照し、「呼び出し元の識別情報」が「Ａ−２」であって、「応答待ち時間」が「２０（秒）」である情報を特定する。そして、プロセス特定部１１４は、特定した情報の「呼び出し先の識別情報」に設定された情報である「Ｂ−１」を、Ｓ８３の処理で特定した休止時間に応じた応答待ち時間に対応付けられた呼び出し先のプロセスとして特定する。
【０１３０】
これにより、プロセス特定部１１４は、測定対象プロセスの動作時において休止時間が発生した場合、その休止時間の発生の原因が、呼び出し先のプロセスに起因したタイムアウトであるか否かについて特定することが可能になる。また、プロセス特定部１１４は、測定対象プロセスにおける休止時間の発生の原因がタイムアウトである場合に、タイムアウトの原因となった呼び出し先のプロセスを特定することが可能になる。
【０１３１】
なお、Ｓ８４の処理において、情報格納領域１３０にテスト結果情報１３５がまだ記憶されていない場合、プロセス特定部１１４は、Ｓ８３の処理で算出された全ての休止時間について、Ｓ９１以降の処理を実行するものであってよい。
【０１３２】
その後、Ｓ８３の処理で算出した休止時間と、Ｓ９１の処理で特定した呼び出し先のプロセスの識別情報とを対応付けた情報を、今回のテスト結果情報１３５として情報格納領域１３０に記憶する（Ｓ９２）。以下、今回のテスト結果情報１３５の具体例について説明を行う。
【０１３３】
［今回のテスト結果情報の具体例］
図３０は、今回のテスト結果情報１３５の具体例を説明する図である。図３０に示すテスト結果情報１３５は、図２９で説明したテスト結果情報１３５と同じ項目を有している。具体的に、プロセス特定部１１４は、図３０に示すように、図２９で説明したテスト結果情報１３５に対し、「呼び出し元の識別情報」が「Ａ−２」であり、「休止時間」が「２０（秒）」である情報（「項番」が「４」である情報）を追加して設定する。図３０に含まれる他の情報については説明を省略する。
【０１３４】
これにより、プロセス特定部１１４は、改修済プログラムに対する改修が再度行われる場合であっても、図３０に示すテスト結果情報１３５を参照することにより、再度行われた改修に伴って発生した休止時間を特定することが可能になる。そのため、事業者は、この場合、再度行われた改修に伴って発生した休止時間についての解析のみを行うことが可能になる。
【０１３５】
図１８に戻り、テスト実行部１１２は、Ｓ７２の処理で実行したテストセットを再度実行する（Ｓ９３）。そして、ダンプ取得部１１９は、Ｓ９１の処理で特定した呼び出し先のプロセスの起動中におけるメモリダンプを取得する（Ｓ９４）。
【０１３６】
すなわち、Ｓ８２の処理において、測定対象プロセスの動作の停止時間と再開時間が算出されている。そのため、ダンプ取得部１１９は、Ｓ８２の処理において算出された停止時間と再開時間とを参照することで、例えば、測定対象プロセスにおいてタイムアウトが発生する直前におけるメモリダンプを作成することが可能になる。これにより、事業者は、異常が発生したと考えられる時間帯における各プロセスの動作状態の解析を行うことが可能になる。
【０１３７】
なお、Ｓ７４の処理において、今回及び過去の実行時間の差が所定時間以上であるプロセスが存在すると判定しないと場合（Ｓ７４のＮＯ）、プロセス特定部１１４は、テスト実行処理を終了する。すなわち、測定対象プロセスの実行時間が遅延していないと判定した場合とは、改修済プログラムに対するリグレッションテストの結果、異常が検知されなかった場合である。そのため、プロセス特定部１１４は、この場合、さらなる処理を行う必要がない。
【０１３８】
また、Ｓ８４の処理において、Ｓ８３の処理で算出した休止時間のうち、過去に存在しなかった休止時間が存在しないと判定した場合についても同様に（Ｓ８４のＮＯ）、プロセス特定部１１４は、テスト実行処理を終了する。
【０１３９】
このように、本実施の形態における情報処理装置１は、例えば、測定対象プロセスの起動時における休止時間を算出する。具体的に、情報処理装置１は、起動中の各プロセスの動作状態についての履歴情報を、各プロセスに対応付けて記憶する記憶部を参照し、測定対象プロセスに対応する履歴情報に基づき、測定対象プロセスの休止時間を算出する。
【０１４０】
その後、情報処理装置１は、呼び出し元のプロセスごとに、呼び出し先のプロセスの識別情報を、呼び出し先のプロセスの応答待ちに起因して呼び出し元のプロセスにおいてタイムアウトが生じるまでの応答待ち時間に対応付けて記憶する記憶部を参照する。そして、情報処理装置１は、算出した休止時間に応じた応答待ち時間に対応付けられた呼び出し先のプロセスを特定し、特定した呼び出し先のプロセスの識別情報を出力する。
【０１４１】
これにより、情報処理装置１は、測定対象プロセスの起動時において休止時間が発生した場合、その休止時間の発生の原因が、呼び出し先のプロセスに起因したタイムアウトであるか否かについて特定することが可能になる。また、情報処理装置１は、特定のプロセスにおける休止時間の発生の原因がタイムアウトである場合に、タイムアウトの原因となった呼び出し先のプロセスを特定することが可能になる。そのため、情報処理装置１は、改修済プログラムにおける既存機能の性能劣化が発生した場合、発生した性能劣化の原因を特定することが可能になる。
【０１４２】
以上の実施の形態をまとめると、以下の付記のとおりである。
【０１４３】
（付記１）
コンピュータに、
起動中の各プロセスの動作状態についての履歴情報を、各プロセスに対応付けて記憶する記憶部を参照し、特定のプロセスに対応する履歴情報に基づき、前記特定のプロセスの休止時間を算出し、
呼び出し元のプロセスごとに、呼び出し先のプロセスの識別情報を、該呼び出し先のプロセスの応答待ちに起因して前記呼び出し元のプロセスにおいてタイムアウトが生じるまでの応答待ち時間に対応付けて記憶する記憶部を参照して、算出した前記休止時間に応じた前記応答待ち時間に対応付けられた前記呼び出し先のプロセスを特定し、
特定した前記呼び出し先のプロセスの識別情報を出力する、
処理を実行させることを特徴とするテスト支援プログラム。
【０１４４】
（付記２）
付記１において、さらに、
前記休止時間を算出する処理の前に、各プロセスに対応する前記履歴情報を取得して記憶部に記憶する、
ことを特徴とするテスト支援プログラム。
【０１４５】
（付記３）
付記１において、
前記履歴情報は、各プロセスによる処理の停止時間と再開時間とを含み、
前記休止時間を算出する処理では、前記特定のプロセスに対応する前記停止時間と前記再開時間との時間差を、前記休止時間として算出する、
ことを特徴とするテスト支援プログラム。
【０１４６】
（付記４）
付記１において、さらに、
前記休止時間を算出する処理の前に、前記呼び出し元のプロセスをそれぞれ起動し、
起動中の前記呼び出し元のプロセスによって前記呼び出し先のプロセスに対する処理要求が行われたことに応じて、前記呼び出し先のプロセスが前記呼び出し元のプロセスに対して前記処理要求に対する処理結果を送信する前に、前記呼び出し先のプロセスによる処理を停止し、
前記処理要求が行われたことに伴う前記呼び出し元のプロセスによる処理の停止時間と、前記処理結果の送信待ちに起因する前記呼び出し元のプロセスにおけるタイムアウトの発生時間との時間差を、前記応答待ち時間として算出する、
ことを特徴とするテスト支援プログラム。
【０１４７】
（付記５）
付記１において、さらに、
前記識別情報を出力する処理の後、前記特定のプロセスを再度起動し、
前記タイムアウトが生じる際の前記処理要求が行われた前記呼び出し先のプロセスのメモリダンプを取得する、
ことを特徴とするテスト支援プログラム。
【０１４８】
（付記６）
付記１において、
前記呼び出し先のプロセスを特定する処理では、特定した前記呼び出し先のプロセスの識別情報に、前記休止時間に応じた前記応答待ち時間を対応付けて記憶部に記憶し、さらに、
前記呼び出し先のプロセスを特定する処理の後、前記特定のプロセスの休止時間を再度算出し、
再度算出した前記休止時間に応じた前記応答待ち時間に対応付けられた前記呼び出し先のプロセスを再度特定し、
再度特定した前記呼び出し先のプロセスの識別情報が、再度算出した前記休止時間に応じた前記応答待ち時間に対応付けられて記憶部に記憶されていない場合、再度特定した前記呼び出し先のプロセスの識別情報を出力する、
処理をコンピュータに実行させることを特徴とするテストプログラム。
【０１４９】
（付記７）
起動中の各プロセスの動作状態についての履歴情報を、各プロセスに対応付けて記憶する記憶部を参照し、特定のプロセスに対応する履歴情報に基づき、前記特定のプロセスの休止時間を算出する休止時間算出部と、
呼び出し元のプロセスごとに、呼び出し先のプロセスの識別情報を、該呼び出し先のプロセスの応答待ちに起因して前記呼び出し元のプロセスにおいてタイムアウトが生じるまでの応答待ち時間に対応付けて記憶する記憶部を参照して、算出した前記休止時間に応じた前記応答待ち時間に対応付けられた前記呼び出し先のプロセスを特定するプロセス特定部と、
特定した前記呼び出し先のプロセスの識別情報を出力する情報出力部と、を有する、
ことを特徴とするテスト支援装置。
【０１５０】
（付記８）
付記７において、
前記履歴情報は、各プロセスによる処理の停止時間と再開時間とを含み、
前記休止時間算出部は、前記特定のプロセスに対応する前記停止時間と前記再開時間との時間差を、前記休止時間として算出する、
ことを特徴とするテスト支援装置。
【０１５１】
（付記９）
起動中の各プロセスの動作状態についての履歴情報を、各プロセスに対応付けて記憶する記憶部を参照し、特定のプロセスに対応する履歴情報に基づき、前記特定のプロセスの休止時間を算出し、
呼び出し元のプロセスごとに、呼び出し先のプロセスの識別情報を、該呼び出し先のプロセスの応答待ちに起因して前記呼び出し元のプロセスにおいてタイムアウトが生じるまでの応答待ち時間に対応付けて記憶する記憶部を参照して、算出した前記休止時間に応じた前記応答待ち時間に対応付けられた前記呼び出し先のプロセスを特定し、
特定した前記呼び出し先のプロセスの識別情報を出力する、
ことを特徴とするテスト支援方法。
【０１５２】
（付記１０）
付記９において、
前記履歴情報は、各プロセスによる処理の停止時間と再開時間とを含み、
前記休止時間を算出する処理では、前記特定のプロセスに対応する前記停止時間と前記再開時間との時間差を、前記休止時間として算出する、
ことを特徴とするテスト支援方法。
【符号の説明】
【０１５３】
１：情報処理装置            ２：記憶装置
３：事業者端末              ＮＷ：ネットワーク
【図１】
0006659954.tif 000002
【図２】
0006659954.tif 000003
【図３】
0006659954.tif 000004
【図４】
0006659954.tif 000005
【図５】
0006659954.tif 000006
【図６】
0006659954.tif 000007
【図７】
0006659954.tif 000008
【図８】
0006659954.tif 000009
【図９】
0006659954.tif 000010
【図１０】
0006659954.tif 000011
【図１１】
0006659954.tif 000012
【図１２】
0006659954.tif 000013
【図１３】
0006659954.tif 000014
【図１４】
0006659954.tif 000015
【図１５】
0006659954.tif 000016
【図１６】
0006659954.tif 000017
【図１７】
0006659954.tif 000018
【図１８】
0006659954.tif 000019
【図１９】
0006659954.tif 000020
【図２０】
0006659954.tif 000021
【図２１】
0006659954.tif 000022
【図２２】
0006659954.tif 000023
【図２３】
0006659954.tif 000024
【図２４】
0006659954.tif 000025
【図２５】
0006659954.tif 000026
【図２６】
0006659954.tif 000027
【図２７】
0006659954.tif 000028
【図２８】
0006659954.tif 000029
【図２９】
0006659954.tif 000030
【図３０】
0006659954.tif 000031