JP7474132B2 - プログラム検証データ生成支援装置、及びプログラム検証データ生成支援方法 - Google Patents

プログラム検証データ生成支援装置、及びプログラム検証データ生成支援方法 Download PDF

Info

Publication number
JP7474132B2
JP7474132B2 JP2020108714A JP2020108714A JP7474132B2 JP 7474132 B2 JP7474132 B2 JP 7474132B2 JP 2020108714 A JP2020108714 A JP 2020108714A JP 2020108714 A JP2020108714 A JP 2020108714A JP 7474132 B2 JP7474132 B2 JP 7474132B2
Authority
JP
Japan
Prior art keywords
processes
variable
execution path
input data
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020108714A
Other languages
English (en)
Other versions
JP2022006483A (ja
Inventor
遼 曾我
秀行 鹿糠
靖 藤崎
繁 栗田
哲哉 米光
光雄 稲垣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2020108714A priority Critical patent/JP7474132B2/ja
Publication of JP2022006483A publication Critical patent/JP2022006483A/ja
Application granted granted Critical
Publication of JP7474132B2 publication Critical patent/JP7474132B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、プログラム検証データ生成支援装置、及びプログラム検証データ生成支援方法に関する。
開発済みのプログラムを他の環境で実行させるために、そのプログラム言語を他のプログラム言語に変更する(移植する)ことが多く行われている。この場合、プログラムの移植が正確に行われたかを検証することが非常に重要である。
この点、移植前のプログラムに対する検証データ(プログラムの入力データ及び出力データ(確認データ)のパターン)を生成し、この検証データを利用して、移植前のプログラムの実行結果と移植後のプログラムの実行結果とが同じであるかを検証する方法がある。このような検証データには、通常、所定のコード網羅率が要求される。
そこで、例えば、特許文献1には、グラフ生成部が、ソースコードを記憶するソースコード記憶部からソースコードを取得し、取得したソースコードを構文解析して、データの処理に関するノードであるデータ処理ノードと、処理の分岐に関するノードである分岐処理ノードとを含むグラフ構造を生成するグラフ生成ステップと、データ生成部が、グラフ構造に基づいて、プログラムを実行する実行経路を抽出し、抽出した実行経路をプログラムに実行させるための入力データを生成するデータ生成ステップと、実行制御部が、プログラムにより正常に動作することが確認されている第1の実行環境と、プログラムにより正常に動作することが確認されていない第2の実行環境とのそれぞれの実行環境において、データ生成ステップにて生成した入力データによりプログラムを実行させる実行制御ステップとを含む検証方法が記載されている。
特開2016-18390号公報
しかしながら、プログラムのソースコードが長くなり処理のステップ数が多くなると、検証データの生成時間が長くなるという問題がある。特に、ソースコードに多くの条件分岐処理が記述されている場合は、処理の分岐が繰り返されていることが多く、特許文献1のように処理の経路を逐次追っていくと、網羅すべき処理のステップ数が膨大となり、検証データの作成に多くの時間を要するという問題があった。
本発明はこのような背景に鑑みてなされたものであり、その目的は、プログラムの検証データを、そのプログラムの構造が複雑となっている場合でも効率良く生成することが可能なプログラム検証データ生成支援装置、及びプログラム検証データ生成支援方法を提供することにある。
上記課題を解決するための本発明の一つは、プロセッサ及びメモリを備え、プログラムの各処理間の関係を、各処理で使用されている変数間の依存関係に基づき算出する処理間依存関係算出処理と、前記プログラムの各処理のうち条件分岐処理を含む処理の集合を抽出する検証可能処理集合抽出処理と、前記抽出した処理の集合のうち、前記プログラムに対する所定の網羅率を超え、かつ、各変数に対する処理の負荷が所定の基準以下である処理の集合を選択する網羅基準到達可能実行経路選択処理と、前記選択した処理の集合における条件分岐処理の条件判断に使用される変数のデータの組み合わせである入力データを、前記変数間の依存関係に基づき生成する入力データ生成処理と、前記抽出した条件分岐処理に前記入力データを入力した場合に当該条件分岐処理の実行により設定され又は編集される変数である確認変数を選択する確認変数名選択処理と、前記生成した入力データと、前記選択した確認変数の、前記プログラムの実行に基づく算出値である出力データとを対応づけたデータである検証データを生成する確認変数値生成処理と、を実行する、プログラム検証データ生成支援装置、とする。
また、上記課題を解決するための本発明の他の一つは、プロセッサ及びメモリを備える情報処理装置が、プログラムの各処理間の関係を、各処理で使用されている変数間の依存関係に基づき算出する処理間依存関係算出処理と、前記プログラムの各処理のうち条件分岐処理を含む処理の集合を抽出する検証可能処理集合抽出処理と、前記抽出した処理の集合のうち、前記プログラムに対する所定の網羅率を超え、かつ、各変数に対する処理の負荷が所定の基準以下である処理の集合を選択する網羅基準到達可能実行経路選択処理と、前記選択した処理の集合における条件分岐処理の条件判断に使用される変数のデータの組み合わせである入力データを、前記変数間の依存関係に基づき生成する入力データ生成処理と、前記抽出した条件分岐処理に前記入力データを入力した場合に当該条件分岐処理の実行により設定され又は編集される変数である確認変数を選択する確認変数名選択処理と、前記生成した入力データと、前記選択した確認変数の、前記プログラムの実行に基づく算出値である出力データとを対応づけたデータである検証データを生成する確認変数値生成処理と、を実行する、プログラム検証データ生成支援方法、とする。
本発明によれば、プログラムの検証データを、そのプログラムの構造が複雑となっている場合でも効率良く生成することができる。
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
本実施形態のプログラム検証データ生成支援システムの構成の一例を説明する図である。 検証データ表の一例を示す図である。 変数名メモリ番地表の一例を示す図である。 網羅基準表の一例を示す図である。 本実施形態で想定するソースコードを示す図である。 プログラム検証データ生成支援装置、及びデータサーバが備えるハードウェアの一例を示す図である。 検証データ表生成処理の一例を説明する図である。 処理間依存関係グラフ生成処理の一例を説明するフロー図である。 ソースコードの構成の一例を示す図である。 処理番号が設定されたソースコードの一例を示す図である。 分岐番号が設定されたソースコードの一例を示す図である。 処理-変数間依存関係DBの一例を示す図である。 処理間依存関係DBの一例を示す図である。 処理間依存関係グラフの一例を示す図である。 検証可能処理集合抽出処理の一例を説明するフロー図である。 分岐関連命令表の一例を示す図である。 分岐検証実行経路DBの一例を示す図である。 網羅基準到達可能実行経路選択処理の一例を説明するフロー図である。 網羅率表の一例を示す図である。 処理-工数管理表の一例を示す図である。 検証データ導出工数算出式の一例を示す図である。 工数表の一例を示す図である。 網羅基準到達可能実行経路DBの一例を示す図である。 実行経路分割処理の一例を説明するフロー図である。 実行経路分割候補DBの一例を示す図である。 結合工数の算出式の一例を示す図である。 実行経路分割候補工数見積もり表の一例を示す図である。 分割後実行経路DBの一例を示す図である。 入力データ生成処理の一例を説明するフロー図である。 入力ルール表の一例を示す図である。 入力データ表の一例を示す図である。 入力データ結合処理の一例を説明するフロー図である。 結合後入力ルール-確認変数名DBの一例を示す図である。 入力ルール候補表の一例を示す図である。 確認変数名選択処理の一例を説明するフロー図である。 入力ルール-検証データ基準確認変数名DBの一例を示す図である。 選択後確認変数表の一例を示す図である。 確認変数値生成処理の一例を説明するフロー図である。
図1は、本実施形態のプログラム検証データ生成支援システム1の構成の一例を説明する図である。
プログラム検証データ生成支援システム1は、プログラム検証データ生成支援装置10、及び、ユーザが作成したソースコード23を記憶したデータサーバ20を含んで構成されている。ソースコード23は、ある言語(例えば、COBOL)で記述されたプログラムである。プログラム検証データ生成支援装置10、及びデータサーバ20の間は、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット、専用線等
の有線又は無線のネットワークによって通信可能に接続される。
ユーザは、ソースコード23を他の言語(例えば、Java(登録商標))で記述した他のプログラムに変換(移植)している。プログラム検証データ生成支援装置10は、移植の正しさ(プログラムの同一性)を検証するための、ソースコード23の入力データ(入力変数の値)及び確認データ(入力変数の値に対する出力値)の組み合わせを記述した検証用データのリストである検証データ表30を生成する。
(検証データ表)
図2は、検証データ表30の一例を示す図である。検証データ表30は、検証データのIDである検証番号31、検証用入力データ32、及び検証用確認データ33の各情報を有する1以上のレコードで構成される。
検証用入力データ32は、ソースコード23に入力されるデータであり、具体的には、各変数の値が設定される。検証用確認データ33は、ソースコード23に検証用入力データ32が入力されソースコード23が実行された場合に出力されるデータである。検証用確認データ33は、具体的には、各変数の値である。
なお、本実施形態では、各変数のうち検証用入力データ32又は検証用確認データ33として必要ない変数には、「*」が設定される。
次に、図1に示すように、データサーバ20は、検証データ生成対照表21、変数名メ
モリ番地表250、ソースコード23、網羅基準表270、処理-工数管理表290、及び分割基準表25の各データを記憶している。
検証データ生成対照表21は、ソースコード23のうち、検証データ表30を生成する対象となる部分を指定したデータである。
変数名メモリ番地表250は、ソースコード23が使用している各変数とその変数の記憶領域とを対応づけて記憶したデータベースである。
網羅基準表270は、ソースコード23の各処理のうち検証された割合(テスト実行された割合)である網羅率に関する基準(以下、網羅基準という)を記憶したデータベースである。
処理-工数管理表290は、ソースコード23の処理及び変数の統計情報を記憶したデータベースである。処理-工数管理表290の詳細は後述する。また、分割基準表25の詳細も後述する。
ここで、変数名メモリ番地表250及び網羅基準表270の詳細を説明する。
(変数名メモリ番地表)
図3は、変数名メモリ番地表250の一例を示す図である。変数名メモリ番地表250は、編集変数又は参照変数の変数名251、及びその変数に使用されるメモリ番地252の各情報を有する1以上のレコードを備えるデータベースである。
なお、本実施形態で、編集変数とは、処理によってその値が設定又は編集される変数であり、参照変数とは、処理によってその値が参照される変数である。
(網羅基準表)
図4は、網羅基準表270の一例を示す図である。網羅基準表270は、識別子や名称が設定される網羅基準271、及びその網羅基準が満たすべき網羅率272の各情報を有する1以上のレコードを備えるデータベースである。
次に、図1に示すように、プログラム検証データ生成支援装置10は、処理間依存関係グラフ生成部101、検証可能処理集合抽出部102、網羅基準到達可能実行経路選択部103、実行経路分割部104、入力データ生成部105、入力データ結合部106、確認変数名選択部107、及び確認変数値生成部108の各機能部を備える。
処理間依存関係グラフ生成部101は、ソースコード23を構成する各処理間の関係を、各処理で使用されている変数間の依存関係に基づき算出する。この依存関係の情報は、処理間依存関係DB110に登録される。
検証可能処理集合抽出部102は、処理間依存関係DB110に基づき、ソースコード23のうち検証対象となる、条件分岐処理を含む処理の集合(以下、実行経路という)を抽出する。この実行経路の情報は、分岐検証実行経路DB130に登録される。
具体的には、検証可能処理集合抽出部102は、処理間依存関係DB110に基づき、条件分岐処理の分岐条件に係る変数の値に依存している処理群(条件分岐処理の条件式の変数に依存している処理)を条件分岐処理の分岐先のそれぞれについて特定し、特定した処理群のそれぞれを、実行経路として特定する。
これにより、ソースコード23に条件分岐処理が多数存在し条件分岐を網羅するための各実行経路が長くなり得る場合でも、条件分岐先の処理を、変数に関して互いに依存する実行経路ごとに分割し、互いに独立したより短い実行経路とすることができる。
網羅基準到達可能実行経路選択部103は、検証可能処理集合抽出部102における実行経路として、ソースコード23に対する所定の網羅率を超える実行経路(網羅基準到達可能実行経路という)を選択する。網羅基準到達可能実行経路は、網羅基準到達可能実行経路DB150に登録される。
実行経路分割部104は、網羅基準到達可能実行経路を複数の実行経路(以下、分割後実行経路という)に分割する。分割後実行経路の情報は、分割後実行経路DB170に登録される。なお、本実施形態では、実行経路分割部104は、複数の分割方法によって実行経路を分割する。
入力データ生成部105は、各分割後実行経路について、条件分岐処理の条件判断に使用される変数のデータの組み合わせである入力データを、各変数間の依存関係に基づき生成する生成する。入力データの情報は、入力ルール-確認変数名DB190に登録される。
本実施形態では、入力データは、条件分岐処理の条件判断(変数に関する判断)の組み合わせのパターンである入力ルールによって特定される。
入力データ結合部106は、各分割後実行経路の各入力データのうち、分割後実行経路間で共有して使用されている入力データを特定し、特定した入力データを統合することにより新たな入力データ(以下、結合後入力データという)を生成する。結合後入力データの情報は、結合後入力ルール-確認変数名DB210に登録される。なお、本実施形態では、入力データ結合部106は、上記の複数の分割方法のうち、入力データの統合に必要な工数が最小となる分割方法による、結合後入力データを生成する。
確認変数名選択部107は、入力データ生成部105が抽出した条件分岐処理に入力データを入力した場合にその条件分岐処理の実行により設定され又は編集される変数である確認変数を選択する。選択された確認変数の情報は、確認変数表230に登録される。
なお、以下では、条件分岐処理の実行に基づきその値が設定され又は編集される変数を、編集変数という。
確認変数値生成部108は、入力データ結合部106が生成した入力データ(結合後入力データ)と、確認変数名選択部107が選択した確認変数の実行値(ソースコード23の実行によって得られる値)である確認データとを対応づけた検証データ表30を生成する。
ユーザは、この検証データ表30の内容と、ソースコード23から移植したプログラムの実行結果とを比較することで、ソースコード23の移植が正しく行われたか否かを検証することができる。
なお、本実施形態で想定するソースコード23を図5に示す。このソースコード23は、COBOLで記述されている。
また、図6は、プログラム検証データ生成支援装置10、及びデータサーバ20が備えるハードウェアの一例を示す図である。プログラム検証データ生成支援装置10、及びデ
ータサーバ20は、CPU、GPU等の処理装置11(プロセッサ)と、プログラム及びデータ等が展開される、RAM(Random Access Memory)又はROM(Read Only Memory)等の主記憶装置12と、HDD(Hard Disk Drive)、SSD(Solid State Drive)、又はフラッシュメモリ等を含む補助記憶装置13と、キーボード又はタッチパネル等の入力装置14と、モニタ又はディスプレイ等の出力装置15と、他の情報処理装置と通信する、ネットワークインタフェースカード等の通信装置16とを備える。
以上に説明したプログラム検証データ生成支援装置10、及びデータサーバ20の各機能は、処理装置11が、主記憶装置12又は補助記憶装置13に記憶されている、各機能を実現する各プログラムを読み出して実行することにより実現される。なお、各プログラムは、外部記憶媒体にあらかじめ記録されていてもよいし、所定の通信ネットワークを介して、必要なときに導入されてもよい。
次に、プログラム検証データ生成支援装置10が行う処理について説明する。
<処理>
図7は、検証データ表30を生成する処理である検証データ表生成処理s1の一例を説明する図である。検証データ表生成処理s1は、例えば、プログラム検証データ生成支援装置10が、ユーザからソースコード23の指定入力を受け付け、ソースコード23をデータサーバ20から受信したことを契機に開始される。
まず、処理間依存関係グラフ生成部101は、ソースコード23の各処理間の関係を算出する処理間依存関係グラフ生成処理s100を実行する。
また、検証可能処理集合抽出部102は、条件分岐処理を含む実行経路をソースコード23から抽出する検証可能処理集合抽出処理s200を実行する。
そして、網羅基準到達可能実行経路選択部103は、検証可能処理集合抽出部102が抽出した実行経路のうち網羅基準到達可能実行経路を選択する網羅基準到達可能実行経路選択処理s300を実行する。
次に、実行経路分割部104は、網羅基準到達可能実行経路を複数の分割後実行経路に分割する実行経路分割処理s400を実行する。
また、入力データ生成部105は、各分割後実行経路における各条件分岐処理の条件判断に使用される入力データを生成する入力データ生成処理s500を実行する。
そして、入力データ結合部106は、各分割後実行経路の各入力データから結合後入力データを生成する入力データ結合処理s600を実行する。
確認変数名選択部107は、ソースコード23から確認変数を選択する確認変数名選択処理s700を実行する。
確認変数値生成部108は、入力データ結合部106が生成した結合後入力データをソースコード23に入力することにより、確認変数名選択部107が選択した確認変数の値(確認データ)を取得することで検証データ表30を生成する確認変数値生成処理s800を実行する。
以下、これらの処理の詳細を説明する。
<処理間依存関係グラフ生成処理>
図8は、処理間依存関係グラフ生成処理s100の一例を説明するフロー図である。
まず、処理間依存関係グラフ生成部101は、ソースコード23のうち、データを定義した部分(データ定義コード)及び処理又は命令を記述した部分(解析対象コード)をそれぞれ特定する(s101)。例えば、処理間依存関係グラフ生成部101は、ユーザから、データ定義コード及び解析対象コードの選択の入力を受け付け、又は、検証データ生成対照表21で指定されている部分を特定する。
そして、処理間依存関係グラフ生成部101は、解析対象コードに記述されている各処理から、網羅基準等が示す処理(以下、検証対象処理という)を特定し、特定した各検証対象処理に対して番号(以下、処理番号という)を設定する(s102)。なお、本実施形態では、ユーザが予め一つの網羅基準を選択しているものとする。
また、処理間依存関係グラフ生成部101は、検証対象処理における各条件分岐処理に番号(分岐番号)を設定する(s103)。
ここで、s101~s103の処理をソースコード23の具体例を用いて説明する。
図9は、ソースコード23の構成の一例を示す図である。ソースコード23は、変数等のデータを定義したデータ定義コード23aと、各処理を記述した解析対象コード23bとを備える。
図10は、処理番号が設定されたソースコード23の一例を示す図である。ソースコード23の解析対象コード23bには、各検証対象処理に対応づけられた処理番号23cがそれぞれ設定されている。
図11は、分岐番号が設定されたソースコード23の一例を示す図である。ソースコード23の解析対象コード23bには、各検証対象処理に対応づけられた条件分岐処理の分岐番号23dがそれぞれ設定されている。
次に、図8に示すように、処理間依存関係グラフ生成部101は、各検証対象処理が使用する変数のうち、編集変数の名称及び参照変数の名称を全て取得し、取得した情報を処理-変数間依存関係DB310に登録する(s104)。
例えば、処理間依存関係グラフ生成部101は、解析対象コード23bの各処理の構文及びデータ定義コード23aに登録されている変数の名称を対比及び解析することで、解析対象コード23bに記述されている全ての編集変数の名称及び参照変数の名称を抽出する。
また、処理間依存関係グラフ生成部101は、s104で取得した編集変数及び参照変数のそれぞれのメモリ番地(変数が格納されているメモリ上の位置)を変数名メモリ番地表250から取得し、取得した情報を処理-変数間依存関係DB310に登録する(s105)。
具体的には、処理間依存関係グラフ生成部101は、各編集変数及び各参照変数のメモリ番地を、変数名メモリ番地表250の各レコードのメモリ番地252から取得する。
(処理-変数間依存関係DB)
図12は、処理-変数間依存関係DB310の一例を示す図である。処理-変数間依存
関係DB310は、検証対象処理ごとに割り当てられた処理番号311、編集変数の変数名312、編集変数のメモリ番号313、参照変数の変数名314、及び参照変数のメモリ番号315の各情報を有する、1以上のレコードを備えるデータベースである。
次に、図8に示すように、処理間依存関係グラフ生成部101は、各検証対象処理について、検証対象処理に依存している条件分岐処理を特定する。すなわち、処理間依存関係グラフ生成部101は、各検証対象処理について、その検証対象処理を包含している分岐処理に係る条件分岐処理を、依存先条件分岐処理として全て特定し、特定した依存先条件分岐処理の処理番号を、処理間依存関係DB110に登録する(s106)。
また、処理間依存関係グラフ生成部101は、各検証対象処理について、検証対象処理内の変数に依存している処理を特定する。すなわち、処理間依存関係グラフ生成部101は、各検証対象処理について、その検証対象処理が使用している各参照変数のメモリ番号と同じメモリ番号の編集変数を使用している検証対象処理(すなわち、変数の使用に関して依存している処理。以下、依存先処理という)を全て特定し、特定した検証対象処理の処理番号を、処理間依存関係DB110に登録する(s107)。以上で処理間依存関係グラフ生成処理s100は終了する。
(処理間依存関係DB)
ここで、図13は、処理間依存関係DB110の一例を示す図である。処理間依存関係DB110は、検証対象処理の処理番号111、検証対象処理に対する依存先条件分岐処理の処理番号の一覧112、及び、依存先処理の処理番号の一覧113の各情報を有する1以上のレコードで構成される。
(処理間依存関係グラフ)
次に、図14は、処理間依存関係グラフ330の一例を示す図である。処理間依存関係グラフ330は、処理間依存関係DB110に基づき生成される検証対象処理間の関係図である。処理間依存関係グラフ330には、各検証対象処理の処理番号331、及び、各条件分岐処理の分岐番号332が表示される。
処理間依存関係グラフ生成処理s100により、条件分岐処理の各分岐先の処理群がその各処理間の変数の依存関係に基づき紐付けられ生成されている。これにより、例えば、「IF NOT エラーコード = "INVALID"」なる分岐先処理335が、2つの処理群337の
それぞれに含まれている。
なお、処理間依存関係グラフ生成部101は、ユーザから所定の入力を受け付けることにより、この処理間依存関係グラフ330を表示する。
<検証可能処理集合抽出処理>
図15は、検証可能処理集合抽出処理s200の一例を説明するフロー図である。
まず、検証可能処理集合抽出部102は、検証対象処理における条件分岐処理(以下、検証対象分岐処理という)を取得する(s201)。例えば、検証可能処理集合抽出部102は、網羅基準表270の網羅基準271が指定している分岐処理を特定する。
検証可能処理集合抽出部102は、s201で取得した各検証対象分岐処理について、その検証対象分岐処理の依存先処理を全て特定し、特定した依存先処理を分岐関連命令表350に記録する(s202)。
具体的には、検証可能処理集合抽出部102は、処理間依存関係DB110を参照し、
検証対象分岐処理に係るレコードの依存先処理番号一覧113の内容を取得する。
検証可能処理集合抽出部102は、s202で生成した分岐関連命令表350の各検証対象分岐処理のレコードを、依存先処理の数に関して昇順で並び替える(s203)
(分岐関連命令表)
ここで、図16は、分岐関連命令表350の一例を示す図である。分岐関連命令表350は、検証対象分岐処理の処理番号である分岐管理番号351、及び、その検証対象分岐処理の依存先処理の処理番号の一覧352の各情報を有する1以上のレコードで構成されるデータベースである。
次に、図15に示すように、検証可能処理集合抽出部102は、s203で生成した分岐関連命令表350に登録されている各検証対象分岐処理のうち、ある検証対象分岐処理の依存先処理が他の検証対象分岐処理の依存先処理を包含している関係にある(依存先処理に関して部分集合の関係にある)、検証対象分岐処理の組(処理群)をまとめる(集約する)ことで、互いに変数に関して依存関係にある検証対象分岐処理の処理群(実行経路)のデータベース(分岐検証実行経路DB130)を生成する。
具体的には、検証可能処理集合抽出部102は、分岐関連命令表350の各レコードの、依存先処理の処理番号の一覧352を参照することで、一方のレコードの依存先処理の処理番号一覧352の内容が他方のレコードの依存先処理の処理番号の一覧352の内容を包含する(部分集合の関係にある)関係にあるレコードの組を特定する。
(分岐検証実行経路DB)
図17は、分岐検証実行経路DB130の一例を示す図である。分岐検証実行経路DB130は、検証対象分岐処理の処理群である実行経路の実行経路ID131、及び、その実行経路を構成する検証対象分岐処理の処理番号(分岐管理番号)の一覧である分岐管理番号一覧132の各情報を有する1以上のレコードで構成される。
(網羅基準到達可能実行経路選択処理)
次に、図18は、網羅基準到達可能実行経路選択処理s300の一例を説明するフロー図である。
網羅基準到達可能実行経路選択部103は、検証可能処理集合抽出処理s200で生成した分岐検証実行経路DB130の各実行経路の網羅率を算出する(s301)。
例えば、網羅基準到達可能実行経路選択部103は、網羅基準が定める網羅率算出式に、分岐検証実行経路DB130の各実行経路の分岐管理番号一覧132の各値を代入することで、各実行経路の網羅率を算出する。網羅基準到達可能実行経路選択部103は、算出した網羅率を、網羅率表390に登録する。
(網羅率表)
図19は、網羅率表390の一例を示す図である。網羅率表390は、実行経路ID391、網羅基準392、及び網羅率393の各情報を有する1以上のレコードで構成される。
さらに、図18に示すように、網羅基準到達可能実行経路選択部103は、各実行経路について、実行経路の処理負荷の情報である処理-工数管理表410を生成しつつ各実行経路の検証データ導出工数を算出する(s302)。
例えば、網羅基準到達可能実行経路選択部103は、分岐検証実行経路DB130及び
ソースコード23を参照することで、各実行経路における各処理の内容を解析し、各処理における編集命令(編集変数を編集する処理)の数及び型、編集変数及び参照変数の数、並びに条件分岐処理の数等をそれぞれ特定することで、処理-工数管理表410を生成する。そして、網羅基準到達可能実行経路選択部103は、生成したこれらの情報を検証データ導出工数算出式に代入することにより、各実行経路の検証データ導出工数を算出し、算出した検証データ導出工数を工数表430に登録する。
ここで、処理-工数管理表410、検証データ導出工数算出式、及び工数表430について説明する。
(処理-工数管理表)
図20は、処理-工数管理表410の一例を示す図である。処理-工数管理表410は、実行経路ID411、編集命令数412、型が一致しない編集命令の数413、参照変数又は編集変数の数414、複数回参照又は編集される参照変数及び編集変数の数415、条件分岐処理の数416、分岐網羅必要条件分岐処理の数417、及び、反復処理数418の各情報を有する1以上のレコードで構成される。
このように、処理-工数管理表410は、各実行経路における各処理又は変数に関する処理の負荷の大きさの情報をまとめたデータベースである。
(検証データ導出工数算出式)
図21は、検証データ導出工数算出式の一例を示す図である。検証データ導出工数算出式は、例えば、処理-工数管理表410に設定されている各情報と、所定の係数とを用いて算出される。
(工数表)
図22は、工数表430の一例を示す図である。工数表430は、実行経路ID431、及びその工数432(検証データ導出工数)の各情報を有する1以上のレコードで構成される。
次に、図18に示すように、網羅基準到達可能実行経路選択部103は、工数表430の各レコードを、工数432の降順で並び替える(s303)
網羅基準到達可能実行経路選択部103は、並び替えた工数表430の実行経路の各レコードを順番に確認して、網羅基準を満たす実行経路を特定する(s304~s308)。
具体的には、網羅基準到達可能実行経路選択部103は、現在確認中の、工数表430の実行経路のレコードが最後の実行経路のレコードであるか否かを判定する(s304)。
そのレコードが最後の実行経路のレコードである場合は(s304:Yes)、後述のs308の処理が行われ、そのレコードが最後の実行経路のレコードでない場合は(s304:No)、次のs305の処理が行われる。
すなわち、網羅基準到達可能実行経路選択部103は、現在の次の実行経路を選択し、その実行経路を除外した場合の他の各実行経路の網羅率をs301と同じ要領で算出する(s305)。
網羅基準到達可能実行経路選択部103は、s305で算出した網羅率が、網羅基準が要求する基準に達しているか否か(網羅基準が規定する所定の網羅率の閾値を超えている
か否か)を判定する(s306)。
網羅率が網羅基準の要求基準に達している場合は(s306:Yes)、網羅基準到達可能実行経路選択部103は、s305で選択した実行経路を削除する旨を記憶してs304の処理が繰り返され、網羅率が網羅基準の要求基準に達していない場合は(s306:No)、網羅基準到達可能実行経路選択部103は、s305で選択した実行経路を削除しない旨を記憶する(s307)。その後は、s304の処理が繰り返される。
s308において網羅基準到達可能実行経路選択部103は、削除する旨を記憶した実行経路以外の各実行経路を、網羅基準到達可能実行経路DB150に記録する。以上で網羅基準到達可能実行経路選択処理s300は終了する。
(網羅基準到達可能実行経路DB)
図23は、網羅基準到達可能実行経路DB150の一例を示す図である。網羅基準到達可能実行経路DB150は、網羅基準(網羅率)を満たした実行経路の番号(実行経路番号151)のリストを記憶している。
<実行経路分割処理>
次に、図24は、実行経路分割処理s400の一例を説明するフロー図である。
まず、実行経路分割部104は、網羅基準到達可能実行経路選択処理s300で決定した実行経路のうち、所定数を超える処理を有する実行経路を抽出する(s401)。
本実施形態では、実行経路分割部104は、実行経路の分割を不要とする処理の最大値(最大処理数)を記憶した分割基準表(不図示)に基づいて、実行経路を抽出する。
実行経路分割部104は、s401で抽出した各実行経路(分割対象実行経路候補)について、分割後の実行経路の処理数が最大処理数を超えないような複数の分割方式にて、分割対象実行経路を複数の実行経路に分割する試行を行う(s402)。実行経路分割部104は、分割した各実行経路(分割後実行経路候補)の情報を実行経路分割候補DB450に登録する。
なお、これらの分割方式は、例えば、所定の処理数ごとに分割する方式、分岐処理の構成を基準に分割する方式等がある。
実行経路分割部104は、s402で登録した各分割後実行経路候補について、その中で使用されている参照変数及び編集変数を全て抽出し、抽出した参照変数及び編集変数の合計数(設定変数数)を実行経路分割候補DB450に登録する(s403)。
(実行経路分割候補DB)
図25は、実行経路分割候補DB450の一例を示す図である(分割基準表が最大処理数として15を設定している場合)。実行経路分割候補DB450は、分割方法のIDである分割候補ID451、その分割方法による分割前の実行経路のIDである元実行経路ID452、その分割方法による分割後の分割後実行経路候補のIDである分割ID453、分割後実行経路候補における各処理の処理番号の一覧である処理番号一覧454、分割後実行経路候補における各処理で使用されている参照変数の一覧455、分割後実行経路候補における各処理で使用されている編集変数の一覧456、及び、分割後実行経路候補における設定変数数457の各情報を有する1以上のレコードで構成される。
次に、図24に示すように、実行経路分割部104は、s403の結果に基づき、分割
後実行経路の間で共有して使用されている参照変数及び編集変数(それぞれ、共有参照変数、共有編集変数という)を特定し、特定した共有変数の数を計数する(s404)。
また、実行経路分割部104は、s403で算出した設定変数数、及びs404で算出した共有変数の数に基づき、分割対象実行経路候補における変数の処理の負荷(変数間の依存関係強さ)の大きさを表すパラメータ値である結合工数を、各分割対象実行経路候補について算出する(s405)。
ここで、実行経路分割処理s400で使用される式及びデータベースについて説明する。
(結合工数の算出式)
図26は、結合工数の算出式の一例を示す図である。結合工数は、設定変数数、共有参照変数の数、共有編集変数の数、及び、これらに対して適用される、値の異なる所定の係数によって算出される。
(実行経路分割候補工数見積もり表)
図27は、結合工数を算出するために生成される実行経路分割候補工数見積もり表470の一例を示す図である。実行経路分割候補工数見積もり表470は、分割方法のIDである分割候補ID471、その分割方法による分割における設定変数数472、その分割方法による分割後の分割後実行経路候補間の共有参照変数の一覧473、分割後実行経路候補間の共有参照変数の数474、分割後実行経路候補間の共有編集変数の一覧475、分割後実行経路候補間の共有編集変数の数476、及び、その分割方法による結合工数477の各情報を有する1以上のレコードで構成される。
次に、図24に示すように、実行経路分割部104は、s405により算出した結合工数に基づき、結合工数が最小となる分割方法を特定し、その分割方法に関する分割対象実行経路候補(以下、分割対象実行経路という)の情報を分割後実行経路DB170に設定する(s406)。以上で実行経路分割処理s400は終了する。
(分割後実行経路DB)
図28は、分割後実行経路DB170の一例を示す図である。分割後実行経路DB170は、s406で特定された分割対象実行経路の情報を実行経路分割候補DB450から抽出した情報であり、具体的には、分割対象実行経路から分割された各実行経路候補(以下、分割後実行経路という)のIDである分割後実行経路ID171、分割対象実行経路のIDである分割候補ID172、元実行経路ID173、及び、分割後実行経路における各処理の処理番号の一覧である処理番号一覧174の各情報を有する1以上のレコード
で構成される。
<入力データ生成処理>
次に、図29は、入力データ生成処理s500の一例を説明するフロー図である。
まず、入力データ生成部105は、実行経路分割処理s400で分割した各実行経路(分割後実行経路)について、ソースコード23を記号実行するためのコード(ルール抽出用コード)を生成する(s501)。
具体的には、例えば、入力データ生成部105は、実行経路の各条件分岐処理の各分岐処理が実行されたか否かを管理する分岐管理命令をソースコード23に付与した所定コードを生成する。
入力データ生成部105は、s501で生成したルール抽出用コードを記号実行することで、各実行経路の条件分岐処理における条件分岐パターン(入力ルール)を全て抽出し、抽出した各入力ルールの内容を入力ルール表490に登録する(s502)。
(入力ルール表)
図30は、入力ルール表490の一例を示す図である。入力ルール表490は、入力ルールごとに割り当てられた番号である入力ルール番号491、実行経路の番号492、入力ルールの内容493、及び、入力ルールに係る分岐番号のリストである通過分岐番号494の各情報を有する1以上のレコードで構成される。
次に、図29に示すように、入力データ生成部105は、s502で抽出した各入力ルールについて、その入力ルールを満たす各変数及びその値の組み合わせを特定する(s504)。入力データ生成部105は、例えば、SMTソルバーによって各変数及びその値を特定する。入力データ生成部105は、特定した変数及びその値を、入力データ表510に登録する。以上で入力データ生成処理s500は終了する。
(入力データ表)
図31は、入力データ表510の一例を示す図である。入力データ表510は、入力データのID511、入力ルールの番号512、入力ルールを構成する変数名513、及びその変数の値514の各情報を有する1以上のレコードで構成される。
<入力データ結合処理>
次に、図32は、入力データ結合処理s600の一例を説明するフロー図である。
入力データ結合部106は、入力データ生成処理s500で生成した分割後実行経路DB170及び入力ルール表490を参照することで、各分割後実行経路の入力ルールを特定し(s601)、結合後入力ルール-確認変数名DB210に登録する。
また、入力データ結合部106は、各分割後実行経路に関して、s601で特定した各入力ルールに対応する確認データの組み合わせである確認ルールをソースコード23等から取得し(s602)、取得した各確認ルールを結合後入力ルール-確認変数名DB210に登録する。
(結合後入力ルール-確認変数名DB)
図33は、結合後入力ルール-確認変数名DB210の一例を示す図である。結合後入力ルール-確認変数名DB210は、分割後実行経路に適用される入力ルールの番号211、分割後実行経路のID212、入力ルールの内容213、分割後実行経路における参照変数の名称の一覧214、分割後実行経路における確認変数の名称の一覧215、及び、分割後実行経路における入力ルールに対応する確認ルールの内容216の各情報を有する1以上のレコードで構成される。
次に、図32に示すように、入力データ結合部106は、各分割後実行経路から一つの分割後実行経路を選択する(s603)。
入力データ結合部106は、選択した分割後実行経路(選択経路)の各参照変数を確認し、他の分割後実行経路と共有している参照変数があるか否かを判定する(s604)。
他の分割後実行経路と共有している参照変数がない場合は(s604:NO)、他の分割後実行経路を選択すべくs603の処理に戻り、他の分割後実行経路と共有している参照変数がある場合は(s604:Yes)、入力データ結合部106は、それらの他の分
割後実行経路について、以下のs605の処理を実行する。
すなわち、入力データ結合部106は、選択経路の入力ルールと、上記他の各分割後実行経路の入力ルール及び確認ルールとを結合して新たな入力ルール(結合後入力ルール)を生成し(s605)、生成した入力ルールを入力ルール候補表530に登録する。
具体的には、入力データ結合部106は、結合後入力ルール-確認変数名DB210の、選択経路に係る入力ルールの内容213と、他の分割後実行経路に係る入力ルールの内容213と、他の分割後実行経路に係る確認ルールの内容216とを「AND」によって結合し、結合したデータを入力ルール候補表530に登録する。
入力データ結合部106は、s605で生成した各入力ルールの論理的整合性を判定し(s606)、その判定結果を、入力ルール候補表530に登録する。以上で入力データ結合処理s600は終了する。
なお、ここでは、入力データ結合部106は、複数の分割後実行経路から選択した一つの分割後実行経路に関して入力データの結合を行うとしているが、入力データ結合部106は、分割後実行経路のそれぞれについて入力データの結合を行う(s603~s606のループ処理を行う)こととしてもよい。
(入力ルール候補表)
図34は、入力ルール候補表530の一例を示す図である。入力ルール候補表530は、新たな入力ルールの番号である入力ルール候補番号531、分割後実行経路(選択経路)の入力ルールの番号である分割後入力ルール番号532、新たな入力ルールの内容533、及び、新たな入力ルールの論理的整合性の有無を示す情報である充足有無534の各情報を有する1以上のレコードで構成される。
入力データ結合部106は、論理的整合性がある入力ルールのみを、確認変数名選択処理s700で処理する。
<確認変数名選択処理>
次に、図35は、確認変数名選択処理s700の一例を説明するフロー図である。
確認変数名選択部107は、入力データ結合処理s600で特定した各入力ルールと、その入力ルール内の条件分岐処理における編集変数とを対応づけ、確認変数として、確認変数表230に登録する(s701)。
具体的には、確認変数名選択部107は、結合後入力ルール-確認変数名DB210及び入力ルール候補表530を参照することで、確認変数表230に登録する。
確認変数名選択部107は、処理-変数間依存関係DB310等を参照することにより、s701で登録した各確認変数に依存する全ての検証対象処理を、検証命令として確認変数表230に登録する(s702)。
(入力ルール-検証データ基準確認変数名DB)
図36は、確認変数表230の一例を示す図である。確認変数表230は、確認変数の登録ごとに割り当てられた確認変数番号231、入力ルール番号232、入力ルールに対応する確認変数の名称233、及び、検証命令一覧234の各情報を有する1以上のレコードで構成される。
次に、図35に示すように、確認変数名選択部107は、s703で生成した確認変数表230のうち検証命令が重複している部分を除いた情報を、選択後確認変数表570に登録する(s704)。
具体的には、確認変数名選択部107は、確認変数表230の各レコードの入力ルール番号232及び確認変数の名称233を選択後確認変数表570に登録しつつ、あるレコードの検証命令一覧234の内容が他のレコードの検証命令一覧234の内容と重複している場合は、それらのうち一方のレコードの入力ルール番号232及び確認変数の名称233は選択後確認変数表570に登録しない。
すなわち、確認変数名選択部107は、ある確認変数(編集変数)に対して複数の異なる入力データ(入力ルール)が対応している場合は、これらの入力ルールが重複するとして、入力データ(入力ルール)を一つに統合する。
(選択後確認変数表)
図37は、選択後確認変数表570の一例を示す図である。選択後確認変数表570は、入力ルール番号571、及び確認変数の名称の一覧572の各情報を有する1以上のレコードで構成される。
<確認変数値生成処理>
図38は、確認変数値生成処理s800の一例を説明するフロー図である。
確認変数値生成部108は、確認変数名選択処理s700で生成した各入力ルールに関して、入力ルールが規定する値を設定した変数(入力データ表510の情報)をソースコード23に入力することにより、ソースコード23に係るプログラムを実行する。確認変数値生成部108は、その実行結果における各変数の値のうち、選択後確認変数表570の各確認変数の値を抽出する。
確認変数値生成部108は、入力データ表510と、抽出した確認変数の値とを対応づけて、検証データ表30を生成する。以上で確認変数値生成処理s800は終了する。
以上のように、本実施形態のプログラム検証データ生成支援装置10は、ソースコード23の各処理間の関係を、各処理の変数間の依存関係に基づき算出し(処理間依存関係DB110、分岐検証実行経路DB130等)、実行経路における条件分岐処理に係る入力データを上記変数間の依存関係に基づき生成し、実行経路に入力データを入力した場合に条件分岐処理により設定され又は編集される出力データ(確認データ)を生成し、入力データと確認データを対応づけた検証データ表30を生成する。
このように、本実施形態のプログラム検証データ生成支援装置10は、検証データ表30を生成するために、ソースコード23の各処理間の関係を各処理の変数の依存関係に基づいて特定することで入力データを生成し、これに基づく確認データを生成する。
したがって、例えば、ソースコード23に条件分岐処理が多数含まれ、処理の経路が複雑化している場合であっても、処理に使用する変数間の依存関係に基づいて処理の経路の集合を論理的に効率良く特定し、検証データ表30に生成に重要な入力データを効率良く生成することができる。
以上のように、本実施形態のプログラム検証データ生成支援装置10によれば、プログラムの検証データを、そのプログラムの構造が複雑となっている場合でも効率良く生成することができる。
本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。上記した実施例は本発明のより良い理解のために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではない。
例えば、本実施形態では、ソースコード23の言語がCOBOLの場合を説明したが、条件分岐処理をサポートする言語であればその他の言語のプログラムに対しても本発明は適用できる。
また、本実施形態で説明したシステム構成は一例であり、プログラム検証データ生成支援装置10及びデータサーバ20の一部の機能を他の情報処理装置に設け、又は、プログラム検証データ生成支援装置10及びデータサーバ20の機能の一部を統合してもよい。
また、本実施形態では、予め用意されている複数の網羅基準から選択された一つの網羅基準によって検証データ表30を生成することとしたが、複数の網羅基準のそれぞれによって検証データ表30を生成してもよい。
また、本実施形態では、網羅基準到達可能実行経路選択処理s300において、検証データ導出工数を、編集命令、参照変数、編集変数、条件分岐処理等の数に基づいて算出するものとしたが、実行経路の処理に係る負荷の大きさを規定するものであれば、その他のパラメータに基づいて検証データ導出工数を算出してもよい。
また、本実施形態では、実行経路分割処理s400において、結合工数を、共有参照変数、共有編集変数、設定変数数等に基づいて算出するものとしたが、分割後実行経路間で共有される入力データの複雑性(入力データを結合する工数の多さ)を表す式であれば、その他のパラメータに基づいて結合工数を算出してもよい。
以上の本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態において、前記プログラム検証データ生成支援装置は、前記検証可能処理集合抽出処理における前記処理の集合として、前記プログラムに対する所定の網羅率を超える処理の集合を選択する網羅基準到達可能実行経路選択処理を実行する、としてもよい。
このように、網羅率が高い実行経路を選択することで、信頼性の高い検証データ表30を生成することができる。
また、本実施形態において、前記プログラム検証データ生成支援装置は、前記網羅基準到達可能実行経路選択処理において、前記処理の集合として、前記所定の網羅率を超え、かつ、各変数に対する処理の負荷が所定の基準以下である前記処理の集合を選択する、としてもよい。
このように、各変数に対する処理の負荷が小さい実行経路を選択する(検証データ導出工数が多い実行経路を除外する)ことで、より高速に検証が可能な検証データ表30を生成することができる。
また、本実施形態において、前記プログラム検証データ生成支援装置は、前記確認変数名選択処理において、複数の前記入力データのうち、前記確認変数と前記確認変数に係る処理とが互いに共通している入力データの組み合わせを特定し、特定した入力データの組み合わせのうち一つの入力データのみについての前記確認変数を選択し、前記確認変数値生成処理において、前記選択した確認変数に基づき、前記検証データを生成する、としてもよい。
このように、異なる入力データであっても共通して編集される確認変数がある場合は、それらのうち一つの入力データに対応する確認変数のみについて検証データ表30を生成することで、確認変数のデータを減らし、検証データ表30をより小さいサイズでかつ高速に生成することができる。
また、本実施形態において、前記プログラム検証データ生成支援装置は、前記検証可能処理集合抽出処理において、前記変数間の依存関係に基づき、前記条件分岐処理の分岐条件に係る変数の値に依存している処理群を前記条件分岐処理の分岐先のそれぞれについて特定し、特定した処理群のそれぞれを、前記処理の集合として特定し、前記入力データ生成処理において、前記特定した処理の集合のそれぞれについて、前記条件分岐処理の条件判断に使用される入力データを生成する、としてもよい。
このように、条件分岐処理の条件判断に使用されている変数の値に関して互いに独立している各分岐先処理群ごとに、すなわち、入力データ(入力ルール)に関して独立に検証可能な各実行経路ごとに、入力データを生成することで、条件分岐処理に基づく各分岐先の処理数が多くなる場合であっても、それらの分岐先の処理を、互いに独立したより簡潔な実行経路に分割し構成することができる。
また、本実施形態において、前記プログラム検証データ生成支援装置は、前記検証可能処理集合抽出処理において抽出した前記処理の集合のうち、所定の処理数を超える処理の集合を特定し、前記特定した処理の集合を複数の処理に分割した場合に各処理で使用される変数の、前記各処理の間での共有使用関係を特定し、前記特定した共有使用関係が所定の要件を満たす場合に、前記特定した処理の集合を分割する実行経路分割処理を実行し、前記入力データ生成処理において、前記分割した処理の集合のそれぞれに対して、前記入力データを生成する、としてもよい。
このように、処理数が多い実行経路を複数に分割した場合の各実行経路で使用される変数と、その実行経路内の処理との間の依存関係が所定の要件を満たす場合に実際に分割を行い、分割したそれぞれの実行経路に対して入力データを生成することで、実行経路の変数処理の内容に応じて、分割効果が高い(例えば、検証データ表30によるソースコード23の検証が迅速に行えるような)実行経路の分割を確実に行うことができる。
また、本実施形態において、前記プログラム検証データ生成支援装置は、前記実行経路分割処理において、前記依存関係として、前記特定した処理の集合を異なる複数の分割方法で複数の処理に分割した場合の、各前記処理で共有して使用される変数の数をそれぞれの分割方法について特定し、前記特定した数に関するパラメータ値が最小となる分割方法を特定し、特定した分割方法により、前記特定した処理の集合を分割する、としてもよい。
このように、実行経路を異なる複数の分割方法で分割した場合の、分割後の各処理での共有変数の数をそれぞれ特定し、共有変数の数に関するパラメータ値が最小となる分割方法を用いて実行経路を分割することで、より処理負荷が少ない分割方法による実行経路の分割を行うことができる。これにより、ソースコード23の検証が迅速に行えるような検証データ表30を生成することができる。
1 プログラム検証データ生成支援システム、10 プログラム検証データ生成支援装置、30 検証データ表、23 ソースコード

Claims (6)

  1. プロセッサ及びメモリを備え、
    プログラムの各処理間の関係を、各処理で使用されている変数間の依存関係に基づき算出する処理間依存関係算出処理と、
    前記プログラムの各処理のうち条件分岐処理を含む処理の集合を抽出する検証可能処理集合抽出処理と、
    前記抽出した処理の集合のうち、前記プログラムに対する所定の網羅率を超え、かつ、各変数に対する処理の負荷が所定の基準以下である処理の集合を選択する網羅基準到達可能実行経路選択処理と、
    前記選択した処理の集合における条件分岐処理の条件判断に使用される変数のデータの組み合わせである入力データを、前記変数間の依存関係に基づき生成する入力データ生成処理と、
    前記抽出した条件分岐処理に前記入力データを入力した場合に当該条件分岐処理の実行により設定され又は編集される変数である確認変数を選択する確認変数名選択処理と、
    前記生成した入力データと、前記選択した確認変数の、前記プログラムの実行に基づく算出値である出力データとを対応づけたデータである検証データを生成する確認変数値生成処理と、
    を実行する、プログラム検証データ生成支援装置。
  2. 前記確認変数名選択処理において、複数の前記入力データのうち、前記確認変数と前記確認変数に係る処理とが互いに共通している入力データの組み合わせを特定し、特定した入力データの組み合わせのうち一つの入力データのみについての前記確認変数を選択し、
    前記確認変数値生成処理において、前記選択した確認変数に基づき、前記検証データを生成する、
    請求項1に記載のプログラム検証データ生成支援装置。
  3. 前記検証可能処理集合抽出処理において、前記変数間の依存関係に基づき、前記条件分岐処理の分岐条件に係る変数の値に依存している処理群を前記条件分岐処理の分岐先のそれぞれについて特定し、特定した処理群のそれぞれを、前記処理の集合として特定し、
    前記入力データ生成処理において、前記特定した処理の集合のそれぞれについて、前記条件分岐処理の条件判断に使用される入力データを生成する、
    請求項1に記載のプログラム検証データ生成支援装置。
  4. 前記網羅基準到達可能実行経路選択処理において選択した前記処理の集合のうち、所定の処理数を超える処理の集合を特定し、
    前記特定した処理の集合を複数の処理に分割した場合に各処理で使用される変数の、前記各処理の間での共有使用関係を特定し、
    前記特定した共有使用関係が所定の要件を満たす場合に、前記特定した処理の集合を分割する実行経路分割処理を実行し、
    前記入力データ生成処理において、前記分割した処理の集合のそれぞれに対して、前記入力データを生成する、
    請求項1に記載のプログラム検証データ生成支援装置。
  5. 前記実行経路分割処理において、
    前記依存関係として、前記特定した処理の集合を異なる複数の分割方法で複数の処理に分割した場合の、各前記処理で共有して使用される変数の数をそれぞれの分割方法について特定し、
    前記特定した数に関するパラメータ値が最小となる分割方法を特定し、特定した分割方法により、前記特定した処理の集合を分割する、
    請求項に記載のプログラム検証データ生成支援装置。
  6. プロセッサ及びメモリを備える情報処理装置が、
    プログラムの各処理間の関係を、各処理で使用されている変数間の依存関係に基づき算出する処理間依存関係算出処理と、
    前記プログラムの各処理のうち条件分岐処理を含む処理の集合を抽出する検証可能処理集合抽出処理と、
    前記抽出した処理の集合のうち、前記プログラムに対する所定の網羅率を超え、かつ、各変数に対する処理の負荷が所定の基準以下である処理の集合を選択する網羅基準到達可能実行経路選択処理と、
    前記選択した処理の集合における条件分岐処理の条件判断に使用される変数のデータの組み合わせである入力データを、前記変数間の依存関係に基づき生成する入力データ生成処理と、
    前記抽出した条件分岐処理に前記入力データを入力した場合に当該条件分岐処理の実行により設定され又は編集される変数である確認変数を選択する確認変数名選択処理と、
    前記生成した入力データと、前記選択した確認変数の、前記プログラムの実行に基づく算出値である出力データとを対応づけたデータである検証データを生成する確認変数値生成処理と、
    を実行する、プログラム検証データ生成支援方法。
JP2020108714A 2020-06-24 2020-06-24 プログラム検証データ生成支援装置、及びプログラム検証データ生成支援方法 Active JP7474132B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020108714A JP7474132B2 (ja) 2020-06-24 2020-06-24 プログラム検証データ生成支援装置、及びプログラム検証データ生成支援方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020108714A JP7474132B2 (ja) 2020-06-24 2020-06-24 プログラム検証データ生成支援装置、及びプログラム検証データ生成支援方法

Publications (2)

Publication Number Publication Date
JP2022006483A JP2022006483A (ja) 2022-01-13
JP7474132B2 true JP7474132B2 (ja) 2024-04-24

Family

ID=80110841

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020108714A Active JP7474132B2 (ja) 2020-06-24 2020-06-24 プログラム検証データ生成支援装置、及びプログラム検証データ生成支援方法

Country Status (1)

Country Link
JP (1) JP7474132B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014127091A (ja) 2012-12-27 2014-07-07 Fujitsu Ltd テストデータ生成方法、プログラム及び装置
JP2015219906A (ja) 2014-05-15 2015-12-07 富士通株式会社 ソフトウェア確認方法およびプロセッサ
JP2020510925A (ja) 2017-02-28 2020-04-09 スパロー カンパニー リミテッド テストケースを利用してテストを遂行する方法および装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014127091A (ja) 2012-12-27 2014-07-07 Fujitsu Ltd テストデータ生成方法、プログラム及び装置
JP2015219906A (ja) 2014-05-15 2015-12-07 富士通株式会社 ソフトウェア確認方法およびプロセッサ
JP2020510925A (ja) 2017-02-28 2020-04-09 スパロー カンパニー リミテッド テストケースを利用してテストを遂行する方法および装置

Also Published As

Publication number Publication date
JP2022006483A (ja) 2022-01-13

Similar Documents

Publication Publication Date Title
US7624380B2 (en) Generating functional test scripts
US8875105B2 (en) Efficiently developing software using test cases to check the conformity of the software to the requirements
JP6424557B2 (ja) 情報処理装置及び情報処理プログラム
CN111142903A (zh) 一种基于文件对比的配置文件交互式更新方法及装置
JP6996629B2 (ja) 検証自動化装置、検証自動化方法、およびプログラム
JP2735698B2 (ja) インタフェース検証処理方式
US8527254B2 (en) Simulator engine development system and simulator engine development method
JP4648386B2 (ja) 設計支援装置、設計支援方法、設計支援プログラム
US10656922B2 (en) Systems and methods for providing an application transformation tool
JP7474132B2 (ja) プログラム検証データ生成支援装置、及びプログラム検証データ生成支援方法
US8510693B2 (en) Changing abstraction level of portion of circuit design during verification
WO2004051470A1 (ja) プログラム自動変換方法およびプログラム自動変換装置
CN115130043B (zh) 基于数据库的数据处理方法、装置、设备及存储介质
JP6511793B2 (ja) テストケース生成プログラム、テストケース生成方法及びテストケース生成装置
JP7400833B2 (ja) トポロジー設計装置、トポロジー設計方法、及びプログラム
US10817340B2 (en) Availability factor (AFactor) based automation system
US8775873B2 (en) Data processing apparatus that performs test validation and computer-readable storage medium
JPWO2007072567A1 (ja) 並列処理支援装置
JP7492451B2 (ja) データ制御システム及びデータ制御方法
JP6777903B2 (ja) 探索装置、探索方法および探索プログラム
JPS6284337A (ja) 仕様書情報解析方式
US12001324B2 (en) Operation pattern generation apparatus, operation pattern generation method and program
JP5049804B2 (ja) Vliwプロセッサ自動生成方法及び自動生成プログラム
JP2018147114A (ja) テストケース生成方法、計算機及びプログラム
JP4120879B2 (ja) プログラム生成システム及び方法とそのプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240314

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240402

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240412

R150 Certificate of patent or registration of utility model

Ref document number: 7474132

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150