TOP
|
特許
|
意匠
|
商標
特許ウォッチ
Twitter
他の特許を見る
10個以上の画像は省略されています。
公開番号
2025039159
公報種別
公開特許公報(A)
公開日
2025-03-21
出願番号
2023146039
出願日
2023-09-08
発明の名称
プログラム検証支援システム、及びプログラム検証支援方法
出願人
株式会社日立製作所
代理人
弁理士法人一色国際特許事務所
主分類
G06F
11/36 20060101AFI20250313BHJP(計算;計数)
要約
【課題】プログラムの検証に必要な限度でかつ効率良くスタブを生成する。
【解決手段】1又は複数の呼出命令を含む呼出部と、呼出命令により呼び出される被呼出部とを含むソースコードの呼出部から、条件分岐命令、条件分岐命令の条件節変数、及び条件分岐命令より前に存在する呼出命令をそれぞれ特定し、特定した条件節変数に所定の値を設定する命令又は、特定した呼出命令を除いた場合に上記特定した条件節変数の値を決定づける変数に、所定の値を設定する命令である非変数設定命令を、上記特定した呼出命令より前の命令から検索し、非変数設定命令を検索できた場合に、上記特定した条件節変数と、上記特定した呼出命令により呼び出される被呼出部とを対応付けたデータを生成するスタブ生成処理とを実行するプログラム検証支援システム1。
【選択図】図5
特許請求の範囲
【請求項1】
複数の呼出命令を含む呼出部と、前記複数の呼出命令のそれぞれにより呼び出される被呼出部とを含むソースコードを記憶する記憶装置、及び、
前記ソースコードの呼出部から、条件分岐命令と、前記条件分岐命令より前に存在する呼出命令と対応づけて抽出する命令文抽出処理と、
前記条件分岐命令による条件分岐を決定づける変数である条件節変数に所定の値を設定する命令、又は、前記抽出した呼出命令を除いた場合に前記条件節変数の値を決定づける変数に所定の値を設定する命令である非変数設定命令を、前記抽出した呼出命令より前の命令から検索し、前記非変数設定命令を検索できた場合に、前記呼出命令の位置を示す情報及び前記条件節変数を対応付けたデータである第1スタブデータを、前記複数の呼出命令について生成する第1スタブデータ生成処理と、
前記第1スタブデータの条件節変数の値を当該条件節変数に係る条件内容に基づき決定し、決定した値を前記被呼出部の戻り値として当該第1スタブデータに追加した第2スタブデータを、複数の呼出命令について生成する第2スタブデータ生成処理と、
前記呼出部の各命令を解析することにより、前記第2スタブデータに係る呼出命令を実行し前記第2スタブデータに係る条件節変数の値に基づき所定の分岐先の処理を実行する条件分岐命令を実行する前記呼出部の実行パスを特定し、特定した実行パスを示す情報と前記第2スタブデータとを対応づけたデータである第3スタブデータを、前記複数の呼出命令について生成する第3スタブデータ生成処理とを実行する制御装置を備える、
プログラム検証支援システム。
続きを表示(約 4,200 文字)
【請求項2】
前記制御装置は、前記第2スタブデータ生成処理において、前記第1スタブデータの条件節変数の値を、当該条件節変数に係る条件分岐命令による各分岐先を決定づける変数の値を特定することにより決定する、
請求項1に記載のプログラム検証支援システム。
【請求項3】
前記制御装置は、前記第3スタブデータ生成処理において、前記呼出部から、呼出命令と当該呼出命令の後の条件分岐命令と当該条件分岐命令における条件節変数の値に応じた分岐先の処理とを含む実行パスを特定し、特定した実行パスに対応する呼出命令、条件分岐命令における条件節変数、及び条件節変数の値を含む第2スタブデータを特定し、特定した第2スタブデータと前記特定した実行パスを示す情報とを対応づけた第3スタブデータを生成する、
請求項1に記載のプログラム検証支援システム。
【請求項4】
前記記憶装置は、前記ソースコードの全ての変数を設定又は変更可能な被呼出部を呼び出す第1呼出命令と、引数として指定された変数のみを設定又変更可能な被呼出部を呼び出す第2呼出命令とを前記呼出部に含むソースコードを記憶し、
前記制御装置は、
前記命令文抽出処理において、前記ソースコードの呼出部から、前記第1呼出命令を開始位置とする第1区分領域と前記第1呼出命令より後の前記第2呼出命令を開始位置とする第2区分領域とを特定し、前記第1区分領域における条件分岐命令と前記条件分岐命令より前に存在する前記第1呼出命令と対応づけて抽出し、第2区分領域における条件分岐命令と前記条件分岐命令より前に存在する前記第2呼出命令と対応づけて抽出し、
前記第1スタブデータ生成処理において、前記第1区分領域における条件分岐命令に係る条件節変数の各変数に所定の値を設定する命令、又は、前記抽出した第1呼出命令を除いた場合に前記条件節変数の各変数の値を決定づける変数に所定の値を設定する命令である非変数設定命令を、前記抽出した第1呼出命令より前の前記第1区分領域における命令から検索し、前記非変数設定命令を検索できた場合に、前記呼出命令の位置を示す情報及び前記条件節変数を対応付けた第1スタブデータを生成し、
前記第1スタブデータ生成処理において、前記第2区分領域における条件分岐命令に係る条件節変数のうち前記抽出した第2呼出命令に係る変数に所定の値を設定する命令、又は、前記抽出した第2呼出命令を除いた場合に前記条件節変数のうち前記抽出した第2呼出命令に係る変数の値を決定づける変数に所定の値を設定する命令である非変数設定命令を、前記抽出した第2呼出命令より前の前記第2区分領域における命令から検索し、前記非変数設定命令を検索できた場合に、前記呼出命令の位置を示す情報及び前記条件節変数を対応付けた第1スタブデータを生成し、
前記第2スタブデータ生成処理において、第2スタブデータを、前記第1呼出命令及び前記第2呼出命令についての各第1スタブデータに基づき、前記第1呼出命令及び前記第2呼出命令のそれぞれについて生成し、
前記第3スタブデータ生成処理において、前記第1区分領域の各命令を解析することにより、前記第1呼出命令を実行し前記第1呼出命令についての第2スタブデータに係る条件節変数の値に基づき所定の分岐先の処理を実行する条件分岐命令を実行する前記第1区分領域の実行パスを特定し、特定した実行パスを示す情報と前記第1呼出命令についての第2スタブデータとを対応づけた第3スタブデータを生成し、
前記第3スタブデータ生成処理において、前記第2区分領域の各命令を解析することにより、前記第2呼出命令を実行し前記第2呼出命令についての第2スタブデータに係る条件節変数の値に基づき所定の分岐先の処理を実行する条件分岐命令を実行する前記第2区分領域の実行パスを特定し、特定した実行パスを示す情報と前記第2呼出命令についての第2スタブデータとを対応づけた第3スタブデータを生成する、
請求項1に記載のプログラム検証支援システム。
【請求項5】
制御装置及び、複数の呼出命令を含む呼出部と、前記複数の呼出命令のそれぞれにより呼び出される被呼出部とを含むソースコードを記憶する記憶装置を備える情報処理装置によるプログラム検証支援方法であって、前記制御装置が、
前記ソースコードの呼出部から、条件分岐命令と、前記条件分岐命令より前に存在する呼出命令と対応づけて抽出する命令文抽出処理と、
前記条件分岐命令による条件分岐を決定づける変数である条件節変数に所定の値を設定する命令、又は、前記抽出した呼出命令を除いた場合に前記条件節変数の値を決定づける変数に所定の値を設定する命令である非変数設定命令を、前記抽出した呼出命令より前の命令から検索し、前記非変数設定命令を検索できた場合に、前記呼出命令の位置を示す情報及び前記条件節変数を対応付けたデータである第1スタブデータを、前記複数の呼出命令について生成する第1スタブデータ生成処理と、
前記第1スタブデータの条件節変数の値を当該条件節変数に係る条件内容に基づき決定し、決定した値を前記被呼出部の戻り値として当該第1スタブデータに追加した第2スタブデータを、複数の呼出命令について生成する第2スタブデータ生成処理と、
前記呼出部の各命令を解析することにより、前記第2スタブデータに係る呼出命令を実行し前記第2スタブデータに係る条件節変数の値に基づき所定の分岐先の処理を実行する条件分岐命令を実行する前記呼出部の実行パスを特定し、特定した実行パスを示す情報と前記第2スタブデータとを対応づけたデータである第3スタブデータを、前記複数の呼出命令について生成する第3スタブデータ生成処理とを実行する、
プログラム検証支援方法。
【請求項6】
前記制御装置は、前記第2スタブデータ生成処理において、前記第1スタブデータの条件節変数の値を、当該条件節変数に係る条件分岐命令による各分岐先を決定づける変数の値を特定することにより決定する、
請求項5に記載のプログラム検証支援方法。
【請求項7】
前記制御装置は、前記第3スタブデータ生成処理において、前記呼出部から、呼出命令と当該呼出命令の後の条件分岐命令と当該条件分岐命令における条件節変数の値に応じた分岐先の処理とを含む実行パスを特定し、特定した実行パスに対応する呼出命令、条件分岐命令における条件節変数、及び条件節変数の値を含む第2スタブデータを特定し、特定した第2スタブデータと前記特定した実行パスを示す情報とを対応づけた第3スタブデータを生成する、
請求項5に記載のプログラム検証支援方法。
【請求項8】
前記記憶装置は、前記ソースコードの全ての変数を設定又は変更可能な被呼出部を呼び出す第1呼出命令と、引数として指定された変数のみを設定又変更可能な被呼出部を呼び出す第2呼出命令とを前記呼出部に含むソースコードを記憶し、
前記制御装置は、
前記命令文抽出処理において、前記ソースコードの呼出部から、前記第1呼出命令を開始位置とする第1区分領域と前記第1呼出命令より後の前記第2呼出命令を開始位置とする第2区分領域とを特定し、前記第1区分領域における条件分岐命令と前記条件分岐命令より前に存在する前記第1呼出命令と対応づけて抽出し、第2区分領域における条件分岐命令と前記条件分岐命令より前に存在する前記第2呼出命令と対応づけて抽出し、
前記第1スタブデータ生成処理において、前記第1区分領域における条件分岐命令に係る条件節変数の各変数に所定の値を設定する命令、又は、前記抽出した第1呼出命令を除いた場合に前記条件節変数の各変数の値を決定づける変数に所定の値を設定する命令である非変数設定命令を、前記抽出した第1呼出命令より前の前記第1区分領域における命令から検索し、前記非変数設定命令を検索できた場合に、前記呼出命令の位置を示す情報及び前記条件節変数を対応付けた第1スタブデータを生成し、
前記第1スタブデータ生成処理において、前記第2区分領域における条件分岐命令に係る条件節変数のうち前記抽出した第2呼出命令に係る変数に所定の値を設定する命令、又は、前記抽出した第2呼出命令を除いた場合に前記条件節変数のうち前記抽出した第2呼出命令に係る変数の値を決定づける変数に所定の値を設定する命令である非変数設定命令を、前記抽出した第2呼出命令より前の前記第2区分領域における命令から検索し、前記非変数設定命令を検索できた場合に、前記呼出命令の位置を示す情報及び前記条件節変数を対応付けた第1スタブデータを生成し、
前記第2スタブデータ生成処理において、第2スタブデータを、前記第1呼出命令及び前記第2呼出命令についての各第1スタブデータに基づき、前記第1呼出命令及び前記第2呼出命令のそれぞれについて生成し、
前記第3スタブデータ生成処理において、前記第1区分領域の各命令を解析することにより、前記第1呼出命令を実行し前記第1呼出命令についての第2スタブデータに係る条件節変数の値に基づき所定の分岐先の処理を実行する条件分岐命令を実行する前記第1区分領域の実行パスを特定し、特定した実行パスを示す情報と前記第1呼出命令についての第2スタブデータとを対応づけた第3スタブデータを生成し、
前記第3スタブデータ生成処理において、前記第2区分領域の各命令を解析することにより、前記第2呼出命令を実行し前記第2呼出命令についての第2スタブデータに係る条件節変数の値に基づき所定の分岐先の処理を実行する条件分岐命令を実行する前記第2区分領域の実行パスを特定し、特定した実行パスを示す情報と前記第2呼出命令についての第2スタブデータとを対応づけた第3スタブデータを生成する、
請求項5に記載のプログラム検証支援方法。
発明の詳細な説明
【技術分野】
【0001】
本発明は、プログラム検証支援システム、及びプログラム検証支援方法に関する。
続きを表示(約 3,100 文字)
【背景技術】
【0002】
時代の変化や実行環境の変化などにより、ある言語で記述されたプログラムのソースコードを他の言語に変更する(変換する)必要がある場合がある。そして変換後は、変換後のプログラムが変換前のプログラムと同様に動作するかをテストする必要がある(現新一致の確認)。
【0003】
このようなテストの手法としては、プログラム内の各条件分岐命令の条件分岐先の命令を全て実行する(C0網羅)方法がある。この場合、プログラムの初期値を設定したテストデータを作成すると共に、プログラムの関数(メインルーチン内の呼出命令等)によって呼び出される呼び出し先のサブルーチンに対応させたスタブ(サブルーチンの戻り値)のデータを作成する。
【0004】
ここで、特許文献1には、対象プログラムにおいて実行される複数の関数の各々についてシンボリック実行を行うとともに、シンボル変数に関わる分岐を辿った履歴を表す第1の条件と、当該関数の引数及び返却値についての第2の条件の少なくともいずれかを含むパス条件表を複数の関数の各々について生成する処理と、複数の関数に含まれるいずれかの関数を呼び出す第1の関数と第1の関数に呼び出される第2の関数とのマッチングを求める処理と、求めたマッチングの少なくとも1つより大きなマッチングを求めた第1の関数と第2の関数との間毎に、関数毎のパス条件表を論理積によって並列に統合する処理と、統合後のパス条件表を満たすシンボル変数の値を算出し、算出した当該シンボル変数の値を含むテストケースを生成する処理をコンピュータに実行させるテストケース生成プログラムが開示されている。
【先行技術文献】
【特許文献】
【0005】
特開2016-9344号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1は、複数回呼び出される関数(サブルーチン)のパス条件(戻り値となる記号の値の範囲)の論理積を取りパス条件を統合することによりテストケース生成時間を短縮する技術である。しかしながら、スタブによって代替されるサブルーチンでは、様々な種類の処理が行われる。例えば、サブルーチンがユーザ入力を受け付ける等の任意の外部条件を反映した処理を行う場合、サブルーチンの位置又はサブルーチンが呼ばれるタイミングによっては、サブルーチンの戻り値が、ソースコード中の変数が同じ状況でも異なる値となる場合がある。その結果、C0網羅が不十分となるおそれがある。すなわち、スタブの呼出後のパス条件を考慮しただけでは十分な網羅テストが行われないおそれがある。
【0007】
本発明は、このような事情に鑑みてなされたものであり、その目的は、呼び出されるタイミングによって異なる戻り値を有する可能性がある被呼出部を有するプログラムに対しても、必要な限度でかつ効率良くスタブを生成することが可能なプログラム検証支援システム、及びプログラム検証支援方法を提供することにある。
【課題を解決するための手段】
【0008】
上記課題を解決するための本発明の一つは、複数の呼出命令を含む呼出部と、前記複数の呼出命令のそれぞれにより呼び出される被呼出部とを含むソースコードを記憶する記憶装置、及び、前記ソースコードの呼出部から、条件分岐命令と、前記条件分岐命令より前に存在する呼出命令と対応づけて抽出する命令文抽出処理と、前記条件分岐命令による条件分岐を決定づける変数である条件節変数に所定の値を設定する命令、又は、前記抽出した呼出命令を除いた場合に前記条件節変数の値を決定づける変数に所定の値を設定する命令である非変数設定命令を、前記抽出した呼出命令より前の命令から検索し、前記非変数設定命令を検索できた場合に、前記呼出命令の位置を示す情報及び前記条件節変数を対応付けたデータである第1スタブデータを、前記複数の呼出命令について生成する第1スタブデータ生成処理と、前記第1スタブデータの条件節変数の値を当該条件節変数に係る条件内容に基づき決定し、決定した値を前記被呼出部の戻り値として当該第1スタブデータに追加した第2スタブデータを、複数の呼出命令について生成する第2スタブデータ生成処理と、前記呼出部の各命令を解析することにより、前記第2スタブデータに係る呼出命令を実行し前記第2スタブデータに係る条件節変数の値に基づき所定の分岐先の処理を実行する条件分岐命令を実行する前記呼出部の実行パスを特定し、特定した実行パスを示す情報と前記第2スタブデータとを対応づけたデータである第3スタブデータを、前記複数の呼出命令について生成する第3スタブデータ生成処理とを実行する制御装置を備える、プログラム検証支援システムである。
【発明の効果】
【0009】
本発明によれば、呼び出されるタイミングによって異なる戻り値を有する可能性がある被呼出部を有するプログラムに対しても、必要な限度でかつ効率良くスタブを生成することができる。
上記した以外の構成及び効果等は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0010】
本実施形態に係るプログラム検証支援システムの構成の一例を示す図である。
本実施形態を説明するための第1プログラムのソースコードの一例を示す図である。
言語変換支援装置が備える主な機能の一例を説明する図である。
プログラム検証支援システムにおける各情報処理装置が備えるハードウェア構成の一例を示す図である。
スタブ生成処理の一例を説明するフロー図である。
命令文抽出処理の詳細を説明するフロー図である。
代入命令文表の一例を示す図である。
呼出命令文表の一例を示す図である。
分岐命令表の一例を示す図である。
領域区分表の一例を示す図である。
条件節内変数毎チェーン表の一例を示す図である。
条件節内変数毎依存関係解析処理の詳細を説明するフロー図である。
呼出命令毎影響分岐命令表の一例を示す図である。
条件節内変数毎トレース処理の一例を説明する図である。
第1スタブ項目表の一例を示す図である。
単体スタブ項目表生成処理の詳細を説明するフロー図である。
複数回呼出対応スタブ項目表生成処理の詳細を説明するフロー図である。
複数回呼出対応スタブ項目表生成処理の具体例を説明する図である。
生成される第2スタブ項目表の一例を示す図である。
第2スタブ項目表の呼出命令文行番号のデータフォーマットの例を示す図である。
シナリオ対応スタブ項目表生成処理の詳細を説明するフロー図である。
シナリオ表の一例を示す図である。
第3スタブ項目表の一例を示す図である。
第3スタブ項目表の他の一例を示す図である。
第3スタブ項目表の他の一例を示す図である。
メインルーチンがwhile型(無限ループ型)のループ処理を有する場合に生成される第3スタブ項目表の一例を示す図である。
メインルーチンがfor型(カウンタ型)のループ処理を有する場合に生成される第3スタブ項目表の一例を示す図である。
【発明を実施するための形態】
(【0011】以降は省略されています)
この特許をJ-PlatPatで参照する
関連特許
個人
プログラム
1か月前
個人
情報検索システム
12日前
個人
確率場データ同化演算手法
24日前
シャープ株式会社
電子機器
25日前
キヤノン株式会社
電子機器
11日前
個人
技術実行管理システム
26日前
キヤノン株式会社
電子機器
11日前
個人
納骨堂システム
1か月前
キヤノン株式会社
電子機器
11日前
キヤノン電子株式会社
通信システム
4日前
個人
不動産情報提供システム
21日前
株式会社イノベイト
広告装置
14日前
個人
ネイルスキルテストシステム
25日前
合同会社IPマネジメント
内部不正対策
19日前
トヨタ自動車株式会社
管理システム
6日前
トヨタ自動車株式会社
作業評価装置
4日前
株式会社NURSY
再就職の支援装置
5日前
西松建設株式会社
計測システム
10日前
株式会社TIMEWELL
情報処理システム
1か月前
ローム株式会社
半導体集積回路
1か月前
TDK株式会社
等価回路
6日前
株式会社JVCケンウッド
情報処理装置
25日前
キヤノン株式会社
ワークフロー制御装置
1か月前
株式会社サマデイ
メンタリングシステム
26日前
トヨタ自動車株式会社
電池評価システム
1か月前
個人
外国為替証拠金取引定期自動売買システム
17日前
個人
生成AI向けデータ保管及び活用システム
1か月前
株式会社ヒニアラタ
障害者支援システム
19日前
個人
公益寄付インタラクティブシステム
4日前
株式会社インテック
触覚ディスプレイ装置
5日前
大王製紙株式会社
作業管理システム
5日前
ジャペル株式会社
登録管理システム
10日前
NGB株式会社
制御装置
24日前
サクサ株式会社
警備サービス管理システム
14日前
キオクシア株式会社
電子機器
10日前
トヨタ自動車株式会社
情報処理装置
1か月前
続きを見る
他の特許を見る