JP-2026076784-A - プログラム開発支援システム及びプログラム開発方法
Abstract
【課題】テスト時間を短縮することが可能なプログラム開発支援システムを提供する。 【解決手段】テスト項目一覧表に、テスト項目の一覧、及びテスト項目のそれぞれについて期待結果が得られなかったNG回数が記憶されている。順序制御部が、テスト項目一覧表から、実施するテスト項目を抽出し、抽出された複数のテスト項目を、テスト項目一覧表に記憶されているNG回数に基づいて並べ替える。テスト実行指示部が、順序制御部によって並べ替えられた順番に基づいて、実際にテストを実行するテスト実行部にテスト実行の指令を送出する。 【選択図】図1
Inventors
- 山本 新悟
Assignees
- 住友重機械工業株式会社
Dates
- Publication Date
- 20260512
- Application Date
- 20241024
Claims (10)
- テスト項目の一覧、及びテスト項目のそれぞれについて期待結果が得られなかったNG回数を記憶するテスト項目一覧表と、 前記テスト項目一覧表から、実施するテスト項目を抽出し、抽出された複数のテスト項目を、前記テスト項目一覧表に記憶されているNG回数に基づいて並べ替える順序制御部と、 前記順序制御部によって並べ替えられた順番に基づいて、実際にテストを実行するテスト実行部にテスト実行の指令を送出するテスト実行指示部と を備えたプログラム開発支援システム。
- 前記テスト実行指示部は、前記テスト実行部からのテスト結果を受信してテスト結果を判定し、テスト結果が期待結果を満たさない場合、前記テスト項目一覧表の該当するテスト項目のNG回数を更新する請求項1に記載のプログラム開発支援システム。
- ソースコードを特定する複数のソースコード特定情報のそれぞれに、前記ソースコード特定情報で特定されるソースコードの正常性を確認するために実施すべきテスト項目を関連付ける関連付け表を、さらに備えており、 前記順序制御部は、抽出された複数のテスト項目をNG回数に基づいて並べ替えた後、前記関連付け表を参照して、テストするソースコードに関連付けられたテスト項目の順番を繰り上げる機能を有する請求項1または2に記載のプログラム開発支援システム。
- 前記順序制御部は、さらに、ソースコードを特定する複数のソースコード特定情報とテスト項目のそれぞれとの関連度合いに基づいて、複数のテスト項目を並べ替える機能を有する請求項1または2に記載のプログラム開発支援システム。
- 前記複数のテスト項目のそれぞれについて、テストの実行に必要な平均所要時間の長短に基づいた評価値を記憶するテスト時間重み付け表を、さらに備えており、 前記順序制御部は、さらに、前記テスト時間重み付け表に記憶された評価値に基づいて、複数のテスト項目を並べ替える機能を有する請求項4に記載のプログラム開発支援システム。
- 前記テスト項目一覧表は、開発初期からの累積のNG回数、及び現時点から一定期間遡った時点以降に発生したNG回数を記憶する請求項1または2に記載のプログラム開発支援システム。
- 前記テスト項目一覧表は、さらに、開発中に生成される複数のブランチのそれぞれについて発生したNG回数を記憶する請求項1または2に記載のプログラム開発支援システム。
- ソースコードのテストを行う際に、テスト項目一覧表から実施するテスト項目を抽出し、 抽出された複数のテスト項目を、過去にテスト項目を実施したときに発生したNG回数に基づいて並べ替え、 並べ替えられた順番に基づいてテストを実施するプログラム開発方法。
- 抽出された複数のテスト項目を並べ替える際に、過去にテスト項目を実施したときに発生したNG回数に加えて、テストするソースコードを用いるか否かの情報に基づいて並べ替えを行う請求項8に記載のプログラム開発方法。
- 抽出された複数のテスト項目を並べ替える際に、過去にテスト項目を実施したときに発生したNG回数に加えて、テスト項目を実施する平均所要時間に関する情報に基づいて並べ替えを行う請求項8または9に記載のプログラム開発方法。
Description
本発明は、プログラム開発支援システム及びプログラム開発方法に関する。 近年、ソフトウェア開発現場において、継続的インテグレーション(CI)システムを用いたテストの自動化が進んでいる。CIシステムを用いたテストの自動化は、ウェブ系ソフトウェアの開発においては一般的な手法であり、組み込み系ソフトウェアの開発においても徐々に導入され始めている。組み込み系ソフトウェアがウェブ系ソフトウェアと大きく異なる点として、組み込み系ソフトウェアでは、ターゲット基板にソフトウェアをダウンロードしてテストを実行する必要があることが挙げられる。 ソフトウェアを複数人で開発している場合、CIシステムが複数人で共用される。複数人が同時期にソフトウェア構成管理(SCM)サーバにソースコードをコミット(アップロード)した場合、通常は、コミットした順番にテストが実行される。組み込み系ソフトウェアの開発においては、ターゲット基板自体も並行して開発を進めている場合が多い。このため、開発中に利用できるターゲット基板の枚数を多くすることが困難である。1つのソースコードに関連するテストにおいてターゲット基板の専有時間が長くなると、他のソースコードに関連するテストの開始が遅れてしまう。 ノード(関数)の従属関係に基づいてテスト項目の実行順を決定することにより、テスト実施時間を短縮する技術が公知である(特許文献1)。 特開2022-163410号公報 図1は、第1実施例によるプログラム開発支援システムのブロック図である。図2は、関連付け表20の内容の一例を示す図表である。図3は、テスト項目一覧表21の内容の一例を示す図表である。図4は、複数のブランチの一例を示す模式図である。図5は、順序制御部10が実行する処理の手順を示すフローチャートである。図6は、順序制御部10の機能を説明するためのテスト項目順の一例を示す模式図である。図7は、表示画面32に表示された画像の一例を示す図である。図8Aは、評価項目をNG回数としたNG回数重み付け表の一例を示す図表であり、図8Bは、評価項目を、ソースコードの変更箇所との関連度とした関連度合い表の一例を示す図表であり、図8Cは、評価項目をテスト平均所要時間としたテスト時間重み付け表の一例を示す図表である。図9は、第2実施例によるプログラム開発支援システムの順序制御部10(図1)がテスト項目の実行順序を決定する手順を説明するための図表である。図10は、端末31の表示画面32に表示されるテスト進捗状況を示す画像の一例を示す図である。図11は、第3実施例によるプログラム開発方法の手順を示すフローチャートである。 図1~図6を参照して、第1実施例によるプログラム開発支援システム及びプログラム開発方法について説明する。 図1は、第1実施例によるプログラム開発支援システムのブロック図である。開発者が端末31を用いてソースコード35を作成または修正してSCMサーバ30にコミットする。ターゲット基板50のテスト実行部51に実行ファイルがダウンロードされ、テストが実行される。 プログラム開発支援システムは、順序制御部10、テスト実行指示部11、関連付け設定部12、入力装置13、途中経過通知部14、関連付け表20、及びテスト項目一覧表21を含む。関連付け表20及びテスト項目一覧表21は、プログラム開発システムの記憶部に記憶領域を確保することにより実現される。順序制御部10、テスト実行指示部11、関連付け設定部12、及び途中経過通知部14の機能は、記憶部に格納されたプログラムをコンピュータが実行することにより実現される。 まず、図2を参照して関連付け表20について説明する。図2は、関連付け表20の内容の一例を示す図表である。関連付け表20は、ソースコードを特定する複数のソースコード特定情報のそれぞれに、ソースコードの正常性を確認するために実施すべき複数のテスト項目を関連付ける。開発者がSCMサーバ30にコミットしたソースコードは、ソースコード特定情報によって特定される。ソースコード特定情報は、例えば特定の機能を実現するソースコードのファイル名である。特定の機能を実現するソースコードが複数のファイルで構成される場合は、ソースコード特定情報として、複数のファイルが格納されたフォルダのフォルダ名が用いられる。 図2の各行がソースコード特定情報に対応し、各列がテスト項目に対応する。図2に示した丸記号は、当該行のソースコード特定情報に、当該列のテスト項目が関連付けられていることを意味する。図2に示された例では、例えばソースコード特定情報cに、テスト項目C及びDが関連付けられている。 次に、図3を参照してテスト項目一覧表21について説明する。図3は、テスト項目一覧表21の内容の一例を示す図表である。テスト項目一覧表21には、複数のテスト項目のそれぞれについて、期待結果が得られなかったNG回数が記憶される。テスト項目一覧表21には、開発初期からの累積のNG回数、現時点から一定期間遡った時点以降に発生したNG回数(例えば、過去1か月間のNG回数)、及びブランチごとのNG回数が記憶される。 次に、図4を参照してブランチについて説明する。図4は、開発中に発生する複数のブランチの一例を示す模式図である。ブランチは、プログラム変更履歴の流れを記録するものであり、分岐したブランチは、他のブランチの影響を受けないため、プログラムの開発中に複数の変更を同時に進めることができる。 図4に示すように、例えば動作が安定したマスターブランチBr1から、開発ブランチBr3が分岐し、開発ブランチBr3から、追加変更を行う複数の機能に対応して複数の機能ブランチBr4、Br5が分岐する。機能ブランチBr4において機能Xが実装され、機能ブランチBr5において機能Yが実装される。テストは、機能ブランチBr4及びBr5ごとに独立して行われる。 機能ブランチBr4のテストが完了すると、機能ブランチBr4が開発ブランチBr3にマージされる。マージ後、開発ブランチBr3の回帰テストが行われる。機能ブランチBr5のテストが完了すると、機能ブランチBr5が開発ブランチBr3にマージされる。すべての機能ブランチが開発ブランチBr3にマージされると、開発ブランチBr3からリリースブランチBr2が分岐する。リリースブランチBr2及び開発ブランチBr3において回帰テストが行われる。 開発ブランチBr3の回帰テストでテスト結果がNGになると、開発ブランチBr3からバグ修正用ブランチBr6が分岐し、バグ修正用ブランチBr6でバグの修正が行われる。バグの修正が完了すると、バグ修正用ブランチBr6が開発ブランチBr3にマージされる。その後、開発ブランチBr3がリリースブランチBr2にマージされる。リリースブランチBr2の回帰テストが終了すると、リリースブランチBr2がマスターブランチBr1にマージされ、マスターブランチBr1がリリースされる。 このように、プログラムのテストは、ブランチごとに並行して行われる。テスト項目一覧表21(図3)は、開発中に生成された複数のブランチのそれぞれのテストで発生したNG回数をブランチごとに記憶する。テスト項目一覧表21(図3)の累積NG回数及び過去1か月のNG回数は、すべてのブランチについてテスト項目ごとに行われたテストの結果のNG回数を表してる。 次に、図5及び図6を参照して順序制御部10(図1)の機能について説明する。図5は、順序制御部10が実行する処理の手順を示すフローチャートである。図6は、順序制御部10の機能を説明するためのテスト項目順の一例を示す模式図である。 SCMサーバ30(図1)に新しいソースコードがコミット(更新プログラムがアップロード)されると、順序制御部10は、SCMサーバ30から更新プログラムを取得する(ステップS1)。更新プログラムを取得すると、更新プログラムの正常性を確認するために実施すべきテスト項目を取得する(ステップS2)。実施すべきテスト項目は、更新プログラムごとに事前に登録されている。例えば、ソースコード特定情報c(図2)の更新プログラムをテストする場合、図6に示すように、テスト項目Aからテスト項目Eまでの5個のテスト項目が取得される。 次に、順序制御部10は、関連付け表20(図2)から、更新プログラムのソースコード特定情報に関連付けられたテスト項目を取得する(ステップS3)。例えば、テストすべき更新プログラムがソースコード特定情報c(図2)で特定される場合、関連付けられたテスト項目として、テスト項目C、Dが取得される。図6において、更新プログラムのソースコード特定情報に関連付けられたテスト項目を相対的に太い実線で表している。 順序制御部10は、テスト項目一覧表21(図3)を参照して、ステップS2で取得された実施するテスト項目を、NG回数に基づいて並べ替える(ステップS4)。並べ替える基準のNG回数として、例えば累積NG回数を採用する。その他に、過去1か月間のNG回数を採用してもよいし、現在テストを行っているブランチのNG回数を採用してもよい。図6においてテスト項目に付されたカッコ内の数値は、累積NG回数(図3)を表している。この例では、NG回数で並べ替えると、テスト項目E、C、A、B、Dの順番になる。 次に、順序制御部10は、ステップS3で取得された関連付けられたテスト項目の順番を、関連付けられていないテスト項目に対して繰り上げる(ステップS5)。例えば、ソースコード特定情報cにテスト項目C及びテスト項目Dが関連付けられているため、図6に示すように、テスト項目C及びテスト項目Dの順番を、テスト項目E、A、Bに対して繰り上げる。これにより、並べ替え後の順番は、テスト項目C、D、E、A、Bの順番になる。 テスト項目の順番が並べ替えられたら、順序制御部10は、テスト実行指示部11に、テスト項目の実行の順番を通知する(ステップS6)。 次に、テスト実行指示部11(図1)の機能について説明する。テストすべきソースコード35を指定するソースコード特定情報が決まると、テスト実行指示部11は、ソースコード特定情報で特定されたソースコードを含む全体のソースコードから実行ファイルを作成し、ターゲット基板50のテスト実行部51にダウンロードする。 テスト実行指示部11は、テスト項目のそれぞれについてテストケースを取得する。テストケースは、ソースコードのテストを実施する際に用意する実行条件、入力データ、期待される出力や結果等が組み合わされた情報であり、1つのテスト項目に対して1つまたは複数のテストケースが準備される。テストケースの内容は、テスト項目一覧表21に予め記憶されている。 テスト実行指示部11は、順序制御部10によって並べ替えられた順番に基づいて、ターゲット基板50のテスト実行部51にテスト実行の指令を送出する。テスト実行部51が、指令された順番に複数のテスト項目を実行する。1つのテスト項目を実行する際には、そのテスト項目に対応付けられているすべてのテストケースを実行する。 テスト実行部51は、テスト実行指示部11から指示されたテスト項目を実行するとともに、テスト実行指示部11に対して実行結果を返信する。この返信には、テストケースのそれぞれの実行結果が含まれる。 テスト実行指示部11は、テスト実行部51からのテスト結果を受信して、テスト結果を判定する。すべてのテストケースの実行結果が期待結果を満たす場合に、そのテスト項目のテスト結果は「OK」と判定され、1つでも期待結果を満たさないテストケースがあれば、そのテスト項目のテスト結果は「NG」と判定される。テスト結果が期待結果を満たさない(NGである)場合、テスト項目一覧表21の該当するテスト項目のNG回数を更新する。具体的には、テスト結果がNGとなったテスト項目の現時点のNG回数に1を加える。さらに、テスト実行指示部1