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