IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社オートネットワーク技術研究所の特許一覧 ▶ 住友電装株式会社の特許一覧 ▶ 住友電気工業株式会社の特許一覧

特開2024-48916情報処理システム、情報処理方法およびコンピュータプログラム
<>
  • 特開-情報処理システム、情報処理方法およびコンピュータプログラム 図1
  • 特開-情報処理システム、情報処理方法およびコンピュータプログラム 図2
  • 特開-情報処理システム、情報処理方法およびコンピュータプログラム 図3
  • 特開-情報処理システム、情報処理方法およびコンピュータプログラム 図4
  • 特開-情報処理システム、情報処理方法およびコンピュータプログラム 図5
  • 特開-情報処理システム、情報処理方法およびコンピュータプログラム 図6
  • 特開-情報処理システム、情報処理方法およびコンピュータプログラム 図7
  • 特開-情報処理システム、情報処理方法およびコンピュータプログラム 図8
  • 特開-情報処理システム、情報処理方法およびコンピュータプログラム 図9
  • 特開-情報処理システム、情報処理方法およびコンピュータプログラム 図10
  • 特開-情報処理システム、情報処理方法およびコンピュータプログラム 図11
  • 特開-情報処理システム、情報処理方法およびコンピュータプログラム 図12
  • 特開-情報処理システム、情報処理方法およびコンピュータプログラム 図13
  • 特開-情報処理システム、情報処理方法およびコンピュータプログラム 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024048916
(43)【公開日】2024-04-09
(54)【発明の名称】情報処理システム、情報処理方法およびコンピュータプログラム
(51)【国際特許分類】
   G06F 11/36 20060101AFI20240402BHJP
