(57)【要約】【課題】被試験装置の試験に要する時間を短縮することができる試験装置、試験方法及びコンピュータプログラムを提供する。【解決手段】実施形態の試験装置は、試験対象の情報処理装置が有する複数のプロセッサのシミュレータと、シミュレータ及び複数のプロセッサのそれぞれに同じ命令セットを実行させ、シミュレータ及び複数のプロセッサの実行結果が一致しない場合に、実行結果が不一致となった命令を特定する命令特定処理を実行する試験実行部と、を備える。試験実行部は、命令特定処理において、命令セットの先頭から連続する１以上の命令で構成される命令のサブセットであってプロセッサごとに異なる数の命令で構成されるサブセットを複数のプロセッサに実行させ、各プロセッサによるサブセットの実行結果と、シミュレータによるサブセットの実行結果とを比較することにより不一致となった命令を特定する。【選択図】図２
2020153804.tif 000002
【特許請求の範囲】
【請求項１】
試験対象の情報処理装置が有する複数のプロセッサのシミュレータと、
前記シミュレータ及び前記複数のプロセッサのそれぞれに同じ命令セットを実行させ、前記シミュレータ及び前記複数のプロセッサの実行結果が一致しない場合に、実行結果が不一致となった命令を特定する命令特定処理を実行する試験実行部と、
を備え、
前記試験実行部は、前記命令特定処理において、前記命令セットの先頭から連続する１以上の命令で構成される前記命令のサブセットであって前記プロセッサごとに異なる数の命令で構成されるサブセットを前記複数のプロセッサに実行させ、各プロセッサによる前記サブセットの実行結果と、前記シミュレータによる前記サブセットの実行結果とを比較することにより前記不一致となった命令を特定する、
試験装置。
【請求項２】
前記試験実行部は、前記複数のプロセッサに対して、それぞれ命令数が１ずつ異なるサブセットを実行させる、
請求項１に記載の試験装置。
【請求項３】
前記試験実行部は、所定数の命令を含むサブセットを実行する第１のプロセッサと、前記第１のプロセッサよりも命令が１つ多いサブセットを実行する第２のプロセッサと、の間で、各プロセッサによるサブセットの実行結果と前記シミュレータによるサブセットの実行結果との比較結果が異なる場合、前記第２のプロセッサが実行したサブセットの最後の命令が前記不一致となった命令であると特定する、
請求項２に記載の試験装置。
【請求項４】
前記試験実行部は、所定数の命令を含むサブセットを実行する第１のプロセッサと、前記第１のプロセッサよりも命令が１つ少ないサブセットを実行する第２のプロセッサと、の間で、各プロセッサによるサブセットの実行結果と前記シミュレータによるサブセットの実行結果との比較結果が異なる場合、前記第１のプロセッサが実行したサブセットの最後の命令が前記不一致となった命令であると特定する、
請求項２に記載の試験装置。
【請求項５】
前記試験実行部は、前記サブセットに含まれる命令数を前記プロセッサの数ずつ増加させながら、前記サブセットの実行及び実行結果の比較を前記複数のプロセッサに繰り返し実行させる、
請求項３に記載の試験装置。
【請求項６】
前記試験実行部は、前記サブセットに含まれる命令数を前記プロセッサの数ずつ減少させながら、前記サブセットの実行及び実行結果の比較を前記複数のプロセッサに繰り返し実行させる、
請求項４に記載の試験装置。
【請求項７】
試験対象の情報処理装置が有する複数のプロセッサのシミュレータを備える試験装置が、
前記シミュレータ及び前記複数のプロセッサのそれぞれに同じ命令セットを実行させるステップと、
前記シミュレータ及び前記複数のプロセッサの実行結果が一致しない場合に、実行結果が不一致となった命令を特定する命令特定処理を実行するステップと、
を有し、
前記命令特定処理において、前記命令セットの先頭から連続する１以上の命令で構成される前記命令のサブセットであって前記プロセッサごとに異なる数の命令で構成されるサブセットを前記複数のプロセッサに実行させ、各プロセッサによる前記サブセットの実行結果と、前記シミュレータによる前記サブセットの実行結果とを比較することにより前記不一致となった命令を特定する、
試験方法。
【請求項８】
試験対象の情報処理装置が有する複数のプロセッサのシミュレータと、
前記シミュレータ及び前記複数のプロセッサのそれぞれに同じ命令セットを実行させ、前記シミュレータ及び前記複数のプロセッサの実行結果が一致しない場合に、実行結果が不一致となった命令を特定する命令特定処理を実行する試験実行部と、
を備え、
前記試験実行部は、前記命令特定処理において、前記命令セットの先頭から連続する１以上の命令で構成される前記命令のサブセットであって前記プロセッサごとに異なる数の命令で構成されるサブセットを前記複数のプロセッサに実行させ、各プロセッサによる前記サブセットの実行結果と、前記シミュレータによる前記サブセットの実行結果とを比較することにより前記不一致となった命令を特定する試験装置、
としてコンピュータを機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、試験装置、試験方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
被試験装置によるプログラムの実行結果と、シミュレータによる同プログラムの実行結果との同一性を確認することにより、被試験装置が有するプロセッサの正常性を確認する試験が行われている。このような試験では、被試験装置の実行結果と、シミュレータの実行結果とが一致しない場合、どの命令において不一致が発生したかを特定するための処理（以下「命令特定処理」という。）が実行される場合がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３６６５３６号公報
【特許文献２】特開２０００−３４７８９３号公報
【特許文献３】特開平０８−３３９３８８号公報
【特許文献４】特開昭６２−１００８４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、命令特定処理に要する時間は、試験に用いられるプログラムの規模に応じて増大する。そのため、被試験装置の試験に要する時間が増大してしまう可能性があった。
【０００５】
そこでこの発明は、上述の課題を解決することができる試験装置、試験方法及びコンピュータプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
本発明の一態様は、試験対象の情報処理装置が有する複数のプロセッサのシミュレータと、前記シミュレータ及び前記複数のプロセッサのそれぞれに同じ命令セットを実行させ、前記シミュレータ及び前記複数のプロセッサの実行結果が一致しない場合に、実行結果が不一致となった命令を特定する命令特定処理を実行する試験実行部と、を備え、前記試験実行部は、前記命令特定処理において、前記命令セットの先頭から連続する１以上の命令で構成される前記命令のサブセットであって前記プロセッサごとに異なる数の命令で構成されるサブセットを前記複数のプロセッサに実行させ、各プロセッサによる前記サブセットの実行結果と、前記シミュレータによる前記サブセットの実行結果とを比較することにより前記不一致となった命令を特定する、試験装置である。
【０００７】
また、本発明の一態様は、試験対象の情報処理装置が有する複数のプロセッサのシミュレータを備える試験装置が、前記シミュレータ及び前記複数のプロセッサのそれぞれに同じ命令セットを実行させるステップと、前記シミュレータ及び前記複数のプロセッサの実行結果が一致しない場合に、実行結果が不一致となった命令を特定する命令特定処理を実行するステップと、を有し、前記命令特定処理において、前記命令セットの先頭から連続する１以上の命令で構成される前記命令のサブセットであって前記プロセッサごとに異なる数の命令で構成されるサブセットを前記複数のプロセッサに実行させ、各プロセッサによる前記サブセットの実行結果と、前記シミュレータによる前記サブセットの実行結果とを比較することにより前記不一致となった命令を特定する、試験方法である。
【０００８】
また、本発明の一態様は、試験対象の情報処理装置が有する複数のプロセッサのシミュレータと、前記シミュレータ及び前記複数のプロセッサのそれぞれに同じ命令セットを実行させ、前記シミュレータ及び前記複数のプロセッサの実行結果が一致しない場合に、実行結果が不一致となった命令を特定する命令特定処理を実行する試験実行部と、を備え、前記試験実行部は、前記命令特定処理において、前記命令セットの先頭から連続する１以上の命令で構成される前記命令のサブセットであって前記プロセッサごとに異なる数の命令で構成されるサブセットを前記複数のプロセッサに実行させ、各プロセッサによる前記サブセットの実行結果と、前記シミュレータによる前記サブセットの実行結果とを比較することにより前記不一致となった命令を特定する試験装置、としてコンピュータを機能させるためのコンピュータプログラムである。
【発明の効果】
【０００９】
本発明によれば、複数のプロセッサを有する被試験装置の試験に要する時間を短縮することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態における試験システムの構成例を示す図である。
【図２】第１実施形態における試験システムの機能構成の具体例を示すブロック図である。
【図３】第１実施形態においてテストプログラムを構成する命令セットの具体例を示す図である。
【図４】第１実施形態の試験システムにおいて実行されるランダム試験の具体例を示すフローチャートである。
【図５】第１実施形態における命令特定処理の具体例を示すフローチャートである。
【図６】第１実施形態において１回目に実行される置換処理の具体例を示す図である。
【図７】第１実施形態において２回目に実行される置換処理の具体例を示す図である。
【図８】第１実施形態の試験装置１の変形例を示す図である。
【図９】第２実施形態における試験システムの機能構成の具体例を示すブロック図である。
【図１０】第２実施形態における命令特定処理の具体例を示すフローチャートである。
【図１１】第２実施形態において１回目に実行される置換処理の具体例を示す図である。
【図１２】第２実施形態において２回目に実行される置換処理の具体例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の一実施形態による試験装置、試験方法及びコンピュータプログラムを図面を参照して説明する。
【００１２】
［第１実施形態］
図１は、第１実施形態における試験システムの構成例を示す図である。図１に示す試験システム１００は、第１実施形態における情報処理装置の試験システムの一例である。試験システム１００は、試験装置１及び被試験装置２を備える。試験装置１は被試験装置２に対してランダム試験を行う装置の一例であり、被試験装置２はそのランダム試験の対象となる情報処理装置の一例である。ここで、ランダム試験とは、ソフトウェアにランダムな入力を与えてエラーの検出を行い、信頼性や性能などを確認するテストのことである。
【００１３】
試験装置１は、例えば、ＣＰＵ（Central Processing Unit）１１と、主記憶装置１２と、通信部１３と、補助記憶装置１４と、を備える。試験装置１において、ＣＰＵ１１と、主記憶装置１２と、通信部１３と、補助記憶装置１４と、はバスＢ１を介した情報の入出力が可能である。また、試験装置１は、通信部１３を介して、被試験装置２と通信可能に接続される。
【００１４】
補助記憶装置１４は、例えば磁気ハードディスク装置や半導体記憶装置などの記憶装置を用いて構成される。補助記憶装置１４は「ランダム試験プログラム」を予め記憶している。ランダム試験プログラムは、試験装置１が被試験装置２に対してランダム試験を行うために実行するプログラムである。ランダム試験プログラムは、ＣＰＵ１１によって補助記憶装置１４から読み出され、主記憶装置１２に展開されることで実行される。
【００１５】
被試験装置２は、例えば、複数のＣＰＵ２１と、主記憶装置２２と、通信部２３と、補助記憶装置２４と、を備える。図１は、複数のＣＰＵ２１の一例として、４つのＣＰＵ＃１〜＃４を示す。被試験装置２において、複数のＣＰＵ２１と、主記憶装置２２と、通信部２３と、補助記憶装置２４とはバスＢ２を介した情報の入出力が可能である。また、被試験装置２は、通信部２３を介して、試験装置１と通信可能に接続される。
【００１６】
補助記憶装置２４は、例えば磁気ハードディスク装置や半導体記憶装置などの記憶装置を用いて構成される。補助記憶装置２４は「連携プログラム」を予め記憶している。連携プログラムは、試験装置１との連携動作により自装置のランダム試験を実現するプログラムである。連携プログラムは、複数のＣＰＵ２１の一部又は全部によって補助記憶装置２４から読み出され、主記憶装置２２に展開されることで実行される。なお、被試験装置２は、ランダム試験の対象となるＣＰＵ２１とは別に、連携プログラムを実行する専用のプロセッサ（図示せず）を備えてもよい。
【００１７】
図２は、第１実施形態における試験システム１００の機能構成の具体例を示すブロック図である。例えば、試験装置１は、ＣＰＵ１１が補助記憶装置１４に記録されているランダム試験プログラムを読み出して実行することにより、試験データ記憶部１０１、ランダム試験実行制御部１０２及びシミュレータ１０３を備える装置として機能する。
【００１８】
なお、試験装置１の各機能の全て又は一部は、ＡＳＩＣ（Application Specific Integrated Circuit）やＰＬＤ（Programmable Logic Device）やＦＰＧＡ（Field Programmable Gate Array）等のハードウェアを用いて実現されてもよい。プログラムは、コンピュータ読み取り可能な記録媒体に記録されてもよい。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。プログラムは、電気通信回線を介して送信されてもよい。
【００１９】
試験データ記憶部１０１は、補助記憶装置１４を用いて実現される情報の記憶部であり、ランダム試験において被試験装置２に実行させるテスト用のプログラム（以下「テストプログラム」という。）の生成（又は決定）や実行に関する各種データ（以下「試験データ」という。）を記憶する。
【００２０】
例えば、試験データには、テストプログラムの生成に用いられる複数種類の命令が含まれており、これらの命令を乱数を用いて組み合わせることによってランダムなテストプログラムが生成される。また、例えば、試験データには、テストプログラムに入力するデータ（以下「テストデータ」という。）を生成するための情報も含まれており、これらの情報と乱数に基づいてランダムなテストデータが生成される。
【００２１】
また、例えば、試験データには、予め用意された複数パターンのテストプログラムと、複数パターンのテストデータとが含まれてもよい。この場合、試験に用いるテストプログラム及びテストデータは、予め用意された複数パターンの中から乱数を用いてランダムに選択されてもよい。
【００２２】
ランダム試験実行制御部１０２は、被試験装置２に対するランダム試験の実行を制御する機能を有する。具体的には、ランダム試験実行制御部１０２は、試験データ記憶部１０１に記憶されている試験データに基づいてテストプログラム及びテストデータを生成し、生成したテストプログラムの実行をシミュレータ１０３に指示する。一方で、ランダム試験実行制御部１０２は、被試験装置２に対して複数のＣＰＵ２１のそれぞれでのテストプログラムの実行を指示する。
【００２３】
ランダム試験実行制御部１０２は、複数のＣＰＵ２１によるテストプログラムの実行結果のいずれかがシミュレータ１０３の実行結果に一致しない場合に、実行結果が不一致となった命令を特定する「命令特定処理」を実行する。命令特定処理の詳細については後述する。なお、テストプログラムは必ずしもテストデータの入力を必要とするものでなくてもよく、テストプログラムが入力データを必要としない場合には、ランダム試験実行制御部１０２はテストデータの生成を省略してもよい。
【００２４】
シミュレータ１０３は、被試験装置２が有する複数のＣＰＵ２１の動作を模擬するソフトウェア又はハードウェアである。シミュレータ１０３はランダム試験実行制御部１０２によって指定されたテストプログラムを実行し、その実行結果をランダム試験実行制御部１０２に出力する。
【００２５】
また、例えば、被試験装置２は、ＣＰＵ２１が補助記憶装置２４に記録されている連携プログラムを読み出して実行することにより、第１の実行部２０１−１、第２の実行部２０１−２、第３の実行部２０１−３、第４の実行部２０１−４及びテスト連携部２０２を備える装置として機能する。
【００２６】
なお、被試験装置２の各機能の全て又は一部は、ＡＳＩＣやＰＬＤやＦＰＧＡ等のハードウェアを用いて実現されてもよい。プログラムは、コンピュータ読み取り可能な記録媒体に記録されてもよい。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。プログラムは、電気通信回線を介して送信されてもよい。
【００２７】
第１の実行部２０１−１、第２の実行部２０１−２、第３の実行部２０１−３及び第４の実行部２０１−４は、ランダム試験実行制御部１０２によって指定されたテストプログラムを、複数のＣＰＵ２１のうち互いに異なるいずれかのＣＰＵで実行する機能を有する。具体的には、第１の実行部２０１−１はＣＰＵ＃１にテストプログラムを実行させる。同様に、第２の実行部２０１−２はＣＰＵ＃２に、第３の実行部２０１−３はＣＰＵ＃３に、第４の実行部２０１−４はＣＰＵ＃４に、それぞれテストプログラムを実行させる。
【００２８】
第１の実行部２０１−１、第２の実行部２０１−２、第３の実行部２０１−３及び第４の実行部２０１−４は、テスト連携部２０２を介して試験装置１からテストプログラム及びテストデータを取得し、取得したテストプログラムを構成する一連の命令列（以下「命令セット」という。）の一部又は全部を実行し、その実行結果をテスト連携部２０２に出力する。命令セットは、１以上の命令と、その実行順序によって定義される。以下、特に区別しない場合、実行部２０１−１、第２の実行部２０１−２、第３の実行部２０１−３及び第４の実行部２０１−４を実行部２０１と記載する。
【００２９】
図３は、第１実施形態においてテストプログラムを構成する命令セットの具体例を示す図である。例えば、図３は、第１命令〜第１００命令までを順に実行し、最後に全命令の実行終了を通知する終了通知命令を実行するテストプログラムの例を示す。ここで、実行部２０１は、命令セットの実行範囲について特に指定がない場合、命令セットの先頭から最後尾の命令までを実行順序のとおりに実行する。
【００３０】
一方、実行部２０１は、命令セットの実行範囲がテストカウンタによって指定されている場合、命令セットの先頭からテストカウンタが示す実行順序の値（以下「カウンタ値」という。）までの一連の命令列（以下「命令サブセット」という。）を実行する。カウンタ値は、ランダム試験実行制御部１０２の指示に応じてテスト連携部２０２が必要に応じて更新する。
【００３１】
例えば、図３の例において命令サブセットが設定されていない場合、実行部２０１は第１命令〜第１００命令までを順に実行し、最後に終了通知命令を実行してテストプログラムの実行を終了する。一方、図３の例においてカウンタ値が３に設定されている場合、実行部２０１は第１命令から第３命令までを順に実行してテストプログラムの実行を終了する。このようなカウンタ値の設定により、ランダム試験実行制御部１０２は、個々のＣＰＵ２１に対して、命令セットの先頭からカウンタ値までの任意の範囲の命令サブセットを実行させることができる。なお、ここで説明した実行部２０１の動作は、ＣＰＵ２１の動作を模擬するシミュレータ１０３についても同様である。
【００３２】
図２の説明に戻る。テスト連携部２０２は、試験装置１のランダム試験実行制御部１０２と連携して被試験装置２のランダム試験を実現する機能を有する。具体的には、テスト連携部２０２は、ランダム試験実行制御部１０２からテストプログラム及びテストデータを取得して各実行部２０１に出力することで、ＣＰＵ＃１〜＃４のそれぞれにテストプログラムを実行させる。また、テスト連携部２０２は、各実行部２０１からＣＰＵ＃１〜＃４によるテストプログラムの実行結果を取得し、取得した実行結果をランダム試験実行制御部１０２に出力する。
【００３３】
また、テスト連携部２０２は、命令特定処理において、複数のＣＰＵ２１に実行させる命令サブセットの範囲をそれぞれのＣＰＵ２１ごとに設定する機能を有する。具体的には、テスト連携部２０２は、ＣＰＵ＃１〜＃４のそれぞれについて別々のカウンタ値を設定することにより、ＣＰＵ＃１〜＃４のそれぞれに実行させる命令サブセットの範囲を指定する。なお、各ＣＰＵに設定すべきカウンタ値はランダム試験実行制御部１０２によって決定され、テスト連携部２０２はランダム試験実行制御部１０２から通知される値でカウンタ値を更新する。
【００３４】
図４は、第１実施形態の試験システム１００において実行されるランダム試験の具体例を示すフローチャートである。まず、試験装置１において、ランダム試験実行制御部１０２が、テストプログラムを生成する（ステップＳ１０１）。例えば、ランダム試験実行制御部１０２は、図３に示したテストプログラムを生成する。具体的には、ランダム試験実行制御部１０２は、試験データ記憶部１０１から試験データを取得するとともに乱数を生成し、生成した乱数に基づいて複数の命令を組み合わせることによってテストプログラムを生成する。
【００３５】
続いて、ランダム試験実行制御部１０２は、ステップＳ１０１で生成したテストプログラムに入力するテストデータを生成する（ステップＳ１０２）。具体的には、ランダム試験実行制御部１０２は、試験データ記憶部１０１から試験データを取得するとともに乱数を生成し、生成した乱数に基づいてテストデータを生成する。ランダム試験実行制御部１０２は、生成したテストプログラム及びテストデータをシミュレータ１０３及び被試験装置２に出力する（ステップＳ１０３）。
【００３６】
続いて、ランダム試験実行制御部１０２がシミュレータ１０３にテストプログラムの実行を指示し、この指示に応じてシミュレータ１０３がテストプログラムを実行する（ステップＳ１０４）。シミュレータ１０３はテストプログラムの実行結果をランダム試験実行制御部１０２に出力する。
【００３７】
同様に、ランダム試験実行制御部１０２は被試験装置２にテストプログラムの実行を指示し、この指示に応じて被試験装置２が複数のＣＰＵ２１のそれぞれでテストプログラムを実行する（ステップＳ１０５）。具体的には、テスト連携部２０２が、ランダム試験実行制御部１０２の指示に応じて、各実行部２０１にテストプログラムの実行を指示する。この指示に応じて各実行部２０１がテストプログラムを実行し、各実行部２０１はテストプログラムの実行結果をテスト連携部２０２に出力する。テスト連携部２０２は各実行部２０１によるテストプログラムの実行結果をランダム試験実行制御部１０２に出力する。
【００３８】
続いて、試験装置１において、ランダム試験実行制御部１０２が、被試験装置２の複数のＣＰＵ２１によるテストプログラムの実行結果が、シミュレータ１０３によるテストプログラムの実行結果に一致しているか否かを判定する（ステップＳ１０６）。複数のＣＰＵ２１によるテストプログラムの実行結果の全てが、シミュレータ１０３によるテストプログラムの実行結果に一致している場合（ステップＳ１０６−ＹＥＳ）、ランダム試験実行制御部１０２は、異常なしとしてランダム試験を終了する。
【００３９】
一方、複数のＣＰＵ２１によるテストプログラムの実行結果のいずれかが、シミュレータ１０３によるテストプログラムの実行結果に一致していない場合（ステップＳ１０６−ＮＯ）、ランダム試験実行制御部１０２は当該テストプログラムについての命令特定処理を実行し（ステップＳ１０７）、実行結果が一致しなかった命令を特定した上でランダム試験を終了する。
【００４０】
図５は、第１実施形態における命令特定処理の具体例を示すフローチャートである。まず、ランダム試験実行制御部１０２は、複数のＣＰＵ２１のうち、テストプログラムの実行結果がシミュレータ１０３と一致しなかったＣＰＵで実行されたテストプログラム、及びそのテストデータを命令特定処理において検査対象とするテストプログラム（以下「検査対象プログラム」という。）及びテストデータ（以下「検査対象データ」という。）として被試験装置２から取得する。ランダム試験実行制御部１０２は、取得した検査対象プログラム及び検査対象データをシミュレータ１０３及び被試験装置２に出力する（ステップＳ２０１）。
【００４１】
続いて、ランダム試験実行制御部１０２は、シミュレータ１０３及び被試験装置２の複数のＣＰＵ２１のテストカウンタに複数のＣＰＵ２１の数に応じた値を設定する。例えば、ランダム試験実行制御部１０２は、ＣＰＵ＃ｉ（ｉ＝１，２，３，４）のカウンタ値をｉとし（ステップＳ２０２）、シミュレータ１０３のテストカウンタに各ＣＰＵ＃ｉのカウンタ値の最大値（すなわちＣＰＵ＃４のカウンタ値である４）を設定する（ステップＳ２０３）。
【００４２】
さらに、ランダム試験実行制御部１０２は、ＣＰＵ＃ｉについて、テストカウンタの現在値＋１番目の命令、すなわち検査対象プログラムに含まれる命令セットの先頭からｉ＋１番目の命令を終了通知命令に置換する処理（以下「置換処理」という。）を実行する（ステップＳ２０４）。そして、ランダム試験実行制御部１０２は、ＣＰＵ＃ｉ及びシミュレータ１０３に対して、検査対象プログラムに含まれる命令セットの先頭からカウンタ値までの一連の命令列（すなわち命令サブセット）を実行させる（ステップＳ２０５）。
【００４３】
具体的には、ランダム試験実行制御部１０２は、ＣＰＵ＃１〜＃４について、図３に例示した命令セットを図６に示す命令セットに変更する置換処理を実行する。図６（Ａ）〜図６（Ｄ）は、それぞれＣＰＵ＃１〜＃４についての置換処理の結果を示す。また、図６（Ａ）〜図６（Ｄ）の各命令セットの左側に示した矢印は、ステップＳ２０２において設定されたテストカウンタの値を示している。すなわち、図６（Ａ）〜図６（Ｄ）に示す各命令セットにおいて、網掛けされていない部分（すなわち実行順序が１〜ｉ＋１までの範囲）の一連の命令列が命令サブセットとなる。一方、網掛けされた部分の命令列は、テストカウンタによって命令サブセットが指定されているときには実行されない無効な命令列として扱われる。
【００４４】
この場合、図６（Ａ）に示すＣＰＵ＃１（ｉ＝１）の例では、カウンタ値が１（＝ｉ）に設定されているため、命令セットの先頭から２（＝ｉ＋１）番目の命令が終了通知命令に置換される。また、図６（Ｂ）に示すＣＰＵ＃２（ｉ＝２）の例では、カウンタ値が２に設定されているため、命令セットの先頭から３番目の命令が終了通知命令に置換される。また、図６（Ｃ）に示すＣＰＵ＃３（ｉ＝３）の例では、カウンタ値が３に設定されているため、命令セットの先頭から４番目の命令が終了通知命令に置換される。また、図６（Ｄ）に示すＣＰＵ＃４（ｉ＝４）の例では、カウンタ値が４に設定されているため、命令セットの先頭から５番目の命令が終了通知命令に置換される。
【００４５】
このような置換処理が行われた各ＣＰＵ２１の命令セットについて、その実行範囲が個々のテストカウンタによって指定されることにより、ＣＰＵ２１の数に応じた範囲の命令サブセットが各ＣＰＵ２１において実行される。例えば、ＣＰＵ＃１では第１命令が、ＣＰＵ＃２では第１命令及び第２命令が、ＣＰＵ＃３では第１命令〜第３命令が、ＣＰＵ＃４では第１命令〜第４命令が、それぞれ実行される。
【００４６】
ランダム試験実行制御部１０２は、このようなテストカウンタの設定により、実行範囲が１命令ずつ異なる複数の命令サブセットの実行結果を取得することができる。また、ランダム試験実行制御部１０２は、このように取得した複数の命令サブセットの実行結果に基づいて、検査対象プログラムにおいて不一致となった命令を特定することができる。
【００４７】
例えば、ランダム試験実行制御部１０２は、図６（Ａ）に示す命令サブセットの実行結果がシミュレータ１０３の実行結果に一致し、かつ、図６（Ｂ）に示す命令サブセットの実行結果がシミュレータ１０３の実行結果に一致しない場合、図６（Ｂ）に示す命令サブセットの末尾の第６命令が不一致となった命令であると特定することができる。
【００４８】
同様に、ランダム試験実行制御部１０２は、図６（Ｂ）に示す命令サブセットの実行結果がシミュレータ１０３の実行結果に一致し、かつ、図６（Ｃ）に示す命令サブセットの実行結果がシミュレータ１０３の実行結果に一致しない場合、図６（Ｃ）に示す命令サブセットの末尾の第７命令が不一致となった命令であると特定することができる。
【００４９】
同様に、ランダム試験実行制御部１０２は、図６（Ｃ）に示す命令サブセットの実行結果がシミュレータ１０３の実行結果に一致し、かつ、図６（Ｄ）に示す命令サブセットの実行結果がシミュレータ１０３の実行結果に一致しない場合、図６（Ｄ）に示す命令サブセットの末尾の第８命令が不一致となった命令であると特定することができる。
【００５０】
図５の説明に戻る。続いて、ランダム試験実行制御部１０２は、被試験装置２による検査対象プログラムの実行結果が全てのＣＰＵでシミュレータ１０３の実行結果に一致しているか否かを判定する（ステップＳ２０６）。いずれかのＣＰＵの実行結果がシミュレータ１０３の実行結果に一致していない場合（ステップＳ２０６−ＮＯ）、ランダム試験実行制御部１０２はその旨を示すエラー情報を出力する（ステップＳ２０７）。
【００５１】
一方、実行結果が全てのＣＰＵでシミュレータ１０３の実行結果に一致している場合（ステップＳ２０６−ＹＥＳ）、ランダム試験実行制御部１０２は検査対象プログラムを構成する命令セットに含まれる全ての命令について検査が完了したか否かを判定する（ステップＳ２０８）。なお、ここでの検査とは、検査対象の命令を複数のＣＰＵ２１のうちのいずれかのＣＰＵ及びシミュレータ１０３に実行させ、その実行結果が一致するか否かを判定することである。
【００５２】
ここで検査が完了していない命令がある場合（ステップＳ２０８−ＮＯ）、ランダム試験実行制御部１０２は各ＣＰＵ＃ｉのテストカウンタの値をそれぞれ４増加させる（ステップＳ２０９）。そして、ランダム試験実行制御部１０２は、シミュレータ１０３のテストカウンタに各ＣＰＵ＃ｉのカウンタ値の最大値（すなわちＣＰＵ＃４と同じ値）を設定し（ステップＳ２１０）、ステップＳ２０４に処理を戻す。これにより、命令セットの置換処理が更新後のカウンタ値に基づいて再度実行される。
【００５３】
例えば、図６に示した１回目の置換処理が実行された後、図７に示す２回目の置換処理が実行される。この２回目の置換処理において、ランダム試験実行制御部１０２は、図６に示した置換処理後の命令セットを一旦置換処理前の状態に戻した上で、新たなカウンタ値に基づいて１回目の置換処理と同様の処理を行うことにより、図７に示す命令セットを生成する。
【００５４】
この場合、図７（Ａ）に示すＣＰＵ＃１（ｉ＝１）の例では、カウンタ値が直前のステップＳ２０９において５（＝ｉ＋４）に設定されているため、命令セットの先頭から６（＝ｉ＋１）番目の命令が終了通知命令に置換される。また、図７（Ｂ）に示すＣＰＵ＃２（ｉ＝２）の例では、カウンタ値が６に設定されているため、命令セットの先頭から７番目の命令が終了通知命令に置換される。また、図７（Ｃ）に示すＣＰＵ＃３（ｉ＝３）の例では、カウンタ値が７に設定されているため、命令セットの先頭から８番目の命令が終了通知命令に置換される。また、図７（Ｄ）に示すＣＰＵ＃４（ｉ＝４）の例では、カウンタ値が８に設定されているため、命令セットの先頭から９番目の命令が終了通知命令に置換される。
【００５５】
このような置換処理が行われた各ＣＰＵ２１の命令セットについて、その実行範囲が個々のテストカウンタによって指定されることにより、ＣＰＵ２１の数に応じた範囲の命令サブセットが各ＣＰＵ２１において実行される。例えば、ＣＰＵ＃１では第１命令〜第５命令が、ＣＰＵ＃２では第１命令〜第６命令が、ＣＰＵ＃３では第１命令〜第７命令が、ＣＰＵ＃４では第１命令〜第８命令が、それぞれ実行される。
【００５６】
また、このようなカウンタ値の更新と命令サブセットの検査とが繰り返し実行されることにより、ＣＰＵ２１の数（本実施形態では４）と同数の命令ずつ検査範囲を徐々に拡大させながら検査対象プログラムを検査することができる。
【００５７】
一方、全ての命令について検査が完了している場合（ステップＳ２０８−ＹＥＳ）、ランダム試験実行制御部１０２は命令特定処理を終了する。例えば、ＣＰＵ＃１〜＃４のうち、命令サブセットの実行が図３に示す命令セットの末尾の第１００命令に最も早く到達するのはＣＰＵ＃４である。そのため、この場合、ランダム試験実行制御部１０２はＣＰＵ＃４から第１００命令の実行結果が得られたことに応じて命令特定処理を終了する。
【００５８】
このように構成された第１実施形態の試験システム１００では、試験装置１が、ランダム試験実行時の命令特定処理において、検査対象プログラムの命令セットを複数のＣＰＵ２１に分散させて検査することにより、被試験装置２の試験に要する時間を短縮することが可能となる。
【００５９】
なお、第１実施形態の試験装置１は必ずしも試験データを記憶している必要はない。例えば、試験装置１は試験データを他の装置や外部システムから取得するように構成されてもよい。また、この場合、試験装置１は、図８に示すように少なくともランダム試験実行制御部１０２及びシミュレータ１０３を備える装置として構成されてもよい。
【００６０】
［第２実施形態］
図９は、第２実施形態における試験システム１００ａの機能構成の具体例を示すブロック図である。試験システム１００ａは、試験装置１に代えて試験装置１ａを備える点で第１実施形態における試験システム１００と異なる。また、試験装置１ａは、ランダム試験実行制御部１０２に代えてランダム試験実行制御部１０２ａを備える点で第１実施形態の試験装置１と異なる。試験システム１００ａのその他の構成は第１実施形態における試験システム１００と同様である。そのため、図９においては、第１実施形態と同様の構成については図２と同じ符号を付すことにより説明を省略する。なお、第２実施形態における試験システム１００ａは機能構成が第１実施形態と異なるのみでシステム構成は第１実施形態と同様である（図１参照）。
【００６１】
ランダム試験実行制御部１０２ａは、基本的には第１実施形態におけるランダム試験実行制御部１０２と同様の機能を有するが、命令特定処理におけるテストカウンタの設定方法において第１実施形態におけるランダム試験実行制御部１０２と異なる。
【００６２】
図１０は、第２実施形態における命令特定処理の具体例を示すフローチャートである。図１０に示すフローチャートは、ステップＳ２０２ａ、Ｓ２０３ａ、Ｓ２０９ａ及びＳ２１０ａにおいて図５に示したフローチャートと異なり、それ以外の処理は第１実施形態と同様である。そのため、図１０においては、第１実施形態と同様の処理については図５と同じ符号を付すことにより説明を省略する。
【００６３】
ステップＳ２０２ａは、ランダム試験実行制御部１０２ａが、ＣＰＵ＃ｉ（ｉ＝１，２，３，４）のカウンタ値を１０１−ｉとする点で第１実施形態におけるステップＳ２０２と異なる。
【００６４】
また、ステップＳ２０３ａ及びＳ２１０ａは、ランダム試験実行制御部１０２ａが、シミュレータ１０３のテストカウンタに各ＣＰＵ＃ｉのカウンタ値の最大値（すなわちＣＰＵ＃１のカウンタ値）を設定する点で第１実施形態におけるステップＳ２０３及びＳ２１０と異なる。具体的には、ステップＳ２０３ａではシミュレータ１０３のテストカウンタに１００が設定され、１回目のステップＳ２１０ａではシミュレータ１０３のテストカウンタに９６が設定される。
【００６５】
ステップＳ２０９ａは、ランダム試験実行制御部１０２ａが、ＣＰＵ＃ｉ（ｉ＝１，２，３，４）のカウンタ値を−４する点で第１実施形態におけるステップＳ２０９と異なる。
【００６６】
具体的には、ランダム試験実行制御部１０２ａは、ＣＰＵ＃１〜＃４について、図３に例示した命令セットを図１１に示す命令セットに変更する置換処理を実行する。図１１（Ａ）〜図１１（Ｄ）は、それぞれＣＰＵ＃１〜＃４についての置換処理の結果を示す。
【００６７】
この場合、図１１（Ａ）に示すＣＰＵ＃１（ｉ＝１）の例では、カウンタ値が１００（＝１０１−ｉ）に設定されているため、命令セットの先頭から数えて１０１（＝１０２−ｉ）番目の命令が終了通知命令に置換される。
【００６８】
同様に、図１１（Ｂ）に示すＣＰＵ＃２（ｉ＝２）の例では、カウンタ値が９９に設定されているため、命令セットの先頭から数えて１００番目の命令が終了通知命令に置換される。図１１（Ｃ）に示すＣＰＵ＃３（ｉ＝３）の例では、カウンタ値が９８に設定されているため、命令セットの先頭から数得て９９番目の命令が終了通知命令に置換される。図１１（Ｄ）に示すＣＰＵ＃４（ｉ＝４）の例では、カウンタ値が９７に設定されているため、命令セットの先頭から数えて９８番目の命令が終了通知命令に置換される。
【００６９】
このような置換処理が行われた各ＣＰＵ２１の命令セットについて、その実行範囲が個々のテストカウンタによって指定されることにより、ＣＰＵ２１の数に応じた範囲の命令サブセットが各ＣＰＵ２１において実行される。例えば、ＣＰＵ＃１では第１命令〜第１００命令が、ＣＰＵ＃２では第１命令〜第９９命令が、ＣＰＵ＃３では第１命令〜第９８命令が、ＣＰＵ＃４では第１命令〜第９７命令が、それぞれ実行される。
【００７０】
ランダム試験実行制御部１０２ａは、このようなテストカウンタの設定により、実行範囲が１命令ずつ異なる複数の命令サブセットの実行結果を取得することができる。また、ランダム試験実行制御部１０２ａは、このように取得した複数の命令サブセットの実行結果に基づいて、検査対象プログラムにおいて不一致となった命令を特定することができる。
【００７１】
例えば、ランダム試験実行制御部１０２ａは、図１１（Ａ）に示す命令サブセットの実行結果がシミュレータ１０３の実行結果に一致せず、かつ、図１１（Ｂ）に示す命令サブセットの実行結果がシミュレータ１０３の実行結果に一致している場合、図１１（Ａ）に示す命令サブセットの末尾の第１００命令が不一致となった命令であると特定することができる。
【００７２】
同様に、ランダム試験実行制御部１０２ａは、図１１（Ｂ）に示す命令サブセットの実行結果がシミュレータ１０３の実行結果に一致せず、かつ、図１１（Ｃ）に示す命令サブセットの実行結果がシミュレータ１０３の実行結果に一致している場合、図１１（Ｂ）に示す命令サブセットの末尾の第９９命令が不一致となった命令であると特定することができる。
【００７３】
同様に、ランダム試験実行制御部１０２ａは、図１１（Ｃ）に示す命令サブセットの実行結果がシミュレータ１０３の実行結果に一致せず、かつ、図１１（Ｄ）に示す命令サブセットの実行結果がシミュレータ１０３の実行結果に一致している場合、図１１（Ｃ）に示す命令サブセットの末尾の第９８命令が不一致となった命令であると特定することができる。
【００７４】
また、この場合、例えば、図１１に示した１回目の置換処理が実行された後、図１２に示す２回目の置換処理が実行される。この２回目の置換処理において、ランダム試験実行制御部１０２ａは、図１１に示した置換処理後の命令セットを一旦置換処理前の状態に戻した上で、新たなカウンタ値に基づいて１回目の置換処理と同様の処理を行うことにより、図１２に示す命令セットを生成する。
【００７５】
この場合、図１２（Ａ）に示すＣＰＵ＃１（ｉ＝１）の例では、カウンタ値が直前のステップＳ２０９ａにおいて９６（＝１０１−ｉ−４）に設定されているため、命令セットの先頭から数えて９７（＝ｉ＋１）番目の命令が終了通知命令に置換される。
【００７６】
同様に、図１２（Ｂ）に示すＣＰＵ＃２（ｉ＝２）の例では、カウンタ値が９５に設定されているため、命令セットの先頭から数えて９６番目の命令が終了通知命令に置換される。また、図１２（Ｃ）に示すＣＰＵ＃３（ｉ＝３）の例では、カウンタ値が９４に設定されているため、命令セットの先頭から数えて９５番目の命令が終了通知命令に置換される。また、図１２（Ｄ）に示すＣＰＵ＃４（ｉ＝４）の例では、カウンタ値が９３に設定されているため、命令セットの先頭から数えて９４番目の命令が終了通知命令に置換される。
【００７７】
このような置換処理が行われた各ＣＰＵ２１の命令セットについて、その実行範囲が個々のテストカウンタによって指定されることにより、ＣＰＵ２１の数に応じた範囲の命令サブセットが各ＣＰＵ２１において実行される。例えば、ＣＰＵ＃１では第１命令〜第９６命令が、ＣＰＵ＃２では第１命令〜第９５命令が、ＣＰＵ＃３では第１命令〜第９４命令が、ＣＰＵ＃４では第１命令〜第９３命令が、それぞれ実行される。
【００７８】
また、このようなカウンタ値の更新と命令サブセットの検査とが繰り返し実行されることにより、ＣＰＵ２１の数（本実施形態では４）と同数の命令ずつ検査範囲を徐々に縮小させながら検査対象プログラムを検査することができる。
【００７９】
また、この場合、例えば、ＣＰＵ＃１〜＃４のうち、検査対象の命令が図３に示す命令セットの先頭の第１命令に最も早く到達するのはＣＰＵ＃４である。そのため、この場合、ランダム試験実行制御部１０２ａはＣＰＵ＃４から第１命令の実行結果が得られたことに応じて命令特定処理を終了する。
【００８０】
このような動作の違いにより、第２実施形態のランダム試験実行制御部１０２ａは、第１実施形態におけるランダム試験実行制御部１０２がＣＰＵ２１の数（本実施形態では４）と同数の命令ずつ検査範囲を徐々に拡大させながら検査対象プログラムを検査したのに対し、ＣＰＵ２１の数（本実施形態では４）と同数の命令ずつ検査範囲を徐々に縮小させながら検査対象プログラムを検査することができる。
【００８１】
このように構成された第２実施形態の試験システム１００ａでは、試験装置１ａが、ランダム試験実行時の命令特定処理において、検査対象プログラムの命令セットを複数のＣＰＵ２１に分散させて検査することにより、被試験装置２の試験に要する時間を短縮することが可能となる。
【００８２】
特に第２実施形態の試験装置１ａは、不一致となった命令が命令セットの半分以降（すなわち半分から末尾側）に存在する場合に不一致となった命令をより早く特定することができる。これに対して第１実施形態の試験装置１は、不一致となった命令が命令セットの半分以前（すなわち半分から先頭側）に存在する場合に不一致となった命令をより早く特定することができる。第１実施形態の試験装置１及び第２実施形態の試験装置１ａはこのような想定に応じて使い分けられるとよい。
【産業上の利用可能性】
【００８３】
本発明は、複数のプロセッサを有する被試験装置についてプロセッサの試験を行う試験装置に利用可能である。
【符号の説明】
【００８４】
１００，１００ａ…試験システム、１，１ａ…試験装置、１１…ＣＰＵ（中央演算処理装置：Central Processing Unit）、１２…主記憶装置、１３…通信部、１４…補助記憶装置、１０１…試験データ記憶部、１０２，１０２ａ…ランダム試験実行制御部、１０３…シミュレータ、２…被試験装置、２１…複数のＣＰＵ、２２…主記憶装置、２３…通信部、２４…補助記憶装置、２０１，２０１−１〜２０１−４…実行部、２０２…テスト連携部、Ｂ１，Ｂ２…バス
【図１】
2020153804.tif 000003
【図２】
2020153804.tif 000004
【図３】
2020153804.tif 000005
【図４】
2020153804.tif 000006
【図５】
2020153804.tif 000007
【図６】
2020153804.tif 000008
【図７】
2020153804.tif 000009
【図８】
2020153804.tif 000010
【図９】
2020153804.tif 000011
【図１０】
2020153804.tif 000012
【図１１】
2020153804.tif 000013
【図１２】
2020153804.tif 000014