(57)【要約】【課題】障害の再現を効率的に行うことを可能とする動作分析プログラム及び動作分析方法を提供する。【解決手段】複数のプログラムの実行タイミングを定義した実行情報を記憶部から取得し、取得した実行情報に従って、複数のプログラムに対して実行開始、実行停止及び実行再開を指示し、実行開始、実行停止及び実行再開が行われた際の複数のプログラムの動作に関する動作ログを取得し、取得した動作ログに基づいて、複数のプログラムに含まれる各プログラムの動作状況を示す情報を所定時間毎に関連付けた関連情報を生成して記憶部に記憶する。【選択図】図５
2020017116.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムの実行タイミングを定義した実行情報を記憶部から取得し、
取得した前記実行情報に従って、前記複数のプログラムに対して実行開始、実行停止及び実行再開を指示し、
前記実行開始、前記実行停止及び前記実行再開が行われた際の前記複数のプログラムの動作に関する動作ログを取得し、
取得した前記動作ログに基づいて、前記複数のプログラムに含まれる各プログラムの動作状況を示す情報を所定時間毎に関連付けた関連情報を生成して記憶部に記憶する、
処理をコンピュータに実行させることを特徴とする動作分析プログラム。
【請求項２】
請求項１において、
前記動作状況を示す情報は、各プログラムが実行中であるか否かを示す情報を含む、
ことを特徴とする動作分析プログラム。
【請求項３】
請求項２において、
前記動作状況を示す情報は、実行中の処理の内容を示す情報を含む、
ことを特徴とする動作分析プログラム。
【請求項４】
請求項１において、
前記指示する処理では、前記実行情報を前記複数のプログラムのそれぞれに対して送信することにより、前記複数のプログラムに対して前記実行開始、前記実行停止及び前記実行再開の指示を行う、
ことを特徴とする動作分析プログラム。
【請求項５】
請求項１において、
前記実行情報は、前記複数のプログラムのそれぞれの優先度を示す情報を含み、さらに、
前記優先度の高いプログラムの実行時間が前記優先度の低いプログラムの実行時間よりも長くなるように、単位時間毎に、前記複数のプログラムのうちのいずれかの実行を許可する、
処理をコンピュータに実行させることを特徴とする動作分析プログラム。
【請求項６】
請求項２において、さらに、
前記実行情報を参照し、前記複数のプログラム毎に、前記実行情報における前記実行開始から前記実行停止までの第１時間と、前記実行情報における前記実行停止から前記実行再開までの第２時間とを特定し、
前記関連情報を参照し、前記複数のプログラム毎に、前記第１時間において各プログラムが実行中であったことを前記動作状況が示しているか否かを判定し、かつ、前記第２時間において各プログラムが停止中であったことを前記動作状況が示しているか否かを判定し、
前記第１時間において各プログラムが実行中であったことを前記動作状況が示していないプログラムが存在すると判定した場合、または、前記第２時間において各プログラムが停止中であったことを前記動作状況が示していないプログラムが存在すると判定した場合、存在すると判定した前記プログラムが前記実行情報に従って動作していないことを示す情報を出力する、
処理をコンピュータに実行させることを特徴とする動作分析プログラム。
【請求項７】
複数のプログラムの実行タイミングを定義した実行情報を記憶部から取得し、
取得した前記実行情報に従って、前記複数のプログラムに対して実行開始、実行停止及び実行再開を指示し、
前記実行開始、前記実行停止及び前記実行再開が行われた際の前記複数のプログラムの動作に関する動作ログを取得し、
取得した前記動作ログに基づいて、前記複数のプログラムに含まれる各プログラムの動作状況を示す情報を所定時間毎に関連付けた関連情報を生成して記憶部に記憶する、
ことを特徴とする動作分析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動作分析プログラム及び動作分析方法に関する。
【背景技術】
【０００２】
例えば、利用者にサービスを提供する事業者（以下、単に事業者とも呼ぶ）は、各種サービスの提供を行うための情報処理システムを構築して稼働させる。そして、例えば、稼働中の情報処理システムにおいて障害が発生した場合、事業者は、発生した障害の再現を行う。これにより、事業者は、障害の発生原因の調査を行うことが可能になり、発生した障害の再発防止策の検討等を行うことが可能になる（例えば、特許文献１乃至３参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−０８４１６９号公報
【特許文献２】特開平８−１７９９５８号公報
【特許文献３】特開２０１３−０２５３４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、上記のように情報処理システムにおいて発生する障害には、例えば、複数のプログラムの実行タイミングが所定の条件を満たした場合に発生する障害が含まれる。そのため、このような障害の再現を行う場合、事業者は、実行タイミングを変化させながら各プログラムを繰り返し実行させる必要がある。したがって、事業者は、発生した障害の再現を効率的に行うことができない場合がある。
【０００５】
そこで、一つの側面では、本発明は、障害の再現を効率的に行うことを可能とする動作分析プログラム及び動作分析方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
実施の形態の一態様では、複数のプログラムの実行タイミングを定義した実行情報を記憶部から取得し、取得した前記実行情報に従って、前記複数のプログラムに対して実行開始、実行停止及び実行再開を指示し、前記実行開始、前記実行停止及び前記実行再開が行われた際の前記複数のプログラムの動作に関する動作ログを取得し、取得した前記動作ログに基づいて、前記複数のプログラムに含まれる各プログラムの動作状況を示す情報を所定時間毎に関連付けた関連情報を生成して記憶部に記憶する、処理をコンピュータに実行させる。
【発明の効果】
【０００７】
一つの側面によれば、障害の再現を効率的に行うことを可能とする。
【図面の簡単な説明】
【０００８】
【図１】図１は、情報処理システム１０の構成を示す図である。
【図２】図２は、情報処理装置１のハードウエア構成を説明する図である。
【図３】図３は、情報処理装置１の機能のブロック図である。
【図４】図４は、情報処理装置１の機能のブロック図である。
【図５】図５は、第１の実施の形態における動作分析処理の概略を説明するフローチャート図である。
【図６】図６は、第１の実施の形態における動作分析処理の概略を説明する図である。
【図７】図７は、第１の実施の形態における動作分析処理の概略を説明する図である。
【図８】図８は、第１の実施の形態における動作分析処理の概略を説明する図である。
【図９】図９は、第１の実施の形態における動作分析処理の詳細を説明するフローチャート図である。
【図１０】図１０は、第１の実施の形態における動作分析処理の詳細を説明するフローチャート図である。
【図１１】図１１は、第１の実施の形態における動作分析処理の詳細を説明するフローチャート図である。
【図１２】図１２は、第１の実施の形態における動作分析処理の詳細を説明するフローチャート図である。
【図１３】図１３は、第１の実施の形態における動作分析処理の詳細を説明するフローチャート図である。
【図１４】図１４は、第１の実施の形態における動作分析処理の詳細を説明するフローチャート図である。
【図１５】図１５は、実行情報１３１の構文の具体例について説明する図である。
【図１６】図１６は、実行情報１３１の具体例について説明する図である。
【図１７】図１７は、テストプログラムＰＧ１、ＰＧ２及びＰＧ３が実行する処理の具体例について説明する図である。
【図１８】図１８は、動作ログ１３２の具体例について説明する図である。
【図１９】図１９は、関連情報１３３の具体例について説明する図である。
【図２０】図２０は、動作分析処理の具体例について説明する図である。
【図２１】図２１は、動作分析処理の具体例について説明する図である。
【図２２】図２２は、動作分析処理の具体例について説明する図である。
【図２３】図２３は、動作分析処理の具体例について説明する図である。
【図２４】図２４は、動作分析処理の具体例について説明する図である。
【図２５】図２５は、動作分析処理の具体例について説明する図である。
【図２６】図２６は、動作分析処理の具体例について説明する図である。
【図２７】図２７は、動作分析処理の具体例について説明する図である。
【図２８】図２８は、動作分析処理の具体例について説明する図である。
【発明を実施するための形態】
【０００９】
［情報処理システムの構成］
初めに、情報処理システム１０の構成について説明を行う。図１は、情報処理システム１０の構成を示す図である。具体的に、図１に示す情報処理システム１０は、情報処理装置１と、操作端末３とを有する。
【００１０】
操作端末３は、例えば、事業者が使用するＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）であり、事業者によって入力された情報を情報処理装置１に対して送信する。
【００１１】
情報処理装置１は、例えば、１以上の物理マシンであり、利用者に対してサービスを提供するための各種処理を実行する。具体的に、情報処理装置１では、例えば、複数のプログラムがＣＰＵ（図示しない）と有機的に協働することによって、利用者に対するサービスの提供を可能とする。以下、情報処理装置では、図１に示すように、利用者にサービスを提供する処理を行うプログラムとしてプログラムＰＧ１、ＰＧ２及びＰＧ３がそれぞれ動作しているものとして説明を行う。また、以下、プログラムＰＧ１、ＰＧ２及びＰＧ３を総称してプログラムＰＧとも呼ぶ。
【００１２】
そして、例えば、情報処理装置１において障害が発生した場合、事業者は、障害の発生原因の調査等を行うために、発生した障害の再現を行う。
【００１３】
ここで、情報処理装置１において発生する障害には、例えば、各プログラムＰＧの実行タイミングが所定の条件を満たした場合に発生する障害が含まれる。そのため、このような障害の再現を行う場合、事業者は、実行タイミングを変化させながら各プログラムＰＧを繰り返し実行させる必要がある。具体的に、事業者は、例えば、各プログラムＰＧに対して入力するデータ量を変化させながら各プログラムＰＧを複数回実行し、発生した障害の再現を図る必要がある。
【００１４】
したがって、事業者は、各プログラムＰＧにおける処理内容等によって、発生した障害の再現を効率的に行うことができない場合がある。
【００１５】
そこで、本実施の形態における情報処理装置１は、複数のプログラムＰＧの実行タイミングを定義した実行情報（例えば、事業者によって予め生成された情報）を記憶部から取得する。そして、情報処理装置１は、取得した実行情報に従って、複数のプログラムＰＧに対して実行開始、実行停止（実行待機）及び実行再開を指示する。
【００１６】
その後、情報処理装置１は、実行開始、実行停止及び実行再開が行われた際の複数のプログラムＰＧの動作に関する動作ログを取得する。そして、情報処理装置１は、取得した動作ログに基づいて、複数のプログラムＰＧに含まれる各プログラムＰＧの動作状況を示す情報を所定時間毎に関連付けた関連情報を生成して記憶部に記憶する。
【００１７】
すなわち、事業者は、複数のプログラムＰＧに行わせる動作を同じ時系列で定義した実行情報を予め生成する。そして、情報処理装置１は、実行情報に従って、各プログラムＰＧに所定の動作（例えば、実行開始、実行停止及び実行再開）を行わせる。その後、情報処理装置１は、各プログラムＰＧが実行情報に従って動作したことに伴って出力された動作ログから、同じタイミングにおいて行われた各プログラムＰＧの動作状況を関連付けた関連情報を生成する。
【００１８】
これにより、事業者は、関連情報を参照することで、同じタイミングにおける各プログラムＰＧの動作を比較することが可能になり、各プログラムＰＧに含まれる各処理が実行されたタイミングの前後関係を特定することが可能になる。そのため、事業者は、例えば、障害の発生原因を容易に特定することが可能になり、障害の再現を効率的に行うことが可能になる。
【００１９】
［情報処理システムのハードウエア構成］
次に、情報処理システム１０のハードウエア構成について説明する。図２は、情報処理装置１のハードウエア構成を説明する図である。
【００２０】
情報処理装置１は、図２に示すように、プロセッサであるＣＰＵ１０１と、メモリ１０２と、外部インターフェース（Ｉ／Ｏユニット）１０３と、記憶媒体１０４とを有する。各部は、バス１０５を介して互いに接続される。
【００２１】
記憶媒体１０４は、例えば、各プログラムＰＧに含まれる各処理の実行タイミングを分析する処理（以下、動作分析処理とも呼ぶ）を行うためのプログラム１００を記憶するプログラム格納領域（図示しない）を有する。また、記憶媒体１０４は、例えば、動作分析処理を行う際に用いられる情報を記憶する記憶部１３０（以下、情報格納領域１３０とも呼ぶ）を有する。なお、記憶媒体１０４は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）であってよい。
【００２２】
ＣＰＵ１０１は、記憶媒体１０４からメモリ１０２にロードされたプログラム１００を実行して動作分析処理を行う。
【００２３】
また、外部インターフェース１０３は、例えば、操作端末３と通信を行う。
【００２４】
［情報処理システムの機能］
次に、情報処理システム１０の機能について説明を行う。図３は、情報処理装置１の機能のブロック図である。なお、以下、図１で説明したプログラムＰＧ１、ＰＧ２及びＰＧ３をテストプログラムＰＧ１、ＰＧ２及びＰＧ３とも呼ぶ。また、以下、テストプログラムＰＧ１、ＰＧ２及びＰＧ３を総称してテストプログラムＰＧとも呼ぶ。
【００２５】
情報処理装置１は、図３に示すように、ＣＰＵ１０１やメモリ１０２等のハードウエアとプログラム１００とが有機的に協働することにより、情報取得部１１１と、情報解析部１１２と、プログラム生成部１１３と、実行許可部１１４と、動作指示部１１５と、ログ取得部１１６と、情報生成部１１７と、情報出力部１１８とを含む各種機能を実現する。以下、情報取得部１１１、情報解析部１１２、プログラム生成部１１３、実行許可部１１４、動作指示部１１５、ログ取得部１１６、情報生成部１１７及び情報出力部１１８を総称して主制御部１１０とも呼ぶ。
【００２６】
また、情報処理装置１は、図３に示すように、実行情報１３１と、動作ログ１３２と、関連情報１３３とを情報格納領域１３０に記憶する。
【００２７】
情報取得部１１１は、複数のテストプログラムＰＧの実行タイミングを定義した実行情報１３１を情報格納領域１３０から取得する。なお、実行情報１３１は、事業者によって予め生成される情報であってよい。
【００２８】
情報解析部１１２は、情報取得部１１１が取得した実行情報１３１の解析を行う。具体的に、情報解析部１１２は、情報取得部１１１が取得した実行情報１３１を、プログラム生成部１１３や実行許可部１１４等が認識可能な状態に変換する。
【００２９】
プログラム生成部１１３は、後述する実行制御部１２０を生成する。具体的に、プログラム生成部１１３は、情報解析部１１２が解析を行った実行情報１３１に従って、必要な数（動作させるテストプログラムＰＧの数）に対応する数の実行制御部１２０の生成を行う。
【００３０】
また、プログラム生成部１１３は、例えば、各実行制御部１２０が保持する各種情報を参照することによって、テストプログラムＰＧの実行終了を検知する。そして、プログラム生成部１１３は、テストプログラムＰＧの実行終了を検知した場合、そのテストプログラムＰＧの制御を行う実行制御部１２０を停止してリソースの解放を行う。
【００３１】
実行許可部１１４は、情報解析部１１２が解析を行った実行情報１３１に従って、優先度の高いテストプログラムＰＧの実行時間が優先度の低いテストプログラムＰＧの実行時間よりも長くなるように、単位時間毎に、複数のテストプログラムＰＧのうちのいずれかの実行を許可する。すなわち、実行許可部１１４は、情報処理装置１において動作するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ：図示しない）に代わって、各テストプログラムＰＧに対するＣＰＵ１０１の実行権の付与を行う。
【００３２】
動作指示部１１５は、情報解析部１１２が解析を行った実行情報１３１に従って、複数のテストプログラムＰＧのそれぞれに対して各種動作（実行開始、実行停止及び実行再開を含む各種動作）を指示する。具体的に、動作指示部１１５は、情報解析部１１２が解析を行った実行情報１３１を、プログラム生成部１１３が生成した実行制御部１２０に対して送信する。
【００３３】
また、動作指示部１１５は、例えば、各実行制御部１２０が保持する各種情報を参照することによって、各テストプログラムＰＧの動作状況を監視する。具体的に、動作指示部１１５は、例えば、各テストプログラムＰＧの実行中フラグやループカウンタ等を参照することにより、各テストプログラムＰＧの動作状況の監視を行う。そして、動作指示部１１５は、各テストプログラムＰＧの動作状況の監視結果に応じて、各実行制御部１２０に対して各テストプログラムＰＧの実行の中断や再開を指示する。
【００３４】
ログ取得部１１６は、複数のテストプログラムＰＧの動作に関する情報を動作ログ１３２として取得する。そして、ログ取得部１１６は、例えば、取得した動作ログ１３２を情報格納領域１３０に記憶する。
【００３５】
情報生成部１１７は、ログ取得部１１６が取得した動作ログ１３２に基づいて、複数のプログラムＰＧに含まれる各プログラムＰＧの動作状況を示す情報を所定時間毎に関連付けた関連情報１３３を生成する。そして、情報生成部１１７は、例えば、生成した関連情報１３３を情報格納領域１３０に記憶する。
【００３６】
情報出力部１１８は、情報生成部１１７が生成した関連情報１３３や、複数のテストプログラムＰＧが実行情報１３１の内容に従って動作したか否かを示す情報を出力する。
【００３７】
また、情報処理装置１は、図４に示すように、ＣＰＵ１０１やメモリ１０２等のハードウエアとプログラム１００とが有機的に協働することにより、プログラム実行部１２１と、指示受付部１２２と、指示実行部１２３とを含む各種機能を実現する。以下、プログラム実行部１２１、指示受付部１２２及び指示実行部１２３を総称して実行制御部１２０とも呼ぶ。
【００３８】
プログラム実行部１２１は、各実行制御部１２０に対応するテストプログラムＰＧの実行を開始する。
【００３９】
指示受付部１２２は、主制御部１１０から送信された実行情報１３１を受け付ける。
【００４０】
指示実行部１２３は、指示受付部１２２が受け付けた実行情報１３１に従って、テストプログラムＰＧに対して指示を行う。
【００４１】
［第１の実施の形態の概略］
次に、第１の実施の形態の概略について説明する。図５は、第１の実施の形態における動作分析処理の概略を説明するフローチャート図である。また、図６から図８は、第１の実施の形態における動作分析処理の概略を説明する図である。
【００４２】
情報処理装置１は、図５に示すように、動作分析タイミングになるまで待機する（Ｓ１のＮＯ）。動作分析タイミングは、例えば、事業者が障害の発生原因の調査を開始する旨の入力を情報処理装置１に対して行ったタイミングであってよい。
【００４３】
そして、動作分析タイミングになった場合（Ｓ１のＹＥＳ）、情報処理装置１は、複数のテストプログラムＰＧの実行タイミングを定義した実行情報１３１を情報格納領域１３０から取得する（Ｓ２）。実行情報１３１の具体例については後述する。
【００４４】
続いて、情報処理装置１は、Ｓ２の処理で取得した実行情報１３１に従って、複数のテストプログラムＰＧに対して実行開始、実行停止及び実行再開を指示する（Ｓ３）。
【００４５】
具体的に、主制御部１１０は、例えば、図６に示すように、実行情報１３１に従って、テストプログラムＰＧ１を制御する実行制御部１２０ａ、テストプログラムＰＧ２を制御する実行制御部１２０ｂ及びテストプログラムＰＧ３を制御する実行制御部１２０ｃのそれぞれに対し、各テストプログラムＰＧに実行開始、実行停止及び実行再開を行わせる旨の指示を行う（Ｓ２、Ｓ３）。
【００４６】
その後、情報処理装置１は、Ｓ３の処理で指示を行った実行開始、実行停止及び実行再開が行われた際の複数のテストプログラムＰＧの動作に関する情報を動作ログ１３２として取得する（Ｓ４）。
【００４７】
具体的に、主制御部１１０は、図７に示すように、例えば、テストプログラムＰＧ１、ＰＧ２及びＰＧ３のそれぞれの動作ログ１３２を取得する。そして、主制御部１１０は、例えば、取得した動作ログ１３２を情報格納領域１３０に記憶する。
【００４８】
そして、情報処理装置１は、Ｓ４の処理で取得した動作ログ１３２に基づいて、複数のプログラムＰＧに含まれる各プログラムＰＧの動作状況を示す情報を所定時間毎に関連付けた関連情報１３３を生成して情報格納領域１３０に記憶する（Ｓ５）。関連情報１３３の具体例については後述する。
【００４９】
具体的に、主制御部１１０は、図８に示すように、例えば、情報格納領域１３０に記憶した動作ログ１３２を参照し、テストプログラムＰＧ１、ＰＧ２及びＰＧ３の動作状況に対応する関連情報１３３を生成する。そして、主制御部１１０は、例えば、生成した関連情報１３３を情報格納領域１３０に記憶する。
【００５０】
すなわち、事業者は、複数のプログラムＰＧに行わせる動作を同じ時系列で定義した実行情報１３１を予め生成する。そして、情報処理装置１は、実行情報１３１に従って、各プログラムＰＧに所定の動作（例えば、実行開始、実行停止及び実行再開）を行わせる。その後、情報処理装置１は、各プログラムＰＧが実行情報１３１に従って動作したことに伴って出力された動作ログ１３２から、同じタイミングにおいて行われた各プログラムＰＧの動作状況を関連付けた関連情報１３３を生成する。
【００５１】
これにより、事業者は、関連情報１３３を参照することで、同じタイミングにおける各プログラムＰＧの動作を比較することが可能になり、各プログラムＰＧに含まれる各処理が実行されたタイミングの前後関係を特定することが可能になる。そのため、事業者は、例えば、障害の発生原因を容易に特定することが可能になり、障害の再現を効率的に行うことが可能になる。
【００５２】
［第１の実施の形態の詳細］
次に、第１の実施の形態の詳細について説明する。図９から図１４は、第１の実施の形態における動作分析処理の詳細を説明するフローチャート図である。また、図１５から図２８は、第１の実施の形態における動作分析処理の詳細を説明する図である。
【００５３】
［テスト実行処理］
初めに、動作分析処理のうち、テストプログラムＰＧの実行を行う処理（以下、テスト実行処理とも呼ぶ）について説明を行う。図９及び図１０は、テスト実行処理について説明するフローチャート図である。
【００５４】
なお、以下、図６等で説明したテストプログラムＰＧ１及びＰＧ２がプロセス空間Ａにおいて実行され、テストプログラムＰＧ３がプロセス空間Ｂにおいて実行されるものとして説明を行う。
【００５５】
主制御部１１０の情報取得部１１１は、図９に示すように、動作分析タイミングになるまで待機する（Ｓ１１のＮＯ）。
【００５６】
そして、動作分析タイミングになった場合（Ｓ１１のＹＥＳ）、情報取得部１１１は、複数のテストプログラムＰＧの実行タイミングを定義した実行情報１３１を情報格納領域１３０から取得する（Ｓ１２）。以下、実行情報１３１の具体例について説明する。
【００５７】
［実行情報の構文の具体例］
初めに、実行情報１３１の構文の具体例について説明を行う。図１５は、実行情報１３１の構文の具体例について説明する図である。なお、以下、実行情報１３１がＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）によって記述されているものとして説明を行う。
【００５８】
図１５に示す実行情報１３１には、テストプログラム定義（以下、テストプログラム定義情報１３１ａとも呼ぶ）と、優先度定義（優先度定義情報１３１ｂとも呼ぶ）と、シナリオ定義（シナリオ定義情報１３１ｃとも呼ぶ）とが含まれている。
【００５９】
図１５に示すテストプログラム定義情報１３１ａには、「テストプログラム名」として、実行制御部１２０によって実行されるテストプログラムＰＧの名称が記述され、「空間識別名」として、テストプログラムＰＧが実行されるプロセス空間の名称が記述される。なお、「テストプログラム名」に名称が記述されているテストプログラムＰＧが動的に生成するプログラムについてもテストプログラムＰＧとする場合、テストプログラム定義情報１３１ａには、図１５に示すように、「＜ｄｅｆ／＞」が記述される。
【００６０】
また、図１５に示す優先度定義情報１３１ｂには、「空間識別名」として、テストプログラムＰＧが実行されるプロセス空間の識別名が記述され、「テストプログラムの優先度定義」として、「空間識別名」に名称が設定されたプロセス空間において実行される各テストプログラムＰＧの優先度（実行優先度）が記述される。
【００６１】
さらに、図１５に示すシナリオ定義情報１３１ｃには、例えば、各テストプログラムＰＧに対して処理の同期を指示する同期指示と、各テストプログラムＰＧに対して処理の待機を指示する待機指示と、各プログラムＰＧに対して処理の中断を指示する中断指示と、各プログラムＰＧに対して処理の再開を指示する再開指示とが記述される。
【００６２】
具体的に、図１５に示す同期指示には、「ラベル名」として、同期指示に対応するラベルの名称が記述され、「テストプログラム名１＝アドレス」及び「テストプログラム名２＝アドレス」等として、各テストプログラムＰＧにおいて同期が行われる処理のアドレスがそれぞれ記述される。
【００６３】
また、図１５に示す待機指示には、「ラベル名」として、待機指示に対応するラベルの名称が記述され、「テストプログラム名＝アドレス」として、テストプログラムＰＧにおいて待機が行われる処理のアドレスが記述される。
【００６４】
また、図１５に示す中断指示には、「テストプログラム名＝アドレス」として、テストプログラムＰＧにおいて中断が行われる処理のアドレスが記述され、「中断条件」として、テストプログラムＰＧにおいて中断を行う条件が記述される。
【００６５】
さらに、図１５に示す再開指示には、「ラベル名」として、再開指示に対応するラベルの名称が記述される。
【００６６】
［実行情報の具体例］
次に、実行情報１３１の具体例について説明を行う。図１６は、実行情報１３１の具体例について説明する図である。
【００６７】
図１６に示す実行情報１３１に含まれるテストプログラム定義情報１３１ａには、テストプログラムＰＧ１がプロセス空間Ａで実行されることを示す記述と、テストプログラムＰＧ２がプロセス空間Ａで実行されることを示す記述と、テストプログラムＰＧ３がプロセス空間Ｂで実行されることを示す記述とが含まれている。
【００６８】
また、図１６に示す実行情報１３１に含まれる優先度定義情報１３１ｂには、プロセス空間Ａで実行されるテストプログラムＰＧの優先度が１であることを示す記述と、プロセス空間Ｂで実行されるテストプログラムＰＧの優先度が２であることを示す記述とが含まれている。
【００６９】
また、図１６に示す実行情報１３１に含まれるシナリオ定義情報１３１ｃには、同期指示として、テストプログラムＰＧ１におけるアドレスｘ１２０の処理、テストプログラムＰＧ２におけるアドレスｘ２４０の処理、及び、テストプログラムＰＧ３におけるアドレスｘ１６０の処理の実行タイミングの同期（ラベルの名称がＬ１である同期）を行うことを示す記述が含まれている。
【００７０】
また、図１６に示す実行情報１３１に含まれるシナリオ定義情報１３１ｃには、再開指示として、ラベルの名称がＬ１である同期に対応する同期指示によって待機中の各テストプログラムＰＧの実行を再開することを示す記述が含まれている。
【００７１】
さらに、図１６に示す実行情報１３１に含まれるシナリオ定義情報１３１ｃには、中断指示として、テストプログラムＰＧ３におけるアドレスｘ１０２４の処理が実行された際にｃｃ（ｃｏｎｄｉｔｉｏｎ  ｃｏｄｅ）の値が１２以上である場合、または、テストプログラムＰＧ１におけるアドレスｘ５１２の処理がループによって１０回実行された場合に、テストプログラムＰＧ１、ＰＧ２及びＰＧ３をそれぞれ中断することを示す記述が含まれている。
【００７２】
図９に戻り、主制御部１１０の情報解析部１１２は、Ｓ１２の処理で取得した実行情報１３１の内容を解析する（Ｓ１３）。
【００７３】
その後、主制御部１１０のプログラム生成部１１３は、Ｓ１３の処理で解析した実行情報１３１に含まれるテストプログラム定義情報１３１ａに従って、１以上の実行制御部１２０を生成する。
【００７４】
具体的に、プログラム生成部１１３は、例えば、図１６で説明した実行情報１３１（情報解析部１１２によって解析された実行情報１３１）を参照し、プロセス空間ＡにおいてテストプログラムＰＧ１及びＰＧ２をそれぞれ実行する実行制御部１２０ａ及び１２０ｂを生成し、プロセス空間ＢにおいてテストプログラムＰＧ３を実行する実行制御部１２０ｃを生成する。
【００７５】
そして、主制御部１１０の動作指示部１１５は、Ｓ１３の処理で解析した実行情報１３１に含まれるシナリオ定義情報１３１ｃを、Ｓ１４の処理で生成した１以上の実行制御部１２０のそれぞれに送信する（Ｓ１５）。なお、動作指示部１１５は、Ｓ１３の処理で解析した実行情報１３１の全てを、Ｓ１４の処理で生成した１以上の実行制御部１２０のそれぞれに送信するものであってもよい。
【００７６】
続いて、主制御部１１０の実行許可部１１４は、図１０に示すように、Ｓ１３の処理で解析した実行情報１３１に含まれる優先度定義情報１３１ｂに従って、次の単位時間における実行の許可を、実行中のテストプログラムＰＧのうちのいずれかに対して行う（Ｓ２１）。
【００７７】
具体的に、実行許可部１１４は、例えば、図１６で説明した実行情報１３１（情報解析部１１２によって解析された実行情報１３１）を参照し、プロセス空間Ａに対応する優先度及びプロセス空間Ｂに対応する優先度としてそれぞれ１及び２を特定する。そして、実行許可部１１４は、例えば、プロセス空間Ａで実行するテストプログラムＰＧ１及びＰＧ２のそれぞれ実行時間と、プロセス空間Ｂで実行するテストプログラムＰＧ３の実行時間との比が２：１（優先度の比の逆）になるように、各テストプログラムＰＧに対してＣＰＵ１０１の実行権を与える。
【００７８】
これにより、主制御部１１０は、各テストプログラムＰＧの実行タイミング（他のテストプログラムＰＧに対する相対的な実行タイミング）を調整することが可能になる。
【００７９】
その後、実行許可部１１４は、Ｓ２１の処理を行ってからの時間が単位時間に到達するまで待機する（Ｓ２２のＮＯ）。
【００８０】
そして、Ｓ２１の処理を行ってからの時間が単位時間に到達した場合（Ｓ２２のＹＥＳ）、実行許可部１１４は、全てのテストプログラムＰＧの実行が終了しているか否かを判定する（Ｓ２３）。
【００８１】
その結果、全てのテストプログラムＰＧの実行が終了していないと判定した場合（Ｓ２３のＮＯ）、実行許可部１１４は、Ｓ２１以降の処理を再度行う。
【００８２】
一方、全てのテストプログラムＰＧの実行が終了していると判定した場合（Ｓ２３のＹＥＳ）、主制御部１１０は、テスト実行処理を終了する。
【００８３】
［情報生成処理］
次に、動作分析処理のうち、関連情報１３３の生成を行う処理（以下、情報生成処理とも呼ぶ）について説明を行う。図１１及び図１２は、情報生成処理について説明するフローチャート図である。
【００８４】
主制御部１１０のログ取得部１１６は、図１１に示すように、情報生成タイミングになるまで待機する（Ｓ３１のＮＯ）。情報生成タイミングは、例えば、事業者が関連情報１３３の生成を行う旨の入力を情報処理装置１に対して行ったタイミングであってよい。
【００８５】
そして、情報生成タイミングになった場合（Ｓ３１のＹＥＳ）、ログ取得部１１６は、各テストプログラムＰＧの動作に関する情報を動作ログ１３２として取得する（Ｓ３２）。具体的に、ログ取得部１１６は、例えば、テスト実行処理の実行中に生成された動作ログ１３２の取得を行う。以下、各テストプログラムＰＧの処理の具体例及び動作ログ１３２の具体例について説明を行う。
【００８６】
［テストプログラムが実行する処理の具体例］
図１７は、テストプログラムＰＧ１、ＰＧ２及びＰＧ３が実行する処理の具体例について説明する図である。具体的に、図１７は、テストプログラムＰＧ１、ＰＧ２及びＰＧ３が、図１６で説明したシナリオ定義情報１３１ｃに従って動作した場合の具体例について説明する図である。
【００８７】
図１７に示すように、テストプログラムＰＧ１では、図１６で説明したシナリオ定義情報１３１ｃに含まれる同期指示及び再開指示に従い、アドレスｘ１２０の処理の実行をテストプログラムＰＧ２及びＰＧ３と同期して行う。そして、テストプログラムＰＧ１では、図１６で説明したシナリオ定義情報１３１ｃに含まれる中断指示に従い、アドレスｘ５１２の処理が１０回実行されたことに応じて実行を中断する。
【００８８】
また、図１７に示すように、テストプログラムＰＧ２では、図１６で説明したシナリオ定義情報１３１ｃに含まれる同期指示及び再開指示に従い、アドレスｘ２４０の処理の実行をテストプログラムＰＧ１及びＰＧ３と同期して行う。
【００８９】
さらに、図１７に示すように、テストプログラムＰＧ３は、図１６で説明したシナリオ定義情報１３１ｃに含まれる同期指示及び再開指示に従い、アドレスｘ１６０の処理の実行をテストプログラムＰＧ１及びＰＧ２と同期して行う。そして、テストプログラムＰＧ３では、図１６で説明したシナリオ定義情報１３１ｃに含まれる中断指示に従い、アドレスｘ１０２４の処理の実行時におけるｃｃの値が１２以上であることを条件に実行を中断する。
【００９０】
なお、以下、テストプログラムＰ１、Ｐ２及びＰ３のうちのいずれかが実行を中断した場合、他のテストプログラムＰＧの実行についても中断されるものとして説明を行う。
【００９１】
［動作ログの具体例］
次に、動作ログ１３２の具体例について説明を行う。図１８は、動作ログ１３２の具体例について説明する図である。具体的に、図１８は、図１７で説明した各テストプログラムＰＧが、図１６で説明したシナリオ定義情報１３１ｃに従って動作した場合における動作ログ１３２の具体例について説明する図である。
【００９２】
図１８に示す動作ログ１３２は、各ログを識別する「項番」と、各イベントが発生した時間が記憶される「時間」と、各イベントが発生したテストプログラムＰＧの名称が記憶される「プログラム」と、各イベントが発生した処理のアドレスが記憶される「アドレス」と、各イベントに対応するラベルが記憶される「ラベル」と、各イベントの内容が設定される「イベントの内容」とを項目として有する。
【００９３】
具体的に、図１８に示す動作ログ１３２において、「項番」が「１」であるログには、「時間」として「ｔ０」が記憶され、「プログラム」として「ＰＧ１」が記憶され、「アドレス」として「ｘ０」が記憶され、「ラベル」として情報が記憶されてないことを示す「−」が記憶され、「イベントの内容」として「実行開始」が記憶されている。すなわち、「項番」が「１」であるログは、時間ｔ０に、テストプログラムＰＧ１の実行が開始されたことを示している。
【００９４】
また、図１８に示す動作ログ１３２において、「項番」が「２」であるログには、「時間」として「ｔ１」が記憶され、「プログラム」として「ＰＧ２」が記憶され、「アドレス」として「ｘ０」が記憶され、「ラベル」として「−」が記憶され、「イベントの内容」として「ＰＧ１によって生成及び実行開始」が記憶されている。すなわち、「項番」が「２」であるログは、時間ｔ１に、テストプログラムＰＧ１がテストプログラムＰＧ２を動的生成し、テストプログラムＰＧ２の実行が開始されたことを示している。
【００９５】
また、図１８に示す動作ログ１３２において、「項番」が「３」であるログには、「時間」として「ｔ２」が記憶され、「プログラム」として「ＰＧ３」が記憶され、「アドレス」として「ｘ０」が記憶され、「ラベル」として「−」が記憶され、「イベントの内容」として「実行開始」が記憶されている。すなわち、「項番」が「３」であるログは、時間ｔ２に、テストプログラムＰＧ３の実行が開始されたことを示している。
【００９６】
また、図１８に示す動作ログ１３２において、「項番」が「４」であるログには、「時間」として「ｔ４」が記憶され、「プログラム」として「ＰＧ１」が記憶され、「アドレス」として「ｘ１２０」が記憶され、「ラベル」として「Ｌ１」が記憶され、「イベントの内容」として「同期待ち」が記憶されている。すなわち、「項番」が「４」であるログは、時間ｔ４に、テストプログラムＰＧ１においてアドレスｘ１２０の処理の実行待機（同期待ち）が開始されたことを示している。
【００９７】
また、図１８に示す動作ログ１３２において、「項番」が「５」であるログには、「時間」として「ｔ４」が記憶され、「プログラム」として「ＰＧ２」が記憶され、「アドレス」として「ｘ２４０」が記憶され、「ラベル」として「Ｌ１」が記憶され、「イベントの内容」として「同期待ち」が記憶されている。すなわち、「項番」が「５」であるログは、時間ｔ４に、テストプログラムＰＧ２においてアドレスｘ２４０の処理の実行待機（同期待ち）が開始されたことを示している。
【００９８】
また、図１８に示す動作ログ１３２において、「項番」が「６」であるログには、「時間」として「ｔ４」が記憶され、「プログラム」として「ＰＧ３」が記憶され、「アドレス」として「ｘ１６０」が記憶され、「ラベル」として「Ｌ１」が記憶され、「イベントの内容」として「同期待ち」が記憶されている。すなわち、「項番」が「６」であるログは、時間ｔ４に、テストプログラムＰＧ３においてアドレスｘ１６０の処理の実行待機（同期待ち）が開始されたことを示している。
【００９９】
また、図１８に示す動作ログ１３２において、「項番」が「７」であるログには、「時間」として「ｔ６」が記憶され、「プログラム」として「ＰＧ１〜３」が記憶され、「アドレス」として「−」が記憶され、「ラベル」として「Ｌ１」が記憶され、「イベントの内容」として「同期解除」が記憶されている。すなわち、「項番」が「７」であるログは、時間ｔ６に、テストプログラムＰＧ１、ＰＧ２及びＰＧ３の実行が再開されたことを示している。
【０１００】
また、図１８に示す動作ログ１３２において、「項番」が「８」であるログには、「時間」として「ｔ７」が記憶され、「プログラム」として「ＰＧ１」が記憶され、「アドレス」として「ｘ５１２」が記憶され、「ラベル」として「−」が記憶され、「イベントの内容」として「ループ１回目」が記憶されている。すなわち、「項番」が「８」であるログは、時間ｔ７に、テストプログラムＰＧ１においてアドレスｘ５１２の処理（１回目）が実行されたことを示している。
【０１０１】
また、図１８に示す動作ログ１３２において、「項番」が「９」であるログには、「時間」として「ｔ８」が記憶され、「プログラム」として「ＰＧ１」が記憶され、「アドレス」として「ｘ５１２」が記憶され、「ラベル」として「−」が記憶され、「イベントの内容」として「ループ２回目」が記憶されている。すなわち、「項番」が「９」であるログは、時間ｔ８に、テストプログラムＰＧ１においてアドレスｘ５１２の処理（２回目）が実行されたことを示している。
【０１０２】
また、図１８に示す動作ログ１３２において、「項番」が「１０」であるログには、「時間」として「ｔ９」が記憶され、「プログラム」として「ＰＧ１」が記憶され、「アドレス」として「ｘ５１２」が記憶され、「ラベル」として「−」が記憶され、「イベントの内容」として「ループ３回目」が記憶されている。すなわち、「項番」が「１０」であるログは、時間ｔ９に、テストプログラムＰＧ１においてアドレスｘ５１２の処理（３回目）が実行されたことを示している。
【０１０３】
また、図１８に示す動作ログ１３２において、「項番」が「１１」であるログには、「時間」として「ｔ１０」が記憶され、「プログラム」として「ＰＧ１」が記憶され、「アドレス」として「ｘ５１２」が記憶され、「ラベル」として「−」が記憶され、「イベントの内容」として「ループ４回目」が記憶されている。すなわち、「項番」が「１１」であるログは、時間ｔ１０に、テストプログラムＰＧ１においてアドレスｘ５１２の処理（４回目）が実行されたことを示している。
【０１０４】
さらに、図１８に示す動作ログ１３２において、「項番」が「１２」であるログには、「時間」として「ｔ１１」が記憶され、「プログラム」として「ＰＧ１〜３」が記憶され、「アドレス」として「ｘ１０２４」が記憶され、「ラベル」として「−」が記憶され、「イベントの内容」として「実行中断（ｃｃ＝１２）」が記憶されている。すなわち、「項番」が「１２」であるログは、時間ｔ１１に、テストプログラムＰＧ２においてアドレスｘ１０２４の処理が実行されたことを示している。そして、「項番」が「１２」であるログは、アドレスｘ１０２４の処理の実行時におけるｃｃの値が１２であったことに応じて、テストプログラムＰＧ１、ＰＧ２及びＰＧ３の実行が中断されたことを示している。
【０１０５】
図１１に戻り、主制御部１１０の情報生成部１１７は、Ｓ３２の処理で取得した動作ログ１３２に基づいて、各テストプログラムＰＧの動作状況を示す情報を所定時間毎に関連付けた関連情報１３３を生成する（Ｓ３３）。以下、関連情報１３３の具体例について説明を行う。
【０１０６】
［関連情報の具体例］
図１９は、関連情報１３３の具体例について説明する図である。なお、図１９に示す関連情報１３３では、縦軸が各テストプログラムＰＧの名称を示し、横軸が時間を示している。
【０１０７】
具体的に、情報生成部１１７は、例えば、図１８で説明した動作ログ１３２を参照し、図１９に示すように、テストプログラムＰＧ１の実行がｔ０に開始され、アドレスｘ１２０の処理の同期待ちがｔ４に開始され、アドレスｘ１２０の処理の実行（同期解除）がｔ６に行われ、かつ、実行中断がｔ１１において行われたことを示すように、関連情報１３３を生成する。
【０１０８】
また、情報生成部１１７は、例えば、図１８で説明した動作ログ１３２を参照し、図１９に示すように、テストプログラムＰＧ３の実行がｔ２に開始され、アドレスｘ１６０の処理の同期待ちがｔ４に開始され、アドレスｘ１６０の処理の実行（同期解除）がｔ６に行われ、かつ、ｃｃの値が１２以上であったことに伴う実行中断がｔ１１において行われたことを示すように、関連情報１３３を生成する。
【０１０９】
さらに、情報生成部１１７は、例えば、図１８で説明した動作ログ１３２を参照し、図１９に示すように、テストプログラムＰＧ１による動的生成に伴ってテストプログラムＰＧ２の実行がｔ１に開始され、アドレスｘ２４０の処理の同期待ちがｔ４に開始され、アドレスｘ２４０の処理の実行（同期解除）がｔ６に行われ、かつ、実行中断がｔ１１において行われたことを示すように、関連情報１３３を生成する。
【０１１０】
これにより、事業者は、関連情報１３３を参照することで、各テストプログラムＰＧに含まれる各処理の実行タイミングの前後関係を特定することが可能になる。そのため、事業者は、発生した障害の再現を行うために、各テストプログラムＰＧに対してさらに行う必要がある指示の内容等を効率的に決定することが可能になる。
【０１１１】
図１１に戻り、主制御部１１０の情報出力部１１８は、Ｓ３３の処理で生成した関連情報１３３を出力装置（図示しない）に出力する（Ｓ３４）。
【０１１２】
そして、主制御部１１０の情報出力部１１８は、図１２に示すように、情報格納領域１３０に記憶した実行情報１３１を参照し、テストプログラムＰＧ毎に、例えば、実行開始から実行停止までの時間（以下、第１時間とも呼ぶ）と、実行停止から実行再開までの時間（以下、第２時間とも呼ぶ）とを特定する（Ｓ４１）。
【０１１３】
続いて、情報出力部１１８は、情報格納領域１３０に記憶された関連情報１３３を参照し、テストプログラムＰＧ毎に、Ｓ４１の処理で特定した第１時間において各テストプログラムＰＧが実行中であったことを動作状況が示しているか否かを判定する（Ｓ４２）。
【０１１４】
また、情報出力部１１８は、情報格納領域１３０に記憶された関連情報１３３を参照し、テストプログラムＰＧ毎に、Ｓ４１の処理で特定した第２時間において各テストプログラムＰＧが停止中であったことを動作状況が示しているか否かを判定する（Ｓ４３）。
【０１１５】
その結果、Ｓ４１の処理で特定した第１時間において各テストプログラムＰＧが実行中であったことを動作状況が示しているテストプログラムＰＧ、または、Ｓ４１の処理で特定した第２時間において各テストプログラムＰＧが停止中であったことを動作状況が示していないテストプログラムＰＧが存在している場合（Ｓ４４のＹＥＳ）、情報出力部１１８は、Ｓ４３の処理で存在すると判定したテストプログラムＰＧが実行情報１３１に従って動作していないことを示す情報を出力装置（図示しない）に出力する（Ｓ４５）。
【０１１６】
一方、Ｓ４１の処理で特定した第１時間において各テストプログラムＰＧが実行中であったことを動作状況が示しているテストプログラムＰＧ、または、Ｓ４１の処理で特定した第２時間において各テストプログラムＰＧが停止中であったことを動作状況が示していないテストプログラムＰＧが存在していない場合（Ｓ４４のＮＯ）、情報出力部１１８は、Ｓ４５の処理を行わない。
【０１１７】
すなわち、情報出力部１１８は、各テストプログラムＰＧの実行結果を示す情報である関連情報１３３を参照することにより、各テストプログラムＰＧが当初の予定通りのタイミング（実行情報１３１において定義されたタイミング）において実行されていたか否かの判定結果を出力する。
【０１１８】
これにより、事業者は、Ｓ４５の処理で出力された判定結果を参照することで、各テストプログラムＰＧに対して行う必要がある指示の内容（例えば、実行再開のタイミング等）を効率的に修正することが可能になる。そのため、事業者は、発生した障害の再現を効率的に行うことが可能になる。
【０１１９】
［実行制御部における動作分析処理］
次に、実行制御部１２０における動作分析処理について説明を行う。図１３は、実行制御部１２０における動作分析処理について説明するフローチャート図である。
【０１２０】
実行制御部１２０の指示受付部１２２は、主制御部１２０によって生成された後、図１３に示すように、主制御部１２０からシナリオ定義情報１３１ｃを受け付けるまで待機する（Ｓ５１のＮＯ）。
【０１２１】
そして、シナリオ定義情報１３１ｃを受け付けた場合（Ｓ５１のＹＥＳ）、実行制御部１２０のプログラム実行部１２１は、テストプログラムＰＧの実行を開始する（Ｓ５２）。
【０１２２】
続いて、実行制御部１２０の指示実行部１２３は、Ｓ５２の処理で実行を開始した各テストプログラムＰＧの動作状況が、Ｓ５１の処理で受け付けたシナリオ定義情報１３１ｃに情報が含まれる動作状況と合致するまで待機する（Ｓ５３のＮＯ）。
【０１２３】
具体的に、例えば、図１６で説明したシナリオ定義情報１３１ｃには、テストプログラムＰＧ１におけるアドレスｘ１２０の処理を実行する前に、テストプログラムＰＧ２及びＰＧ３との間で同期待ちを行うことを示す記述が含まれている。そのため、図６等で説明した実行制御部１２０ａの指示実行部１２３は、Ｓ５２の処理で実行を開始したテストプログラムＰＧ１における実行位置がアドレスｘ１２０に到達するまで待機する。
【０１２４】
そして、Ｓ５２の処理で実行を開始した各テストプログラムＰＧの動作状況が、Ｓ５１の処理で受け付けたシナリオ定義情報１３１ｃに情報が含まれる動作状況と合致した場合（Ｓ５３のＹＥＳ）、指示実行部１２３は、実行中のテストプログラムＰＧに対し、Ｓ５１の処理で受け付けたシナリオ定義情報１３１ｃに情報が含まれる処理のうち、Ｓ５３の処理で合致すると判定した動作状況に対応する処理を実行する（Ｓ５４）。
【０１２５】
具体的に、実行制御部１２０ａの指示実行部１２３は、例えば、Ｓ５２の処理で実行を開始したテストプログラムＰＧ１における実行位置がアドレスｘ１２０に到達した場合、テストプログラムＰＧ２及びＰＧ３との間における同期待ちを開始する。
【０１２６】
その後、指示実行部１２３は、Ｓ５１の処理で受け付けたシナリオ定義情報１３１ｃに含まれる全処理の実行が完了したか否かを判定する（Ｓ５５）。
【０１２７】
その結果、Ｓ５１の処理で受け付けたシナリオ定義情報１３１ｃに含まれる全処理の実行が完了していないと判定した場合（Ｓ５５のＮＯ）、指示実行部１２３は、Ｓ５３以降の処理を再度行う。
【０１２８】
一方、Ｓ５１の処理で受け付けたシナリオ定義情報１３１ｃに含まれる全処理の実行が完了していると判定した場合（Ｓ５５のＹＥＳ）、実行制御部１２０は、動作分析処理を終了する。
【０１２９】
これにより、各実行制御部１２０は、主制御部１２０から受け付けた実行情報１３１の内容に従った動作をテストプログラムＰＧに行わせることが可能になる。
【０１３０】
なお、各実行制御部１２０は、各実行制御部１２０に対応するテストプログラムＰＧが同期待ちを開始した場合、テストプログラムＰＧが同期待ちを開始したことを示す情報（以下、待機開始情報とも呼ぶ）を主制御部１１０に送信するものであってよい。そして、主制御部１１０の動作指示部１１５は、実行制御部１２０の全てから待機開始情報を受信したことに応じて、各テストプログラムＰＧの同期解除を行う旨の指示（以下、同期解除指示とも呼ぶ）を各実行制御部１２０に送信するものであってよい。その後、各実行制御部１２０は、主制御部１１０から同期解除指示を受信したことに応じて、各テストプログラムＰＧに実行再開の指示を行うものであってよい。
【０１３１】
また、各実行制御部１２０は、各実行制御部１２０に対応するテストプログラムＰＧが実行を中断した場合、テストプログラムＰＧが実行を中断したことを示す情報（以下、実行中断情報とも呼ぶ）を主制御部１１０に送信するものであってよい。そして、主制御部１１０の動作指示部１１５は、実行制御部１２０のいずれかから実行中断情報を受信したことに応じて、実行中断情報を送信した実行制御部１２０以外の実行制御部１２０のそれぞれに対し、各実行制御部１２０に対応するテストプログラムＰＧの実行を中断する旨の指示（以下、実行中断指示とも呼ぶ）を送信するものであってよい。その後、各実行制御部１２０は、主制御部１１０から実行中断指示を受信したことに応じて、各テストプログラムＰＧに実行中断の指示を行うものであってよい。
【０１３２】
［動的生成処理］
次に、動作分析処理のうち、実行中のテストプログラムＰＧが動的生成によって新たなテストプログラムＰＧの生成を行う命令（以下、動的生成命令とも呼ぶ）を実行した場合の処理（以下、動的生成処理とも呼ぶ）について説明を行う。図１４は、動的生成処理について説明するフローチャート図である。
【０１３３】
プログラム生成部１１３は、図１４に示すように、実行中のテストプログラムＰＧにおいて動的生成命令が実行されるまで待機する（Ｓ６１のＮＯ）。
【０１３４】
そして、実行中のテストプログラムＰＧにおいて動的生成命令が実行された場合（Ｓ６１のＹＥＳ）、プログラム生成部１１３は、Ｓ１３の処理で解析した実行情報１３１に含まれるテストプログラム定義情報１３１ａに従って、新たな実行制御部１２０を生成する（Ｓ６２）。
【０１３５】
具体的に、プログラム生成部１１３は、実行中のテストプログラムＰＧにおいて動的生成命令が実行されたことを検知した場合、その動的生成命令をインターセプトする。そして、プログラム生成部１１３は、動的生成命令の実行によって生成された新たなテストプログラムＰＧを制御する新たな実行制御部１２０を生成する。
【０１３６】
その後、動作指示部１１５は、Ｓ１３の処理で解析した実行情報１３１に含まれるシナリオ定義情報１３１ｃを、Ｓ６２の処理で生成した新たな実行制御部１２０に送信する（Ｓ６３）。
【０１３７】
これにより、主制御部１１０は、テストプログラムＰＧによる動的生成命令の実行によって生成された新たなテストプログラムＰＧについても制御することが可能になる。
【０１３８】
［動作分析処理の具体例］
次に、動作分析処理の具体例について説明を行う。図２０から図２８は、動作分析処理の具体例について説明する図である。
【０１３９】
［実行情報の具体例（１）］
初めに、事業者によって最初に生成された実行情報１３１の具体例について説明を行う。図２０は、実行情報１３１の具体例について説明する図である。以下、正常時においては０以上の値のみが設定されるカウンタｎに対し、０未満の値が設定されるという障害が発生したものとして説明を行う。また、以下、発生した障害の原因箇所を含む可能性があるプログラム（例えば、カウンタｎに値の設定等を行うプログラム）として、テストプログラムＰＧ１及びＰＧ３が特定されているものとする。
【０１４０】
具体的に、図２０に示す実行情報１３１に含まれるテストプログラム定義情報１３１ａには、テストプログラムＰＧ１がプロセス空間Ａで実行されることを示す記述と、テストプログラムＰＧ３がプロセス空間Ｂで実行されることを示す記述とが含まれている。
【０１４１】
また、図２０に示す実行情報１３１に含まれるシナリオ定義情報１３１ｃには、同期指示として、テストプログラムＰＧ１におけるアドレスｘ１２０の処理、及び、テストプログラムＰＧ３におけるアドレスｘ１６０の処理の実行タイミングの同期（ラベルの名称がＬ１である同期）を行うことを示す記述が含まれている。
【０１４２】
また、図２０に示す実行情報１３１に含まれるシナリオ定義情報１３１ｃには、再開指示として、ラベルの名称がＬ１である同期に対応する同期指示によって待機中の各テストプログラムＰＧの実行を再開することを示す記述が含まれている。
【０１４３】
さらに、図２０に示す実行情報１３１に含まれるシナリオ定義情報１３１ｃには、中断指示として、テストプログラムＰＧ３におけるアドレスｘ１０２４の処理が実行された際のｃｃの値が１２以上であり、かつ、テストプログラムＰＧ１におけるアドレスｘ５１２の処理が１０回実行された場合に、テストプログラムＰＧ１及びＰＧ３をそれぞれ中断することを示す記述が含まれている。
【０１４４】
［テストプログラムが実行する処理の具体例（１）］
次に、テストプログラムＰＧが実行する処理の具体例について説明を行う。図２１は、テストプログラムＰＧが実行する処理の具体例について説明する図である。具体的に、図２１は、テストプログラムＰＧ１及びＰＧ３が、図２０で説明したシナリオ定義情報１３１ｃに従って動作した場合の具体例について説明する図である。
【０１４５】
図２１に示すように、テストプログラムＰＧ１では、図２０で説明したシナリオ定義情報１３１ｃに含まれる同期指示及び再開指示に従い、アドレスｘ１２０の処理が実行される前にテストプログラムＰＧ３との間で同期を行う。そして、テストプログラムＰＧ１では、図２０で説明したシナリオ定義情報１３１ｃに含まれる中断指示に従い、カウンタｎに１を加算する処理とアドレスｘ５１２の処理とが１０回実行されたことに伴って実行を中断する。
【０１４６】
また、図２１に示すように、テストプログラムＰＧ３は、図２０で説明したシナリオ定義情報１３１ｃに含まれる同期指示及び再開指示に従い、アドレスｘ１６０の処理が実行される前にテストプログラムＰＧ１との間で同期を行う。そして、テストプログラムＰＧ３は、ｎが０よりも小さいか否かを判定する処理を行った後、図２０で説明したシナリオ定義情報１３１ｃに含まれる中断指示に従い、アドレスｘ１０２４の処理を実行時におけるｃｃの値が１２以上であることを条件に実行を中断する。
【０１４７】
［関連情報の具体例（１）］
次に、関連情報１３３の具体例について説明を行う。図２１は、関連情報１３３の具体例について説明する図である。具体的に、図２１は、図２０で説明したテストプログラムＰＧの実行時における動作ログ１３２から生成された関連情報１３３の具体例である。
【０１４８】
図２２に示す関連情報１３３は、例えば、図２０で説明したテストプログラムＰＧの実行時における動作ログ１３２を参照し、テストプログラムＰＧ１の実行がｔ０に開始され、アドレスｘ１２０の処理の同期待ちがｔ４に開始され、アドレスｘ１２０の処理の実行（同期解除）がｔ６に行われ、かつ、実行中断がｔ１１において行われたことを示している。
【０１４９】
また、図２２に示す関連情報１３３は、例えば、図２０で説明したテストプログラムＰＧの実行時における動作ログ１３２を参照し、テストプログラムＰＧ３の実行がｔ２に開始され、アドレスｘ１６０の処理の同期待ちがｔ４に開始され、アドレスｘ１６０の処理の実行（同期解除）がｔ６に行われ、かつ、ｔ９に全ての処理が正常に終了したことを示している。
【０１５０】
そして、主制御部１１０は、例えば、図２１で説明したテストプログラムＰＧの実行後においてカウンタｎの値が０以上である場合、障害の再現に失敗したと判定し、障害の再現に失敗したことを示す情報を出力装置（図示しない）に出力する。
【０１５１】
この場合、事業者は、図２２で説明した関連情報１３３を参照し、例えば、テストプログラムＰＧをさらに追加する必要がある旨の判断を行う。そして、事業者は、テストプログラムＰＧを追加した場合に対応する新たな実行情報１３１を生成し、生成した新たな実行情報１３１に従って各テストプログラムＰＧを再度実行する。
【０１５２】
［実行情報の具体例（２）］
次に、事業者によって２回目に生成された実行情報１３１の具体例について説明を行う。図２３は、実行情報１３１の具体例について説明する図である。
【０１５３】
なお、以下、図２１で説明したテストプログラムＰＧの実行後、障害の原因箇所を含む可能性があるプログラムとしてテストプログラムＰＧ２がさらに特定されたものとして説明を行う。
【０１５４】
図２３に示す実行情報１３１に含まれるテストプログラム定義情報１３１ａには、図２０で説明したテストプログラム定義情報１３１ａに対し、テストプログラムＰＧ２がプロセス空間Ａで実行されることを示す記述が追加されている。
【０１５５】
また、図２３に示す実行情報１３１に含まれるシナリオ定義情報１３１ｃには、同期指示として、テストプログラムＰＧ１におけるアドレスｘ１２０の処理、テストプログラムＰＧ２におけるアドレスｘ２４０の処理、及び、テストプログラムＰＧ３におけるアドレスｘ１６０の処理の実行タイミングの同期（ラベルの名称がＬ１である同期）を行うことを示す記述が含まれている。
【０１５６】
［テストプログラムが実行する処理の具体例（２）］
次に、テストプログラムＰＧが実行する処理の具体例について説明を行う。図２４は、テストプログラムＰＧが実行する処理の具体例について説明する図である。具体的に、図２４は、テストプログラムＰＧ１、ＰＧ２及びＰＧ３が、図２３で説明したシナリオ定義情報１３１ｃに従って動作した場合の具体例について説明する図である。
【０１５７】
図２４に示すように、テストプログラムＰＧ２は、カウンタｎに０を設定する処理の後、図２３で説明したシナリオ定義情報１３１ｃに含まれる同期指示及び再開指示に従い、アドレスｘ２４０の処理が実行される前にテストプログラムＰＧ１及びＰＧ３との間で同期を行う。そして、テストプログラムＰＧ２は、カウンタｎに設定された値から１０を減算する処理を行う。
【０１５８】
［関連情報の具体例（２）］
次に、関連情報１３３の具体例について説明を行う。図２５は、関連情報１３３の具体例について説明する図である。具体的に、図２５は、図２４で説明したテストプログラムＰＧの実行時における動作ログ１３２から生成された関連情報１３３の具体例である。
【０１５９】
図２５に示す関連情報１３３は、テストプログラムＰＧ１による動的生成に伴ってテストプログラムＰＧ２の実行がｔ１に開始され、アドレスｘ２４０の処理の同期待ちがｔ４に開始され、アドレスｘ２４０の処理の実行（同期解除）がｔ６に行われ、かつ、実行中断がｔ１１において行われたことを示している。
【０１６０】
そして、主制御部１１０は、例えば、図２１で説明したテストプログラムＰＧの実行後においてカウンタｎの値が０以上である場合、障害の再現に失敗したと判定し、障害の再現に失敗したことを示す情報を出力装置（図示しない）に出力する。
【０１６１】
この場合、事業者は、図２５で説明した関連情報１３３を参照し、例えば、各テストプログラムＰＧの優先度を変更する必要がある旨の判断を行う。そして、事業者は、例えば、各テストプログラムＰＧの優先度定義情報１３１ｂの指定を追加した新たな実行情報１３１を生成し、生成した新たな実行情報１３１に従って各テストプログラムＰＧを再度実行する。
【０１６２】
［実行情報の具体例（３）］
次に、事業者によって３回目に生成された実行情報１３１の具体例について説明を行う。図２６は、実行情報１３１の具体例について説明する図である。
【０１６３】
図２６に示す実行情報１３１には、図２３で説明した実行情報１３１に対し、優先度定義情報１３１ｂとして、プロセス空間Ａで実行されるテストプログラムＰＧの優先度が１であることを示す記述と、プロセス空間Ｂで実行されるテストプログラムＰＧの優先度が２であることを示す記述とが追加されている。
【０１６４】
［テストプログラムが実行する処理の具体例（３）］
次に、テストプログラムＰＧが実行する処理の具体例について説明を行う。図２７は、テストプログラムＰＧが実行する処理の具体例について説明する図である。具体的に、図２７は、テストプログラムＰＧ１、ＰＧ２及びＰＧ３が、図２６で説明したシナリオ定義情報１３１ｃに従って動作した場合の具体例について説明する図である。
【０１６５】
図２７に示すように、テストプログラムＰＧ１、ＰＧ２及びＰＧ３は、図２４で説明した処理と同じ処理を行う。ただし、テストプログラムＰＧ３に含まれる各処理の実行タイミングは、実行情報１３１に優先度定義情報１３１ｂが追加されたことに伴い、図２４で説明した場合よりも遅くなる。
【０１６６】
［関連情報の具体例（３）］
次に、関連情報１３３の具体例について説明を行う。図２８は、関連情報１３３の具体例について説明する図である。具体的に、図２８は、図２７で説明したテストプログラムＰＧの実行時における動作ログ１３２から生成された関連情報１３３の具体例である。
【０１６７】
図２８に示す関連情報１３３は、例えば、図２７で説明したテストプログラムＰＧの実行時における動作ログ１３２を参照し、テストプログラムＰＧ１の実行がｔ０に開始され、アドレスｘ１２０の処理の同期待ちがｔ４に開始され、アドレスｘ１２０の処理の実行（同期解除）がｔ６に行われ、かつ、実行中断がｔ１２において行われたことを示している。
【０１６８】
また、図２８に示す関連情報１３３は、例えば、図２７で説明したテストプログラムＰＧの実行時における動作ログ１３２を参照し、テストプログラムＰＧ３の実行がｔ２に開始され、アドレスｘ１６０の処理の同期待ちがｔ４に開始され、アドレスｘ１６０の処理の実行（同期解除）がｔ６に行われ、カウンタｎに０未満の値が設定されていることに伴って異常が発生し、かつ、実行中断がｔ１２において行われたことを示している。
【０１６９】
さらに、図２８に示す関連情報１３３は、テストプログラムＰＧ１による動的生成に伴ってテストプログラムＰＧ２の実行がｔ１に開始され、アドレスｘ２４０の処理の同期待ちがｔ４に開始され、アドレスｘ２４０の処理の実行（同期解除）がｔ６に行われ、かつ、実行中断がｔ１２において行われたことを示している。
【０１７０】
そして、主制御部１１０は、例えば、異常が発生したことによって障害の再現に成功したと判定し、障害の再現に成功したことを示す情報を出力装置（図示しない）に出力する。
【０１７１】
すなわち、事業者は、この場合、図２８に示す関連情報１３３を参照することで、テストプログラムＰＧ３の実行タイミングを遅らせたことにより、テストプログラムＰＧ２におけるカウンタｎから１０を減算する処理が、テストプログラムＰＧ３におけるカウンタｎが０以上であるか否かを判定する処理よりも先に実行されるようになり、障害の再現に成功したものと判断することが可能になる。そのため、事業者は、例えば、テストプログラムＰＧ２におけるカウンタｎから１０を減算する処理が、障害の原因箇所であると判断することが可能になる。
【０１７２】
このように、本実施の形態における情報処理装置１は、複数のテストプログラムＰＧの実行タイミングを定義した実行情報１３１を情報格納領域１３０から取得する。そして、情報処理装置１は、取得した実行情報１３１に従って、複数のテストプログラムＰＧのそれぞれに対して実行開始、実行停止及び実行再開を指示する。
【０１７３】
その後、情報処理装置１は、複数のテストプログラムＰＧの動作に関する情報を動作ログ１３２として取得する。そして、情報処理装置１は、取得した動作ログ１３２に基づいて、複数のテストプログラムＰＧと、各テストプログラムＰＧの所定時間毎の動作状況を示す情報とを関連付けた関連情報１３３を生成して情報格納領域１３０に記憶する。
【０１７４】
すなわち、事業者は、複数のプログラムＰＧに行わせる動作を同じ時系列で定義した実行情報１３１を予め生成する。そして、情報処理装置１は、実行情報１３１に従って、各プログラムＰＧに所定の動作（例えば、実行開始、実行停止及び実行再開）を行わせる。その後、情報処理装置１は、各プログラムＰＧが実行情報１３１に従って動作したことに伴って出力された動作ログ１３２から、同じタイミングにおいて行われた各プログラムＰＧの動作状況を関連付けた関連情報１３３を生成する。
【０１７５】
これにより、事業者は、関連情報１３３を参照することで、同じタイミングにおける各プログラムＰＧの動作を比較することが可能になり、各プログラムＰＧに含まれる各処理が実行されたタイミングの前後関係を特定することが可能になる。そのため、事業者は、例えば、障害の発生原因を容易に特定することが可能になり、障害の再現を効率的に行うことが可能になる。
【０１７６】
なお、図１６等において、複数のテストプログラムＰＧに同期を行わせる旨の記述を含む実行情報１３１について説明を行ったが、実行情報１３１は、例えば、複数のテストプログラムＰＧの実行をそれぞれ待機させた後、一部のテストプログラムＰＧの実行のみを再開する旨の記述を含むものであってもよい。
【０１７７】
これにより、情報処理装置１は、例えば、複数のテストプログラムＰＧの実行開始後、各テストプログラムＰＧの実行順序を変更することが可能になる。
【０１７８】
また、実行情報１３１は、例えば、一方のテストプログラムＰＧの実行中断と、他のテストプログラムＰＧの実行再開とを同じタイミングで行う旨の記述を含むものであってもよい。
【０１７９】
これにより、情報処理装置１は、例えば、複数のテストプログラムＰＧの実行開始後、同時に実行されるテストプログラムＰＧの数を所定数以下に抑えることが可能になる。
【０１８０】
以上の実施の形態をまとめると、以下の付記のとおりである。
【０１８１】
（付記１）
複数のプログラムの実行タイミングを定義した実行情報を記憶部から取得し、
取得した前記実行情報に従って、前記複数のプログラムに対して実行開始、実行停止及び実行再開を指示し、
前記実行開始、前記実行停止及び前記実行再開が行われた際の前記複数のプログラムの動作に関する動作ログを取得し、
取得した前記動作ログに基づいて、前記複数のプログラムに含まれる各プログラムの動作状況を示す情報を所定時間毎に関連付けた関連情報を生成して記憶部に記憶する、
処理をコンピュータに実行させることを特徴とする動作分析プログラム。
【０１８２】
（付記２）
付記１において、
前記動作状況を示す情報は、各プログラムが実行中であるか否かを示す情報を含む、
ことを特徴とする動作分析プログラム。
【０１８３】
（付記３）
付記２において、
前記動作状況を示す情報は、実行中の処理の内容を示す情報を含む、
ことを特徴とする動作分析プログラム。
【０１８４】
（付記４）
付記１において、
前記指示する処理では、前記実行情報を前記複数のプログラムのそれぞれに対して送信することにより、前記複数のプログラムに対して前記実行開始、前記実行停止及び前記実行再開の指示を行う、
ことを特徴とする動作分析プログラム。
【０１８５】
（付記５）
付記１において、
前記実行情報は、前記複数のプログラムのそれぞれの優先度を示す情報を含み、さらに、
前記優先度の高いプログラムの実行時間が前記優先度の低いプログラムの実行時間よりも長くなるように、単位時間毎に、前記複数のプログラムのうちのいずれかの実行を許可する、
処理をコンピュータに実行させることを特徴とする動作分析プログラム。
【０１８６】
（付記６）
付記２において、さらに、
前記実行情報を参照し、前記複数のプログラム毎に、前記実行情報における前記実行開始から前記実行停止までの第１時間と、前記実行情報における前記実行停止から前記実行再開までの第２時間とを特定し、
前記関連情報を参照し、前記複数のプログラム毎に、前記第１時間において各プログラムが実行中であったことを前記動作状況が示しているか否かを判定し、かつ、前記第２時間において各プログラムが停止中であったことを前記動作状況が示しているか否かを判定し、
前記第１時間において各プログラムが実行中であったことを前記動作状況が示していないプログラムが存在すると判定した場合、または、前記第２時間において各プログラムが停止中であったことを前記動作状況が示していないプログラムが存在すると判定した場合、存在すると判定した前記プログラムが前記実行情報に従って動作していないことを示す情報を出力する、
処理をコンピュータに実行させることを特徴とする動作分析プログラム。
【０１８７】
（付記７）
複数のプログラムの実行タイミングを定義した実行情報を記憶部から取得し、
取得した前記実行情報に従って、前記複数のプログラムに対して実行開始、実行停止及び実行再開を指示し、
前記実行開始、前記実行停止及び前記実行再開が行われた際の前記複数のプログラムの動作に関する動作ログを取得し、
取得した前記動作ログに基づいて、前記複数のプログラムに含まれる各プログラムの動作状況を示す情報を所定時間毎に関連付けた関連情報を生成して記憶部に記憶する、
ことを特徴とする動作分析方法。
【０１８８】
（付記８）
付記７において、
前記実行情報は、前記複数のプログラムのそれぞれの優先度を示す情報を含み、さらに、
前記優先度の高いプログラムの実行時間が前記優先度の低いプログラムの実行時間よりも長くなるように、単位時間毎に、前記複数のプログラムのうちのいずれかの実行を許可する、
ことを特徴とする動作分析方法。
【０１８９】
（付記９）
複数のプログラムの実行タイミングを定義した実行情報を記憶部から取得する情報取得部と、
取得した前記実行情報に従って、前記複数のプログラムに対して実行開始、実行停止及び実行再開を指示する動作指示部と、
前記実行開始、前記実行停止及び前記実行再開が行われた際の前記複数のプログラムの動作に関する動作ログを取得するログ取得部と、
取得した前記動作ログに基づいて、前記複数のプログラムに含まれる各プログラムの動作状況を示す情報を所定時間毎に関連付けた関連情報を生成して記憶部に記憶する情報生成部と、を有する、
ことを特徴とする動作分析装置。
【０１９０】
（付記１０）
付記９において、
前記実行情報は、前記複数のプログラムのそれぞれの優先度を示す情報を含み、さらに、
前記優先度の高いプログラムの実行時間が前記優先度の低いプログラムの実行時間よりも長くなるように、単位時間毎に、前記複数のプログラムのうちのいずれかの実行を許可する実行許可部を有する、
ことを特徴とする動作分析装置。
【符号の説明】
【０１９１】
１：情報処理装置            ３：操作端末
ＰＧ１：テストプログラム    ＰＧ２：テストプログラム
ＰＧ３：テストプログラム
【図１】
2020017116.tif 000003
【図２】
2020017116.tif 000004
【図３】
2020017116.tif 000005
【図４】
2020017116.tif 000006
【図５】
2020017116.tif 000007
【図６】
2020017116.tif 000008
【図７】
2020017116.tif 000009
【図８】
2020017116.tif 000010
【図９】
2020017116.tif 000011
【図１０】
2020017116.tif 000012
【図１１】
2020017116.tif 000013
【図１２】
2020017116.tif 000014
【図１３】
2020017116.tif 000015
【図１４】
2020017116.tif 000016
【図１５】
2020017116.tif 000017
【図１６】
2020017116.tif 000018
【図１７】
2020017116.tif 000019
【図１８】
2020017116.tif 000020
【図１９】
2020017116.tif 000021
【図２０】
2020017116.tif 000022
【図２１】
2020017116.tif 000023
【図２２】
2020017116.tif 000024
【図２３】
2020017116.tif 000025
【図２４】
2020017116.tif 000026
【図２５】
2020017116.tif 000027
【図２６】
2020017116.tif 000028
【図２７】
2020017116.tif 000029
【図２８】
2020017116.tif 000030