JP6331756B2 - テストケース生成プログラム、テストケース生成方法、及びテストケース生成装置 - Google Patents

テストケース生成プログラム、テストケース生成方法、及びテストケース生成装置 Download PDF

Info

Publication number
JP6331756B2
JP6331756B2 JP2014129814A JP2014129814A JP6331756B2 JP 6331756 B2 JP6331756 B2 JP 6331756B2 JP 2014129814 A JP2014129814 A JP 2014129814A JP 2014129814 A JP2014129814 A JP 2014129814A JP 6331756 B2 JP6331756 B2 JP 6331756B2
Authority
JP
Japan
Prior art keywords
function
path condition
functions
condition table
test case
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
JP2014129814A
Other languages
English (en)
Other versions
JP2016009344A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014129814A priority Critical patent/JP6331756B2/ja
Publication of JP2016009344A publication Critical patent/JP2016009344A/ja
Application granted granted Critical
Publication of JP6331756B2 publication Critical patent/JP6331756B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本件は、テストケース生成プログラム、テストケース生成方法、及びテストケース生成装置に関する。
シンボリック実行とは、プログラム内の変数を具体化せず、変数をシンボル化して(すなわち、記号のまま)プログラムを実行する技術である(例えば特許文献1参照)。シンボリック実行中においては、具体値ではなくシンボル変数が満たすべき条件(以下、パス条件と呼ぶ)がシンボル変数の値としてメモリ等に保持される。そして、シンボリック実行が完了すると、プログラムにおける各パスについてパス条件が得られるため、パス条件を満たすシンボル変数の具体値を求めることで、プログラムをテストするためのテストケースを得ることができる。
例えば、図26に示した、絶対値取得関数bad_absとして問題があるプログラムについてシンボリック実行を行うことを考える。図26には、シンボリック実行の対象になるプログラムPと、そのプログラムPの制御構造CSとが示されている。このプログラムPには変数xが含まれている。このプログラムPを対象としてシンボリック実行を行うと、x=−2というテストケース(パス条件はx<0)と、x=1234というテストケース(パス条件はx≧0かつx=1234)と、x=3というテストケース(パス条件はx≧0かつx≠1234)とを得ることができる。
特開2013−156961号公報
上述したように、通常のシンボリック実行は、プログラム内の全パスを対象範囲とする。例えば図26に示したような単純なプログラムPであれば、たとえ全パスについてシンボリック実行を行ったとしても、最終的なテストケースを得るまでの時間はさほどかからない。しかしながら、複数のプログラムが連携して実行されるなどの場合についてシンボリック実行を行うと、パスの数が非常に多いことに起因して、最終的なテストケースを得るまでに非常に時間がかかるという問題がある。
そこで、1つの側面では、本件は、シンボリック実行を利用したテストケースを短時間で生成するテストケース生成プログラム、テストケース生成方法、及びテストケース生成装置を提供することを目的とする。
本明細書に開示のテストケース生成プログラムは、対象プログラムにおいて実行される複数の関数の呼び出し関係を表すコールツリーを生成し、前記複数の関数の各々についてシンボリック実行により、シンボル変数に関わる分岐を辿った履歴を表す第1の条件と、当該関数の引数及び返却値についての第2の条件の少なくともいずれかを含むパス条件表を前記複数の関数の各々について生成し、前記コールツリーに基づいて、前記複数の関数に含まれるいずれかの関数を呼び出す第1の関数と前記第1の関数に呼び出される第2の関数との関連数を求め、前記関連数の大きさに基づいた前記第1の関数と前記第2の関数のペア毎に、前記パス条件表を並列に統合し、統合後のパス条件表を満たすシンボル変数の値を算出し、当該値をテストケースとして生成する処理をコンピュータに実行させるテストケース生成プログラムである。
本明細書に開示のテストケース生成方法は、対象プログラムにおいて実行される複数の関数の呼び出し関係を表すコールツリーを生成し、前記複数の関数の各々についてシンボリック実行により、シンボル変数に関わる分岐を辿った履歴を表す第1の条件と、当該関数の引数及び返却値についての第2の条件の少なくともいずれかを含むパス条件表を前記複数の関数の各々について生成し、前記コールツリーに基づいて、前記複数の関数に含まれるいずれかの関数を呼び出す第1の関数と前記第1の関数に呼び出される第2の関数との関連数を求め、前記関連数の大きさに基づいた前記第1の関数と前記第2の関数のペア毎に、前記パス条件表を並列に統合し、統合後のパス条件表を満たすシンボル変数の値を算出し、当該値をテストケースとして生成する処理をコンピュータが実行するテストケース生成方法である。
本明細書に開示のテストケース生成装置は、対象プログラムにおいて実行される複数の関数の呼び出し関係を表すコールツリーを生成し、前記複数の関数の各々についてシンボリック実行により、シンボル変数に関わる分岐を辿った履歴を表す第1の条件と、当該関数の引数及び返却値についての第2の条件の少なくともいずれかを含むパス条件表を前記複数の関数の各々について生成する第1の生成手段と、前記コールツリーに基づいて、前記複数の関数に含まれるいずれかの関数を呼び出す第1の関数と前記第1の関数に呼び出される第2の関数との関連数を求め、前記関連数の大きさに基づいた前記第1の関数と前記第2の関数のペア毎に、前記パス条件表を並列に統合する統合手段と、統合後のパス条件表を満たすシンボル変数の値を算出し、当該値をテストケースとして生成する第2の生成手段と、を有するテストケース生成装置である。
本明細書に開示のテストケース生成プログラム、テストケース生成方法、及びテストケース生成装置によれば、シンボリック実行を利用したテストケースを短時間で生成することができる。
図1は、テストケース生成装置のブロック図の一例である。 図2は、対象プログラム格納部に格納される対象プログラムの一例である。 図3は、対象プログラムについて生成されたコールツリーである。 図4は、関数の複製と最大マッチングの一例を説明するための図である。 図5は、パス条件表の統合処理の一例を説明するための図である。 図6は、パス条件表の統合処理の一例を説明するための図である。 図7は、パス条件表の統合処理の一例を説明するための図である。 図8は、関数の統合及び最大マッチングの一例を説明するための図である。 図9は、パス条件表の統合処理の一例を説明するための図である。 図10は、パス条件表の統合処理の一例を説明するための図である。 図11は、関数の統合及び最大マッチングの一例を説明するための図である。 図12は、パス条件表の統合処理の一例を説明するための図である。 図13は、関数の統合及びテストケース生成の一例を説明するための図である。 図14は、計算時間の短縮を説明するためのグラフである。 図15は、コールスタックについて説明するための図である。 図16は、プログラムの実行木を示す図である。 図17は、テストケース生成装置の動作の一例を示すフローチャートである。 図18は、ドライバ・スタブ生成処理の動作の一例を示すフローチャートである。 図19は、対象関数、ドライバ及びスタブの一例を説明するための図である。 図20は、シンボリック実行の動作の一例を示すフローチャートである。 図21は、シンボリック実行の動作の一例を示すフローチャートである。 図22は、シンボリック実行の動作の一例を示すフローチャートである。 図23は、追加処理の動作の一例を示すフローチャートである。 図24は、パス条件表の統合処理の動作の一例を示すフローチャートである。 図25は、テストケース生成装置のハードウェア構成の一例である。 図26は、シンボリック実行の対象になるプログラムと、そのプログラムの制御構造の一例である。
以下、本件を実施するための形態について図面を参照して説明する。
図1は、テストケース生成装置100のブロック図の一例である。図1に示すように、テストケース生成装置100は、入力部101と、対象プログラム格納部102と、ドライバ・スタブ生成部103と、ドライバ・スタブ格納部104とを含んでいる。テストケース生成装置100は、第1の生成手段としてのシンボリック実行部105と、実行状態格納部106と、パス条件表格納部107と、コールツリー格納部108とを含んでいる。テストケース生成装置100は、統合手段としてのパス条件統合部109と、第2の生成手段としてのテストケース生成部110と、テストケース格納部111とを含んでいる。
入力部101は、テストケースが生成されるべきプログラムの入力を受け付ける。入力部101は受け付けたプログラムを対象プログラムとして対象プログラム格納部102に格納する。
ドライバ・スタブ生成部103は、対象プログラム格納部102に格納されている対象プログラムに基づき、シンボリック実行で利用されるドライバ及びスタブを関数(ノードとも呼ばれる)毎に並列に生成し、ドライバ・スタブ格納部104に格納する。
シンボリック実行部105は、対象プログラム格納部102に格納されている対象プログラムと、ドライバ・スタブ格納部104に格納されているドライバ及びスタブとを利用して、シンボリック実行を関数毎に並列に行い、シンボリック実行中における後述の実行状態を実行状態格納部106に格納する。シンボリック実行では、数値だけでなく文字又は文字列も扱われる。また、シンボリック実行部105は、シンボリック実行により生成したパス条件及び返却値(返り値とも呼ばれる)等を含むパス条件表をパス条件表格納部107に格納する。さらに、シンボリック実行部105は、関数の呼び出し関係を表すコールツリーを生成し、生成したコールツリーをコールツリー格納部108に格納する。
パス条件統合部109は、パス条件表格納部107に格納されているパス条件表及びコールツリー格納部108に格納されているコールツリーを用いて、パス条件表を統合し、処理結果をパス条件表格納部107に格納する。尚、パス条件統合部109の詳細な説明は後述する。
テストケース生成部110は、パス条件表格納部107に最終的に格納されたパス条件表におけるパス条件を満たすテストケースを生成し、テストケース格納部111に格納する。
図2は、対象プログラム格納部102に格納される対象プログラム10の一例である。
図2の例では、関数funcAを表すプログラムと、関数funcBを表すプログラムと、関数funcCを表すプログラムと、関数funcDを表すプログラムと、関数funcEを表すプログラムと、関数funcFを表すプログラムとが格納される。関数funcAは4行目において関数funcBを、7行目において関数funcDを呼び出す。関数funcBは5行目において関数funcCを呼び出す。関数funcDは2行目において関数funcEを、4行目において関数funcFを呼び出す。関数funcFは3行目において関数funcEを呼び出す。したがって、本実施形態においては、図2に示すように、複数の関数が実行されるプログラムが処理対象の対象プログラム10になる。
図3は、図2に示した対象プログラム10について生成されたコールツリー20である。各矩形領域は関数を表しており、矩形領域内に示された文字が関数名と対応している。例えば、文字「A」が示された矩形領域は関数funcAを表している。図3において、矢印に指されている関数は呼び出される側の関数である。以下の説明では、適宜、呼び出される側の関数を被呼出関数と呼び、呼び出す側の関数を呼出関数と呼ぶ。例えば、関数funcAから矢印で指されている関数funcBは、関数funcAに対する被呼出関数に該当し、関数funcAは呼出関数に該当する。このコールツリー20においては、最も上位の関数は関数funcAであり、最も下位の関数は関数funcC及び関数funcEである。コールツリー格納部108には、このような関数の呼び出し関係を表すコールツリー20が格納される。
次に、図4乃至図13を参照して、パス条件統合部109の詳細について説明する。
パス条件統合部109は、コールツリー格納部108に格納されたコールツリーに基づいて、複数の呼出関数から呼び出されている被呼出関数が存在すると判断した場合、被呼出関数を呼び出し元ごとに複製する。したがって、図4(a)に示すように、関数funcDと関数funcFから呼び出されている被呼出関数funcEは複製されて、被呼出関数funcEとは別の被呼出関数funcE´が生成される。被呼出関数funcE´は関数funcFから呼び出される。尚、複数の呼出関数から呼び出されている被呼出関数が存在しない場合、当該複製処理は行われない。
パス条件統合部109は、関数の複製を終えると、コールツリーの最大マッチングを求める。グラフ理論においてマッチングとはグラフ(ここではコールツリー)内の任意の1つのノードが他の高々1つのノードからの関連(ここでは関数の呼出または被呼出)を持つような関連の集合のことである。最大マッチングとはマッチングで関連の数が最大となるものである。最大マッチングのアルゴリズムは、Hopcroft-Karpのアルゴリズムが有名であるが、近年並列計算による近似アルゴリズムによって線形時間で結果を出力できる。ここでは正確に最大であるマッチングとならなくても結果には影響しないため、近似アルゴリズムを採用する。ここでは、一例として図4(b)に示すように、関数funcAと関数funcB、関数funcDと関数funcE、関数funcFと関数funcE´をそれぞれペアとするマッチングで関連の数が最大であるとして最大マッチングが求められている。
パス条件統合部109は、最大マッチングを求めた後、最大マッチングとなった呼出関数と被呼出関数のそれぞれのパス条件表を論理積によって並列に統合する。パス条件表は、上述したように、パス条件表格納部107に格納されている。具体的には、図5から図7までに示すように、パス条件表T1,・・・,T6は、それぞれID、パス条件及び返却値を含んでいる。IDは、パス条件のIDである。パス条件には、シンボル変数に関わる分岐を辿った履歴を表すパス条件そのもの(第1の条件)と、呼出関数の引数についての条件(第2の条件)とが含まれる。例えば、図5に示すパス条件表T1では、「x>0」及び「funcB_ret>0」がパス条件そのものに該当する。一方、「funcB_x==x」及び「funcD_x==funcB_ret」は呼出関数の引数についての条件に該当する。尚、funcB_retはfuncBの返却値を表し、funcB_xはfuncBの引数xを表している。他の返却値や引数についても基本的に同様である。図5から図7におけるパス条件表T1,・・・,T6の返却値は、それぞれfuncA,・・・,funcE´の返却値である。
パス条件表の統合処理は、最大マッチングとなった呼出関数と被呼出関数との間で行われ、図5から図7に示すように、呼出関数funcAのパス条件表T1と被呼出関数funcBのパス条件表T2、呼出関数funcDのパス条件表T3と被呼出関数funcEのパス条件表T4、及び呼出関数funcFのパス条件表T5と被呼出関数funcE´のパス条件表T6をそれぞれ論理積によって並列に統合することで行われる。この結果、呼出関数funcAのパス条件表T1と被呼出関数funcBのパス条件表T2の統合であれば、図5に示すように、統合したパス条件表T7が生成される。
図5において、パス条件表T7のパス条件によっては2つの括弧が含まれている。左側の括弧にはfuncAのパス条件が含まれている。右側の括弧には、funcBのパス条件とfuncBの返却値を変換したパス条件が含まれている。例えば、funcBの返却値「0」は、「funcB_ret==0」に変換されて、右側の括弧に追加される。2つの括弧内のパス条件は論理積によって結合されている。パス条件の欄の右に設けられているSATの欄には、パス条件を満たす解が存在するか否かについての判定結果が示されている。SAT(Satisfied)である場合には、パス条件を満たす解が存在する。UNSAT(Unsatisfied)である場合には、パス条件を満たす解が存在しない。例えば、統合したパス条件表において、「funcB_ret>0」と「funcB_ret==0」を同時に満たす解は存在しないため、SATの欄にはUNSATが記録される。
以上説明したパス条件の統合処理と同様に、呼出関数funcDのパス条件表T3と被呼出関数funcEのパス条件表T4の統合であれば、図6に示すように、統合したパス条件表T8が生成される。呼出関数funcFのパス条件表T5と被呼出関数funcE´のパス条件表T6の統合であれば、図7に示すように、統合したパス条件表T9が生成される。パス条件統合部109は、生成したパス条件表T7,T8,T9のうちSATのものをパス条件表格納部107に格納する。
パス条件統合部109は、パス条件表の統合処理を終えると、最大マッチングとなった呼出関数と被呼出関数を統合し、統合した1つの関数を利用して、再度、最大マッチングを求め、パス条件表を統合する。具体的には、パス条件統合部109は、図8(a)において、最大マッチングに基づいて、関数funcAと関数funcBとの統合、関数funcDと関数funcEとの統合、及び関数funcFと関数funcE´との統合を実行する。以下、関数funcAと関数funcBとを統合した後の関数を関数funcABと呼ぶ。関数funcDと関数funcEとを統合した後の関数を関数funcDEと呼ぶ。関数funcFと関数funcE´とを統合した後の関数を関数funcE´Fと呼ぶ。パス条件統合部109は、呼出関数と被呼出関数との統合を終えると、再度、最大マッチングを求める。ここでは、一例として図8(b)に示すように、関数funcABと関数funcC、関数funcDEと関数funcE´Fをそれぞれペアとするマッチングで関連の数が最大であるとして最大マッチングが求められている。
パス条件統合部109は、最大マッチングを求めた後、最大マッチングとなった呼出関数のパス条件表と被呼出関数のパス条件表を論理積によって並列に統合する。パス条件表の統合処理は、図9及び図10に示すように、呼出関数である関数funcABのパス条件表T7のうちSATとなったものと被呼出関数である関数funcCのパス条件表T10、及び呼出関数である関数funcDEのパス条件表T8のうちSATとなったものと被呼出関数である関数funcE´Fのパス条件表T9のうちSATとなったものをそれぞれ論理積によって並列に統合することで行われる。この結果、関数funcABのパス条件表T7と関数funcCのパス条件表T10の統合であれば、図9に示すように、統合したパス条件表T11が生成される。同様に、関数funcDEのパス条件表T8と関数funcE´Fのパス条件表T9の統合であれば、図10に示すように、統合したパス条件表T12が生成される。パス条件統合部109は、生成したパス条件表T11,T12のうちSATのものをパス条件表格納部107に格納する。
パス条件統合部109は、パス条件表の統合処理を終えると、最大マッチングとなった呼出関数と被呼出関数を統合し、統合した1つの関数を利用して、再度、最大マッチングを求め、パス条件表を統合する。具体的には、図11(a)において、パス条件統合部109は、最大マッチングに基づいて、関数funcABと関数funcCとの統合、及び関数funcDEと関数funcE´Fとの統合を実行する。以下、関数funcABと関数funcCとを統合した後の関数を関数funcABCと呼ぶ。関数funcDEと関数funcE´Fとを統合した後の関数を関数funcDEE´Fと呼ぶ。パス条件統合部109は、呼出関数と被呼出関数との統合を終えると、再度、最大マッチングを求める。ここでは、一例として図11(b)に示すように、関数funcABCと関数funcC、関数funcDEE´Fをペアとするマッチングで関連の数が最大であるとして最大マッチングが求められている。
パス条件統合部109は、最大マッチングを求めた後、最大マッチングとなった呼出関数と被呼出関数のそれぞれのパス条件表を論理積によって並列に統合する。パス条件表の統合処理は、図12に示すように、呼出関数である関数funcABCのパス条件表T11のうちSATとなったものと被呼出関数である関数funcDEE´Fのパス条件表T12のうちSATとなったものを論理積によって並列に統合することで行われる。この結果、関数funcABCのパス条件表T11と関数funcDEE´Fのパス条件表T12の統合から、図12に示すように、統合したパス条件表T13が生成される。パス条件統合部109は、生成したパス条件表T13のうちSATのものをパス条件表格納部107に格納する。
パス条件統合部109は、パス条件表の統合処理を終えると、最大マッチングとなった呼出関数と被呼出関数を統合し、統合した1つの関数を利用して、再度、最大マッチングを求め、パス条件表を統合する。具体的には、図13(a)に示すように、パス条件統合部109は、最大マッチングに基づいて、関数funcABCと関数funcDEE´Fとの統合を実行する。これにより、関数funcABCと関数funcDEE´Fとを統合した1つの関数funcABCDEE´Fが生成される。パス条件統合部109は、関数が1つになると最大マッチングを求めるマッチング処理及びパス条件表を統合する統合処理を終了する。
統合処理が終了すると、テストケース生成部110は、パス条件表格納部107に格納されたパス条件表T13のうちSATになったもの(図13(b))からソルバ(solver)を用いてテストケースを生成する。ソルバとは、複数の変数の値を変化させながら変数の相互関係を判断し、最適な値を算出する算出手法である。この結果、図13(b)に示すように、SATのパス条件表T13に示されるパス条件を満たすシンボル変数の値を含むテストケースが生成される。テストケース生成部110は、生成したテストケースをテストケース格納部111に格納する。尚、このようなテストケースを用いて図2に示した対象プログラム10のテストを実行すると、関数funcA,・・・,funcFを組み合わせたときに通りえない行を除いた行を網羅することができる。
また、本実施形態ではパス条件表の統合処理を含む一部の処理が並列化されている。仮に、統合処理の全てが並列(パラレル)に行えるとした場合、並列の最大マッチングの計算量はO(log n)で表すことができる。ここで、nは関数の数、Oはオーダーである。また、反復回数はO(log n)で表すことができるため、統合処理にかかるコスト(計算量)をsとした場合、本実施形態の計算量はO((log n)+s log n)で表すことができる。一方、統合処理の全てが直列(シリアル)に行えるとした場合、計算量はsnで表すことができる。
ここで、sn>s log nは自明であるため、sn>(log n)であれば計算時間を短縮することができる。ここで、図14に示すように、y=(log n)/nは、n≧1においてn=eのとき最大値y=4/eとなる。したがって、コストsが最大値4/eよりも大きい場合には、n≧1であればnに関わらず計算時間を短縮することができる。すなわち、s>(log n)/nの条件を満たせば、計算時間を短縮することができる。
次に、図15及び図16を用いて、上述した実行状態について説明する。
図15は、コールスタックについて説明するための図である。図16は、プログラムの実行木を示す図である。
まず、図15を用いて、コールスタックについて説明する。図15に示したプログラムQは、メインの処理を表すコードQ1において関数funcAを呼び出し、関数funcAにおいて関数absを呼び出すプログラムである。命令1乃至7におけるいずれかの命令を実行中におけるコールスタックは識別情報「stack3」のようになっている。命令8乃至15におけるいずれかの命令を実行中におけるコールスタックは識別情報「stack2」のようになっている。命令16乃至19におけるいずれかの命令を実行中におけるコールスタックは識別情報「stack1」のようになっている。
図16に、図15に示したプログラムQの実行木を示す。図16の実行木においては、各実行状態について、プログラムカウンタの値、コールスタックの識別情報(図15における識別情報に対応している)、メモリの内容、及びパス条件(本実施の形態においては、シンボル変数に関わる分岐を辿った履歴を表す条件)が示されている。例えば、プログラムカウンタの値が12である場合には、実行状態はstate2又はstate5である。「*」は、変数がシンボル変数であることを表す。実行状態格納部106には、シンボリック実行中におけるプログラムの実行状態が、図16における符号60のような形式で格納される。
次に、図17を参照して、テストケース生成装置100の動作について説明する。
図17は、テストケース生成装置100の動作の一例を示すフローチャートである。
まず、テストケース生成装置100における入力部101は、ユーザから対象プログラム10の入力を受け付け、対象プログラム格納部102に格納する。対象プログラム10が格納されると、シンボリック実行部105は、対象プログラム10からコールツリー20を生成する(ステップS101)。コールツリー20は、コールツリー格納部108に格納される。コールツリー20が生成されると、次いで、ドライバ・スタブ生成部103は、後述するドライバ・スタブ生成処理を実行する(ステップS102)。ドライバ・スタブ生成処理は、各関数に対して並列に実行される。これにより、関数毎のドライバ及びスタブが生成される。
ドライバ・スタブ生成処理が完了すると、次いで、シンボリック実行部105は、後述するシンボリック実行を行う(ステップS103)。シンボリック実行は、各関数に対して並列に行われる。シンボリック実行が行われることで、シンボリック実行中における実行状態が実行状態格納部106に格納される。また、シンボリック実行が行われることで、シンボリック実行時に得られたパス条件及び返却値(返り値とも呼ばれる)等を含むパス条件表がパス条件表格納部107に格納される。
シンボリック実行が完了すると、次いで、パス条件統合部109は、複数の関数から呼び出される関数を複製し(ステップS104)、コールツリーの最大マッチングを求める(ステップS105)。最大マッチングが求められると、さらに、パス条件統合部109は、パス条件表の統合処理を実行する(ステップS106)パス条件表の統合処理は、最大マッチングとなった2つの関数のそれぞれのパス条件表に対して並列に実行される。パス条件統合部109は、パス条件表の統合処理が完了すると、最大マッチングとなった2つの関数を1つに統合し(ステップS107)、統合した1つの関数が全ての関数を含むか否かを判断する(ステップS108)。
パス条件統合部109は、統合した1つの関数が全ての関数を含まないと判断した場合(ステップS108:NO)、ステップS105〜S107の処理を繰り返す。そして、パス条件統合部109は、統合した1つの関数が全ての関数を含むと判断した場合(ステップS108:YES)、テストケース生成部110は、ソルバを利用してテストケースを生成する(ステップS109)。テストケース生成部110は、生成したテストケースをテストケース格納部111に格納する。
次に、図18及び図19を参照して、上述したドライバ・スタブ生成処理の詳細について説明する。
図18は、ドライバ・スタブ生成処理の動作の一例を示すフローチャートである。
ドライバ・スタブ生成部103は、まず、処理対象となる対象関数を解析し、対象関数から、パラメータ及び対象関数から呼び出される被呼出関数を抽出する(ステップS201)。例えば、図2に示した関数funcAの場合、被呼出関数として関数funcBが呼び出される。ドライバ・スタブ生成部103は、次いで、ステップS201において抽出された被呼出関数それぞれについて対応するスタブを生咸し(ステップS202)、ドライバ・スタブ格納部104に格納する。スタブはドライバから呼び出され、呼び出しに応じてシンボルを返すプログラムである。次いで、ドライバ・スタブ生成部103は、対象関数のパラメータ及び被呼出関数に対応するシンボル変数を設定するためのプログラムであるドライバを生成し(ステップS203)、ドライバ・スタブ格納部104に格納する。そして処理を終了する。
図19は、対象関数から生成されるスタブとドライバの一例である。
図19に示したスタブの6行目において、ドライバに対してシンボルを返すようになっている。また、図19に示したドライバにおいては、3行目及び4行目においてシンボル変数を設定し、5行目においてスタブを呼び出し、6行目においてfuncAを呼び出している。以上のようなドライバ・スタブ生成処理を実行すれば、関数単体でシンボリック実行を行えるようになる。
次に、図20乃至図22を参照して、上述したシンボリック実行の詳細について説明する。
図20乃至図22は、シンボリック実行の動作の一例を示すフローチャートである。尚、図20における「シンボリック実行(p)」とは、実行状態pについてシンボリック実行を行うことを表している。
まず、シンボリック実行部105は、実行状態格納部106に格納されている、実行状態pのプログラムカウンタの値に基づき、命令を1つ読み出す(ステップS301)。例えばプログラムカウンタの値が「2」である場合、対象関数の2行目の命令を読み出す。以下では、ステップS301において読み出された命令を「処理対象の命令」と呼ぶ。
シンボリック実行部105は、処理対象の命令が、関数を呼び出す命令であるか判断する(ステップS302)。関数を呼び出す命令ではない場合(ステップS302:NO)、図21のステップS401の処理に移行する。一方、関数を呼び出す命令である場合(ステップS302:YES)、シンボリック実行部105は、被呼出関数の引数に関数ポインタが含まれるか判断する(ステップS303)。被呼出関数の引数に関数ポインタが含まれていない場合(ステップS303:NO)、ステップS305の処理に移行する。被呼出関数の引数に関数ポインタが含まれている場合(ステップS303:YES)、シンボリック実行部105は、関数ポインタについての条件を、実行中のパスについての条件に追加する(ステップS304)。
次いで、シンボリック実行部105は、被呼出関数の実引数と仮引数との関係を表す条件を、実行中のパスについての条件に追加する(ステップS305)。尚、被呼出関数が複数回呼び出される場合、ステップS305においては、引数についての条件が呼び出し毎に追加される。次いで、シンボリック実行部105は、被呼出関数をコールツリーに追加するための追加処理を実行する(ステップS306)。追加処理の詳細については、後述する。
ここで、ステップS302の処理において、関数を呼び出す命令ではない場合、又は、ステップS306の処理が完了した場合、図21に移り、シンボリック実行部105は、処理対象の命令がグローバル変数を読み込む命令又は書き込む命令であるか判断する(ステップS401)。グローバル変数を読み込む命令又は書き込む命令のいずれでもない場合(ステップS401;NO)、処理はステップS404に移行する。一方、グローバル変数を読み込む命令又は書き込む命令である場合(ステップS401;YES)、ステップS402の処理に移行する。そして、グローバル変数を読み込む命令である場合、シンボリック実行部105は、読み込みに対応する書き込みの命令を、コールツリー格納部108に格納されているコールツリー20によって特定する(ステップS402)。尚、グローバル変数を書き込む命令である場合には、ステップS402の処理は行われない。
シンボリック実行部105は、ステップS401においてグローバル変数の読み込みであると判定された場合にはグローバル変数の読み込みについての条件を、ステップS401においてグローバル変数の書き込みであると判定された場合にはグローバル変数の書き込みについての条件を、実行中のパスについての条件に追加する(ステップS403)。
ここで、ステップS401の処理において、グローバル変数を読み込む命令又は書き込む命令のいずれでもない場合、又は、ステップS403の処理が完了した場合、シンボリック実行部105は、処理対象の命令がシンボルに関わる分岐の命令であるか判断する(ステップS404)。シンボルに関わる分岐の命令とは、例えば、if文にシンボル変数が含まれている命令である。
シンボルに関わる分岐の命令である場合(ステップS404:YES)、シンボリック実行部105は、新たにシンボリック実行が行われる実行状態Pに実行状態p(すなわち、実行状態格紬部106に格納されている現在の実行状態)をコピー(複製)する(ステップS405)。シンボリック実行部105は、処理対象の命令において未処理の分岐先を1つ特定する(ステップS406)。そして、シンボリック実行部105は、分岐の条件(すなわち、パス条件)を、実行中のパスについての条件に追加する(ステップS407)。シンボリック実行部105は、実行状態Pについてのシンボリック実行を再帰的に行う(ステップS408)。
ステップS408におけるシンボリック実行が完了すると、シンボリック実行部105は、処理対象の命令において未処理の分岐先があるか判断する(ステップS409)。未処理の分岐先が有る場合(ステップS409:YES)、次の分岐先について処理するため、ステップS406の処理に戻る。一方、未処理の分岐先が無い場合(ステップS409:NO)、呼び出し元の処理に戻る。
ステップS404の処理において、処理対象の命令がシンボルに関わる分岐ではない場合(ステップS404:NO)、新たにシンボリック実行を行わなくてもよい。従って、図22に示すように、シンボリック実行部105は、処理対象の命令を実行し、実行状態格納部106に格納されているプログラムカウンタの値を1進める(ステップS501)。シンボリック実行部105は、実行状態pが終了の状態であるか判断する(ステップS502)。終了の状態とは、例えば、プログラムカウンタの値がプログラムにおける最後の行の番号に達している状態である。終了の状態ではない場合(ステップS502:NO)、シンボリック実行部105は、次の命令について処理するため、図20に示すステップS301の処理に戻る。一方、実行状態pが終了の状態である場合(ステップS502:YES)、シンボリック実行部105は、シンボリック実行によって得られた、各パスについてのパス条件及び返却値を含むパス条件表をパス条件表格納部107に格納する(ステップS503)。そして呼び出し元の処理に戻る。
以上の処理により、各関数についてシンボリック実行が行われ、満たすべき条件及び関数の返却値がパス条件表格納部107に保存されるようになる。尚、各関数についてのシンボリック実行の結果(すなわち、パス条件表)ほ、パス条件表格納部107に保存される。
次に、図23を参照して、上述した追加処理の詳細について説明する。
図23は、追加処理の動作の一例を示すフローチャートである。
まず、シンボリック実行部105は、コールツリー格納部108に格納されているコールツリー20に最も後に追加された関数の位置を現在位置に設定する(S601)。シンボリック実行部105は、被呼出関数がコールツリーにおける現在位置より上位の位置に存在するか判断する(ステップS602)。現在位置より上位の位に存在しない場合(ステップS602:NO)、再帰呼び出しには該当しないので、シンボリック実行部105は、コールツリーにおける現在位置の下に関数を追加する(ステップS603)。一方、現在位置より上位の位置に存在する場合(ステップS602:YES)、再帰呼び出しに該当する。そこで、シンボリック実行部105は、被呼出関数についての条件を、実行中のパスについての条件から削除する(ステップS604)。そして呼び出し元の処理に戻る。尚、コールツリーへの関数追加時に、現在位置の右下に追加するようにすることで、追加順が新しい関数ほど右に出現するようにし、検索しやすいようにすることが望ましい。
次に、図24を参照して、上述したパス条件表の統合処理の詳細について説明する。
図24は、パス条件表の統合処理の動作の一例を示すフローチャートである。
まず、パス条件統合部109は、パス条件表格納部107に、統合すべき2つのパス条件表(ここでは、パス条件表A及びパス条件表Bと表記する)が存在するか判断する(ステップS701)。パス条件表Aやパス条件表Bは、例えば上述したパス条件表T1やパス条件表T2に対応する。統合すべき2つのパス条件表A及びBが存在しない場合(ステップS701:NO)、呼び出し元の処理に戻る。
一方、統合すべき2つのパス条件表A及びBが存在する場合(ステップS701:YES)、パス条件統合部109は、パス条件表Aから未処理の条件(ここでは、パス条件aとする)を1つ特定する(ステップS702)。また、パス条件統合部109は、パス条件表Bから未処理の条件(ここでは、パス条件bとする)を1つ特定する(ステップS703)。ステップS702及びS703において、パス条件統合部109は、パス単位で条件を特定する。
パス条件統合部109は、パス条件aとパス条件bとの論理積を求めることにより、パス条件cを生成し(ステップS704)、メインメモリ等の記憶装置に格納する。パス条件統合部109は、パス条件cを満たす解が存在するか、例えばソルバによって判断する(ステップS705)。パス条件cを満たす解が存在しない場合(ステップS705:NO)、ステップS707の処理に移行する。一方、パス条件cを満たす解が存在する場合(ステップS705:YES)、パス条件統合部109は、パス条件cをパス条件表Cに追加する(ステップS706)。尚、パス条件表Cが存在しない場合には、ステップS706において新たに条件表Cが生成される。
パス条件統合部109は、パス条件表Bに未処理の条件があるか判断する(ステップS707)。未処理の条件がある場合(ステップS707:YES)、次の条件について処理するため、ステップS703の処理に戻る。一方、パス条件表Bに未処理の条件がない場合(ステップS707:NO)、パス条件統合部109は、パス条件表Bにおけるパス条件を全て未処理に設定する(ステップS708)。
次いで、パス条件統合部109は、パス条件表Aに未処理の条件があるか判断する(ステップS709)。未処理の条件がある場合(ステップS709:YES)、次の条件について処理するため、ステップS702の処理に戻る。一方、パス条件表Aに未処理の条件がない場合(ステップS709:NO)、パス条件統合部109は、パス条件表Cをパス条件表格納部107に格納し(ステップS710)、呼び出し元の処理に戻る。以上のような処理を実行すれば、各関数について生成されたパス条件をまとめることができるようになる。
次に、図25を参照して、テストケース生成装置100のハードウェア構成について説明する。
図25は、テストケース生成装置100のハードウェア構成の一例である。
図25に示すように、テストケース生成装置100は、少なくともCentral Processing Unit(CPU)100A、Random Access Memory(RAM)100B、Read Only Memory(ROM)100C及びネットワークI/F(インタフェース)100Dを含んでいる。テストケース生成装置100は、必要に応じて、Hard Disk Drive(HDD)100E、入力I/F100F、出力I/F100G、入出力I/F100H、ドライブ装置100Iの少なくとも1つを含んでいてもよい。CPU100A,・・・,ドライブ装置100Iは、内部バス100Jによって互いに接続されている。少なくともCPU100AとRAM100Bとが協働することによってコンピュータが実現される。
入力I/F100Fには、入力装置210が接続される。入力装置210としては、例えばキーボードやマウスなどがある。
出力I/F100Gには、表示装置220が接続される。表示装置220としては、例えば液晶ディスプレイがある。
入出力I/F100Hには、半導体メモリ230が接続される。半導体メモリ230としては、例えばUniversal Serial Bus(USB)メモリやフラッシュメモリなどがある。入出力I/F100Hは、半導体メモリ230に記憶されたプログラムやデータを読み取る。
入力I/F100F及び入出力I/F100Hは、例えばUSBポートを備えている。出力I/F100Gは、例えばディスプレイポートを備えている。
ドライブ装置100Iには、可搬型記録媒体240が挿入される。可搬型記録媒体240としては、例えばCompact Disc(CD)−ROM、Digital Versatile Disc(DVD)といったリムーバブルディスクがある。ドライブ装置100Iは、可搬型記録媒体240に記録されたプログラムやデータを読み込む。
ネットワークI/F100Dは、例えばポートとPhysical Layer Chip(PHYチップ)とを備えている。テストケース生成装置100は、ネットワークI/F100Dを介してネットワークと接続される。
上述したRAM100Bには、ROM100CやHDD100Eに記憶されたプログラムがCPU100Aによって格納される。RAM100Bには、可搬型記録媒体240に記録されたプログラムがCPU100Aによって格納される。格納されたプログラムをCPU100Aが実行することにより、上述した各種の動作が実行される。尚、プログラムは上述したフローチャートに応じたものとすればよい。
以上、本発明の好ましい実施形態について詳述したが、本発明に係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
なお、以上の説明に関して更に以下の付記を開示する。
(付記1)対象プログラムにおいて実行される複数の関数の各々についてシンボリック実行を行うとともに、シンボル変数に関わる分岐を辿った履歴を表す第1の条件と、当該関数の引数及び返却値についての第2の条件の少なくともいずれかを含むパス条件表を前記複数の関数の各々について生成し、前記複数の関数に含まれるいずれかの関数を呼び出す第1の関数と前記第1の関数に呼び出される第2の関数とのマッチングを求め、求めたマッチングの少なくとも1つより大きなマッチングを求めた前記第1の関数と前記第2の関数との間毎に、関数毎の前記パス条件表を論理積によって並列に統合し、統合後のパス条件表を満たすシンボル変数の値を算出し、算出した当該シンボル変数の値を含むテストケースを生成する処理をコンピュータに実行させるためのテストケース生成プログラム。
(付記2)前記第2の関数が複数の前記第1の関数から呼び出される場合に、前記第2の関数を呼出元毎に複製する処理をさらに含むことを特徴とする付記1に記載のテストケース生成プログラム。
(付記3)前記パス条件表を生成する処理を、前記複数の関数の各々について並列に実行させることを特徴とする付記1又は2に記載のテストケース生成プログラム。
(付記4)前記シンボル変数を設定するためのドライバと当該ドライバにおいて呼び出されるスタブを生成する処理をさらに含み、前記ドライバと前記スタブを生成する処理を、前記複数の関数の各々について並列に実行させることを特徴とする付記1から3のいずれか1項に記載のテストケース生成プログラム。
(付記5)対象プログラムにおいて実行される複数の関数の各々についてシンボリック実行を行うとともに、シンボル変数に関わる分岐を辿った履歴を表す第1の条件と、当該関数の引数及び返却値についての第2の条件の少なくともいずれかを含むパス条件表を前記複数の関数の各々について生成し、前記複数の関数に含まれるいずれかの関数を呼び出す第1の関数と前記第1の関数に呼び出される第2の関数とのマッチングを求め、求めたマッチングの少なくとも1つより大きなマッチングを求めた前記第1の関数と前記第2の関数との間毎に、関数毎の前記パス条件表を論理積によって並列に統合し、統合後のパス条件表を満たすシンボル変数の値を算出し、算出した当該シンボル変数の値を含むテストケースを生成する処理をコンピュータが実行するテストケース生成方法。
(付記6)対象プログラムにおいて実行される複数の関数の各々についてシンボリック実行を行うとともに、シンボル変数に関わる分岐を辿った履歴を表す第1の条件と、当該関数の引数及び返却値についての第2の条件の少なくともいずれかを含むパス条件表を前記複数の関数の各々について生成する第1の生成手段と、前記複数の関数に含まれるいずれかの関数を呼び出す第1の関数と前記第1の関数に呼び出される第2の関数とのマッチングを求め、求めたマッチングの少なくとも1つより大きなマッチングを求めた前記第1の関数と前記第2の関数との間毎に、関数毎の前記パス条件表を論理積によって並列に統合する統合手段と、統合後のパス条件表を満たすシンボル変数の値を算出し、算出した当該シンボル変数の値を含むテストケースを生成する第2の生成手段と、を有するテストケース生成装置。
(付記7)前記統合手段は、前記第2の関数が複数の前記第1の関数から呼び出される場合に、前記第2の関数を呼出元毎に複製することを特徴とする付記6に記載のテストケース生成装置。
(付記8)前記第1の生成手段は、前記複数の関数の各々について前記パス条件表を並列に生成することを特徴とする付記6又は7に記載のテストケース生成装置。
(付記9)前記シンボル変数を設定するためのドライバと当該ドライバにおいて呼び出されるスタブを生成する第3の生成手段をさらに含み、前記第3の生成手段は、前記複数の関数の各々について前記ドライバと前記スタブを並列に生成することを特徴とする付記6から8のいずれか1項に記載のテストケース生成装置。
100 テストケース生成装置
103 ドライバ・スタブ生成部(第3の生成手段)
105 シンボリック実行部(第1の生成手段)
109 パス条件統合部(統合手段)
110 テストケース生成部(第2の生成手段)