【FI】
G06F11/36 164
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2022155082
(22)【出願日】2022-09-28
(71)【出願人】
【識別番号】395011665
【氏名又は名称】株式会社オートネットワーク技術研究所
(71)【出願人】
【識別番号】000183406
【氏名又は名称】住友電装株式会社
(71)【出願人】
【識別番号】000002130
【氏名又は名称】住友電気工業株式会社
(74)【代理人】
【識別番号】110000280
【氏名又は名称】弁理士法人サンクレスト国際特許事務所
(72)【発明者】
【氏名】高沢 忠浩
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GB08
5B042HH19
5B042HH49
(57)【要約】
【課題】より優先度の高いタスクから先にテストを実行する。
【解決手段】車載装置にて実行されるソフトウェアの開発支援をする情報処理システムであって、前記ソフトウェアに含まれる複数のソースが格納されたリポジトリから提供されるタスクを、前記タスクがテストの実行待ちをするキューに追加する制御部を備え、前記制御部は、前記タスクに関する情報を含む優先度情報が格納されているストレージから、前記優先度情報を読み出し、前記優先度情報に基づいて、前記タスクの優先度を算出し、前記キューに既に蓄積されている前記タスクの優先度と、前記キューに新たに追加する前記タスクの優先度とを比較し、より高い優先度の前記タスクの実行順を先にした状態で、前記タスクを前記キューに追加する、情報処理システム。
【選択図】図1
【特許請求の範囲】
【請求項1】
車載装置にて実行されるソフトウェアの開発支援をする情報処理システムであって、
前記ソフトウェアに含まれる複数のソースが格納されたリポジトリから提供されるタスクを、前記タスクがテストの実行待ちをするキューに追加する制御部を備え、
前記制御部は、
前記タスクに関する情報を含む優先度情報が格納されているストレージから、前記優先度情報を読み出し、
前記優先度情報に基づいて、前記タスクの優先度を算出し、
前記キューに既に蓄積されている前記タスクの優先度と、前記キューに新たに追加する前記タスクの優先度とを比較し、より高い優先度の前記タスクの実行順を先にした状態で、前記タスクを前記キューに追加する、
情報処理システム。
【請求項2】
前記車載装置は車載ECUを含む、
請求項1に記載の情報処理システム。
【請求項3】
前記優先度情報は、テスト環境、前記タスクの過去のテストの結果、前記タスクの過去のテストの実行時点および前記タスクの過去のテストの所要時間のうち少なくともひとつに関する情報を含む、
請求項2に記載の情報処理システム。
【請求項4】
前記優先度情報は、前記タスクに要求される車両の安全規格に関する情報を含む、
請求項1から請求項3のいずれか1項に記載の情報処理システム。
【請求項5】
前記タスクは、第1タスクと、直近の実行時点が前記第1タスクの直近の前記実行時点よりも前である第2タスクと、を含み、
前記制御部は、前記第2タスクの優先度を前記第1タスクの優先度よりも高く算出する、
請求項3に記載の情報処理システム。
【請求項6】
前記タスクは、第1タスクと、前記所要時間が前記第1タスクの前記所要時間よりも短い第2タスクと、を含み、
前記制御部は、前記第2タスクの優先度を前記第1タスクの優先度よりも高く算出する、
請求項3に記載の情報処理システム。
【請求項7】
前記タスクは、直近の前記結果が成功である第1タスクと、直近の前記結果が失敗である第2タスクと、を含み、
前記制御部は、前記第2タスクの優先度を前記第1タスクの優先度よりも高く算出する、
請求項3に記載の情報処理システム。
【請求項8】
前記テスト環境は、
回路基板および前記回路基板の動作を測定する測定部を含むテストセットと、
前記キューから出力される前記タスクに基づいて、前記テストセットを制御することで、前記タスクのテストを実行する実行部と、
を有し、
前記優先度情報は、前記タスクと、前記タスクのテストにおいて使用される前記テストセットとを紐付けた環境情報を含み、
前記制御部は、前記環境情報に基づいて、前記タスクの優先度を算出する、
請求項3に記載の情報処理システム。
【請求項9】
前記テストセットは、複数の第1テストセットと、複数の前記第1テストセットよりも数が少ない第2テストセットと、を含み、
前記タスクは、前記環境情報において、前記第1テストセットに紐付けられている第1タスクと、前記第2テストセットに紐付けられている第2タスクと、を含み、
前記制御部は、前記第2タスクの優先度を前記第1タスクの優先度よりも高く算出する、
請求項8に記載の情報処理システム。
【請求項10】
前記タスクは、第1タスクと、要求される前記安全規格が前記第1タスクに要求される前記安全規格よりも厳しい第2タスクと、を含み、
前記制御部は、前記第2タスクの優先度を前記第1タスクの優先度よりも高く算出する、
請求項4に記載の情報処理システム。
【請求項11】
前記安全規格は、ISO26262のASIL(Automotive Safety Integrity Level)である、
請求項10に記載の情報処理システム。
【請求項12】
前記制御部は、
前記優先度情報に基づいて、前記キューに既に蓄積されている前記タスクの優先度を算出し、
前記キューに既に蓄積されている前記タスクのうち、第3タスクよりも優先度の高い第4タスクを、前記第3タスクよりも先の実行順にて、前記キュー内の蓄積順を並べ替える、
請求項5から請求項9のいずれか1項に記載の情報処理システム。
【請求項13】
前記制御部は、
前記テスト環境、前記安全規格、前記結果、前記実行時点および前記所要時間のうち少なくともひとつに基づいて、前記タスクを複数の分割タスクに分割し、
前記優先度情報に基づいて、複数の前記分割タスクの優先度をそれぞれ算出し、
複数の前記分割タスクのうち、第1分割タスクよりも優先度の高い第2分割タスクを、前記第1分割タスクよりも先の実行順にて、前記キューに蓄積する、
請求項5から請求項9のいずれか1項に記載の情報処理システム。
【請求項14】
車載装置にて実行されるソフトウェアの開発支援をする情報処理方法であって、
前記ソフトウェアに含まれる複数のソースが格納されたリポジトリから提供されるタスクを、前記タスクがテストの実行待ちをするキューに追加するステップを備え、
前記追加するステップは、
前記タスクに関する情報を含む優先度情報が格納されているストレージから、前記優先度情報を読み出す第1ステップと、
前記優先度情報に基づいて、前記タスクの優先度を算出する第2ステップと、
前記キューに既に蓄積されている前記タスクの優先度と、前記キューに新たに追加する前記タスクの優先度とを比較し、より高い優先度の前記タスクの実行順を先にした状態で、前記タスクを前記キューに追加する第3ステップと、
を含む、
情報処理方法。
【請求項15】
車載装置にて実行されるソフトウェアの開発支援をするためのコンピュータプログラムであって、
前記コンピュータプログラムは、コンピュータに、
前記ソフトウェアに含まれる複数のソースが格納されたリポジトリから提供されるタスクを、前記タスクがテストの実行待ちをするキューに追加するステップを実行させ、
前記追加するステップは、
前記タスクに関する情報を含む優先度情報が格納されているストレージから、前記優先度情報を読み出す第1ステップと、
前記優先度情報に基づいて、前記タスクの優先度を算出する第2ステップと、
前記キューに既に蓄積されている前記タスクの優先度と、前記キューに新たに追加する前記タスクの優先度とを比較し、より高い優先度の前記タスクの実行順を先にした状態で、前記タスクを前記キューに追加する第3ステップと、
を含む、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理システム、情報処理方法およびコンピュータプログラムに関する。
【背景技術】
【0002】
従来、ソフトウェアの開発において、継続的インテグレーション(CI:Continuous Integration)および継続的デリバリー(CD:Continuous Delivery)と称される手法が用いられる場合がある。なお、継続的デリバリーに代えて、継続的デプロイ(CD:Continuous Deployment)が実施される場合もある。このような開発手法は、開発途上のソフトウェアをこまめに自動検証することで、大規模な修正イベントを抑制し、修正に掛かるコストを低減することを目的としている。
【0003】
例えば、ソフトウェアの開発現場では、複数の開発者が各自、ソースを作成しており、単体のソースの動作確認が行われている。しかし、1個のソフトウェアとして複数のソースを統合した状態で動作させると、エラーが生じるおそれがある。この場合、いずれのソースの組合せにおいてエラーが生じたのかを1組ずつ検証する必要が生じるため、動作テストに時間が掛かるおそれがある。
【0004】
CI/CDに基づく開発手法では、例えば複数の開発者がそれぞれ作成したソースを、クラウド上のリポジトリに格納する(リポジトリへのプッシュ)。そして、GitHub(登録商標)等のソース管理ツール(SCM:Source Code Managementとも称される。)が、ソースの更新等の都度、リポジトリに格納されたソースに基づいて自動的にタスクを作成する(タスクのビルド)。タスクはJenkins(登録商標)等のCI/CDツールによって自動的にテストされる。
【0005】
このように、小さなサイクルによりインテグレーションを繰り返し行い、インテグレーションのエラーを頻回にチェックすることで、大規模な手戻りを抑制することができる。
【0006】
特許文献1には、テストの重要度、テストの実行時間に基づいて、実行するテストケースを選択する技術が開示されている。特許文献1の技術では、例えば重要度の低いテストケースを実行しないため、CIの自動テストに掛かる時間を抑制することができる。
【0007】
特許文献2には、ソースコードに対応するチケットの属性情報に含まれる優先度属性などに基づいて、自動実行キューの実行対象情報の順序を変更する技術が開示されている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2010-134643号公報
【特許文献2】特開2021-105866号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
自動車等の車両に搭載される装置(車載装置)にて実行されるソフトウェアは、年々大規模化しており、車載装置用のソフトウェアにおいてもCI/CDに基づく開発手法が採用されてきている。
【0010】
ここで、車載装置用のソフトウェアの場合、タスクの動作テストのために、例えば開発用の回路基板や測定治具などのハードウェアリソースを使用する必要がある。このようなハードウェアリソースを多数設けると、テスト環境の構築にコストが掛かるため、ハードウェアリソースの数は制限されている。このため、車載装置用のソフトウェアでは、動作テストを多数並列して実行することが困難であり、より優先度の高いタスクからテストを実行することで、ソフトウェアの修正点をより迅速に発見することが要求される。
【0011】
かかる課題に鑑み、本開示は、より優先度の高いタスクからテストを実行することができる情報処理システム、情報処理方法およびコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
本開示の情報処理システムは、車載装置にて実行されるソフトウェアの開発支援をする情報処理システムであって、前記ソフトウェアに含まれる複数のソースが格納されたリポジトリから提供されるタスクを、前記タスクがテストの実行待ちをするキューに追加する制御部を備え、前記制御部は、前記タスクに関する情報を含む優先度情報が格納されているストレージから、前記優先度情報を読み出し、前記優先度情報に基づいて、前記タスクの優先度を算出し、前記キューに既に蓄積されている前記タスクの優先度と、前記キューに新たに追加する前記タスクの優先度とを比較し、より高い優先度の前記タスクの実行順を先にした状態で、前記タスクを前記キューに追加する、情報処理システムである。
【0013】
本開示の情報処理方法は、車載装置にて実行されるソフトウェアの開発支援をする情報処理方法であって、前記ソフトウェアに含まれる複数のソースが格納されたリポジトリから提供されるタスクを、前記タスクがテストの実行待ちをするキューに追加するステップを備え、前記追加するステップは、前記タスクに関する情報を含む優先度情報が格納されているストレージから、前記優先度情報を読み出す第1ステップと、前記優先度情報に基づいて、前記タスクの優先度を算出する第2ステップと、前記キューに既に蓄積されている前記タスクの優先度と、前記キューに新たに追加する前記タスクの優先度とを比較し、より高い優先度の前記タスクの実行順を先にした状態で、前記タスクを前記キューに追加する第3ステップと、を含む、情報処理方法である。
【0014】
本開示のコンピュータプログラムは、車載装置にて実行されるソフトウェアの開発支援をするためのコンピュータプログラムであって、前記コンピュータプログラムは、コンピュータに、前記ソフトウェアに含まれる複数のソースが格納されたリポジトリから提供されるタスクを、前記タスクがテストの実行待ちをするキューに追加するステップを実行させ、前記追加するステップは、前記タスクに関する情報を含む優先度情報が格納されているストレージから、前記優先度情報を読み出す第1ステップと、前記優先度情報に基づいて、前記タスクの優先度を算出する第2ステップと、前記キューに既に蓄積されている前記タスクの優先度と、前記キューに新たに追加する前記タスクの優先度とを比較し、より高い優先度の前記タスクの実行順を先にした状態で、前記タスクを前記キューに追加する第3ステップと、を含む、コンピュータプログラムである。
【発明の効果】
【0015】
本開示によれば、より優先度の高いタスクからテストを実行することができる。
【図面の簡単な説明】
【0016】
図1図1は、実施形態に係る情報処理システムの一例を示す図である。
図2図2は、実施形態に係るソフトウェアの一例を示す図である。
図3図3は、実施形態に係る情報処理装置の内部構成の一例を示す図である。
図4図4は、実施形態に係るテスト環境の一例を示す図である。
図5図5は、実施形態に係るバージョン情報の一例を示すテーブルである。
図6図6は、実施形態に係る実行時点情報の一例を示すテーブルである。
図7図7は、実施形態に係る所要時間情報の一例を示すテーブルである。
図8図8は、実施形態に係るテスト結果情報の一例を示すテーブルである。
図9図9は、実施形態に係る安全規格情報の一例を示すテーブルである。
図10図10は、実施形態に係る環境情報の一例を示すテーブルである。
図11図11は、実施形態に係る情報処理方法の一例を示すフローチャートである。
図12図12は、変形例に係る情報処理方法を示すフローチャートである。
図13図13は、変形例に係る各タスクの優先度を説明する図である。
図14図14は、変形例に係るテスト結果情報を示すテーブルである。
【発明を実施するための形態】
【0017】
[本開示の実施形態の説明]
本開示の実施形態には、その要旨として、以下の構成が含まれる。
【0018】
(1)本開示の情報処理システムは、車載装置にて実行されるソフトウェアの開発支援をする情報処理システムであって、前記ソフトウェアに含まれる複数のソースが格納されたリポジトリから提供されるタスクを、前記タスクがテストの実行待ちをするキューに追加する制御部を備え、前記制御部は、前記タスクに関する情報を含む優先度情報が格納されているストレージから、前記優先度情報を読み出し、前記優先度情報に基づいて、前記タスクの優先度を算出し、前記キューに既に蓄積されている前記タスクの優先度と、前記キューに新たに追加する前記タスクの優先度とを比較し、より高い優先度の前記タスクの実行順を先にした状態で、前記タスクを前記キューに追加する、情報処理システムである。
【0019】
このように構成することで、より優先度の高いタスクから先にテストを実行することができる。
【0020】
(2)前記(1)の情報処理システムにおいて、前記車載装置は車載ECUを含んでもよい。
【0021】
車載ECU向けのソフトウェア開発は、大規模となる傾向があるため、より優先度の高いタスクから先にテストを実行することが特に有用となる。
【0022】
(3)前記(1)又は前記(2)の情報処理システムにおいて、前記優先度情報は、テスト環境、前記タスクの過去のテストの結果、前記タスクの過去のテストの実行時点および前記タスクの過去のテストの所要時間のうち少なくともひとつに関する情報を含んでもよい。
【0023】
優先度情報にテスト環境等が含まれるため、タスクに応じた適切な優先度の決定をすることができる。
【0024】
(4)前記(1)から前記(3)のいずれかの情報処理システムにおいて、前記優先度情報は、前記タスクに要求される車両の安全規格に関する情報を含んでもよい。
【0025】
優先度情報に車両の安全規格に関する情報が含まれるため、車両の種類や前記車両に搭載される車載装置に応じた適切な優先度の決定をすることができる。
【0026】
(5)前記(3)の情報処理システムにおいて、前記タスクは、第1タスクと、直近の実行時点が前記第1タスクの直近の前記実行時点よりも前である第2タスクと、を含んでもよい。この場合、前記制御部は、前記第2タスクの優先度を前記第1タスクの優先度よりも高く算出してもよい。
【0027】
しばらくテストされていないタスクについてより早くテストを実行することで、ソース修正の規模が大きくなることを抑制することができる。
【0028】
(6)前記(3)又は前記(5)の情報処理システムにおいて、前記タスクは、第1タスクと、前記所要時間が前記第1タスクの前記所要時間よりも短い第2タスクと、を含んでもよい。この場合、前記制御部は、前記第2タスクの優先度を前記第1タスクの優先度よりも高く算出してもよい。
【0029】
短時間で実行できるタスクから先にテストを実行することで、時間あたりのテストの実行数を多くすることができ、実行待ちのタスク数を少なくすることができる。
【0030】
(7)前記(3)、前記(5)又は前記(6)の情報処理システムにおいて、前記タスクは、直近の前記結果が成功である第1タスクと、直近の前記結果が失敗である第2タスクと、を含んでもよい。この場合、前記制御部は、前記第2タスクの優先度を前記第1タスクの優先度よりも高く算出してもよい。
【0031】
失敗したタスクから先にテストを実行することで、エラーが解消されたか否かをより早く確認することができる。
【0032】
(8)前記(3)、前記(5)、前記(6)又は前記(7)の情報処理システムにおいて、前記テスト環境は、回路基板および前記回路基板の動作を測定する測定部を含むテストセットと、前記キューから出力される前記タスクに基づいて、前記テストセットを制御することで、前記タスクのテストを実行する実行部と、を有してもよい。この場合、前記優先度情報は、前記タスクと、前記タスクのテストにおいて使用される前記テストセットとを紐付けた環境情報を含み、前記制御部は、前記環境情報に基づいて、前記タスクの優先度を算出してもよい。
【0033】
回路基板および測定部は、いずれもハードウェアリソースである。このようなハードウェアリソースを含むテストセットを多数設けると、テスト環境の構築にコストが掛かるため、限られたテストセットの数にて、ソフトウェアの動作テストを実行することが要求される。この結果、車載装置用のソフトウェアを開発するにあたっては、多数のタスクを並列して実行することが困難となる。この結果、より優先度の高いタスクから先にテストを実行することで、ソフトウェアの修正点をより迅速に発見することが特に有用となる。
【0034】
(9)前記(8)の情報処理システムにおいて、前記テストセットは、複数の第1テストセットと、複数の前記第1テストセットよりも数が少ない第2テストセットと、を含んでもよい。この場合、前記タスクは、前記環境情報において、前記第1テストセットに紐付けられている第1タスクと、前記第2テストセットに紐付けられている第2タスクと、を含み、前記制御部は、前記第2タスクの優先度を前記第1タスクの優先度よりも高く算出してもよい。
【0035】
希少なテストセットから先にテストを実行することで、希少なテストセットの空き時間をより少なくすることができる。
【0036】
(10)前記(4)の情報処理システムにおいて、前記タスクは、第1タスクと、要求される前記安全規格が前記第1タスクに要求される前記安全規格よりも厳しい第2タスクと、を含んでもよい。この場合、前記制御部は、前記第2タスクの優先度を前記第1タスクの優先度よりも高く算出してもよい。
【0037】
安全規格がより厳しいタスクは、テストにおいて許容される値の範囲が狭く、エラーが生じやすい。このようなタスクから先にテストを実行することで、より迅速にソースのエラーを発見することができる。
【0038】
(11)前記(10)の情報処理システムにおいて、前記安全規格は、ISO26262のASIL(Automotive Safety Integrity Level)である。
【0039】
(12)前記(1)から前記(11)のいずれかの情報処理システムにおいて、前記制御部は、前記優先度情報に基づいて、前記キューに既に蓄積されている前記タスクの優先度を算出し、前記キューに既に蓄積されている前記タスクのうち、第3タスクよりも優先度の高い第4タスクを、前記第3タスクよりも先の実行順にて、前記キュー内の蓄積順を並べ替えてもよい。
【0040】
このように構成することで、既にキューに蓄積されている複数のタスクの蓄積順を見直すことができるため、より確実に、優先度の高いタスクから先にテストを実行することができる。
【0041】
(13)前記(1)から前記(12)のいずれかの情報処理システムにおいて、前記制御部は、前記テスト環境、前記安全規格、前記結果、前記実行時点および前記所要時間のうち少なくともひとつに基づいて、前記タスクを複数の分割タスクに分割し、前記優先度情報に基づいて、複数の前記分割タスクの優先度をそれぞれ算出し、複数の前記分割タスクのうち、第1分割タスクよりも優先度の高い第2分割タスクを、前記第1分割タスクよりも先の実行順にて、前記キューに蓄積してもよい。
【0042】
このように構成することで、テストの結果をより細かく確認することができる。これにより、タスクのうちどの部分においてエラーが生じているかを絞り込みやすいため、よりエラーに迅速に対応することができる。
【0043】
(14)本開示の情報処理方法は、車載装置にて実行されるソフトウェアの開発支援をする情報処理方法であって、前記ソフトウェアに含まれる複数のソースが格納されたリポジトリから提供されるタスクを、前記タスクがテストの実行待ちをするキューに追加するステップを備え、前記追加するステップは、前記タスクに関する情報を含む優先度情報が格納されているストレージから、前記優先度情報を読み出す第1ステップと、前記優先度情報に基づいて、前記タスクの優先度を算出する第2ステップと、前記キューに既に蓄積されている前記タスクの優先度と、前記キューに新たに追加する前記タスクの優先度とを比較し、より高い優先度の前記タスクの実行順を先にした状態で、前記タスクを前記キューに追加する第3ステップと、を含む、情報処理方法である。
【0044】
このように構成することで、より優先度の高いタスクから先にテストを実行することができる。
【0045】
(15)本開示のコンピュータプログラムは、車載装置にて実行されるソフトウェアの開発支援をするためのコンピュータプログラムであって、前記コンピュータプログラムは、コンピュータに、前記ソフトウェアに含まれる複数のソースが格納されたリポジトリから提供されるタスクを、前記タスクがテストの実行待ちをするキューに追加するステップを実行させ、前記追加するステップは、前記タスクに関する情報を含む優先度情報が格納されているストレージから、前記優先度情報を読み出す第1ステップと、前記優先度情報に基づいて、前記タスクの優先度を算出する第2ステップと、前記キューに既に蓄積されている前記タスクの優先度と、前記キューに新たに追加する前記タスクの優先度とを比較し、より高い優先度の前記タスクの実行順を先にした状態で、前記タスクを前記キューに追加する第3ステップと、を含む、コンピュータプログラムである。
【0046】
このように構成することで、より優先度の高いタスクから先にテストを実行することができる。
【0047】
[1.本開示の実施形態の詳細]
以下、図面を参照して、本開示の実施形態の詳細を説明する。
【0048】
[1.1 情報処理システムの全体構成]
図1は、実施形態に係る情報処理システム1の構成例を示す図である。
情報処理システム1は、自動車等の車両に搭載される装置(以下、「車載装置」と称する。)にて実行されるソフトウェアSW1の開発支援をするシステムである。
【0049】
ソフトウェアSW1は、例えば、車載装置の中でも、車載のECU(Electronic Control Unit)に用いられるソフトウェアである。より具体的には、ソフトウェアSW1は、複数のECUを管理する機能を有するセントラルECU又は統合ECUに用いられる。このようなソフトウェアSW1は、大規模な開発が伴う傾向があるため、情報処理システム1による開発支援がより有用となる。
【0050】
情報処理システム1は、情報処理装置10と、リポジトリ20と、テストツール30と、テスト環境40と、ストレージ50と、を備える。情報処理システム1は、1箇所に集約された1台の装置(例えばサーバ装置)によって実現されてもよいし、インターネット等のネットワークによって各部10,20,30,40,50が互いに通信可能に接続された状態で、複数箇所に分散された複数台の装置によって実現されてもよい。
【0051】
[1.2 ソフトウェアおよびタスク]
図2は、実施形態に係るソフトウェアSW1の一例を示す図である。図2を参照して、ソフトウェアSW1およびタスクTxについて説明する。ソフトウェアSW1は、前述のとおり、車載装置にて実行されるソフトウェアである。ソフトウェアSW1は、複数のコンポーネントX1,X2,X3を含む。コンポーネントX1は複数のモジュールa1,a2,a3を含み、コンポーネントX2は複数のモジュールb1,b2を含む。
【0052】
これらのコンポーネントX1,X2,X3およびモジュールa1,a2,a3,b1,b2を「ソース」と総称する。すなわち、ソフトウェアSW1は複数のソースを含む。これらのソースは、ソースコードと称される所定のプログラム言語にて記載されたデータであってもよいし、ソースコードを機械語に変換した後のバイナリコードにて記載されたデータであってもよい。
【0053】
これらのソースは、例えば、複数の開発者(サプライヤ)がそれぞれ操作する複数の端末(端末群60と称する。)において個別に作成される。情報処理システム1では、ソース単体の動作テストと、複数のソースを結合(インテグレート)した状態での動作テストとを実行する。ここで、情報処理システム1において実行されるテストの項目をタスクTxと称する。タスクTxは「ジョブタスク」とも称される。
【0054】
タスクTxは、以下の(1)から(4)までのいずれかのテスト項目を含む。
(1)1個のモジュール(例えば、モジュールa1)が単体にて動作するか否かを検証するテスト項目。
(2)1個のコンポーネントに含まれる複数のモジュール(例えば、モジュールa1とモジュールa2)を結合した状態で動作するか否かを検証するテスト項目。
(3)1個のコンポーネント(例えば、コンポーネントX1)が動作するか否か、すなわち当該コンポーネントに含まれる全てのモジュール(例えばモジュールa1,a2,a3)を結合した状態で動作するか否かを検証するテスト項目。
(4)複数のコンポーネント(例えば、コンポーネントX1とコンポーネントX2)を結合した状態で動作するか否かを検証するテスト項目。
【0055】
[1.3 リポジトリ]
図1を参照する。リポジトリ20は、例えば大容量記憶装置によって実現される、クラウド上に構築されたデータベースである。リポジトリ20は、端末群60にネットワークを介して接続されている。開発者は、端末群60においてそれぞれ作成した複数のソースをネットワークを介してリポジトリに送信する。リポジトリ20は、受信した複数のソースを格納する。
【0056】
リポジトリ20には、GitHub等のソース管理ツール(SCM:Sorce Code Managementとも称される。)が付帯されている。SCMは、リポジトリ20に格納されている複数のソースに基づいて、タスクTxを自動的に生成する。生成されたタスクTxは、リポジトリ20から情報処理装置10に提供される。
【0057】
[1.4 情報処理装置]
図3は、実施形態に係る情報処理装置10の内部構成の一例を示す図である。
情報処理装置10は、タスクTxをテストツール30が管理するキュー31に追加する処理を実行するための装置である。情報処理装置10は、制御部11と、記憶部12と、通信部13と、読取部14と、を有する。これらの各部11~14は、それぞれバスによって電気的に接続されている。
【0058】
制御部11は、例えばプロセッサ等の回路構成(Circuitry)を含む。制御部11は、具体的には、1個又は複数個のCPU(Central Processing Unit)を含む。制御部11は、記憶部12に記憶されているコンピュータプログラムを読み出して、各種の演算及び制御を実行する。
【0059】
なお、制御部11は、予め所定のプログラムが書き込まれたプロセッサを含んでもよい。例えば、制御部11は、CPLD(Complex Programmable Logic Device)、FPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit)等の集積回路であってもよい。この場合、制御部11は、予め書き込まれたプログラムに基づいて、各種の情報処理を実行する。
【0060】
記憶部12は、揮発性メモリと、不揮発性メモリと有し、各種のデータを記憶する。揮発性メモリは、例えばRAM(Random Access Memory)を含む。不揮発性メモリは、例えばフラッシュメモリ、HDD(Hard Disk Drive)、SSD(Solid State Drive)又はROM(Read Only Memory)等を含む。記憶部12は、例えば、不揮発性メモリにコンピュータプログラム及び各種のパラメータを記憶している。
【0061】
通信部13は、リポジトリ20、テストツール30およびストレージ50との通信を実行する通信インターフェースである。通信部13は、これらの各部20,30,50と、ネットワークを介して無線通信してもよいし、通信線を介して有線通信してもよい。無線通信を行う場合、通信部13は、アンテナを有する。
【0062】
読取部14は、コンピュータが読取り可能な記録媒体15から情報を読み取る。記録媒体15は、例えばCD、DVD等の光学ディスク又はUSBフラッシュメモリである。読取部14は、例えば光学ドライブ又はUSB端子である。記録媒体15にはコンピュータプログラム及び各種のパラメータが記録されており、記録媒体15を読取部14に読み取らせることで、コンピュータプログラム及び各種のパラメータが記憶部12の不揮発性メモリに記憶される。
【0063】
リポジトリ20から提供されるタスクTxは、通信部13において受信され、バスを介して制御部11に入力される。また、ストレージ50から読み出される後述の優先度情報51も通信部13において受信され、バスを介して制御部11に入力される。制御部11は、記憶部12から読み出されるコンピュータプログラムに則って、優先度情報51に基づいてタスクTxの優先度を算出する。そして、制御部11は、算出された優先度に基づいて、タスクTxをキュー31の所定の位置に追加する。
【0064】
[1.5 テストツール]
図1を参照する。テストツール30は、Jenkins又はCircleCI(登録商標)等のCI/CDツールであり、プロセッサおよびメモリを含むコンピュータ装置によって実現される。テストツール30は、複数のタスクTxがテストの実行待ちをするキュー31を管理する。具体的には、テストツール30は、キュー31に蓄積されているタスクTxをテスト環境40の実行部41へ順次、自動的に出力する。
【0065】
キュー31は、例えば先入れ先出し法(FIFO:First In,First Out)にて複数のタスクTxを蓄積しているメモリである。図1の例では、キュー31に4個のタスクTx(特に区別する場合、それぞれT1,T2,T3,T4と称する。)が蓄積されている。
【0066】
図1では、既にタスクT1、タスクT2、タスクT3がこの順でキュー31に蓄積されているところに、情報処理装置10(具体的には、制御部11)から出力されたタスクT4が、FIFOではなくタスクT1とタスクT2の間の実行順にて追加された様子を示している。この場合、テストツール30は、タスクT1,T4,T2,T3の順に、キュー31に蓄積されているタスクTxを実行部41へ出力する。
【0067】
[1.6 テスト環境]
図1を参照する。テスト環境40は、実行部41と、テストセット42と、を有する。実行部41は、プロセッサおよびメモリを含むコンピュータ装置(例えば、ラップトップPC)であり、「ノード」とも称される。実行部41は、キュー31から出力されるタスクTxに基づいて、テストセット42を制御することで、タスクTxのテストを実行する。また、実行部41はテストセット42において実行したタスクTxのテストの結果等(例えば、テストの実行時点、実行に掛かった所要時間、テストが成功したか失敗したかを示す履歴)の情報を収集し、ストレージ50に出力する。
【0068】
テストセット42は、ソフトウェアSW1が動作する本番環境を模したハードウェアリソースである。ソフトウェアSW1は、車載装置にて実行されるいわゆる「組込みソフトウェア」であるため、その動作テストのためには、テストセット42のように本番環境を模したハードウェアリソースを使用する必要がある。テストセット42は、具体的には、回路基板43と、測定部44と、を含む。
【0069】
回路基板43(開発基板とも称される。)は、車載装置に組み込まれる回路基板(例えば、ECUに実装される基板)を模した基板である。回路基板43は、車載装置に組み込まれる回路基板そのものであってもよいし、車載装置に組み込まれる回路基板の試作品であってもよい。測定部44は、回路基板43の動作を測定するツールである。測定部44は、例えばCANoe(登録商標)等の通信用のソフトウェアツールである。
【0070】
図4は、実施形態に係るテスト環境40の一例を示す図である。図4は、テスト環境40に複数のテストセット42が含まれる場合を例示している。複数のテストセット42は、複数(図4では2個)の第1テストセット42aと、第2テストセット42bとを含む。第2テストセット42bは、複数の第1テストセット42aよりも数が少なく、図4では1個である。なお、複数のテストセット42に複数の第2テストセット42bが含まれてもよい。
【0071】
第1テストセット42aに含まれる回路基板43および測定部44を、第1回路基板43aおよび第1測定部44aと称する。第1測定部44aは、第1回路基板43aの動作を測定する。同様に、第2テストセット42bに含まれる回路基板43および測定部44を、第2回路基板43bおよび第2測定部44bと称する。第2回路基板43bは、第1回路基板43aとは異なる機能を有する基板である。第2測定部44bは、第2回路基板43bの動作を測定する。
【0072】
図1を参照する。回路基板43および測定部44は、いずれもハードウェアリソースであり、かつ汎用性が低い。例えば、回路基板43は、汎用基板ではなく、車載装置用に調整された専用基板である。すなわち、回路基板43および測定部44は、専らソフトウェアSW1のテストにのみ用いられ、かつ価格も高価になりやすい。このようなテストセット42を多数設けると、テスト環境40の構築にコストが掛かるため、限られたテストセット42の数にて、ソフトウェアSW1の動作テストを実行することが要求される。
【0073】
この結果、車載装置用のソフトウェアSW1を開発するにあたっては、多数のタスクTxを並列して実行することが困難となり、より優先度の高いタスクTxのテストから先に実行することで、ソフトウェアSW1の修正点をより迅速に発見することが要求される。
【0074】
そこで、情報処理システム1では、キュー31にタスクTxを追加する際に、タスクTxの優先度に応じた位置にタスクTxを追加することで、優先度の高いタスクTxのテストをより早くに実行可能とする。
【0075】
[1.7 ストレージ]
図1を参照する。ストレージ50は、HDD又はSSD等の補助記憶装置である。ストレージ50には、優先度情報51が格納されている。優先度情報51は、タスクTxの優先度を算出するための情報である。優先度情報51は、例えば、バージョン情報D1、実行時点情報D2、所要時間情報D3、テスト結果情報D4、安全規格情報D5および環境情報D6を含む。なお、情報D1から情報D6までの情報のうち優先度情報51に含まれない情報があってもよい。すなわち、優先度情報51は、情報D1から情報D6までの少なくともひとつの情報を含めばよい。また、優先度情報51は、情報D1から情報D6までの情報以外の情報を含んでもよい。
【0076】
図5は、実施形態に係るバージョン情報D1の一例を示すテーブルTB1である。バージョン情報D1は、タスクTxのテストを実行した時点におけるソースのバージョンに関する情報である。バージョン情報D1は、例えば実行部41がタスクTxのテストを実行する都度、実行部41からストレージ50へ提供される。バージョン情報D1は、例えばSCMによってソースに付与されたハッシュ値(すなわち、ソースに対して一意に決まる値)として示されている。
【0077】
図5の例では、テストの実行時点TM1(例えば、テストを実行した年月日と時刻)におけるモジュールa1のバージョンがハッシュHa1-1と示され、実行時点TM1におけるモジュールa2のバージョンがハッシュH2-1と示されている。そして、実行時点TM1よりも後の実行時点TM2(より現時点に近い実行時点)におけるモジュールa1のバージョンがハッシュHa1-2と示され、実行時点TM1におけるモジュールa2のバージョンがハッシュH2-1と示されている。
【0078】
すなわち、実行時点TM2において、モジュールa1のバージョンはハッシュHa1-1からハッシュHa1-2に更新されている。図5の例では、モジュールa1以外のソースは実行時点TM1から実行時点TM2までの間に更新されていない。このため、複数のソースのうち、モジュールa1が最も直近に更新されたソースである。すなわち、バージョン情報D1において、複数の実行時点間におけるハッシュ値の差分をみることで、どのソースが最も直近に更新されているかを判断することができる。
【0079】
図6は、実施形態に係る実行時点情報D2の一例を示すテーブルTB2である。実行時点情報D2は、タスクTxと、タスクTxのテストを最後に実行した実行時点(直近の実行時点)とを紐付けた情報である。実行時点情報D2は、例えば実行部41がタスクTxのテストを実行する都度、実行部41からストレージ50へ提供される。図6の例では、モジュールa1,a2の結合テストは実行時点TM2にて最後に実行され、モジュールa2,a3の結合テストは実行時点TM1にて最後に実行されていることが示されている。すなわち、実行時点情報D2に基づくことで、どのタスクTxが最も直近に実行され、どのタスクTxが長らく放置されているかを判断することができる。
【0080】
図7は、実施形態に係る所要時間情報D3の一例を示すテーブルTB3である。所要時間情報D3は、タスクTxと、タスクTxのテストの実行に掛かった所要時間とを紐づけた情報である。所要時間情報D3は、例えば実行部41がタスクTxのテストを実行する都度、実行部41からストレージ50へ提供される。図7のテーブルTB3には、実行時点TM1,TM2ごとの所要時間が格納されている。例えば、モジュールa1,a2の結合テストは、実行時点TM1では1分2秒掛かり、実行時点TM2では1分6秒掛かったことが示されている。また、モジュールa2,a3の結合テストは、実行時点TM1では2分30秒掛かり、実行時点TM2では当該結合テストを実行していないことが示されている。
【0081】
所要時間情報D3によれば、直近のテストにおいて掛かった所要時間を取得することができる。例えば、モジュールa1,a2の結合テストの直近の所要時間は1分6秒であり、モジュールa2,a3の結合テストの直近の所要時間は2分30秒である。また、所要時間情報D3によれば、過去のテストにおいて掛かった所要時間の統計値(例えば、平均値又は中央値)を取得することができる。例えば、モジュールa1,a2の結合テストの所要時間の過去2回分の平均値は1分4秒である。
【0082】
図8は、実施形態に係るテスト結果情報D4の一例を示すテーブルTB4である。テスト結果情報D4は、タスクTxと、タスクTxのテストの結果とを紐づけた情報である。テストの結果は、テストの失敗(NG)と成功(OK)とを含む。ここで、テストの失敗とは、例えば測定部44において所望の測定値を満たさなかった場合を含む。また、テストの成功とは、例えば測定部44において所望の測定値をすべて満たした場合を含む。
【0083】
図8のテーブルTB4には、実行時点TM1,TM2ごとのテスト結果が格納されている。テスト結果情報D4は、例えば実行部41がタスクTxのテストを実行する都度、実行部41からストレージ50へ提供される。例えば、モジュールa1,a2の結合テストは、実行時点TM1では失敗であり、実行時点TM2では成功であったことが示されている。モジュールa2,a3の結合テストは、実行時点TM1では成功であり、実行時点TM2では当該結合テストを実行していないことが示されている。また、コンポーネントX3,X1の結合テストは、実行時点TM1,TM2のいずれにおいても失敗であることが示されている。
【0084】
テスト結果情報D4によれば、直近のテストの結果を取得することができる。例えば、モジュールa1,a2の結合テストの直近のテスト結果は成功であり、モジュールa2,a3の結合テストの直近のテスト結果は成功である。これに対し、コンポーネントX3,X1の結合テストの直近のテスト結果は失敗である。また、テスト結果情報D4によれば、過去に何回連続でテストに失敗しているかについての情報を取得することができる。例えば、コンポーネントX3,X1の結合テストは、直近から数えて、過去2回連続で失敗している。
【0085】
図9は、実施形態に係る安全規格情報D5の一例を示すテーブルTB5である。安全規格情報D5は、タスクTxのテストを実行した時点においてソースに要求される安全規格に関する情報である。安全規格情報D5は、例えば実行部41がタスクTxのテストを実行する都度、実行部41からストレージ50へ提供される。安全規格は、例えば車両、より具体的には自動車の安全規格である。安全規格は、例えばISO26262のASIL(Automotive Safety Integrity Level)である。ASILでは、例えばQM,ASIL-A,ASIL-B,ASIL-C,ASIL-Dという複数の段階が設定されており、この順に要求される基準が厳しくなる。すなわち、QMには最も緩い条件が課され、ASIL-Dには最も厳しい条件が課される。
【0086】
図9の例では、実行時点TM1におけるモジュールa1の安全規格がQMと示され、実行時点TM2におけるモジュールa1の安全規格がASIL-Aと示されている。すなわち、モジュールa1は実行時点TM1から実行時点TM2への更新(図5)に伴い、安全規格が1段階高くなったことが示されている。
【0087】
モジュールa1以外のソースについては、実行時点TM1から実行時点TM2への更新がないため、安全規格にも変化がない。例えば、モジュールa2,a3,b1,b2の安全規格はQMであり、コンポーネントX3の安全規格はASIL-Dである。安全規格情報D5において、直近の実行時点(図9では実行時点TM2)における安全規格の情報をみることで、現時点にて要求される安全規格を把握することができる。
【0088】
図10は、実施形態に係る環境情報D6の一例を示すテーブルTB6である。環境情報D6は、タスクTxと、タスクTxのテストにおいて使用されるテストセット42とを紐づけた情報である。環境情報D6は、例えば実行部41がタスクTxのテストを実行する都度、実行部41からストレージ50へ提供される。例えば、モジュールa1,a2の結合テストおよびモジュールa2,a3の結合テストは、第1テストセット42aを使用して実行されることが示され、モジュールa3,a1の結合テストおよびコンポーネントX1のテストは第2テストセット42bを使用して実行されることが示されている。環境情報D6によれば、タスクTxのテストにおいて使用されるテストセット42の種類を取得することができる。
【0089】
[1.8 情報処理方法]
図11は、情報処理システム1が実行する情報処理方法の一例を示すフローチャートである。はじめに、開発者が端末群60により複数のソースをそれぞれ作成し、ネットワークを介してリポジトリ20へ複数のソースを格納する。複数のソースは、それぞれ適宜のタイミングにてリポジトリ20へ格納される。
【0090】
リポジトリ20を管理するSCMは、例えば定期的に(polling処理とも称される。)、又は新たなソースがリポジトリ20に格納された時に(push処理とも称される。)、タスクTxを作成する(ステップS11)。例えば、リポジトリ20に既にモジュールa1,a2,a3,b1,b2およびコンポーネントX3が格納されている状態で、新たなバージョンのモジュールa1がリポジトリ20に格納された場合、SCMはモジュールa1に関連するタスクTxを作成する。例えば、SCMは、モジュールa1,a2の結合テストを実行するためのタスクTxと、モジュールa1,a3の結合テストを実行するためのタスクTxと、コンポーネントX1のテストを実行するためのタスクTxと、コンポーネントX1を含む結合テスト(例えば、コンポーネントX1,X2の結合テスト)を実行するためのタスクTxと、を作成する。
【0091】
その後、作成された1個又は複数個のタスクTxは、リポジトリ20から情報処理装置10に提供される。以上により、ステップS11が終了する。
【0092】
情報処理装置10の通信部13は、リポジトリ20から受信したタスクTxを制御部11に出力する。制御部11は、新たにタスクTxの入力を受け付けると、ストレージ50から優先度情報51を読み出す(ステップS12)。制御部11は、例えば優先度情報51に含まれる情報D1から情報D6の全てを読み出してもよいし、情報D1から情報D6のうちタスクTxの優先度の算出に用いる一部の情報のみを読み出してもよい。読み出された優先度情報51は、通信部13を介して制御部11に入力される。以上により、ステップS12が終了する。
【0093】
続いて、制御部11は、優先度情報51に基づいてタスクTxの優先度を算出する(ステップS13)。優先度は、例えば以下に示す第1算出例から第5算出例のうち少なくともひとつの方法により算出される。制御部11は、第1算出例から第5算出例のうち2個以上の算出例により、情報D1から情報D6までの複数の情報に基づく複数種類の優先度を算出してもよい。優先度の算出例について、以下に説明する。
【0094】
[1.8.1 第1算出例:放置されているタスクを優先する]
制御部11は、実行時点情報D2を読み出して、長らく放置されているタスクTx(すなわち、直近のテスト実行時点からの経過時間がより長いタスクTx)の優先度をより高く算出する。しばらくテストされていないタスクTxについてより早くテストを実行することで、ソース修正の規模が大きくなることを抑制することができる。
【0095】
例えば、図6の場合、モジュールa2,a3の結合テストに関するタスクTx(本算出例では、本開示の「第2タスク」の一例であり、適宜タスクa2-a3と称する。)の直近の実行時点TM1の方が、モジュールa1,a2の結合テストに関するタスクTx(本算出例では、本開示の「第1タスク」の一例であり、適宜タスクa1-a2と称する。)の直近の実行時点TM2よりも前(昔)である。
【0096】
このため、制御部11は、タスクa2-a3の優先度を、タスクa1-a2の優先度よりも高く算出する。優先度が高いほどタスクTxに高い数値を付与する場合、制御部11は、例えばタスクa2-a3の優先度として「2」を付与し、タスクa1-a2の優先度として「1」を付与する。
【0097】
制御部11は、実行時点TM1,TM2の値に応じて、優先度を算出してもよい。例えば、実行時点TM1,TM2から現時点までの時間を優先度の値としてもよい。この場合、実行時点TM2から現時点までの時間の方が、実行時点TM1から現時点までの時間よりも長いため、タスクa2-a3の優先度としてより高い数値が算出される。
【0098】
[1.8.2 第2算出例:短時間で実行できるタスクを優先する]
制御部11は、所要時間情報D3を読み出して、短時間でテストを実行できるタスクTxの優先度をより高く算出する。短時間で実行できるタスクTxから先にテストを実行することで、時間あたりのテストの実行数を多くすることができ、実行待ちのタスク数を少なくすることができる。
【0099】
例えば、図7の場合、モジュールa1,a2の結合テストに関するタスクTx(本算出例では、本開示の「第2タスク」の一例であり、適宜タスクa1-a2と称する。)のテストに掛かる所要時間の方が、モジュールa2,a3の結合テストに関するタスクTx(本算出例では、本開示の「第1タスク」の一例であり、適宜タスクa2-a3と称する。)のテストに掛かる所要時間よりも短い。
【0100】
このため、制御部11は、タスクa1-a2の優先度を、タスクa2-a3の優先度よりも高く算出する。優先度が高いほどタスクTxに高い数値を付与する場合、制御部11は、例えばタスクa1-a2の優先度として「2」を付与し、タスクa2-a3の優先度として「1」を付与する。
【0101】
制御部11は、所要時間の値に応じて、優先度を算出してもよい。例えば、所定値E1から所要時間を減算した値を優先度の値としてもよい。ここで、所定値E1は、各所要時間よりも十分に大きい値に設定される。この場合、所定値E1からタスクa1-a2の直近の所要時間(例えば1分6秒=66秒)を減算した値(E1-66)の方が、所定値E1からタスクa2-a3の直近の所要時間(例えば2分30秒=150秒)を減算した値(E1-150)よりも大きいため、タスクa1-a2の優先度としてより高い数値が算出される。なお、優先度の算出において、制御部11は、直近の所要時間の値を用いてもよいし、所要時間の統計値(例えば、過去複数回分の所要時間の平均値)を用いてもよい。
【0102】
[1.8.3 第3算出例:直近に失敗履歴のあるタスクを優先する]
制御部11は、テスト結果情報D4を読み出して、直近に失敗履歴のあるタスクTxの優先度をより高く算出する。失敗したタスクTxから先にテストを実行することで、エラーが解消されたか否かをより早く確認することができる。
【0103】
例えば、図8の場合、コンポーネントX1,X2の結合テストに関するタスクTx(本算出例では、本開示の「第1タスク」の一例であり、適宜タスクX1-X2と称する。)の直近のテスト結果が成功であり、コンポーネントX3,X1の結合テストに関するタスク(本算出例では、本開示の「第2タスク」の一例であり、適宜タスクX3-X1と称する。)の直近のテスト結果が失敗である。
【0104】
このため、制御部11は、タスクX3-X1の優先度を、タスクX1-X2の優先度よりも高く算出する。優先度が高いほどタスクTxに高い数値を付与する場合、制御部11は、例えばタスクX3-X1の優先度として「2」を付与し、タスクX1-X2の優先度として「1」を付与する。
【0105】
制御部11は、直近からの連続失敗回数に応じて、優先度を算出してもよい。例えば、当該回数に定数(例えば、1)を加算した値を優先度としてもよい。この場合、制御部11は、タスクX1-X2に関して、直近からの連続失敗回数が0回(直近のテスト結果が成功)であるため、タスクX1-X2の優先度を1(=0+1)と算出する。また、制御部11は、タスクX3-X1に関して、直近からの連続失敗回数が2回であるため、タスクX3-X1の優先度を3(=2+1)と算出する。これにより、より多い失敗履歴のあるタスクX3-X1の優先度としてより高い数値が算出される。
【0106】
[1.8.4 第4算出例:要求される安全規格がより厳しいタスクを優先する]
制御部11は、安全規格情報D5を読み出して、要求される安全規格がより厳しいタスクTxの優先度をより高く算出する。安全規格がより厳しいタスクTxは、例えば測定部44におけるテストで許容される値の範囲が狭く、エラーが生じやすい。このようなタスクTxから先にテストを実行することで、より迅速にソースのエラーを発見することができる。
【0107】
例えば、図9の場合、直近の実行時点におけるソースに関して、コンポーネントX3に要求されるASIL-Dが最も厳しく、その次にモジュールa1に要求されるASIL-Aが厳しい。そして、その他のソース(例えば、モジュールa2,a3等)に要求されるQMは最も緩い。
【0108】
図8に示すようなソースを組合せたタスクTxを考える。例えば、モジュールa1,a2の結合テストを実行する場合、モジュールa1,a2を含むタスクa1-a2に要求される安全規格は、タスクa1-a2に含まれるソースに要求される規格の中で最も厳しいASIL-A(モジュールa1の安全規格)となる。また、モジュールa2,a3の結合テストを実行する場合、モジュールa2,a3を含むタスクa2-a3に要求される安全規格は、タスクa2-a3に含まれるソースに要求される規格の中で最も厳しいQM(モジュールa2,a3の安全規格)となる。
【0109】
以上により、タスクa1-a2(本算出例では、本開示の「第2タスク」の一例である。)のテストに要求される安全規格の方が、タスクa2-a3(本算出例では、本開示の「第1タスク」の一例である。)のテストに要求される安全規格よりも厳しいため、制御部11は、タスクa1-a2の優先度を、タスクa2-a3の優先度よりも高く算出する。優先度が高いほどタスクTxに高い数値を付与する場合、制御部11は、例えばタスクa1-a2の優先度として「2」を付与し、タスクa2-a3の優先度として「1」を付与する。
【0110】
制御部11は、安全規格の厳しさ(高さ)に応じて、優先度を算出してもよい。例えば、制御部11は、最も厳しいASIL-Dが要求されるタスクTxの優先度を「5」とし、ASIL-Cを「4」、ASIL-Bを「3」、ASIL-Aを「2」、QMを「1」と、それぞれ優先度を割り当ててもよい。
【0111】
[1.8.5 第5算出例:数の少ないテストセットを使用するタスクを優先する]
制御部11は、環境情報D6を読み出して、環境情報D6のうち数の少ないテストセット42を使用するタスクTxの優先度をより高く算出する。希少なテストセット42から先にテストを実行することで、希少なテストセット42の空き時間をより少なくすることができる。
【0112】
例えば、図4に示すように、テスト環境40に、2個の第1テストセット42aと1個の第2テストセット42bが含まれている場合を考える。図10の例では、モジュールa1,a2の結合テストに関するタスクTx(本算出例では、本開示の「第1タスク」の一例であり、適宜タスクa1-a2と称する。)に紐付いている第1テストセット42aよりも、モジュールa3,a1の結合テストに関するタスクTx(本算出例では、本開示の「第2タスク」の一例であり、適宜タスクa3-a1と称する。)に紐付いている第2テストセット42bの方が数が少ない。
【0113】
このため、制御部11は、タスクa3-a1の優先度を、タスクa1-a2の優先度よりも高く算出する。優先度が高いほどタスクTxに高い数値を付与する場合、制御部11は、例えばタスクa3-a1の優先度として「2」を付与し、タスクa1-a2の優先度として「1」を付与する。
【0114】
制御部11は、テストセット42の数に応じて、優先度を算出してもよい。例えば、所定値E2からテストセット42の数を減算した値を優先度の値としてもよい。ここで、所定値E2は、各テストセット42の数よりも十分に大きい値に設定される。この場合、所定値E2から第2テストセット42bの数(1個)を減算した値(E2-1)の方が、所定値E2から第1テストセット42aの数(2個)を減算した値(E2-2)よりも大きいため、第2テストセット42bに紐付いているタスクa3-a1の優先度としてより高い数値が算出される。
【0115】
[1.8.6 キューへのタスク追加]
算出された優先度は、例えば記憶部12に記憶される。以上により、ステップS13が終了する。
【0116】
次に、制御部11は、優先度に基づいて、タスクTxをキュー31に追加する(ステップS14)。例えば、図1に示すように、キュー31に既にタスクT1,T2,T3が蓄積されている状態で、新たにタスクT4をキュー31へ追加する場合を考える。
【0117】
タスクT4の優先度がタスクT1よりも低く、タスクT2よりも高い場合、制御部11はタスクT4をタスクT1よりも後の実行順で、タスクT2よりも先の実行順にて(すなわち、タスクT1とタスクT2の間に)、キュー31に追加する。
【0118】
例えば、優先度の算出が上記の「第1算出例」に基づく場合で、タスクT1の優先度が「3」であり、タスクT2,T3の優先度がそれぞれ「1」であり、新たに追加するタスクT4の優先度が「2」である場合、制御部11は、上記のようにタスクT1とタスクT2の間にタスクT4を追加する。これにより、キュー31には優先度の高い順に複数のタスクTxが蓄積されるため、優先度の高いタスクTxから先にテストを実行することができる。
【0119】
また、複数の算出例により優先度を算出する場合、算出例ごとに重要度を予め設定し、タスクTxのキュー31への追加の際に重要度の高い算出例における優先度から順に評価してもよい。
【0120】
ここで、第1算出例および第2算出例により、2種類の優先度を算出する場合を考える。例えば、第1算出例により算出される優先度(以下、第1優先度と称する。)の重要度を、第2算出例により算出される優先度(以下、第2優先度と称する。)の重要度よりも高く設定する。当該設定は、例えば情報処理装置10を管理するオペレータが設定し、パラメータのひとつとして記憶部12に予め記憶される。
【0121】
この場合、制御部11は、はじめに、キュー31に蓄積されているタスクT1,T2,T3と、新たに追加するタスクT4との間で、第1優先度を比較する。例えばタスクT1,T2,T3の第1優先度がそれぞれ「2」であり、タスクT4の第1優先度も「2」である場合、第1優先度のみではタスクT4のキュー31への好適な追加位置を特定することができない。
【0122】
そこで、次に、制御部11は、キュー31に蓄積されているタスクT1,T2,T3と、新たに追加するタスクT4との間で、第2優先度を比較する。例えばタスクT1の第2優先度が「3」であり、タスクT2,T3の第2優先度がそれぞれ「1」であり、新たに追加するタスクT4の第2優先度が「2」である場合、制御部11は、上記のようにタスクT1とタスクT2の間にタスクT4を追加する。
【0123】
このように、複数種類の優先度において、重要度の高い優先度から順にタスクTxを比較することで、タスクTxをキュー31のより好適な位置に追加することができる。なお、全ての優先度が同じである場合、FIFO法に基づいて、新たに追加するタスクTxを先に蓄積されているタスクTxよりも後の実行順にてキューに追加してもよい。
【0124】
また、複数の算出例により優先度を算出する場合、算出例ごとに優先度の「重み」を予め設定し、複数の優先度にそれぞれ「重み」を付けた状態で複数の優先度を足し合わせることで算出される総合的な優先度に基づいて、タスクTxのキュー31への追加位置を決定してもよい。
【0125】
例えば、第1優先度の重みが「2」に設定され、第2優先度の重みが「1」に設定されている場合を考える。この場合、総合的な優先度は、「第1優先度×2+第2優先度×1」として算出される。各優先度の重みは、例えば情報処理装置10を管理するオペレータが設定し、パラメータのひとつとして記憶部12に予め記憶される。
【0126】
以上により、ステップS14が終了する。キュー31に蓄積されたタスクTxは、テストツール30によって適宜のタイミングにて実行部41へ出力され、テストが実行される。以上により、より優先度の高いタスクTxから先にテストを実行することができる。
【0127】
[2. 変形例]
以下、実施形態の変形例について説明する。変形例において、上記の実施形態と同じ構成については同じ符号を付して説明を省略する。
【0128】
[2.1 情報処理方法の変形例]
図12は、変形例に係る情報処理方法を示すフローチャートである。上記の実施形態では、例えば新たにキュー31に追加するタスクT4の優先度を算出して、既にキュー31に蓄積されているタスクT1,T2,T3のそれぞれの優先度(既に算出済みの優先度)と比較をすることで、タスクT4の追加位置を決定する。
【0129】
これに対し、本変形例では、新たにタスクT4をキュー31に追加する際に、既にキュー31に蓄積されているタスクT1,T2,T3について優先度を再算出する。そして、優先度に基づいて、単にタスクT4をキュー31に追加するだけでなく、タスクT1からタスクT3について、キュー31における順番を振り直す。
【0130】
図12に示すように、ステップS11およびステップS12については、上記の実施形態と同様に実行される。その後、制御部11は、ステップS13と同様にタスクT4の優先度を算出するとともに、キュー31内におけるタスクT1,T2,T3のそれぞれの優先度を再算出する(ステップS15)。
【0131】
図13は、変形例に係る各タスクの優先度を説明する図である。例えば、既にキュー31に蓄積されているタスクT1,T2,T3について、タスクT4を追加する前の優先度が、それぞれ「3」、「2」、「1」であるとする。そして、ステップS15により、タスクT4の優先度が「3」と算出され、タスクT1,T2,T3の優先度が「4」、「1」、「2」とそれぞれ再算出されたとする。
【0132】
この場合、制御部11は、ステップS15後のそれぞれの優先度に基づいて、キュー31におけるタスクT1からタスクT3の蓄積順を並べ替える。具体的には、制御部11は、優先度が高い順に、タスクT1,T3,T2と並べ替える。そして、制御部11は、タスクT4をタスクT1とタスクT3の間に追加する。これにより、最終的なキュー31の蓄積順は、テストの実行が早い方から順に、タスクT1,T4,T3,T2となる。
【0133】
このように、タスクT4を好適な位置に追加するだけでなく、上記の例ではタスクT2,T3の順番の入れ替わりが生じる。このため、タスクTxをキュー31に追加する都度、既にキュー31に蓄積されている複数のタスクTxの蓄積順を見直すことができるため、より確実に、優先度の高いタスクTxから先にテストを実行することができる。特に、キュー31の中で長らく実行が後回しになっている(すなわち、放置されている)タスクTxの実行順を早めたい場合に、当該方式が好適である。
【0134】
なお、タスクTxをキュー31に追加する都度、キュー31内の全てのタスクTxについて優先度を再算出すると、制御部11において過分な処理負荷が掛かるおそれがある。このため、制御部11は、例えばタスクTxをキュー31に所定個数だけ追加するごとに、ステップS15およびステップS16を実行し、それ以外の場合にはステップS13およびステップS14を実行してもよい。また、push処理の際にはキュー31内のタスクTxの優先度の再算出を実行せず、polling処理の際に限ってキュー31内のタスクTxの優先度の再算出を実行してもよい。このように構成することで、制御部11における処理負荷を軽減しつつ、キュー31内のタスクTxの順番の振り直しを実行することができる。
【0135】
[2.2 タスクの変形例]
制御部11は、タスクTxを、例えばテスト項目ごとに複数の分割タスクDTxに細分化したうえで、複数の分割タスクDTxについて優先度を算出してもよい。制御部11は、例えば、タスクTxが使用するテスト環境、タスクTxに要求される安全規格、タスクTxのテストの結果、タスクTxのテストの実行時点およびタスクTxのテストに掛かる所要時間のうち少なくともひとつに基づいて、タスクTxを複数の分割タスクDTxに分割する。
【0136】
例えば、安全規格に基づいてタスクTxを複数の分割タスクDTxに分割する例を説明する。図9に示すように、コンポーネントX3の動作テストに関するタスクTx(以下、タスクX3と称する。)には、安全規格としてASIL-Dが要求される。しかしながら、タスクX3に含まれる全てのテスト項目にASIL-Dが要求されるわけではなく、例えばタスクX3に含まれるテスト項目の一部には安全規格としてQMが要求される項目が含まれる場合がある。
【0137】
このため、制御部11は、優先度を算出する際に、安全規格に基づいて、例えばテスト項目ごとにタスクX3を分割タスクX3a,X3bに分割する。例えば、分割タスクX3aはタスクX3のうちQMが要求されるテスト項目のみを含む。また、分割タスクX3bはタスクX3のうちASIL-A以上の安全規格(ASIL-A,B,C,D)が要求されるテスト項目のみを含む。
【0138】
図14は、変形例に係るテスト結果情報D4を示すテーブルTB4aである。テーブルTB4aにおいて、タスクX3は、複数の分割タスクX3a,X3bにそれぞれ分割されている。そして、複数の分割タスクX3a,X3bごとにテスト結果情報D4を細分化することで、例えば実行時点TM1において分割タスクX3aのテストは成功であり、分割タスクX3bのテストは失敗である等、テストの結果をより細かく確認することができる。これにより、タスクX3のうちどの部分においてエラーが生じているかを絞り込みやすいため、よりエラーに迅速に対応することができる。
【0139】
また、ステップS13において、制御部11は、複数の分割タスクTDxの優先度をそれぞれ算出してもよい。また、ステップS14において、制御部11は、既にキュー31に蓄積されている複数の分割タスクTDxに対して、優先度に基づいて、新たにキュー31に追加する分割タスクTDxの位置を決定してもよい。これにより、より細やかにテストを実行することができる。
【0140】
[3.付記]
本開示は、以下の付記に示す内容を含む。
【0141】
[付記1]
車載装置にて実行されるソフトウェアの開発支援をする情報処理装置であって、
前記ソフトウェアに含まれる複数のソースが格納されたリポジトリから提供されるタスクを、前記タスクがテストの実行待ちをするキューに追加する制御部を備え、
前記制御部は、
前記タスクに関する情報を含む優先度情報が格納されているストレージから、前記優先度情報を読み出し、
前記優先度情報に基づいて、前記タスクの優先度を算出し、
前記キューに既に蓄積されている前記タスクの優先度と、前記キューに新たに追加する前記タスクの優先度とを比較し、より高い優先度の前記タスクの実行順を先にした状態で、前記タスクを前記キューに追加する、
情報処理装置。
【0142】
[4.補記]
なお、上記の実施形態及び各種の変形例については、その少なくとも一部を、相互に任意に組み合わせてもよい。また、今回開示された実施形態及び変形例はすべての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【0143】
1 情報処理システム
10 情報処理装置
11 制御部
12 記憶部
13 通信部
14 読取部
15 記録媒体
20 リポジトリ
30 テストツール
31 キュー
40 テスト環境
41 実行部
42 テストセット
42a 第1テストセット
42b 第2テストセット
43 回路基板
43a 第1回路基板
43b 第2回路基板
44 測定部
44a 第1測定部
44b 第2測定部
50 ストレージ
51 優先度情報
60 端末群
SW1 ソフトウェア
a1,a2,a3,b1,b2 モジュール
X1,X2,X3 コンポーネント
Tx,T1,T2,T3,T4 タスク
DTx 分割タスク
D1 バージョン情報
D2 実行時点情報
D3 所要時間情報
D4 テスト結果情報
D5 安全規格情報
D6 環境情報
TB1,TB2,TB3,TB4,TB4a,TB5,TB6 テーブル
TM1,TM2 実行時点
E1,E2 所定値
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14