(57)【要約】【課題】マルチコアに対応した適切なテスト項目を作成する。【解決手段】複数のタスクを実行する複数のＣＰＵコア、および複数のＣＰＵコアがアクセスする共有資源を備える演算装置におけるテスト項目を生成するテスト項目生成方法は以下のとおりである。すなわち、コンピュータが、複数のタスクのうち、共有資源にアクセスするタスクを特定することと、コンピュータが、複数のタスクを、実行されるＣＰＵコアごとに分類することと、コンピュータが、分類された複数のタスクのＣＰＵコア内における実行順番を特定することと、コンピュータが、特定されたＣＰＵコア内における複数のタスクの実行順番に適合し、かつ異なるＣＰＵコアでそれぞれ実行される共有資源にアクセスする２以上のタスクの実行順番が互いに入れ替えられたタスク実行順列を複数生成することにより、テスト項目を生成することとを備える。【選択図】図３
2018032062.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクを実行する複数のＣＰＵコア、および前記複数のＣＰＵコアがアクセスする共有資源を備える演算装置におけるテスト項目を生成するテスト項目生成方法は、
コンピュータが、前記複数のタスクのうち、前記共有資源にアクセスするタスクを特定することと、
コンピュータが、前記複数のタスクを、実行されるＣＰＵコアごとに分類することと、
コンピュータが、前記分類された複数のタスクのＣＰＵコア内における実行順番を特定することと、
コンピュータが、前記特定されたＣＰＵコア内における前記複数のタスクの実行順番に適合し、かつ異なるＣＰＵコアでそれぞれ実行される前記共有資源にアクセスする２以上のタスクの実行順番が互いに入れ替えられたタスク実行順列を複数生成することにより、前記テスト項目を生成することとを備えるテスト項目生成方法。
【請求項２】
請求項１に記載のテスト項目生成方法において、
前記テスト項目の生成では、異なるＣＰＵコアでそれぞれ実行され、かつ前記共有資源にアクセスするタスクの実行順番の全ての組み合わせについて、前記タスク実行順列を生成する、テスト項目生成方法。
【請求項３】
請求項１に記載のテスト項目生成方法において、
前記テスト項目の生成は、
同一のＣＰＵコアにおいて実行されるタスクを前記実行順番に並べた実行系列を、前記複数のタスクの全てに基づき複数生成することと
前記複数の実行系列の順列を生成することと、
前記順列のそれぞれについて、前記実行系列を構成する先頭または末尾のタスクを前記実行系列から分離させることにより前記実行系列を展開し、前記展開された実行系列および前記分離されたタスクの前記実行順番を保ったまま他の実行系列および他のタスクとの順番をすべて入れ替えて生成される、１または複数の展開列を生成することと、
前記展開列のそれぞれについて、前記実行系列が展開できなくなるまで前記展開列の生成を繰り返すことと、
前記繰り返しにより生成された複数の、前記実行系列の展開ができない前記展開列のそれぞれを前記タスク実行順列とすることと、を備えるテスト項目生成方法。
【請求項４】
請求項１に記載のテスト項目生成方法により生成されたテスト項目と、前記テスト項目を確認するチェックロジックとが格納される記憶部を備える演算装置。
【請求項５】
請求項４に記載の演算装置において、
前記テスト項目を構成する複数のタスク実行順列のそれぞれを順次実行する動作検証モード部と、
前記動作検証モード部を動作させるモード切替部とをさらに備える演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト項目生成方法、および演算装置に関する。
【背景技術】
【０００２】
近年、電子機器は多機能化により演算量が年々増加しており、電子機器に求められるＣＰＵの性能が増加している。そのため、電子機器に搭載するＣＰＵの数を増やすことや、ＣＰＵに内蔵するＣＰＵコアの数を増やすことによって対応している。すなわちいずれの場合も電子機器に複数のＣＰＵコアを搭載すること（マルチコア）により処理能力を向上させている。電子機器が複数のＣＰＵコアを備える場合は、単一のＣＰＵコアしか備えない場合に比べて動作が複雑化し、この動作を検証するためのテスト項目の作成が容易ではない。
特許文献１には、設計を検証する方法が開示されており、ある設計に対して離散的なテスト・ケースまたは１組の関連するテスト・ケースを実行するのに必要とされるリソースを抽出するステップを含む。この方法はさらに、抽出されたリソースに基づいてシミュレーション・モデルを構築するステップと、設計全体ではなく、抽出されたリソースだけを用いてこのシミュレーション・モデルを実行し、それによって、離散的なテスト・ケースまたは１組の関連するテスト・ケースによって表される特定の機能または一群の相互に関係する機能をテストして設計を検証するステップとを含む。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７―１６４７８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載されている発明では、マルチコアに対応した適切なテスト項目を作成することできない。
【課題を解決するための手段】
【０００５】
本発明の第１の態様によるテスト項目生成方法は、複数のタスクを実行する複数のＣＰＵコア、および前記複数のＣＰＵコアがアクセスする共有資源を備える演算装置におけるテスト項目を生成するテスト項目生成方法は、コンピュータが、前記複数のタスクのうち、前記共有資源にアクセスするタスクを特定することと、コンピュータが、前記複数のタスクを、実行されるＣＰＵコアごとに分類することと、コンピュータが、前記分類された複数のタスクのＣＰＵコア内における実行順番を特定することと、コンピュータが、前記特定されたＣＰＵコア内における前記複数のタスクの実行順番に適合し、かつ異なるＣＰＵコアでそれぞれ実行される前記共有資源にアクセスする２以上のタスクの実行順番が互いに入れ替えられたタスク実行順列を複数生成することにより、前記テスト項目を生成することとを備える。
本発明の第２の態様による演算装置は、第１の態様のテスト項目生成方法により生成されたテスト項目と、前記テスト項目を確認するチェックロジックとが格納される記憶部を備える。
【発明の効果】
【０００６】
本発明によれば、マルチコアに対応した適切なテスト項目を作成することできる。
【図面の簡単な説明】
【０００７】
【図１】テスト項目生成装置のハードウエア構成を示す図
【図２】テスト項目生成装置の機能的な構成を示す図
【図３】ＥＣＵのハードウエア構成を示す図
【図４】ＥＣＵの機能的な構成を示す図
【図５】テスト項目の生成の概要を示す図
【図６】テスト項目生成部の動作の一例を示す図
【図７】テスト項目生成部の動作を表すフローチャート
【図８】変形例２におけるテスト項目生成装置の機能的な構成を示す図
【発明を実施するための形態】
【０００８】
（第１の実施の形態）
以下、図１〜図７を参照して、本発明に係るテスト項目生成方法を使用するテスト項目生成装置１００の第１の実施の形態を説明する。テスト項目生成装置１００は、後述するＥＣＵ２００において実行されるテストにおいて使用されるテスト項目を生成する。本実施の形態では、コンピュータプログラムの構成要素を「タスク」と呼ぶ。タスクは１または複数のＣＰＵ命令から構成される。タスクはいずれかのＣＰＵコアで実行され、タスクによっては後述する共有資源２０３へのアクセスが必要である。また、複数のタスクを実行する順序を示したものを「タスク実行順列」と呼ぶ。本実施の形態では、テスト項目は２以上のタスク実行順列から構成されることとする。すなわちＥＣＵ２００において実行されるテストは、生成されたテスト項目にしたがって、所定のタスクを所定の順番で実行することである。
【０００９】
（テスト項目生成装置のハードウエア構成）
図１は、テスト項目生成装置１００のハードウエア構成を示す図である。テスト項目生成装置１００は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、インタフェース１０４とを備える。ＣＰＵ１０１は、テスト項目生成装置１００の動作を制御する。ＣＰＵ１０１は、ＲＯＭ１０２に格納された不図示のプログラムをＲＡＭ１０３に展開して実行することにより、後述する機能を実現する。ＲＡＭ１０３は、前述したプログラムが実行される際のワーキングエリア、および生成されたテスト項目の保存に利用される。インタフェース１０４は、電子データの入出力ポートであり、テスト項目生成装置１００と他の装置との情報の授受を行う。テスト項目生成装置１００は、インタフェース１０４を介してテスト項目の生成に必要な入力情報６を取得する。入力情報６は、プログラムのソースコード、設計ドキュメント、プログラムを実行するＣＰＵのリバースエンジニアリング情報、テスト用ドキュメントなどであり、ＥＣＵ２００のＣＰＵコアで実行される複数のタスクを含む。
【００１０】
（テスト項目生成装置の機能的構成）
図２は、テスト項目生成装置１００の機能的な構成を示す図である。図２に示す各機能は、ＲＯＭ１０２に格納されたプログラムをＣＰＵ１０１が実行することにより実現される。テスト項目生成装置１００は、その機能として、対応情報部１１１と、特定情報部１１２と、順序情報部１１３と、テスト項目生成部１１４と、を備える。またＲＡＭ１０３に対応情報格納領域１２１と、特定情報格納領域１２２と、順序情報格納領域１２３と、テスト項目格納領域１２４とが設けられる。ここでは各機能の概要を説明し、各機能の詳細は後述する。
【００１１】
対応情報格納領域１２１、特定情報格納領域１２２、順序情報格納領域１２３、およびテスト項目格納領域１２４は、ＲＡＭ１０３に設けられた記憶領域である。
対応情報部１１１は、インタフェース１０４から読み込まれる入力情報６を解析し、入力情報６に含まれる複数のタスクのそれぞれがＥＣＵ２００のいずれのＣＰＵコアで実行されるかを特定して、実行されるＣＰＵコアごとにタスクを分類する。そして、タスクの分類結果を示す対応情報を生成する。対応情報部１１１が生成した対応情報は、対応情報格納領域１２１に格納される。特定情報部１１２は、入力情報６を解析し、入力情報６に含まれるタスクのうち、どのタスクが後述する共有資源２０３にアクセスするタスクであるかを特定する。そして、特定したタスクを示す特定情報を生成する。特定情報部１１２が生成した特定情報は、特定情報格納領域１２２に格納される。
【００１２】
順序情報部１１３は、入力情報６を解析し、同一のＣＰＵコアで実行されるタスクの実行順番を特定する。そして、特定した情報である、同一のＣＰＵコアで実行されるタスクの実行順番を示す順序情報を生成する。順序情報部１１３が生成した順序情報は、順序情報格納領域１２３に格納される。順序情報には、ＣＰＵコアごとにタスクの実行順番が示されていてもよいし、複数のＣＰＵコアで実行されるタスクが混在して示されていてもよい。
テスト項目生成部１１４は、対応情報部１１１、特定情報部１１２、および順序情報部１１３が生成した情報に基づきテスト項目を生成し、生成したテスト項目をテスト項目格納領域１２４に格納する。テスト項目生成部１１４が生成したテスト項目は、インタフェース１０４を介してＥＣＵ２００に出力される。
【００１３】
対応情報部１１１、特定情報部１１２、および順序情報部１１３はいずれも、ソースコードを入力情報６とする場合は処理が容易である。対応情報部１１１、特定情報部１１２、および順序情報部１１３は設計ドキュメントやテスト用ドキュメントを入力情報６とする場合は、字句解析等を活用することで、ソースコードと同等の検索を行う。また、ドキュメントの解析ではドキュメントフォーマットの規定により、字句解析を不要とすることも可能である。
特定情報部１１２は、ソースコードを解析して共有資源２０３へアクセスするタスクを特定する際に、共有資源２０３へ直接アクセスするタスクだけではなく、タスクの呼び出しを再帰的に検索することで、共有資源２０３に間接的にアクセスするタスクも特定する。また、間接的なアクセスはタスクの呼び出し回数を指定することで、検索の範囲を限定してもよい。
【００１４】
（ＥＣＵのハードウエア構成）
図３は、ＥＣＵ２００のハードウエア構成を示す図である。ＥＣＵ２００は、第１コア２０１と、第２コア２０２と、共有資源２０３と、ＲＯＭ２０４と、ＲＡＭ２０５と、テスト項目入力部２０６と、を備える。第１コア２０１および第２コア２０２は、ＥＣＵ２００が備えるＣＰＵのコアである。ＥＣＵ２００は単一のコアを有するＣＰＵを複数備えてもよいし、複数のコアを有するＣＰＵを備えてもよい。共有資源２０３は、第１コア２０１および第２コア２０２からアクセスされる資源であり、たとえばＲＡＭ２０５の一部の領域、ＥＣＵ２００が備えるＣＰＵのレジスタ、不図示のアクチュエータ、センサ、および通信バスのいずれかである。テスト項目入力部２０６は、電子データの入出力ポートであり、テスト項目生成装置１００が生成したテスト項目が入力される。
【００１５】
（ＥＣＵの機能的構成）
図４は、ＥＣＵ２００の機能的な構成を示す図である。図４に示す各機能は、ＲＯＭ２０４に格納されたプログラムを第１コア２０１または第２コア２０２が実行することにより実現される。ＥＣＵ２００はその機能として、通常モード部２１１と、動作検証モード部２１２と、モード切替部２１３と、テスト実行データ格納領域２１５とを備える。ＥＣＵ２００は、テスト項目生成装置１００のインタフェース１０４から入力されたテスト項目をテスト項目入力部２０６において受信する。ＥＣＵ２００は、受信したテスト項目をテスト実行データ格納領域２１５に格納する。ＥＣＵ２００は、テスト項目の実行結果をチェックするチェックロジックもテスト実行データ格納領域２１５に格納する。このチェックロジックは、オペレータが作成してもよいし、テスト項目生成装置１００が作成してもよい。
【００１６】
ＥＣＵ２００は、通常モードと動作検証モードの２つの動作モードを有する。ＥＣＵ２００は、ユーザ３により操作されるモード切替部２１３の動作指令により、通常モードと動作検証モードのいずれかが有効になる。通常モードが有効な場合は通常モード部２１１がＥＣＵ２００の動作を制御し、動作検証モードが有効な場合は動作検証モード部２１２がＥＣＵ２００の動作を制御する。
通常モード部２１１は、ＥＣＵ２００が備える不図示のセンサ、または不図示の通信インタフェースからの入力に基づき各種演算処理を行う。動作検証モード部２１２は、テスト実行データ格納領域２１５に格納されたテスト項目を構成する複数のタスク実行順列のそれぞれを順次実行し、その実行結果をチェックロジックと照合する。動作検証モード部２１２は、照合結果を不図示の記憶部に格納し外部から照合結果にアクセス可能に構成してもよい。また動作検証モード部２１２は、ＥＣＵ２００またはＥＣＵ２００が接続される機器が備える報知部、たとえばスピーカやライトを用いて照合結果を報知してもよい。
【００１７】
（テスト項目生成の概要）
図５は、テスト項目生成装置１００によるテスト項目の生成の概要を示す図である。
ソースコード４００１は、ＥＣＵ２００において実行されるプログラムのソースコードである。ソースコード４００１には、符号４００２〜４００７に示すように、そのプログラムを構成するタスクｆ１〜ｆ６の詳細な情報、たとえば各タスクが共有資源２０３にアクセスするか否かが含まれる。またソースコード４００１には、各タスクが実行されるＣＰＵコアの情報、および各ＣＰＵコアにおいて各タスクが実行される順番の情報が含まれる。なお、異なるＣＰＵコアで実行されるタスク同士の実行順番は実行のたびに変更となる可能性があり、ソースコード４００１の記載からは同一のＣＰＵコアで実行されるタスクの実行順番しか明らかにされない。
【００１８】
テスト項目生成装置１００にソースコード４００１が入力情報６として入力されると、対応情報部１１１は、ソースコード４００１を解析して符号４００９で示すように各タスクが実行されるＣＰＵコアを特定する。すなわちテスト項目に含まれるタスクｆ１〜ｆ６のうち、ｆ１、ｆ３、ｆ５のタスクは第１コア２０１で実行され、ｆ２、ｆ４、ｆ６のタスクは第２コア２０２で実行されると特定する。
特定情報部１１２は、ソースコード４００１を解析して、符号４００８で示すように、テスト項目に含まれるタスクｆ１〜ｆ６のうち、ＥＣＵ２００の共有資源２０３にアクセスするタスクはｆ３とｆ４であることを特定する。
【００１９】
順序情報部１１３は、ソースコード４００１を解析して、符号４０１０で示すように、同一のＣＰＵコアで実行されるタスクの実行順番を示す順序情報を特定する。ただし図５ではＣＰＵコアごとにタスクの実行順序を示しているが、複数のＣＰＵコアで実行されるタスクが混在された状態で実行順番が示されてもよい。たとえば、「ｆ１、ｆ２、ｆ３、ｆ４、ｆ５、ｆ６」というタスクの実行順番が順序情報として特定されてもよい。
テスト項目生成部１１４は、対応情報部１１１、特定情報部１１２、および順序情報部１１３が生成した情報、すなわち符号４００８，４００９，４０１０の情報に基づきタスク実行順列を生成する。テスト項目生成部１１４は、特定されたＣＰＵコア内における複数のタスクの実行順番に適合し、かつ異なるＣＰＵコアでそれぞれ実行される共有資源２０３にアクセスするタスクｆ３、ｆ４の実行順番が互いに入れ替えられたタスク実行順列を複数、ここでは２つ生成し、テスト項目として、テスト項目格納領域１２４に符号４０１２で示すように格納する。これにより、テスト項目生成装置１００において、タスクｆ１〜ｆ６を含むテスト項目が作成される。
【００２０】
（テスト項目生成部の動作例）
図５に示した例では共有資源２０３にアクセスするタスクが２つだけだったので、もう少し複雑な例を用いてテスト項目生成部１１４の動作を説明する。ここでは、第１コア２０１でタスクｆ２、ｆ３、ｆ５、ｆ７が実行され、第２コア２０２でタスクｆ４、ｆ６が実行され、ｆ２〜ｆ６が共有資源２０３にアクセスする場合に、テスト項目生成部１１４により生成されるテスト項目を説明する。ここでは同一ＣＰＵコア内では数字が小さいタスクから実行されることとする。また以下では、タスクと後述する実行系列が実行される順番を右矢印の「→」を用いて表現する。たとえばタスクｆ２の次にタスクｆ３が実行されることは、「ｆ２→ｆ３」とあらわされる。
【００２１】
まずテスト項目生成部１１４は、ＣＰＵコアごとに共有資源２０３にアクセスするタスクが実行される順序を特定し、実行系列を生成する。実行系列とは、同一のＣＰＵコアにおいて実行されるタスクであって、共有資源２０３にアクセスする複数のタスクを、順序情報格納領域１２３に格納された順序情報が示すタスクの実行順番で並べたものである。ここでは生成した実行系列をα、βと呼ぶ。実行系列は、ＣＰＵコアと同数だけ生成される。実行系列αがｆ２、ｆ３、ｆ５から構成されることを、以下ではα０（ｆ２、ｆ３、ｆ５）と表記する。同様に、実行系列βはβ０（ｆ４、ｆ６）である。
【００２２】
これ以降では、図６を参照しながらテスト項目生成部１１４がタスク実行順列を生成する手順の説明を続ける。
次にテスト項目生成部１１４は、生成した実行系列をすべて用いた順列、すなわち生成した実行系列をすべて用いて並び替えができる全ての順序を作成する。この例では、図６の未展開の欄に示すように、α→βとβ→αの２つが作成される。以下では、この作成した順列のそれぞれを「順列要素」と呼ぶ。
【００２３】
そしてテスト項目生成部１１４は、生成した順列要素のそれぞれについて、αおよびβを展開して実行順序のバリエーションである順列要素を増加させる。たとえばαの展開とは、αを構成するタスクのうち先頭のタスクを分離させ、αの名称に分離したタスクの数を付加することである。すなわち、α０（ｆ２、ｆ３、ｆ５）が、ｆ２→α１（ｆ３、ｆ５）に展開される。この展開により順列要素を構成する要素が増えたので、さらなる並び替えが可能となる。なお、ここでは順列要素を展開したものも「順列要素」と呼んでいるが、「展開列」と呼んでもよい。また、ここでは実行系列を構成する先頭のタスクを分離させた例を示したが、実行系列を構成する末尾のタスクを分離させてもよい。
【００２４】
したがって、順列要素の１つであるα→βは、αを１回展開することにより図６の「α展開１回目」の欄に示すように、ｆ２→α１（ｆ３、ｆ５）→βと、ｆ２→β→α１（ｆ３、ｆ５）とに展開される。さらにαを展開すると、順列要素α→βは、図６の「α展開２回目」の欄に示すように合計で３つに展開される。このとき、α０（ｆ２、ｆ３、ｆ５）が２回展開されたα２（ｆ５）はｆ５そのものであり、これ以上展開できない。そのため次はβを展開する。
【００２５】
順列要素α→βはさらに、βを展開することにより図６の「β展開１回目」の欄に示すように合計で５つに展開される。このとき、β０（ｆ４、ｆ６）が１回展開されたβ１（ｆ６）はｆ６そのものであり、これ以上展開できない。そのため、以上でα→βの順列要素の展開処理は終了である。
テスト項目生成部１１４は、上述した順列要素α→βの展開と同様に順列要素β→αを展開する。この処理は順列要素α→βの展開と同様なので、説明および図６における例示を省略する。
【００２６】
このように生成された順列要素に、共有資源２０３にアクセスしないタスクｆ７の実行順番を追記して、タスク実行順列とする。共有資源２０３にアクセスしないタスクの実行順番は、同一のＣＰＵコアにおける実行順序に従っているいずれか１か所とする。たとえばｆ７を除く実行順序がｆ２→ｆ３→ｆ５→ｆ４→ｆ６である場合に、ｆ７の実行順番は同一ＣＰＵコアで実行されるｆ５よりも後なので、ｆ５、ｆ４、ｆ６それぞれの直後に挿入することができる。すなわちこの場合に、ｆ７の挿入場所により３とおりの実行順序を生成可能ではあるが、３つのうちのいずれか１つのみを採用してタスク実行順列、すなわちテスト項目の１つとする。共有資源２０３にアクセスしないタスクの実行順番が変化してもテストへの影響がないためである。
【００２７】
（テスト項目生成部のフローチャート）
図７は、テスト項目生成部１１４の動作を表すフローチャートである。以下に説明するフローチャートの各ステップの実行主体は、テスト項目生成装置１００のＣＰＵ１０１である。
ステップＳ３０１では、対応情報部１１１と特定情報部１１２の出力を参照し、ＣＰＵコアごとに共有資源２０３にアクセスするタスクを特定する。続くステップＳ３０２では、順序情報部１１３の出力を参照し、ＣＰＵコアごとに共有資源２０３にアクセスするタスクの実行順序を特定する。
【００２８】
続くステップＳ３０３では、実行系列を生成する。実行系列とは前述のとおり、同一のＣＰＵコアにおいて実行されるタスクであって、共有資源２０３にアクセスする複数のタスクを、順序情報格納領域１２３に格納された順序情報が示すタスクの実行順番に並べたものである。すなわちステップＳ３０３ではＣＰＵコアと同数の実行系列が生成される。続くステップＳ３０４では、実行系列の順列、すなわち複数の順列要素を作成する。ここで作成される順列要素の数は、ステップＳ３０３において生成された実行系列の数の階乗である。異なるＣＰＵコアで実行されるタスクの実行の順番に制限はないからである。図６の例では、α→βとβ→αの作成に相当する。
【００２９】
続くステップＳ３０５では、第１の実行系列、たとえばαを展開対象に設定する。続くステップＳ３０６では、展開対象の実行系列から先頭のタスクを展開する。図６の例では、α０（ｆ２、ｆ３、ｆ５）をｆ２→α１（ｆ３、ｆ５）に展開することに相当する。続くステップＳ３０７では、ステップＳ３０６の展開に伴う順序入れ替えを含む順列要素を生成する。続くステップＳ３０８では展開対象の実行系列がさらに展開可能か否かを判断する。さらに展開可能と判断する場合はステップＳ３０６に戻り、さらなる展開は不可能と判断する場合はステップＳ３０９に進む。図６の例では、α展開２回目やβ展開１回目の終了後にはステップＳ３０９に進むこととなる。
【００３０】
ステップＳ３０９では、未展開の実行系列が存在するか否かを判断する。未展開の実行系列が存在すると判断する場合はステップＳ３１０に進み、未展開の実行系列が存在しないと判断する場合はステップＳ３１１に進む。ステップＳ３１０では未展開の実行系列のいずれかを展開対象に設定し、ステップＳ３０６に戻る。ステップＳ３１１では、共有資源２０３にアクセスしていないタスクを順列要素に追加し、タスク実行順列とする。これにより、異なるＣＰＵコアでそれぞれ実行され、かつ共有資源２０３にアクセスするタスクｆ２、ｆ４、ｆ６とタスクｆ３、ｆ５の実行順番の全ての組み合わせについて、タスク実行順列を生成することができる。続くステップＳ３１２では、生成したタスク実行順列をテスト項目格納領域１２４に格納して図７のフローチャートを終了する。
【００３１】
上述した第１の実施の形態によれば、次の作用効果が得られる。
（１）複数のタスクを実行する複数のＣＰＵコア、および複数のＣＰＵコアがアクセスする共有資源２０３を備える演算装置、すなわちＥＣＵ２００におけるテスト項目を生成するテスト項目生成方法は、以下のようにテスト項目生成装置１００に実行される。このテスト項目生成方法は、以下の４つを含む。第１は、特定情報部１１２により実行される、複数のタスクのうち共有資源２０３にアクセスするタスクを特定することである。第２は、対応情報部１１１により実行される、複数のタスクを、実行されるＣＰＵコアごとに分類することとである。第３は、順序情報部１１３により実行される、分類された複数のタスクのＣＰＵコア内における実行の順番を特定することとである。第４は、テスト項目生成部１１４により実行される、特定されたＣＰＵコア内における複数のタスクの実行順番に適合し、かつ異なるＣＰＵコアでそれぞれ実行される共有資源２０３にアクセスする２以上のタスクの実行順番が互いに入れ替えられたタスク実行順列を複数生成することにより、テスト項目を生成することとである。
そのため、共有資源２０３にアクセスするタスクの実行順番を入れ替えたテスト項目を作成するので、マルチコアに対応した適切なテスト項目を作成することができる。
【００３２】
（２）テスト項目生成装置１００のテスト項目の生成では、異なるＣＰＵコアでそれぞれ実行され、かつ共有資源２０３にアクセスするタスクの実行順番の全ての組み合わせについて、タスク実行順列を生成する。
そのため、タスクの数が多く組み合わせが膨大であっても漏れのないテスト項目を作成することができる。
【００３３】
（３）テスト項目生成部１１４によるテスト項目生成は以下の５つを含む。第１は、同一のＣＰＵコアにおいて実行されるタスクを、特定されたＣＰＵコア内における実行順番に並べた実行系列を生成すること（図７のステップＳ３０３）である。第２は、複数の実行系列の順列を生成すること（図７のステップＳ３０４）とである。第３は、順列のそれぞれについて、実行系列を構成する先頭または末尾のタスクを実行系列から分離させることにより実行系列を展開し、展開された実行系列および分離されたタスクの実行順番を保ったまま他の実行系列および他のタスクとの順番をすべて入れ替えて生成される、１または複数の展開列を生成すること（図７のステップＳ３０６、Ｓ３０７）である。第４は、展開列のそれぞれについて、実行系列が展開できなくなるまで展開列の生成を繰り返すことと（図７のステップＳ３０８が否定判断されるまで繰り返し）である。第５は、繰り返しにより生成された複数の、実行系列の展開ができない展開列のそれぞれをタスク実行順列とすること（図７のステップＳ３１２）である。
そのため、タスクの数が多く組み合わせが膨大であっても、実行系列の順列の生成と展開列の生成の繰り返しにより、漏れのないテスト項目を作成することができる。
【００３４】
（４）演算装置、すなわちＥＣＵ２００は、上述したテスト項目生成方法により生成されたテスト項目と、テスト項目を確認するチェックロジックとが格納される記憶部、すなわちテスト実行データ格納領域２１５を備える。
そのためＥＣＵ２００は、実機であるＥＣＵ２００においてテスト項目を実行し、さらにチェックロジックを用いてそのテスト結果を確認することができる。このテスト項目はテスト項目生成装置１００により生成されたものであり、それぞれのタスクの共有資源２０３へのアクセス順序を同じ順番で確認しないテスト項目である。
【００３５】
（５）演算装置、すなわちＥＣＵ２００は、テスト項目を構成する複数のタスク実行順列のそれぞれを順次実行する動作検証モード部２１２と、動作検証モード部２１２を動作させるモード切替部２１３とを備える。そのためＥＣＵ２００は、動作モードを切り替えてテストを実行することができる。
【００３６】
（変形例１）
対応情報部１１１、特定情報部１１２、および順序情報部１１３は、従前に入力された入力情報６を保存しておき、新たに入力された入力情報６が従前の入力情報６に一致する場合は、それぞれの格納領域に格納した解析結果をテスト項目生成部１１４に出力してもよい。この変形例１によれば、入力情報６に変更がない場合に解析を省略することができる。本変形例における効果は、対応情報部１１１、特定情報部１１２、および順序情報部１１３に入力される情報がそれぞれ異なっており、それらのうちの一部のみが変更される場合、たとえばタスクの実行順番のみが変更される場合に顕著である。
【００３７】
（変形例２）
図８は、変形例２におけるテスト項目生成装置１００の機能的な構成を示す図である。テスト項目生成装置１００は、対応情報変更点分析部１３１と、特定情報変更点分析部１３２と、順序情報変更点分析部１３３と、変更点テスト項目生成部１３４とをさらに備えてもよい。
対応情報変更点分析部１３１は、入力情報６の変更点を分析し、対応情報格納領域１２１に格納されている対応情報を参照し、入力情報６の変更部分に係る対応情報を変更点テスト項目生成部１３４に出力する。特定情報変更点分析部１３２は、入力情報６の変更点を分析し、特定情報格納領域１２２に格納されている特定情報を参照し、入力情報６の変更部分に係る特定情報を変更点テスト項目生成部１３４に出力する。順序情報変更点分析部１３３は、入力情報６の変更点を分析し、順序情報格納領域１２３に格納されている順序情報を参照し、入力情報６の変更部分に係る順序情報を変更点テスト項目生成部１３４に出力する。
【００３８】
変更点テスト項目生成部１３４は、対応情報変更点分析部１３１、特定情報変更点分析部１３２、および順序情報変更点分析部１３３の出力、ならびにテスト項目格納領域１２４に格納されているテスト項目を用いて、修正が必要となるテスト項目のみを生成する。そして変更点テスト項目生成部１３４は、テスト項目格納領域１２４に格納されるテスト項目を更新する。
この変形例２によれば、入力情報６に変更がわずかな場合にテスト項目生成装置１００の処理を減少させることができる。
【００３９】
テスト項目生成装置１００が実行するプログラムは不図示のＲＯＭに格納されるとしたが、プログラムはＲＡＭ１０３や不図示のフラッシュメモリに格納されていてもよい。また、テスト項目生成装置１００がインタフェース１０４を用いて、必要なときにインタフェース１０４が利用可能な媒体を介して、他の装置からプログラムが読み込まれてもよい。ここで媒体とは、例えば入出力インタフェースに着脱可能な記憶媒体、または通信媒体、すなわち有線、無線、光などのネットワーク、または当該ネットワークを伝搬する搬送波やディジタル信号、を指す。また、プログラムにより実現される機能の一部または全部がハードウエア回路やＦＰＧＡにより実現されてもよい。
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。
上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【符号の説明】
【００４０】
１００  …  テスト項目生成装置
１１１  …  対応情報部
１１２  …  特定情報部
１１３  …  順序情報部
１１４  …  テスト項目生成部
１２４  …  テスト項目格納領域
２０１  …  第１コア
２０２  …  第２コア
２０３  …  共有資源
２１２  …  動作検証モード部
２１３  …  モード切替部
２１５  …  テスト実行データ格納領域
【図１】
2018032062.tif 000003
【図２】
2018032062.tif 000004
【図３】
2018032062.tif 000005
【図４】
2018032062.tif 000006
【図５】
2018032062.tif 000007
【図６】
2018032062.tif 000008
【図７】
2018032062.tif 000009
【図８】
2018032062.tif 000010