Claims (7)

  1. 対象プログラムにおいて実行される複数の関数の呼び出し関係を表すコールツリーを生成し、
    前記複数の関数の各々についてシンボリック実行により、シンボル変数に関わる分岐を辿った履歴を表す第1の条件と、当該関数の引数及び返却値についての第2の条件の少なくともいずれかを含むパス条件表を前記複数の関数の各々について生成し、
    前記コールツリーに基づいて、前記複数の関数に含まれるいずれかの関数を呼び出す第1の関数と前記第1の関数に呼び出される第2の関数との関連数を求め、
    前記関連数の大きさに基づいた前記第1の関数と前記第2の関数のペア毎に、前記パス条件表を並列に統合し、
    統合後のパス条件表を満たすシンボル変数の値を算出し、
    当該値をテストケースとして生成する
    処理をコンピュータに実行させるテストケース生成プログラム。
  2. 前記第2の関数が複数の前記第1の関数から呼び出される場合に、前記第2の関数を呼出元毎に複製する処理をさらに含むことを特徴とする請求項1に記載のテストケース生成プログラム。
  3. 前記パス条件表を生成する処理を、前記複数の関数の各々について並列に実行させることを特徴とする請求項1又は2に記載のテストケース生成プログラム。
  4. 前記シンボル変数を設定するためのドライバと当該ドライバにおいて呼び出されるスタブを生成する処理をさらに含み、
    前記ドライバと前記スタブを生成する処理を、前記複数の関数の各々について並列に実行させることを特徴とする請求項1から3のいずれか1項に記載のテストケース生成プログラム。
  5. 対象プログラムにおいて実行される複数の関数の呼び出し関係を表すコールツリーを生成し、
    前記複数の関数の各々についてシンボリック実行により、シンボル変数に関わる分岐を辿った履歴を表す第1の条件と、当該関数の引数及び返却値についての第2の条件の少なくともいずれかを含むパス条件表を前記複数の関数の各々について生成し、
    前記コールツリーに基づいて、前記複数の関数に含まれるいずれかの関数を呼び出す第1の関数と前記第1の関数に呼び出される第2の関数との関連数を求め、
    前記関連数の大きさに基づいた前記第1の関数と前記第2の関数のペア毎に、前記パス条件表を並列に統合し、
    統合後のパス条件表を満たすシンボル変数の値を算出し、
    当該値をテストケースとして生成する
    処理をコンピュータが実行するテストケース生成方法。
  6. 対象プログラムにおいて実行される複数の関数の呼び出し関係を表すコールツリーを生成し、前記複数の関数の各々についてシンボリック実行により、シンボル変数に関わる分岐を辿った履歴を表す第1の条件と、当該関数の引数及び返却値についての第2の条件の少なくともいずれかを含むパス条件表を前記複数の関数の各々について生成する第1の生成手段と、
    前記コールツリーに基づいて、前記複数の関数に含まれるいずれかの関数を呼び出す第1の関数と前記第1の関数に呼び出される第2の関数との関連数を求め、前記関連数の大きさに基づいた前記第1の関数と前記第2の関数のペア毎に、前記パス条件表を並列に統合する統合手段と、
    統合後のパス条件表を満たすシンボル変数の値を算出し、当該値をテストケースとして生成する第2の生成手段と、
    を有するテストケース生成装置。
  7. 前記処理は、前記関連数が最大の前記第1の関数と前記第2の関数のペア毎に、前記パス条件表を論理積によって並列に統合する、
    ことを特徴とする請求項1に記載のテストケース生成プログラム。
