Search

JP-2026076785-A - プログラム開発支援システム及びプログラム開発支援方法

JP2026076785AJP 2026076785 AJP2026076785 AJP 2026076785AJP-2026076785-A

Abstract

【課題】リソースを有効に使用することが可能なプログラム開発支援システムを提供する。 【解決手段】テストすべき複数の機能が実行順序キューに登録される。自動テスト実行部が、実行順序キューの先頭に登録されている機能をテストする。機能関連付け表によって、テストすべき複数の機能のそれぞれに、機能の実現時に使用するサブモジュールまたは機能の正常性を確認するためのテスト項目が関連付けられている。実行順制御部が、自動テスト実行部によるテスト結果が期待結果を満たさない場合、期待結果を満たさなかった機能と機能関連付け表とに基づいて、実行順序キューに登録されている機能のテストの順番を変更する機能を有する。 【選択図】図1

Inventors

  • 山本 新悟

Assignees

  • 住友重機械工業株式会社

Dates

Publication Date
20260512
Application Date
20241024

Claims (7)

  1. テストすべき複数の機能が登録される実行順序キューと、 前記実行順序キューの先頭に登録されている機能をテストする自動テスト実行部と、 テストすべき複数の機能のそれぞれに、機能の実現時に使用するサブモジュールまたは機能の正常性を確認するためのテスト項目を関連付ける機能関連付け表と、 前記自動テスト実行部によるテスト結果が期待結果を満たさない場合、期待結果を満たさなかった機能と前記機能関連付け表とに基づいて、前記実行順序キューに登録されている機能のテストの順番を変更する機能を有する実行順制御部と を備えたプログラム開発支援システム。
  2. 前記実行順制御部は、期待結果を満たさなかった機能に関連付けられているサブモジュールまたはテスト項目から、期待結果が満たされない原因となった不具合発生サブモジュールまたは期待結果が満たされなかった不具合発生テスト項目を抽出し、前記実行順序キューに登録されている機能のうち前記不具合発生サブモジュールまたは前記不具合発生テスト項目に関連付けられている機能をテストする順番を繰り下げる請求項1に記載のプログラム開発支援システム。
  3. さらに、 入力された情報に基づいて、前記機能関連付け表に、機能とサブモジュールまたはテスト項目との関連を新たに追加する機能関連付け設定部を備えた請求項1または2に記載のプログラム開発支援システム。
  4. さらに、前記実行順制御部が前記実行順序キューに登録されている機能の順番を変更した場合に、実行の順番を変更したことを通知する順序変更通知部を備えた請求項1または2に記載のプログラム開発支援システム。
  5. テストすべき機能のそれぞれに、機能の実現時に使用するサブモジュールまたは機能の正常性を確認するためのテスト項目を関連付けた機能関連付け表を作成し、 テストすべき複数の機能がテストされる順番に登録されている実行順序キューの先頭に登録されている機能をテストし、 テスト結果が期待結果を満たさない場合、期待結果を満たさなかった機能と前記機能関連付け表とに基づいて、前記実行順序キューに登録されている機能のテストの順番を変更するプログラム開発支援方法。
  6. 期待結果を満たさなかった機能に関連付けられているサブモジュールまたはテスト項目から、期待結果が満たされない原因となった不具合発生サブモジュールまたは期待結果が満たされなかった不具合発生テスト項目を抽出し、前記実行順序キューに登録されている機能のうち前記不具合発生サブモジュールまたは前記不具合発生テスト項目に関連付けられている機能をテストする順番を繰り下げる請求項5に記載のプログラム開発支援方法。
  7. 前記実行順序キューに登録されている機能のうち前記不具合発生サブモジュールまたは前記不具合発生テスト項目に関連付けられている機能をテストする順番を繰り下げると、順番が繰り下げられたことを開発者に通知する請求項6に記載のプログラム開発支援方法。

Description

