(57)【特許請求の範囲】
【請求項１】
第１の記憶部の特定のアドレスに対して特定の発生頻度によるデータの読み出しが実行されたことに応じて、前記特定のアドレスに格納されたデータを前記第１の記憶部から読み出して第２の記憶部に記憶させるデータ移動処理を行う情報処理装置に、前記特定のアドレスに格納されたデータの読み出しを伴うテスト処理を実行させる処理をコンピュータに実行させるテスト実行プログラムにおいて、
前記特定のアドレスに格納されたデータに対する前記テスト処理を繰り返し実行し、
前記テスト処理の実行に伴って前記データ移動処理が実行されたことに応じて、前記特定のアドレスに格納されたデータに対する特定のテスト処理を実行して、前記特定のテスト処理の実行に伴って前記第２の記憶部に格納された第１のデータを取得する、
処理をコンピュータに実行させることを特徴とするテスト実行プログラム。
【請求項２】
請求項１において、さらに、
前記データ移動処理の実行を抑止して、前記第１のデータが取得されるまでに実行した前記テスト処理を実行し、前記特定のテスト処理の該実行によって前記第１の記憶部に格納された第２のデータを取得し、
前記第１のデータと前記第２のデータとが同一であるか否かを判定し、判定した結果を出力する、
処理をコンピュータに実行させることを特徴とするテスト実行プログラム。
【請求項３】
請求項２において、
前記第２のデータを取得する処理では、前記テスト処理の実行を、前記テスト処理を実行する処理の前に前記特定のアドレスに格納されていたデータに対して行う、
ことを特徴とするテスト実行プログラム。
【請求項４】
請求項２において、
前記第１のデータを取得する処理では、
前記データ移動処理の実行が開始されたことに応じて、前記データ移動処理の実行が開始される直前に実行された前記テスト処理を識別する識別情報を記憶部に記憶し、
前記識別情報に対応する前記テスト処理の実行によって前記第１の記憶部に格納された第３のデータを取得し、
前記第２のデータを取得する処理では、前記識別情報に対応する前記テスト処理の実行によって前記第１の記憶部に格納された第４のデータを取得する、
処理をコンピュータに実行させることを特徴とするテスト実行プログラム。
【請求項５】
請求項４において、さらに、
前記第３のデータと前記第４のデータとが同一であるか否かを判定し、判定した結果を出力する、
処理をコンピュータに実行させることを特徴とするテスト実行プログラム。
【請求項６】
請求項４において、
前記第１のデータを取得する処理では、
前記データ移動処理の実行の開始を検知する通知部から前記データ移動処理の実行が開始された旨の通知があった場合に、前記データ移動処理の実行が開始されたと判定し、
前記通知を受信する直前に実行された前記テスト処理を識別する情報を前記識別情報として記憶部に記憶する、
ことを特徴とするテスト実行プログラム。
【請求項７】
請求項６において、
前記通知部は、
前記第１の記憶部に格納されたデータの読み出しのリクエストの発行元の情報を受け付け、
受け付けた前記情報に基づき、前記リクエストの発行元が特定の発行元であるか否かの判定を行い、
前記リクエストの発行元が前記特定の発行元である場合、前記データ移動処理の実行が開始された旨の通知を行う、
ことを特徴とするテスト実行プログラム。
【請求項８】
第１の記憶部の特定のアドレスに対して特定の発生頻度によるデータの読み出しが実行されたことに応じて、前記特定のアドレスに格納されたデータを前記第１の記憶部から読み出して第２の記憶部に記憶させるデータ移動処理を行う情報処理装置に、前記特定のアドレスに格納されたデータの読み出しを伴うテスト処理を実行するテスト実行装置において、
前記特定のアドレスに格納されたデータに対する前記テスト処理を繰り返し実行するテスト実行部と、
前記テスト処理の実行に伴って前記データ移動処理が実行されたことに応じて、前記特定のアドレスに格納されたデータに対する特定のテスト処理を実行して、前記特定のテスト処理の実行に伴って前記第２の記憶部に格納された第１のデータを取得するデータ取得部と、を有する、
ことを特徴とするテスト実行装置。
【請求項９】
第１の記憶部の特定のアドレスに対して特定の発生頻度によるデータの読み出しが実行されたことに応じて、前記特定のアドレスに格納されたデータを前記第１の記憶部から読み出して第２の記憶部に記憶させるデータ移動処理を行う情報処理装置に、前記特定のアドレスに格納されたデータの読み出しを伴うテスト処理を実行するテスト実行方法において、
前記特定のアドレスに格納されたデータに対する前記テスト処理を繰り返し実行し、
前記テスト処理の実行に伴って前記データ移動処理が実行されたことに応じて、前記特定のアドレスに格納されたデータに対する特定のテスト処理を実行して、前記特定のテスト処理の実行に伴って前記第２の記憶部に格納された第１のデータを取得する、
ことを特徴とするテスト実行方法。
【請求項１０】
第１の記憶部への特定のアドレスに対するデータの読み出しリクエストの発生頻度に応じて、前記第１の記憶部に記憶された前記特定のアドレスに格納されたデータを前記第１の記憶部から読み出して第２の記憶部に記憶させるデータ移動処理を行う情報処理装置のテスト実行プログラムにおいて、
前記データ読み出しリクエストの発行元を識別する情報を受け付け、
受け付けた前記情報に基づき、前記データ読み出しリクエストの発行元が特定の発行元であるか否かの判定を行い、
前記特定の発行元である場合、前記処理装置に、前記特定のアドレスに格納されたデータを読み込む又は前記特定のアドレスへデータを書き込む処理の実行を指示する、
処理をコンピュータに実行させることを特徴とするテスト実行プログラム。
【請求項１１】
第１の記憶部への特定のアドレスに対するデータの読み出しリクエストの発生頻度に応じて、前記第１の記憶部に記憶された前記特定のアドレスに格納されたデータを前記第１の記憶部から読み出して第２の記憶部に記憶させるデータ移動処理を行う情報処理装置のテスト実行装置において、
前記データ読み出しリクエストの発行元を識別する情報を受け付ける情報受付部と、
受け付けた前記情報に基づき、前記データ読み出しリクエストの発行元が特定の発行元であるか否かの判定を行う発行元判定部と、
前記特定の発行元である場合、前記処理装置に、前記特定のアドレスに格納されたデータを読み込む又は前記特定のアドレスへデータを書き込む処理の実行を指示する実行指示部と、を有する、
ことを特徴とするテスト実行装置。
【請求項１２】
第１の記憶部への特定のアドレスに対するデータの読み出しリクエストの発生頻度に応じて、前記第１の記憶部に記憶された前記特定のアドレスに格納されたデータを前記第１の記憶部から読み出して第２の記憶部に記憶させるデータ移動処理を行う情報処理装置のテスト実行方法において、
前記データ読み出しリクエストの発行元を識別する情報を受け付け、
受け付けた前記情報に基づき、前記データ読み出しリクエストの発行元が特定の発行元であるか否かの判定を行い、
前記特定の発行元である場合、前記処理装置に、前記特定のアドレスに格納されたデータを読み込む又は前記特定のアドレスへデータを書き込む処理の実行を指示する、
ことを特徴とするテスト実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト実行プログラム、テスト実行装置及びテスト実行方法に関する。
【背景技術】
【０００２】
利用者に対してサービスを提供する事業者（以下、単に事業者とも呼ぶ）は、利用者に対して各種サービスの提供を行うために、用途に応じた業務システムを構成して稼働させる。そして、事業者は、必要に応じて、業務システムにおいて動作させる新たなプログラムの作成や既存のプログラムの修正等を行う。
【０００３】
この場合、事業者は、例えば、メモリに格納されているデータにアクセスする場合とディスクに格納されているデータにアクセスする場合とのそれぞれについて、作成等を行ったプログラム（以下、テスト対象プログラムとも呼ぶ）の動作に関するテストを行う。また、事業者は、例えば、メモリとディスクとの間で移動中であるデータにアクセスする場合についても、同様のテストを行う。これにより、事業者は、アクセス対象のデータの格納状態に依らず、テスト対象プログラムの動作が正常に行われることを確認することが可能になる（例えば、特許文献１及び２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−３２８８５０号公報
【特許文献２】特開２００６−０７２４３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のようなテストを行う場合、事業者は、例えば、テスト対象プログラムの実行とは異なる方法によって、テスト対象プログラムがテストの内容に対応する処理を正常に実行した場合の処理結果（以下、期待値データとも呼ぶ）を予め取得する。具体的に、事業者は、例えば、テスト対象プログラムと異なるプログラム（テスト対象プログラムと同じ処理を行うプログラム）を、テスト対象プログラムの実行環境とは異なる環境において実行することにより、テスト対象プログラムの期待値データを取得する。そして、事業者は、テスト対象プログラムによるテストの内容に対応する処理の結果（以下、単にテストの処理結果とも呼ぶ）と、期待値データとを比較する。これにより、事業者は、テスト対象プログラムが正常に実行したか否かの判定を行う。
【０００６】
ここで、例えば、メモリとディスクとの間においてデータを移動させる制御がデータの監視を行うプロセス（以下、デーモンとも呼ぶ）によって自動的に行われる場合がある。この場合、事業者は、メモリとディスクとの間においてデータが移動するタイミングを特定することが困難である。そのため、事業者は、例えば、テスト対象プログラムを繰り返し実行する。そして、事業者は、テスト対象プログラムの実行後にデーモンのログ等を確認し、メモリとディスクとの間で移動中のデータに対してアクセスが行われていた処理を事後的に特定する。これにより、事業者は、特定した処理による処理結果を、メモリとディスクとの間で移動中のデータに対するアクセスを伴うテストの処理結果として取得することが可能になる。
【０００７】
しかしながら、この場合、事業者は、メモリとディスクとの間で移動中のデータに対するアクセスを伴うテストが行われるタイミングを事前に特定できない。そのため、事業者は、この場合、テストが行われる可能性があるタイミングそれぞれに対応する期待値データを予め用意する必要がある。したがって、事業者は、テスト対象プログラムのテストを効率的に行うことができない場合がある。
【０００８】
そこで、一つの側面では、本発明は、テストを効率的に行うことを可能とするテスト実行プログラム、テスト実行装置及びテスト実行方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
実施の形態の一態様では、第１の記憶部の特定のアドレスに対して特定の発生頻度によるデータの読み出しが実行されたことに応じて、前記特定のアドレスに格納されたデータを前記第１の記憶部から読み出して第２の記憶部に記憶させるデータ移動処理を行う情報処理装置に、前記特定のアドレスに格納されたデータの読み出しを伴うテスト処理を実行させる処理をコンピュータに実行させるテスト実行プログラムにおいて、前記特定のアドレスに格納されたデータに対する前記テスト処理を繰り返し実行し、前記テスト処理の実行に伴って前記データ移動処理が実行されたことに応じて、前記特定のアドレスに格納されたデータに対する特定のテスト処理を実行して、前記特定のテスト処理の実行に伴って前記第２の記憶部に格納された第１のデータを取得する、処理をコンピュータに実行させる。
【発明の効果】
【００１０】
一つの側面によれば、テストを効率的に行うことを可能とする。
【図面の簡単な説明】
【００１１】
【図１】図１は、情報処理システム１０の構成を示す図である。
【図２】図２は、テスト対象プログラムの動作の具体例を説明する図である。
【図３】図３は、テスト対象プログラムの動作の具体例を説明する図である。
【図４】図４は、テスト対象プログラムの動作の具体例を説明する図である。
【図５】図５は、テスト対象プログラムの動作の具体例を説明する図である。
【図６】図６は、テスト対象プログラムの動作の具体例を説明する図である。
【図７】図７は、移動中のデータに対するアクセスを伴うテスト処理の具体例を説明する図である。
【図８】図８は、移動中のデータに対するアクセスを伴うテスト処理の具体例を説明する図である。
【図９】図９は、移動中のデータに対するアクセスを伴うテスト処理の具体例を説明する図である。
【図１０】図１０は、移動中のデータに対するアクセスを伴うテスト処理の具体例を説明する図である。
【図１１】図１１は、移動中のデータに対するアクセスを伴うテスト処理の具体例を説明する図である。
【図１２】図１２は、移動中のデータに対するアクセスを伴うテスト処理の別の具体例を説明する図である。
【図１３】図１３は、情報処理装置１のハードウエア構成を示す図である。
【図１４】図１４は、情報処理装置１の機能のブロック図である。
【図１５】図１５は、第１の実施の形態におけるテスト実行処理の概略を説明するフローチャート図である。
【図１６】図１６は、第１の実施の形態におけるテスト実行処理の概略を説明するフローチャート図である。
【図１７】図１７は、第１の実施の形態におけるテスト実行処理の詳細を説明するフローチャート図である。
【図１８】図１８は、第１の実施の形態におけるテスト実行処理の詳細を説明するフローチャート図である。
【図１９】図１９は、第１の実施の形態におけるテスト実行処理の詳細を説明するフローチャート図である。
【図２０】図２０は、Ｓ２２からＳ２５の処理の具体例を説明する図である。
【図２１】図２１は、Ｓ２２からＳ２５の処理の具体例を説明する図である。
【図２２】図２２は、Ｓ２２からＳ２５の処理の具体例を説明する図である。
【図２３】図２３は、Ｓ２６の処理の具体例を説明する図である。
【図２４】図２４は、Ｓ２６の処理の具体例を説明する図である。
【図２５】図２５は、Ｓ３２からＳ３４の処理の具体例を説明する図である。
【図２６】図２６は、Ｓ３２からＳ３４の処理の具体例を説明する図である。
【図２７】図２７は、Ｓ３５及びＳ３６の処理の具体例を説明する図である。
【図２８】図２８は、Ｓ３５及びＳ３６の処理の具体例を説明する図である。
【図２９】図２９は、通知処理を説明するフローチャート図である。
【図３０】図３０は、通知処理の具体例を説明する図である。
【発明を実施するための形態】
【００１２】
［情報処理システムの構成］
図１は、情報処理システム１０の構成を示す図である。図１に示す情報処理システム１０は、情報処理装置１（以下、テスト実行装置１とも呼ぶ）と、記憶装置１ａとを有する。情報処理装置１は、インターネットやイントラネット等からなるネットワークＮＷを介して事業者端末１１にアクセスすることが可能である。
【００１３】
情報処理装置１では、例えば、利用者にサービスを提供するための業務システムが稼働する。そして、情報処理装置１では、業務システムを構成するプログラム（テスト対象プログラム）の動作に関するテスト処理を実行させるためのテスト実行処理を実行する。具体的に、情報処理装置１は、記憶装置１ａ等に記憶されたデータに対するアクセスが発生する場合のテスト対象プログラムの動作に関するテストを行う。なお、以下、テスト対象プログラムの動作に関するテストに伴う処理をテスト処理とも呼ぶ。
【００１４】
記憶装置１ａは、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等からなる外部ディスク装置である。具体的に、記憶装置１ａは、例えば、情報処理装置１がテスト実行処理を実行する際に参照する各種情報を記憶する。なお、記憶装置１ａは、情報処理装置１の内部に設けられたディスク装置であってもよい。
【００１５】
事業者端末１１は、例えば、テスト対象プログラムの各種テスト（単体テストやリグレッションテスト等）を行う際に、事業者が利用する端末である。以下、記憶装置１ａ等に記憶されたデータに対するアクセスが発生する場合のテスト対象プログラムの動作の具体例について説明を行う。
【００１６】
［テスト対象プログラムの動作の具体例］
図２から図６は、テスト対象プログラムの動作の具体例を説明する図である。図２に示す情報処理装置１（情報処理装置１のＣＰＵ）では、テスト実行処理を実行するためのテスト実行プログラムＰＧ０１と、テスト対象プログラムＰＧ０２と、記憶装置１ａ等に格納されたデータにアクセスを行うためのサブルーチンＰＧ０３とが動作する。また、図２に示す情報処理装置１は、メモリ１ｂを有している。さらに、図２に示す記憶装置１ａには、データＡ、データＢ及びデータＣが記憶されている。
【００１７】
テスト対象プログラムＰＧ０２は、テスト実行プログラムＰＧ０１からのテスト処理の実行指示を受信した場合に、サブルーチンＰＧ０３を介してデータＡ、データＢまたはデータＣに対するアクセスを行う。具体的に、図２に示す例においては、テスト対象プログラムＰＧ０２は、テスト実行プログラムＰＧ０１からのテスト処理の実行指示に応じて、データＡに対して最も頻繁にアクセスを行っている。
【００１８】
この場合、情報処理装置１で動作するデーモン（図示しない）は、例えば、記憶装置１ａに記憶されているデータのうち、アクセスされる頻度が高いデータをメモリ１ｂに記憶する。すなわち、メモリ１ｂに記憶されたデータの読み出しに要する時間は、記憶装置１ａに記憶されたデータの読み出しに要する時間よりも短い。そのため、デーモンは、記憶装置１ａに記憶された各データに対するアクセスの頻度を計測し、アクセスの頻度が高いデータをメモリ１ｂに移動する。これにより、デーモンは、データへのアクセスに要する総時間を短縮することが可能になる。具体的に、デーモンは、図３に示すように、例えば、最も頻繁にアクセスされるデータＡをメモリ１ｂに移動する。
【００１９】
そして、その後、図４に示すように、例えば、データＡに対するアクセスの頻度よりもデータＣに対するアクセスの頻度の方が多くなる場合がある。具体的に、図４に示す例において、テスト対象プログラムＰＧ０２は、データＡに対して１回のみアクセスを行っているのに対し、データＣに対して３回アクセスを行っている。この場合、デーモンは、例えば、図５に示すように、データＡに代えてデータＣをメモリ１ｂに記憶する。これにより、デーモンは、データへのアクセスに要する総時間を効率的に短縮することが可能になる。
【００２０】
ここで、テスト実行プログラムＰＧ０１は、例えば、記憶装置１ａ等に記憶されたデータに対するアクセスが発生する場合のテスト対象プログラムＰＧ０２のテスト処理として、テスト対象プログラムＰＧ０２が記憶装置１ａからメモリ１ｂに移動中のデータに対してアクセスを行う場合のテスト処理を実行する。具体的に、テスト実行プログラムＰＧ０１は、図６に示すように、例えば、データＣが記憶装置１ａからメモリ１ｂに移動している間に、テスト対象プログラムＰＧ０２がデータＣに対するアクセスを行うテスト処理の実行指示を行う。以下、移動中のデータに対するアクセスを伴うテスト処理の具体例について説明を行う。
【００２１】
［移動中のデータに対するアクセスを伴うテスト処理の具体例（１）］
図７から図１１は、移動中のデータに対するアクセスを伴うテスト処理の具体例を説明する図である。具体的に、図７から図１１に示す例は、図６等で説明したデータＣ等に対応するデータＤＴ０１が記憶装置１ａからメモリ１ｂに移動する間に、テスト実行プログラムＰＧ０１によるテスト対象プログラムＰＧ０２のテスト処理ＴＳ０１及びこれに付随する処理が実行される場合を説明する図である。
【００２２】
この場合、テスト実行プログラムＰＧ０１は、図７に示すように、例えば、テスト処理ＴＳ０１を実行する前に、メモリ１ｂに記憶された全てのデータに対する読み込み処理ＲＤ０１を行う。そして、テスト実行プログラムＰＧ０１は、図８に示すように、テスト対象プログラムＰＧ０２に対してテスト処理ＴＳ０１を実行する。なお、サブルーチンＰＧ０３は、この場合、記憶装置１ａからメモリ１ｂに対するデータＤＴ０１に移動が終了するまで、データＤＴ０１に対するアクセスの実行を待機する。そのため、テスト対象プログラムＰＧ０２は、この場合、データＤＴ０１の移動が終了するまで、データＤＴ０１に対するアクセスを行うことができない。
【００２３】
その後、テスト対象プログラムＰＧ０２は、データＤＴ０１に移動が終了した場合、データＤＴ０１にアクセスを行う。具体的に、テスト対象プログラムＰＧ０２は、図９に示すように、例えば、データＤＴ０１に対してアクセスを行い、データＤＴ０１をデータＤＴ０２に更新する。続いて、テスト実行プログラムＰＧ０１は、図１０に示すように、テスト処理ＴＳ０１を実行が終了した後に、メモリ１ｂに記憶された全てのデータに対する読み込み処理ＲＤ０２を行う。
【００２４】
すなわち、テスト実行プログラムＰＧ０１は、テスト対象プログラムＰＧ０２に対するテスト処理ＴＳ０１を実行する際に、読み込み処理ＲＤ０１と読み込み処理ＲＤ０２とをそれぞれ実行する。これにより、テスト実行プログラムＰＧ０１は、テスト処理ＴＳ０１を実行する前のメモリ１ｂに記憶されたデータと、テスト処理ＴＳ０１を実行した後のメモリ１ｂに記憶されたデータとをそれぞれ取得することが可能になる。
【００２５】
その後、テスト実行プログラムＰＧ０１は、図１１に示すように、データＤＴ０１（読み込み処理ＲＤ０１の実行によって取得されたデータ）に対して、例えば、テスト対象プログラムＰＧ０２等と同じ処理を行うプログラム（テスト対象プログラムＰＧ０２とは異なるプログラム）を実行し、データＤＴ０２−１を生成する。
【００２６】
すなわち、テスト実行プログラムＰＧ０１は、テスト対象プログラムＰＧ０２等以外の処理によって、テスト対象プログラムＰＧ０２等が正常に実行された場合の処理結果（期待値データ）としてデータＤＴ０２−１を生成する。そして、テスト対象プログラムＰＧ０１は、図１１に示すように、データＤＴ０２（読み込み処理ＲＤ０２の実行によって取得されたデータ）とデータＤＴ０２−１との比較を行う。
【００２７】
その結果、データＤＴ０２−１の内容とデータＤＴ−０２の内容とが同一であった場合、テスト対象プログラムＰＧ０２等による処理が正常であったと判定することができる。そのため、テスト実行プログラムＰＧ０１は、この場合、例えば、テスト対象プログラムＰＧ０２等に異常がない旨を出力する。
【００２８】
一方、データＤＴ０２−１の内容とデータＤＴ−０２の内容とが同一でなかった場合、テスト対象プログラムＰＧ０２等による処理が正常でなかったと判定することができる。そのため、テスト実行プログラムＰＧ０１は、この場合、例えば、テスト対象プログラムＰＧ０２等に異常がある旨を出力する。
【００２９】
［移動中のデータに対するアクセスを伴うテスト処理の具体例（２）］
次に、移動中のデータに対するアクセスを伴うテスト処理の別の具体例について説明を行う。図１２は、移動中のデータに対するアクセスを伴うテスト処理の別の具体例を説明する図である。
【００３０】
図１２に示す例において、デーモンは、記憶装置１ａからメモリ１ｂに対するデータＤＴ０１の移動を行う場合、例えば、移動対象であるデータＤＴ０１を記憶装置１ｃに記憶する。具体的に、記憶装置１ａに格納されたデータＤＴ０１がメモリ１ｂに移動することを検知した場合、図示しないディスクドライバ（以下、通知部とも呼ぶ）は、データＤＴ０１を記憶装置１ｃに記憶する。
【００３１】
これにより、図１２に示すテスト実行プログラムＰＧ０１は、図７等で説明したように、読み出し処理ＲＤ０１を実行する必要がなく、記憶装置１ａからメモリ１ｂに移動したデータＤＴ０１を取得することが可能になる。そのため、テスト実行プログラムＰＧ０１は、読み出し処理ＲＤ０１を行うことによるテスト処理ＴＳ０１への影響を抑制することが可能になる。具体的に、テスト実行プログラムＰＧ０１は、例えば、データＤＴ０１の移動がテスト処理ＴＳ０１の実行前に完了することを抑制する。
【００３２】
ここで、例えば、記憶装置１ａとメモリ１ｂとの間におけるデータの移動がデーモンによる制御に基づいて自動的に行われている場合、テスト実行プログラムＰＧ０１は、記憶装置１ａとメモリ１ｂとの間においてデータの移動が行われるタイミングを特定することが困難である。そのため、テスト実行プログラムＰＧ０１は、例えば、テスト対象プログラムＰＧ０２によるテスト処理（例えば、テスト処理ＴＳ０１）を繰り返し実行する。そして、テスト実行プログラムＰＧ０１は、テスト処理の実行後にデーモンが出力したログ等を確認し、テスト対象プログラムＰＧ０２の実行に伴うデータに対するアクセスが記憶装置１ａとメモリ１ｂとの間において移動中のデータに対して行われていたか否かを確認する。
【００３３】
しかしながら、テスト実行プログラムＰＧ０１は、この場合、記憶装置１ａからメモリ１ｂに対して移動中のデータ（例えば、データＤＴ０１）に対するアクセスを伴うテスト処理が行われるタイミングを事前に特定できない。そのため、事業者は、この場合、テストが実行される可能性があるタイミングそれぞれに対応する期待値データを予め用意する必要がある。したがって、事業者は、テスト対象プログラムＰＧ０２のテストを効率的に行うことができない場合がある。
【００３４】
そこで、本実施の形態における情報処理装置１は、記憶装置１ａ（以下、第１の記憶部１ａとも呼ぶ）の特定のアドレスに格納されたデータに対するテスト処理を繰り返し実行する。データ移動処理は、記憶装置１ａの特定のアドレスに対して特定の発生頻度によるデータの読み出しが実行されたことに応じて、特定のアドレスに格納されたデータを記憶装置１ａから読み出してメモリ１ｂに記憶させる処理である。
【００３５】
そして、情報処理装置１は、テスト処理の実行に伴ってデータ移動処理が実行されたことに応じて、特定のアドレスに格納されたデータに対する特定のテスト処理を実行し、特定のテスト処理の実行に伴ってメモリ１ｂ（以下、第２の記憶部１ｂとも呼ぶ）に格納されたデータ（以下、第１のデータとも呼ぶ）を取得する。特定のテスト処理は、例えば、記憶装置１ａからメモリ１ｂに移動中のデータに対してアクセスを行う必要があるテスト処理である。
【００３６】
具体的に、情報処理装置１のディスクドライバ（通知部）は、例えば、記憶装置１ａからメモリ１ｂに対して特定のアドレスに格納されたデータが移動するデータ移動処理が実行されたことを検知した場合、テスト実行プログラムＰＧ０１に対して通知を送信する。そして、テスト実行プログラムＰＧ０１は、ディスクドライバから通知が送信されたことに応じて、特定のテスト処理を実行する。
【００３７】
これにより、情報処理装置１は、記憶装置１ａからメモリ１ｂに対して特定のアドレスに格納されたデータが移動しているタイミングを捉えることが可能になる。そのため、情報処理装置１は、記憶装置１ａからメモリ１ｂに対する特定のアドレスに格納されたデータの移動中に、特定のアドレスに格納されたデータに対して特定のテスト処理を行い、第１のデータを取得することが可能になる。
【００３８】
その後、情報処理装置１は、データ移動処理の実行を抑止して、第１のデータが取得されるまでに実行したテスト処理を再度実行する。さらに、情報処理装置１は、特定のテスト処理の再度の実行によって記憶装置１ａに格納されたデータ（以下、第２のデータとも呼ぶ）を取得する。
【００３９】
すなわち、情報処理装置１は、データ移動処理の実行中におけるテスト処理の実行とは別に、データ移動処理の実行を抑止した状態（記憶装置１ａからメモリ１ｂに対してデータ移動することを抑止した状態）でのテスト処理の実行を行う。この場合、データ移動処理の実行を抑止した状態で実行されたテスト処理の実行に伴ってアクセスされるデータは、記憶装置１ａとメモリ１ｂとの間で移動していないデータである。そのため、情報処理装置１は、データ移動処理の実行を抑止した状態で実行されたテスト処理の実行に伴ってアクセスされるデータが、少なくとも記憶装置１ａとメモリ１ｂとの間の移動に伴う異常を含んでいないデータであると判定することができる。したがって、情報処理装置１は、データ移動処理の実行を抑止した状態で実行されたテスト処理の実行が行われる際に、記憶装置１ａに記憶されている第２のデータを第１のデータの期待値データとして取得する。
【００４０】
これにより、情報処理装置１は、テスト処理が行われる可能性があるタイミングそれぞれに対応する期待値データを用意する必要がなくなる。そのため、情報処理装置１は、期待値データの生成に伴う処理負担を軽減させることが可能になる。そして、情報処理装置１は、第１のデータ１３２と第２のデータ１３３とを比較することで、第１のデータ１３２を生成したテスト対象プログラムに異常が含まれているか否かを判定することが可能になる。
【００４１】
［情報処理装置のハードウエア構成］
次に、情報処理装置１のハードウエア構成について説明する。図１３は、情報処理装置１のハードウエア構成を示す図である。
【００４２】
情報処理装置１は、プロセッサであるＣＰＵ１０１と、メモリ１０２と、外部インターフェース（Ｉ／Ｏユニット）１０３と、記憶媒体１０４とを有する。各部は、バス１０５を介して互いに接続される。なお、図７等で説明した記憶装置１ａは、例えば、記憶媒体１０４に対応する。また、図７等で説明したメモリ１ｂは、例えば、メモリ１０２に対応する。
【００４３】
記憶媒体１０４は、例えば、テスト実行処理を行うためのプログラム１１０を記憶する。また、記憶媒体１０４は、例えば、テスト実行処理を行う際に用いられる情報を記憶する情報格納領域１３０（以下、記憶部１３０とも呼ぶ）を有する。なお、プログラム１１０は、例えば、図７等で説明したテスト実行プログラムＰＧ０１に対応する。また、プログラム１１０は、例えば、情報処理装置１のディスクドライバに対応する。
【００４４】
ＣＰＵ１０１は、図１３に示すように、プログラム１１０の実行時に、プログラム１１０を記憶媒体１０４からメモリ１０２にロードし、プログラム１１０と協働してテスト実行処理を行う。外部インターフェース１０３は、例えば、ネットワークＮＷを介して事業者端末１１と通信を行う。
【００４５】
［情報処理装置の機能］
次に、情報処理装置１の機能について説明する。図１４は、情報処理装置１の機能のブロック図である。
【００４６】
ＣＰＵ１０１は、図１４に示すように、プログラム１１０と協働することにより、例えば、テスト実行部１１１と、データ取得部１１２と、データ比較部１１３と、結果出力部１１４として動作する。また、情報格納領域１３０には、実行ファイル１３１と、第１のデータ１３２と、第２のデータ１３３と、第３のデータ１３４と、第４のデータ１３５と、識別情報１３６とが記憶されている。実行ファイル１３１は、例えば、図７等で説明したテスト対象プログラムＰＧ０２やサブルーチンＰＧ０３の実行ファイルである。
【００４７】
テスト実行部１１１は、テスト対象プログラムＰＧ０２等の実行ファイル１３１を実行することにより、記憶装置１ａに格納されたデータに対するテスト処理を繰り返し実行する。そして、データ取得部１１２は、データ移動処理の実行中における特定のテスト処理の実行に伴ってメモリ１ｂに格納された第１のデータ１３２を取得する。
【００４８】
その後、テスト実行部１１１は、データ移動処理の実行を抑止する。具体的に、テスト実行部１１１は、例えば、デーモンに対して、記憶装置１ａに記憶されたデータのメモリ１ｂに対する移動を禁止する旨の指示を行う。そして、テスト実行部１１１は、第１のデータ１３２が取得されるまでに実行したテスト処理を再度実行する。さらに、データ取得部１１２は、テスト実行部１１１によるテスト処理の再度の実行によって記憶装置１ａに格納された第２のデータ１３３を取得する。
【００４９】
データ比較部１１３は、データ取得部１１２によって取得された第１のデータ１３２と第２のデータ１３３とが同一のデータであるか否かを判定する。そして、結果出力部１１４は、データ比較部１１３による判定結果を出力する。具体的に、結果出力部１１４は、例えば、データ比較部１１３による判定結果を、事業者端末１１の出力装置（図示しない）に出力する。第３のデータ１３４、第４のデータ１３５及び識別情報１３６については後述する。
【００５０】
なお、ＣＰＵ１０１は、プログラム１１０と協働することにより、情報処理装置１のディスクドライバとして動作するものであってよい。
【００５１】
［第１の実施の形態］
次に、第１の実施の形態について説明する。図１５及び図１６は、第１の実施の形態におけるテスト実行処理の概略を説明するフローチャート図である。
【００５２】
［第１のデータを取得する処理］
初めに、第１の実施の形態におけるテスト実行処理のうち、第１のデータ１３２を取得する処理について説明を行う。情報処理装置１は、図１５に示すように、テスト実行タイミングまで待機する（Ｓ１のＮＯ）。テスト実行タイミングは、例えば、事業者が情報処理装置１に対してテストの実行を開始する旨を入力したタイミングであってよい。そして、テスト実行タイミングになった場合（Ｓ１のＹＥＳ）、情報処理装置１は、記憶装置１ａの特定のアドレスに格納されたデータに対するテスト処理を繰り返し実行する（Ｓ２、Ｓ３のＮＯ）。
【００５３】
すなわち、情報処理装置１は、例えば、デーモンがテスト移動処理の実行についての制御を行っている場合、テスト移動処理が実行されるタイミングを特定することができない。また、記憶装置１ａからメモリ１ｂに移動しているデータに対するアクセスが発生する場合のテスト処理は、テスト処理の信頼性の観点から、デーモンの制御によってデータの移動が発生したタイミングで実行されることが好ましい。そのため、情報処理装置１は、Ｓ２の処理において、データ移動処理が実行されるまでテスト処理を繰り返し実行する。
【００５４】
その後、テスト処理の実行に伴ってデータ移動処理が実行された場合（Ｓ３のＹＥＳ）、情報処理装置１は、例えば、データ移動処理の実行中において特定のテスト処理を実行する（Ｓ４）。そして、情報処理装置１は、データ移動処理の実行中におけるテスト処理の実行に伴ってメモリ１ｂに格納された第１のデータ１３２を取得する（Ｓ５）。
【００５５】
これにより、情報処理装置１は、記憶装置１ａからメモリ１ｂに対して特定のアドレスに格納されたデータが移動しているタイミングを捉えることが可能になる。そのため、情報処理装置１は、記憶装置１ａからメモリ１ｂに対する特定のアドレスに格納されたデータの移動中に、特定のアドレスに格納されたデータに対して特定のテスト処理を行い、第１のデータを取得することが可能になる。
【００５６】
［第２のデータを取得する処理］
次に、第１の実施の形態におけるテスト実行処理のうち、第２のデータ１３３を取得する処理について説明を行う。情報処理装置１は、図１６に示すように、テスト再実行タイミングまで待機する（Ｓ１１のＮＯ）。テスト再実行タイミングは、例えば、事業者が情報処理装置１に対してテストの再実行を開始する旨を入力したタイミングであってよい。そして、テスト再実行タイミングになった場合（Ｓ１１のＹＥＳ）、情報処理装置１は、データ移動処理の実行を抑止する（Ｓ１２）。
【００５７】
その後、情報処理装置１は、Ｓ２及びＳ４の処理において実行されたテスト処理（第１のデータ１３２が取得されるまでに実行されたテスト処理）を再度実行する（Ｓ１３）。具体的に、情報処理装置１は、Ｓ２の処理においてテスト処理が実行される前に記憶装置１ａ（記憶装置１ａ内の特定のアドレス）に格納されていたデータに対して、Ｓ２及びＳ４の処理において実行されたテスト処理の再度の実行を行う。そして、情報処理装置１は、Ｓ１３の処理おけるテスト処理の再度の実行に伴って記憶装置１ａに格納された第２のデータ１３３を取得する（Ｓ１４）。
【００５８】
すなわち、情報処理装置１は、データ移動処理の実行中におけるテスト処理（図１５で説明したテスト処理）の実行とは別に、データ移動処理の実行を抑止した状態でのテスト処理の実行を行う。この場合、データ移動処理の実行を抑止した状態で実行されたテスト処理の実行に伴ってアクセスされるデータは、記憶装置１ａとメモリ１ｂとの間で移動していないデータである。そのため、情報処理装置１は、データ移動処理の実行を抑止した状態で実行されたテスト処理の実行に伴ってアクセスされるデータが、少なくとも記憶装置１ａとメモリ１ｂとの間の移動に伴う異常を含んでいないデータであると判定することができる。したがって、情報処理装置１は、データ移動処理の実行を抑止した状態で実行されたテスト処理の実行に伴って記憶装置１ａに格納された第２のデータ１３３を、第１のデータ１３２の期待値データとして取得する。
【００５９】
このように、本実施の形態における情報処理装置１は、記憶装置１ａの特定のアドレスに格納されたデータに対するテスト処理を繰り返し実行する。そして、情報処理装置１は、テスト処理の実行に伴ってデータ移動処理が実行されたことに応じて、テスト処理に含まれる特定のテスト処理を実行し、特定のテスト処理の実行に伴ってメモリ１ｂに格納された第１のデータ１３２を取得する。
【００６０】
その後、情報処理装置１は、データ移動処理の実行を抑止して、第１のデータ１３２が取得されるまでに実行したテスト処理を再度実行する。さらに、情報処理装置１は、テスト処理の再度の実行によって記憶装置１ａに格納された第２のデータ１３３を取得する。
【００６１】
これにより、情報処理装置１は、テスト処理が行われる可能性があるタイミングそれぞれに対応する期待値データを用意する必要がなくなる。そのため、情報処理装置１は、期待値データの生成に伴う処理負担を軽減させることが可能になる。そして、情報処理装置１は、第１のデータ１３２と第２のデータ１３３とを比較することで、第１のデータ１３２を生成したテスト対象プログラムに異常が含まれているか否かを判定することが可能になる。
【００６２】
［第１の実施の形態の詳細］
次に、第１の実施の形態の詳細について説明する。図１７から図１９は、第１の実施の形態におけるテスト実行処理の詳細を説明するフローチャート図である。また、図２０から図２８は、第１の実施の形態におけるテスト実行処理の詳細を説明する図である。図２０から図２８を参照しながら、図１７から図１９のテスト実行処理の詳細を説明する。
【００６３】
［第１データ取得処理］
初めに、第１の実施の形態におけるテスト実行処理のうち、第３のデータ１３４及び第１のデータ１３２を取得する処理（以下、第１データ取得処理とも呼ぶ）について説明を行う。
【００６４】
テスト実行部１１１は、図１７に示すように、テスト実行タイミングまで待機する（Ｓ２１のＮＯ）。そして、テスト実行タイミングになった場合（Ｓ２１のＹＥＳ）、テスト実行部１１１は、記憶装置１ａの特定のアドレスに格納されたデータに対するテスト処理を繰り返し実行する（Ｓ２２）。
【００６５】
そして、例えば、ディスクドライバからデータ移動処理の実行が開始された旨の通知を受信した場合（Ｓ２３のＹＥＳ）、データ取得部１１２は、Ｓ２３の処理において通知を受信する直前に実行されたテスト処理を識別する識別情報１３６を情報格納領域１３０に記憶する（Ｓ２４）。以下、ディスクドライバがデータ取得部１１２に通知を送信する処理（以下、通知処理とも呼ぶ）について説明を行う。
【００６６】
［通知処理］
図２９は、通知処理を説明するフローチャート図である。ディスクドライバ（ディスクドライバの情報受付部）は、記憶装置１ａに格納されたデータの読み出しのリクエストの発行元を識別する情報を受け付けるまで待機する（Ｓ５１のＮＯ）。具体的に、ディスクドライバは、例えば、記憶装置１ａから読み出されたデータに付随する情報（例えば、読み出しのリクエストの発行元を識別するプロセスＩＤ）を参照し、読み出しのリクエストの発行元を識別する情報の取得を行うものであってよい。
【００６７】
その後、データの読み出しのリクエストの発行元を識別する情報を受け付けた場合（Ｓ５１のＹＥＳ）、ディスクドライバ（ディスクドライバの発行元判定部）は、Ｓ５１の処理において受け付けた情報に基づき、読み出しのリクエストの発行元が特定の発行元であるか否かの判定を行う（Ｓ５２）。特定の発行元は、例えば、記憶装置１ａに格納されたデータをメモリ１ｂに移動するデーモンである。
【００６８】
そして、読み出しのリクエストの発行元が特定の発行元であると判定された場合（Ｓ５３のＹＥＳ）、ディスクドライバ（ディスクドライバの実行指示部）は、データ移動処理の実行が開始された旨の通知をデータ取得部１１２に対して行う（Ｓ５４）。すなわち、ディスクドライバが行う通知は、特定のテスト処理の実行の開始を指示する通知である。具体的に、ディスクドライバが行う通知は、特定のアドレスに格納されたデータを読み出す処理、または、特定のデータに格納されたデータに対する書き込み処理の実行の開始を指示する通知であってよい。一方、読み出しのリクエストの発行元が特定の発行元でないと判定された場合（Ｓ５３のＹＥＳ）、ディスクドライバは、Ｓ５４の処理を行わない。以下、通知処理の具体例について説明を行う。
【００６９】
［通知処理の具体例］
図３０は、通知処理の具体例を説明する図である。図３０に示す情報処理装置１には、図７等で説明したサブルーチンＰＧ０３及びメモリ１ｂに加えて、ディスクドライバＰＧ０４及びデーモンＰＧ０５が記載されている。一方、図３０に示す情報処理装置１では、テスト実行プログラムＰＧ０１及びテスト対象プログラムＰＧ０２の記載を省略している。以下、特定の発行元がデーモンＰＧ０５であるものとして説明を行う。
【００７０】
ディスクドライバＰＧ０４は、記憶装置１ａからデータの読み出しが行われたことを検知した場合、そのデータの読み出しのリクエストの発行元を特定する。具体的に、図３０に示すように、データの読み出しのリクエストの発行元がデーモンＰＧ０５である場合、ディスクドライバＰＧ０４は、サブルーチンＰＧ０３及びテスト対象プログラムＰＧ０２を介して、テスト実行プログラムＰＧ０１に通知を送信する。一方、データの読み出しのリクエストの発行元がデーモンＰＧ０５以外（例えば、サブルーチンＰＧ０３等）である場合、テスト実行プログラムＰＧ０１に対する通知を送信しない。
【００７１】
すなわち、デーモンＰＧ０５が記憶装置１ａに格納されたデータの読み出しを行う場合とは、記憶装置１ａに格納されたデータをメモリ１ｂに移動する場合である。そのため、ディスクドライバＰＧ０４は、記憶装置１ａに格納されたデータの読み出しのリクエストの発行元がデーモンＰＧ０５である場合、その読み出されたデータについてのデータ移動処理の実行が開始されるものと判定することができる。したがって、ディスクドライバＰＧ０４は、この場合、データ移動処理の実行が開始する旨の通知をテスト実行プログラムＰＧ０１に対して送信する。
【００７２】
これにより、テスト実行プログラムＰＧ０１は、データ移動処理の実行が開始するタイミングを捉えることが可能になる。そのため、テスト実行プログラムＰＧ０１は、データ移動処理の実行が開始したことに応じて、データ移動処理の実行中に行う必要があるテスト処理である特定のテスト処理を実行することが可能になる。したがって、テスト実行プログラムＰＧ０１は、テスト処理を繰り返し実行し、実行したテスト処理に特定のテスト処理が含まれているか否かを事後的に判定する場合よりも、特定のテスト処理を効率的に行うことが可能になる。
【００７３】
図１７に戻り、データ取得部１１２は、識別情報１３６に対応するテスト処理の実行によって記憶装置１ａに格納された第３のデータ１３４を取得する（Ｓ２５）。
【００７４】
すなわち、データ取得部１１２は、第１のデータ１３２及び第２のデータ１３３に加え、特定のテスト処理の直前のテスト処理の実行によって記憶装置１ａに格納された第３のデータ１３４を取得する。また、データ取得部１１２は、後述するように、第３のデータ１３４の期待値データである第４のデータ１３５を取得する。
【００７５】
これにより、情報処理装置１は、第３のデータ１３４と第４のデータ１３５とが同一であるか否かの判定を行うことで、特定のテスト処理の実行が行われる前の段階において、特定のテスト処理の実行によってアクセスされるデータに異常が含まれていたか否かの判定を行うことが可能になる。以下、Ｓ２２からＳ２５の処理の具体例について説明を行う。
【００７６】
［Ｓ２２からＳ２５の処理の具体例］
図２０から図２２は、Ｓ２２からＳ２５の処理の具体例を説明する図である。以下、テスト処理ＴＳ０１及びテスト処理ＴＳ０２が、記憶装置１ａに格納されたデータをメモリ１ｂに移動するためのアクセスを行うテスト処理であるものとして説明を行う。そのため、テスト処理ＴＳ０１及びテスト処理ＴＳ０２は、例えば、記憶装置１ａに格納されたデータがメモリ１ｂに移動するまで繰り返し行われるものである。また、以下、テスト処理ＴＳ０３が、記憶装置１ａからメモリ１ｂに移動中のデータに対するアクセスを伴うテスト処理（特定のテスト処理）であるものとして説明を行う。
【００７７】
なお、テスト処理ＴＳ０３は、例えば、テスト処理ＴＳ０１及びテスト処理ＴＳ０２が行われることによって生成されたデータを入力とするテスト処理であってもよい。すなわち、テスト処理ＴＳ０１及びテスト処理ＴＳ０２は、記憶装置１ａに格納されたデータをメモリ１ｂに移動するためのアクセスを行うだけでなく、テスト処理ＴＳ０３が行われる際に用いられるデータの生成を行うテスト処理であってもよい。
【００７８】
テスト実行部１１１は、図２０に示すように、テスト対象プログラムＰＧ０２に、テスト処理ＴＳ０１の実行指示を送信する（Ｓ２２）。そして、テスト対象プログラムＰＧ０２は、テスト処理ＴＳ０１の実行指示の受信に伴い、記憶装置１ａに格納されたデータＤＴ０１に対してアクセスを行い、データＤＴ０１をデータＤＴ０２に更新する。
【００７９】
その後、テスト実行部１１１は、テスト処理ＴＳ０１の実行を行ってもデータ移動処理が実行されない場合、図２１に示すように、テスト対象プログラムＰＧ０２に、テスト処理ＴＳ０２の実行指示をさらに送信する（Ｓ２２）。そして、テスト対象プログラムＰＧ０２は、テスト処理ＴＳ０２の実行指示の受信に伴い、記憶装置１ａに格納されたデータＤＴ０２に対してアクセスを行い、データＤＴ０２をデータＤＴ０３に更新する。
【００８０】
ここで、図２２に示すように、テスト処理ＴＳ０２の実行に伴って、記憶装置１ａに格納されたデータＤＴ０３をメモリ１ｂに移動するデータ移動処理が実行された場合、ディスクドライバ（図示しない）は、テスト実行プログラムＰＧ０１に対して、データ移動処理が実行された旨の通知を送信する。そして、データ取得部１１２（テスト実行プログラムＰＧ０１）は、この場合、直前に実行されたテスト処理ＴＳ０２を識別する識別情報１３６を情報格納領域１３０に記憶する（Ｓ２３のＹＥＳ、Ｓ２４）。これにより、テスト実行部１１１は、特定のテスト処理の直前に行われたテスト処理を特定することが可能になる。
【００８１】
さらに、データ取得部１１２は、テスト処理ＴＳ０２の実行に応じてメモリ１ｂに格納されたデータＤＴ０３を取得し、取得したデータＤＴ０３を第３のデータ１３４として情報格納領域１３０に記憶する（Ｓ２５）。これにより、データ取得部１１２は、テスト処理ＴＳ０３（特定のテスト処理）が実行される前におけるメモリ１ｂの状態を示すデータ（第３のデータ１３４）を取得することが可能になる。
【００８２】
図１７に戻り、テスト実行部１１１は、特定のテスト処理を実行する（Ｓ２６）。そして、データ取得部１１２は、特定のテスト処理の実行に伴ってメモリ１ｂに格納された第１のデータ１３２を取得する（Ｓ２７）。以下、Ｓ２６及びＳ２７の処理の具体例について説明を行う。
【００８３】
［Ｓ２６及びＳ２７の処理の具体例］
図２３及び図２４は、Ｓ２６及びＳ２７の処理の具体例を説明する図である。テスト実行部１１１は、テスト対象プログラムＰＧ０２に対してテスト処理ＴＳ０２の実行指示を送信した後、図２３に示すように、テスト処理ＴＳ０３（特定のテスト処理）の実行指示の送信を引き続き行う（Ｓ２６）。そして、テスト対象プログラムＰＧ０２は、テスト処理ＴＳ０３の実行指示の受信に伴い、サブルーチンＰＧ０３を介して、記憶装置１ａからメモリ１ｂに対して移動中のデータＤＴ０３に対してアクセスを行う。この場合、サブルーチンＰＧ０３は、図２３に示すように、記憶装置１ａからメモリ１ｂへのデータＤＴ０３の移動が完了してから、データＤＴ０３へのアクセスを行う。
【００８４】
その後、記憶装置１ａからメモリ１ｂに対するデータＤＴ０３の移動が終了した場合、サブルーチンＰＧ０３は、図２４に示すように、メモリ１ｂに格納されたデータＤＴ０３に対してアクセスを行い、データＤＴ０３をデータＤＴ０４に更新する。そして、データ取得部１１２は、テスト処理ＴＳ０３の実行に応じてメモリ１ｂに格納されたデータＤＴ０４を取得し、取得したデータＤＴ０４を第１のデータ１３２として情報格納領域１３０に記憶する（Ｓ２７）。
【００８５】
これにより、データ取得部１１２は、テスト処理ＴＳ０３（特定のテスト処理）が実行された後におけるメモリ１ｂの状態を示すデータ（第１のデータ１３２）を取得することが可能になる。
【００８６】
なお、例えば、Ｓ２３の処理においてディスクドライバから通知が送信されない場合（Ｓ２３のＮＯ）、データ取得部１１２は、Ｓ２４からＳ２７の処理を行わない。すなわち、テスト処理の実行に伴うデータ移動処理が発生しなかった場合、データ取得部１１２は、テスト対象プログラムＰＧ０２の動作が正常であるか否かを判定するためのデータの取得を行わない。
【００８７】
［第２データ取得処理］
次に、第１の実施の形態におけるテスト実行処理のうち、第４のデータ１３５及び第２のデータ１３３を取得する処理（以下、第２データ取得処理とも呼ぶ）について説明を行う。
【００８８】
テスト実行部１１１は、図１８に示すように、テスト再実行タイミングまで待機する（Ｓ３１のＮＯ）。そして、テスト再実行タイミングになった場合（Ｓ３１のＹＥＳ）、テスト実行部１１１は、データ移動処理の実行を抑止する（Ｓ３２）。
【００８９】
その後、テスト実行部１１１は、Ｓ２２及びＳ２６の処理において第１のデータ１３２が取得されるまでに実行されたテスト処理を再度実行する（Ｓ３３）。そして、データ取得部１１２は、Ｓ２４の処理で記憶した識別情報１３６に対応するテスト処理までの各テスト処理の再度の実行によって記憶装置１ａに格納される第４のデータ１３５を取得する（Ｓ３４）。以下、Ｓ３２からＳ３４の処理の具体例について説明を行う。
【００９０】
［Ｓ３２からＳ３４の処理の具体例］
図２５及び図２６は、Ｓ３２からＳ３４の処理の具体例を説明する図である。テスト実行部１１１は、図２０から図２４で説明した処理が行われたタイミングよりも後のタイミングで、テスト対象プログラムＰＧ０２に、テスト処理ＴＳ０１の実行を再度指示する。この場合、テスト実行部１１１は、データ移動処理の実行を抑止した状態で、テスト処理ＴＳ０１の実行の再度の指示を行う（Ｓ３２、Ｓ３３）。そして、テスト対象プログラムＰＧ０２は、テスト処理ＴＳ０１の実行指示の再度の受信に伴って、記憶装置１ａに格納されたデータＤＴ０１に対してアクセスを行い、データＤＴ０１をデータＤＴ０２に更新する。
【００９１】
その後、テスト実行部１１１は、図２５に示すように、テスト対象プログラムＰＧ０２に、テスト処理ＴＳ０２の実行を再度指示する。この場合、テスト実行部１１１は、データ移動処理の実行を抑止した状態で、テスト処理ＴＳ０２の実行の再度を指示する（Ｓ３２、Ｓ３３）。そして、テスト対象プログラムＰＧ０２は、テスト処理ＴＳ０２の実行指示の再度の受信に伴い、記憶装置１ａに格納されたデータＤＴ０２に対してアクセスを行い、データＤＴ０２をデータＤＴ０３に更新する。
【００９２】
ここで、図２２で説明したように、情報格納領域１３０に記憶された識別情報１３６がテスト処理ＴＳ０２を示す情報である場合、データ取得部１１２は、図２６に示すように、テスト処理ＴＳ０２の再度の実行によって記憶装置１ａに記憶されたデータＤＴ０３を取得する。そして、データ取得部１１２は、取得したデータＤＴ０３を第４のデータ１３５として情報格納領域１３０に記憶する（Ｓ３４）。
【００９３】
これにより、データ取得部１１２は、第３のデータ１３４の期待値データである第４のデータ１３５を取得することが可能になる。そのため、データ比較部１１３は、後述するように、第３のデータ１３４と第４のデータ１３５との比較を行うことが可能になる。
【００９４】
図１８に戻り、テスト実行部１１１は、特定のテスト処理を再度実行する（Ｓ３５）。そして、データ取得部１１２は、特定のテスト処理の再度の実行に伴って記憶装置１ａに格納された第２のデータ１３３を取得する（Ｓ３６）。以下、Ｓ３５及びＳ３６の処理の具体例について説明を行う。
【００９５】
［Ｓ３５及びＳ３６の処理の具体例］
図２７及び図２８は、Ｓ３５及びＳ３６の処理の具体例を説明する図である。テスト実行部１１１は、Ｓ３４の処理の後、図２７に示すように、テスト対象プログラムＰＧ０２に、テスト処理ＴＳ０３の実行を再度指示する（Ｓ３５）。そして、テスト対象プログラムＰＧ０２は、テスト処理ＴＳ０３の実行指示の再度の受信に伴い、記憶装置１ａに格納されたデータＤＴ０３に対してアクセスを行い、データＤＴ０３をデータＤＴ０４に更新する。
【００９６】
そして、データ取得部１１２は、図２８に示すように、テスト処理ＴＳ０３の再度の実行によって記憶装置１ａに記憶されたデータＤＴ０４を取得し、取得したデータＤＴ０４を第２のデータ１３３として情報格納領域１３０に記憶する（Ｓ３６）。
【００９７】
これにより、データ取得部１１２は、第１のデータ１３２の期待値データである第２のデータ１３３を取得することが可能になる。そのため、データ比較部１１３は、後述するように、第１のデータ１３２と第２のデータ１３３との比較を行うことが可能になる。
【００９８】
［データ比較処理］
次に、第１の実施の形態におけるテスト実行処理のうち、第１データ取得処理及び第２データ取得処理において取得された各データを比較する処理（以下、データ比較処理とも呼ぶ）について説明を行う。
【００９９】
データ比較部１１３は、図１９に示すように、データ比較タイミングまで待機する（Ｓ４１のＮＯ）。テスト比較タイミングは、例えば、事業者が情報処理装置１に対してデータの比較を開始する旨を入力したタイミングであってよい。そして、データ比較タイミングになった場合（Ｓ４１のＹＥＳ）、データ比較部１１３は、Ｓ２７の処理で取得した第１のデータ１３２と、Ｓ３６の処理で取得した第２のデータ１３３とが同一であるか否かを判定する（Ｓ４２）。また、データ比較部１１３は、この場合、Ｓ２５の処理で取得した第３のデータ１３４と、Ｓ３４の処理で取得した第４のデータ１３５とが同一であるか否かを判定する（Ｓ４３）。
【０１００】
その後、結果出力部１１４は、Ｓ４２及びＳ４３の処理で判定された結果を出力する（Ｓ４４）。
【０１０１】
具体的に、Ｓ４２の処理において、第１のデータ１３２と第２のデータ１３３とが同一であると判定された場合、結果出力部１１４は、例えば、特定のテスト処理が正常に行われた旨を出力する。一方、Ｓ４２の処理において、第１のデータ１３２と第２のデータ１３３とが同一でないと判定された場合、結果出力部１１４は、例えば、特定のテスト処理が正常に行われなかった旨を出力する。
【０１０２】
また、Ｓ４３の処理において、第３のデータ１３４と第４のデータ１３５とが同一であると判定された場合、結果出力部１１４は、例えば、特定のテスト処理が行われる前において、特定のテスト処理によってアクセスされたデータが正常であった旨を出力する。すなわち、結果出力部１１４は、この場合、特定のテスト処理の前に行われたテスト処理が正常に行われた旨を出力する。一方、Ｓ４３の処理において、第３のデータ１３４と第４のデータ１３５とが同一でないと判定された場合、結果出力部１１４は、例えば、特定のテスト処理が行われる前において、特定のテスト処理によってアクセスされたデータが正常でなかった旨を出力する。すなわち、結果出力部１１４は、この場合、特定のテスト処理の前に行われたテスト処理が正常に行われなかった旨を出力する。
【０１０３】
これにより、結果出力部１１４は、テスト対象プログラムＰＧ０２に異常が含まれているか否かを示す情報を出力装置等に出力することが可能になる。そのため、事業者は、例えば、出力された情報に基づく異常の解析等を行うことが可能になる。
【０１０４】
このように、本実施の形態における情報処理装置１は、記憶装置１ａの特定のアドレスに格納されたデータに対するテスト処理を繰り返し実行する。そして、情報処理装置１は、テスト処理の実行に伴ってデータ移動処理が実行されたことに応じて、テスト処理に含まれる特定のテスト処理を実行し、特定のテスト処理の実行に伴ってメモリ１ｂに格納された第１のデータ１３２を取得する。
【０１０５】
その後、情報処理装置１は、データ移動処理の実行を抑止して、第１のデータ１３２が取得されるまでに実行したテスト処理を再度実行する。さらに、情報処理装置１は、テスト処理の再度の実行によって記憶装置１ａに格納された第２のデータ１３３を取得する。
【０１０６】
これにより、情報処理装置１は、テスト処理が行われる可能性があるタイミングそれぞれに対応する期待値データを用意する必要がなくなる。そのため、情報処理装置１は、期待値データの生成に伴う処理負担を軽減させることが可能になる。そして、情報処理装置１は、第１のデータ１３２と第２のデータ１３３とを比較することで、第１のデータ１３２を生成したテスト対象プログラムに異常が含まれているか否かを判定することが可能になる。
【０１０７】
以上の実施の形態をまとめると、以下の付記のとおりである。
【０１０８】
（付記１）
第１の記憶部の特定のアドレスに対して特定の発生頻度によるデータの読み出しが実行されたことに応じて、前記特定のアドレスに格納されたデータを前記第１の記憶部から読み出して第２の記憶部に記憶させるデータ移動処理を行う情報処理装置に、前記特定のアドレスに格納されたデータの読み出しを伴うテスト処理を実行させる処理をコンピュータに実行させるテスト実行プログラムにおいて、
前記特定のアドレスに格納されたデータに対する前記テスト処理を繰り返し実行し、
前記テスト処理の実行に伴って前記データ移動処理が実行されたことに応じて、前記特定のアドレスに格納されたデータに対する特定のテスト処理を実行して、前記特定のテスト処理の実行に伴って前記第２の記憶部に格納された第１のデータを取得する、
処理をコンピュータに実行させることを特徴とするテスト実行プログラム。
【０１０９】
（付記２）
付記１において、さらに、
前記データ移動処理の実行を抑止して、前記第１のデータが取得されるまでに実行した前記テスト処理を実行し、前記特定のテスト処理の該実行によって前記第１の記憶部に格納された第２のデータを取得し、
前記第１のデータと前記第２のデータとが同一であるか否かを判定し、判定した結果を出力する、
処理をコンピュータに実行させることを特徴とするテスト実行プログラム。
【０１１０】
（付記３）
付記２において、
前記第２のデータを取得する処理では、前記テスト処理の実行を、前記テスト処理を実行する処理の前に前記特定のアドレスに格納されていたデータに対して行う、
ことを特徴とするテスト実行プログラム。
【０１１１】
（付記４）
付記２において、
前記第１のデータを取得する処理では、
前記データ移動処理の実行が開始されたことに応じて、前記データ移動処理の実行が開始される直前に実行された前記テスト処理を識別する識別情報を記憶部に記憶し、
前記識別情報に対応する前記テスト処理の実行によって前記第１の記憶部に格納された第３のデータを取得し、
前記第２のデータを取得する処理では、前記識別情報に対応する前記テスト処理の実行によって前記第１の記憶部に格納された第４のデータを取得する、
処理をコンピュータに実行させることを特徴とするテスト実行プログラム。
【０１１２】
（付記５）
付記４において、さらに、
前記第３のデータと前記第４のデータとが同一であるか否かを判定し、判定した結果を出力する、
処理をコンピュータに実行させることを特徴とするテスト実行プログラム。
【０１１３】
（付記６）
付記４において、
前記第１のデータを取得する処理では、
前記データ移動処理の実行の開始を検知する通知部から前記データ移動処理の実行が開始された旨の通知があった場合に、前記データ移動処理の実行が開始されたと判定し、
前記通知を受信する直前に実行された前記テスト処理を識別する情報を前記識別情報として記憶部に記憶する、
ことを特徴とするテスト実行プログラム。
【０１１４】
（付記７）
付記６において、
前記通知部は、
前記第１の記憶部に格納されたデータの読み出しのリクエストの発行元の情報を受け付け、
受け付けた前記情報に基づき、前記リクエストの発行元が特定の発行元であるか否かの判定を行い、
前記リクエストの発行元が前記特定の発行元である場合、前記データ移動処理の実行が開始された旨の通知を行う、
ことを特徴とするテスト実行プログラム。
【０１１５】
（付記８）
付記１において、
前記第１の記憶部に格納されたデータの読み出しの実行速度は、前記第２の記憶部に格納されたデータの読み出しの実行速度よりも高速である、
ことを特徴とするテスト実行プログラム。
【０１１６】
（付記９）
第１の記憶部の特定のアドレスに対して特定の発生頻度によるデータの読み出しが実行されたことに応じて、前記特定のアドレスに格納されたデータを前記第１の記憶部から読み出して第２の記憶部に記憶させるデータ移動処理を行う情報処理装置に、前記特定のアドレスに格納されたデータの読み出しを伴うテスト処理を実行するテスト実行装置において、
前記特定のアドレスに格納されたデータに対する前記テスト処理を繰り返し実行するテスト実行部と、
前記テスト処理の実行に伴って前記データ移動処理が実行されたことに応じて、前記特定のアドレスに格納されたデータに対する特定のテスト処理を実行して、前記特定のテスト処理の実行に伴って前記第２の記憶部に格納された第１のデータを取得するデータ取得部と、を有する、
ことを特徴とするテスト実行装置。
【０１１７】
（付記１０）
第１の記憶部の特定のアドレスに対して特定の発生頻度によるデータの読み出しが実行されたことに応じて、前記特定のアドレスに格納されたデータを前記第１の記憶部から読み出して第２の記憶部に記憶させるデータ移動処理を行う情報処理装置に、前記特定のアドレスに格納されたデータの読み出しを伴うテスト処理を実行するテスト実行方法において、
前記特定のアドレスに格納されたデータに対する前記テスト処理を繰り返し実行し、
前記テスト処理の実行に伴って前記データ移動処理が実行されたことに応じて、前記特定のアドレスに格納されたデータに対する特定のテスト処理を実行して、前記特定のテスト処理の実行に伴って前記第２の記憶部に格納された第１のデータを取得する、
ことを特徴とするテスト実行方法。
【０１１８】
（付記１１）
第１の記憶部への特定のアドレスに対するデータの読み出しリクエストの発生頻度に応じて、前記第１の記憶部に記憶された前記特定のアドレスに格納されたデータを前記第１の記憶部から読み出して第２の記憶部に記憶させるデータ移動処理を行う情報処理装置のテスト実行プログラムにおいて、
前記データ読み出しリクエストの発行元を識別する情報を受け付け、
受け付けた前記情報に基づき、前記データ読み出しリクエストの発行元が特定の発行元であるか否かの判定を行い、
前記特定の発行元である場合、前記処理装置に、前記特定のアドレスに格納されたデータを読み込む又は前記特定のアドレスへデータを書き込む処理の実行を指示する、
処理をコンピュータに実行させることを特徴とするテスト実行プログラム。
【０１１９】
（付記１２）
第１の記憶部への特定のアドレスに対するデータの読み出しリクエストの発生頻度に応じて、前記第１の記憶部に記憶された前記特定のアドレスに格納されたデータを前記第１の記憶部から読み出して第２の記憶部に記憶させるデータ移動処理を行う情報処理装置のテスト実行装置において、
前記データ読み出しリクエストの発行元を識別する情報を受け付ける情報受付部と、
受け付けた前記情報に基づき、前記データ読み出しリクエストの発行元が特定の発行元であるか否かの判定を行う発行元判定部と、
前記特定の発行元である場合、前記処理装置に、前記特定のアドレスに格納されたデータを読み込む又は前記特定のアドレスへデータを書き込む処理の実行を指示する実行指示部と、を有する、
ことを特徴とするテスト実行装置。
【０１２０】
（付記１３）
第１の記憶部への特定のアドレスに対するデータの読み出しリクエストの発生頻度に応じて、前記第１の記憶部に記憶された前記特定のアドレスに格納されたデータを前記第１の記憶部から読み出して第２の記憶部に記憶させるデータ移動処理を行う情報処理装置のテスト実行方法において、
前記データ読み出しリクエストの発行元を識別する情報を受け付け、
受け付けた前記情報に基づき、前記データ読み出しリクエストの発行元が特定の発行元であるか否かの判定を行い、
前記特定の発行元である場合、前記処理装置に、前記特定のアドレスに格納されたデータを読み込む又は前記特定のアドレスへデータを書き込む処理の実行を指示する、
ことを特徴とするテスト実行方法。
【符号の説明】
【０１２１】
１：情報処理装置            １ａ：記憶装置
１１：事業者端末            ＮＷ：ネットワーク
【図１】
0006680980.tif 000002
【図２】
0006680980.tif 000003
【図３】
0006680980.tif 000004
【図４】
0006680980.tif 000005
【図５】
0006680980.tif 000006
【図６】
0006680980.tif 000007
【図７】
0006680980.tif 000008
【図８】
0006680980.tif 000009
【図９】
0006680980.tif 000010
【図１０】
0006680980.tif 000011
【図１１】
0006680980.tif 000012
【図１２】
0006680980.tif 000013
【図１３】
0006680980.tif 000014
【図１４】
0006680980.tif 000015
【図１５】
0006680980.tif 000016
【図１６】
0006680980.tif 000017
【図１７】
0006680980.tif 000018
【図１８】
0006680980.tif 000019
【図１９】
0006680980.tif 000020
【図２０】
0006680980.tif 000021
【図２１】
0006680980.tif 000022
【図２２】
0006680980.tif 000023
【図２３】
0006680980.tif 000024
【図２４】
0006680980.tif 000025
【図２５】
0006680980.tif 000026
【図２６】
0006680980.tif 000027
【図２７】
0006680980.tif 000028
【図２８】
0006680980.tif 000029
【図２９】
0006680980.tif 000030
【図３０】
0006680980.tif 000031