JP2014129814A 2014-06-25 2014-06-25 テストケース生成プログラム、テストケース生成方法、及びテストケース生成装置 Active JP6331756B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014129814A JP6331756B2 (ja) 2014-06-25 2014-06-25 テストケース生成プログラム、テストケース生成方法、及びテストケース生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014129814A JP6331756B2 (ja) 2014-06-25 2014-06-25 テストケース生成プログラム、テストケース生成方法、及びテストケース生成装置

Publications (2)

Publication Number Publication Date
JP2016009344A JP2016009344A (ja) 2016-01-18
JP6331756B2 true JP6331756B2 (ja) 2018-05-30

Family

ID=55226855

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014129814A Active JP6331756B2 (ja) 2014-06-25 2014-06-25 テストケース生成プログラム、テストケース生成方法、及びテストケース生成装置

Country Status (1)

Country Link
JP (1) JP6331756B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6579022B2 (ja) * 2016-04-11 2019-09-25 富士通株式会社 生成プログラム、生成方法および生成装置
JP6659955B2 (ja) * 2016-05-12 2020-03-04 富士通株式会社 プログラム分析方法、プログラム分析装置および分析プログラム
CN107818051B (zh) * 2017-11-27 2020-07-03 北京新能源汽车股份有限公司 一种测试用例的跳转分析方法、装置及服务器
WO2020194455A1 (ja) 2019-03-25 2020-10-01 三菱電機株式会社 テストケース生成装置、テストケース生成方法、およびテストケース生成プログラム
JP7244756B2 (ja) * 2019-06-24 2023-03-23 富士通株式会社 分析プログラム、プログラム分析方法およびプログラム分析装置
WO2021084581A1 (ja) * 2019-10-28 2021-05-06 日本電信電話株式会社 テスト情報抽出装置、テスト情報抽出方法及びプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5761056B2 (ja) * 2012-01-31 2015-08-12 富士通株式会社 生成装置、生成プログラム、および生成方法
JP5900212B2 (ja) * 2012-07-18 2016-04-06 富士通株式会社 テストデータ生成装置、該プログラム、及び該方法
US8997064B2 (en) * 2012-08-16 2015-03-31 Fujitsu Limited Symbolic testing of software using concrete software execution