本発明は、プログラム開発支援システム及びプログラム開発支援方法に関する。 近年、プログラム開発現場において継続的インテグレーション(CI)システムを用いたテスト自動化が普及してきている。ウェブ系プログラムの開発では、CIシステムは一般的であるが、機器組み込み系プログラムの開発においても、CIシステムが導入され始めている。 一般的に、開発者がソフトウェア構成管理サーバ(以下、SCMサーバという。)にソースコードをコミット(アップロード)したことをトリガとしてCIシステムが動作し、自動的にプログラムのテストを実行する。複数の開発者が複数の機能の開発を行う場合、CIシステムは複数の開発者で共有される。このため、複数の開発者が同時期に複数の機能のそれぞれを実現するためのソースコードをコミットする可能性がある。このような場合、コミットした順番に、各機能を実現するためのソースコードのテスト(以下、単に機能のテストという場合がある。)が実行されるのが一般的である。 コミットした順番に機能のテストを行う仕組みの場合、先にコミットした機能のテストが終了するまで、後にコミットした機能のテストが実行されない。先にテストすべき機能(優先度の高い機能)がコミットされても、優先度の高い機能のテストは、先にコミットされた機能のテストが終了するまで待たされる。 各機能に優先度属性を関連付け、優先度の高い機能が先にテストされるように、実行順序キューに登録された機能の順番を入れ替える技術が公知である(特許文献1)。 特許第7246301号公報 図1は、第1実施例によるプログラム開発支援システムのブロック図である。図2は、機能関連付け表16の一例を示す図表である。図3A及び図3Bは、ソフトウェア管理者が操作する入力装置15の表示画面15Aに表示された画像の一例を示す図である。図4は、実行順制御部12が実行する手順を示すフローチャートである。図5A及び図5Bは、端末25(図1)の表示画面26に表示される情報の一例を示す図である。図6は、第2実施例によるプログラム開発支援システムの機能関連付け表16の一例を示す図表である。 図1~図5Bを参照して、第1実施例によるプログラム開発支援システムについて説明する。 図1は、第1実施例によるプログラム開発支援システムのブロック図である。プログラム開発支援システムの各機能は、記憶部に格納されたプログラムをコンピュータが実行することにより実現される。複数の開発者がそれぞれの端末25を用いてそれぞれの機能を実現するためのソースコードを作成する。SCMサーバ20に、複数の機能のそれぞれを実現するためのソースコード、複数の機能で使用される共通サブモジュール等が蓄積される。SCMサーバ20は、機能ごとのソースコードの変更履歴及びバージョン管理等を行う。 機能ごとに作成されたソースコードが端末25からSCMサーバ20にコミット(アップロード)されると、複数の機能が、コミットされた順番に実行順序キュー11に登録される。図1では、3つの機能A、B、Cのそれぞれを実現するソースコード、30A、30B、30CがSCMサーバ20にコミットされる例を示している。実行順序キュー11に、機能A、B、Cがこの順番に登録される。機能を識別する情報は、例えばSCMサーバ20で管理される変更履歴により、変更されているフォルダまたはファイルから抽出することができる。 自動テスト実行部10が、実行順序キュー11の先頭に登録されている機能をテストする。図1に示した例では、自動テスト実行部10は、先頭に登録されている機能Aを実現するためのソースコード30A及び共通サブモジュールのソースコードをコンパイルして実行可能ファイルを作成し、実行する。 次に、プログラム開発支援システムの記憶部に記憶された機能関連付け表16について説明する。機能関連付け表16は、テストすべき複数の機能のそれぞれに、機能の実現時に使用するサブモジュールを関連付けている。機能関連付け表16は、例えばソフトウェア管理者が、後に説明する入力装置15を操作することにより、作成される。 図2は、機能関連付け表16の一例を示す図表である。図2の各行が機能に対応し、各列がサブモジュールに対応する。図2の図表中の丸記号は、機能の実現にサブモジュールが使用されることを示しており、ハイフンはサブモジュールが使用されないことを示している。図2に示した例では、機能A及び機能Bの実現のためにサブモジュールXが使用され、サブモジュールY、Zは使用されない。機能Cの実現のために、サブモジュールY、Zが使用され、サブモジュールXは使用されない。 次に、機能関連付け設定部13(図1)について説明する。新しい機能を開発する際には、ソフトウェア管理者が入力装置15を操作することにより、テストすべき新しい機能と、その機能を実現するときに使用されるサブモジュールとの関連付けを行う。次に、図3A及び図3Bを参照して、機能とサブモジュールとの関連付けを行う操作について説明する。 図3A及び図3Bは、ソフトウェア管理者が操作する入力装置15の表示画面15Aに表示された画像の一例を示す図である。図3Aに示すように、機能A、B、Cと、サブモジュールX、Y、Zとを関連付けた図表が表示される、さらに、「機能追加」、「サブモジュール追加」、「設定」、及び「キャンセル」ボタンが表示される。ソフトウェア管理者が「機能追加」ボタンを選択すると、図3Bに示すように、新しい機能Dを示す行が追加され、各モジュールに対応する箇所にチェックボックスが表示される。 ソフトウェア管理者が、機能Dの実現時に使用されるサブモジュールに対応するチェックボックスにチェックマークを付すことにより、機能Dとサブモジュールとの関連付けを行う。図3Bでは、機能DにサブモジュールZを関連付けた例を示している。「設定」ボタンが選択されると、機能関連付け設定部13が、入力された情報に基づいて、機能関連付け表16に、機能DとサブモジュールZとの関連を新たに追加する。 「サブモジュール追加」ボタンが選択されると、新しいサブモジュールを示す列が追加され、各機能に対応する箇所にチェックボックスが表示される。「キャンセル」ボタンが選択されると、機能とサブモジュールとの関連付け処理がキャンセルされる。 次に、実行順制御部12(図1)について説明する。 実行順制御部12は、自動テスト実行部10によるテスト結果が期待結果を満たさない場合、期待結果を満たさなかった機能と機能関連付け表16とに基づいて、実行順序キューに登録されている機能のテストの順番を変更する。 次に、図4を参照して実行順制御部12が実行する手順について説明する。図4は、実行順制御部12が実行する手順を示すフローチャートである。1つの機能について自動テスト実行部10によるテストが終了すると、図4に示した手順が開始される。実行順制御部12は、テスト結果が期待結果を満たすか否かを判定する(ステップS1)。テスト結果が期待結果を満たす場合(OKの場合)、処理を終了する。テスト結果が期待結果を満たさない場合(NGの場合)、実行順序キュー11に登録されている機能の個数を判定する(ステップS2)。 実行順序キュー11に登録されている機能の個数が1以下の場合、処理を終了する。実行順序キュー11に登録されている機能の個数が2以上の場合、機能関連付け表16を参照して、期待結果を満たさなかった機能に関連付けられているサブモジュールを抽出する(ステップS3)。例えば、図2に示した例では、機能Aのテストを実行して期待結果が満たされなかった場合、サブモジュールXが抽出される。次に、ステップS3で抽出されたサブモジュールから、期待結果が満たされない原因となった不具合発生サブモジュールを決定する(ステップS4)。 ステップS4で不具合発生サブモジュールが見つかった場合は、パラメータnを初期化(n=0に設定)する(ステップS5、S6)。パラメータnを初期化した後、実行順序キュー11の先頭からn番目の機能が、ステップS4で決定された不具合発生サブモジュールを使用しているか否かを確認する(ステップS7)。実行順序キュー11の先頭を0番目と定義する。パラメータnがゼロのとき、実行順序キュー11の先頭に登録されている機能(図1に示した例では機能B)が、不具合発生サブモジュールを使用しているか否かを確認する。 例えば、図2に示した例において、機能Aに関連付けられているサブモジュールXが不具合発生サブモジュールとして決定された場合、機能BもサブモジュールXに関連付けられているため、機能Bは、不具合発生サブモジュールXに関連付けられていると判定される。 実行順序キュー11の先頭からn番目に登録されている機能が不具合発生サブモジュールに関連付けられている場合(ステップS8)、先頭からn番目に登録されている機能を実行順序キュー11の最後尾に移動させる(ステップS9)。すなわち、不具合発生サブモジュールに関連付けられている機能をテストする順番を繰り下げる。図1、図2に示した例では、機能Aの不具合発生サブモジュールXを使用している機能Bを、実行順序キュー11の最後尾に移動させる。これにより、機能Cが実行順序キュー11の先頭に登録される。 実行順序キュー11に未確認の機能があるか否かを判定し、未確認の機能がある場合は、再度、実行順序キュー11の先頭からn番目の機能が、ステップS4で決定された不具合発生サブモジュールを使用しているか否かを確認する(ステップS7)手順から実行する。図1及び図2に示した例では、現時点で実行順序キュー11の先頭に登録されている機能Cが不具合発生サブモジュールXを使用していないため、実行順序キュー11に登録されている機能の順番を変更することなく、パラメータnに1を加算する(ステップS8、S10)。その後、ステップS11を実行する。 ステップS4で不具合発生サブモジュールが見つからなかった場合は、ステップS6からステップS9、S10までの手順は実行されず、処理を終了する。ステップS1でテスト結果がNGと判定され、ステップS4で不具合発生サブモジュールが見つからない例として、種々のサブモジュールを呼び出す前後の処理に不具合が存在する場合等が挙げられる。 例えば、図2に示した例では、実行順序キュー11の先頭に登録されている機能Bが不具合発生サブモジュールを使用しているが、以下、機能Bが不具合発生サブモジュールを使用していない例について説明する。この場合、実行順序キュー11に登録されている機能の順番を変更することなくステップS10においてnに1が加算される。これにより、ステップS11の手順を実行した後、ステップS7において実行順序キュー11の1番目(先頭の後)に登録されている機能Cについて、処理を実行する。 実行順序キュー11に未確認の機能が無い場合、処理を終了する(ステップS11)。 次に、図5A及び図5Bを参照して、順序変更通知部14(図1)の機能について説明する。図5A及び図5Bは、端末25(図1)の表示画面26に表示される情報の一例を示す図である。 図5Aに示すように、例えば、機能Aのテストの実行手順が複数のステージI~Vに分かれており、ステージの順番にテストが実行される。自動テスト実行部10(図1)が実行ステータス(現在実行中のステージ)をプログレスバーで表示する。さらに、現時点で実行順序キュー11(図1)に登録されている機能が、登録順に、テスト所要見込み時間とともに表示される。これにより、開発者は、自分が開発した機能がテストされるまでのおおよその待機時間を知ることができる。 テストが終了すると、図5Bに示すように、プログレスバーの右端に、テスト結果が「OK」または「NG」で表示される。 実行順制御部12(図1)が実行順序キュー11(図1)に登録されている