Also Published As

Publication number Publication date
JP2016009344A (ja) 2016-01-18

Similar Documents

Publication Publication Date Title
JP6331756B2 (ja) テストケース生成プログラム、テストケース生成方法、及びテストケース生成装置
JP5894954B2 (ja) テストケース生成方法、テストケース生成装置およびプログラム
KR20170052672A (ko) 조건부 검증 규칙
JP6070936B2 (ja) 情報処理装置、情報処理方法及びプログラム
JPWO2017090475A1 (ja) 情報処理システム、関数作成方法および関数作成プログラム
JPWO2020008991A1 (ja) 検証自動化装置、検証自動化方法、およびプログラム
RU2716553C1 (ru) Устройство создания сигнатуры, способ создания сигнатуры, носитель записи, в котором записана программа создания сигнатуры, и система определения программного обеспечения
WO2014034557A1 (ja) テキストマイニング装置、テキストマイニング方法及びコンピュータ読み取り可能な記録媒体
US8510693B2 (en) Changing abstraction level of portion of circuit design during verification
US20230153491A1 (en) System for estimating feature value of material
JP6364332B2 (ja) 仕様生成方法、仕様生成装置、及びプログラム
JP5867208B2 (ja) データモデル変換プログラム、データモデル変換方法およびデータモデル変換装置
WO2018096686A1 (ja) 検証プログラム、検証装置、検証方法、インデックス生成プログラム、インデックス生成装置およびインデックス生成方法
JP6173571B2 (ja) 回路設計装置および回路設計プログラム
JP6831307B2 (ja) 解算出装置、解算出方法及び解算出プログラム
WO2013147172A1 (ja) Cfd更新装置と方法及びデータクレンジング装置と方法並びにプログラム
JP2019153047A (ja) 生成装置、生成方法及びプログラム
JP7238361B2 (ja) エラー出力装置、エラー出力方法、学習装置、学習済みモデルの生成方法、プログラム、および学習済みモデル
JP7430274B2 (ja) 計算機システム及び文字認識方法
JP2016122317A (ja) 共通化情報提供プログラム、共通化情報提供方法、および共通化情報提供装置
JP6409639B2 (ja) コンパイラプログラム、システム、方法、及び装置
JP7259436B2 (ja) 情報処理装置、情報処理方法、情報処理プログラム、及び情報処理システム
US11562233B2 (en) Learning method, non-transitory computer readable recording medium, and learning device
WO2013105440A1 (ja) データクレンジングシステム、データクレンジング方法及びデータクレンジング用プログラム
JP6563549B1 (ja) データ傾向分析方法、データ傾向分析システム及び絞り込み及び復元装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180206

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180316

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: 20180403

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180416

R150 Certificate of patent or registration of utility model

Ref document number: 6331756

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150