JP6331756B2 - テストケース生成プログラム、テストケース生成方法、及びテストケース生成装置 - Google Patents
テストケース生成プログラム、テストケース生成方法、及びテストケース生成装置 Download PDFInfo
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Description
ドライバ・スタブ生成部103は、対象プログラム格納部102に格納されている対象プログラムに基づき、シンボリック実行で利用されるドライバ及びスタブを関数(ノードとも呼ばれる)毎に並列に生成し、ドライバ・スタブ格納部104に格納する。
テストケース生成部110は、パス条件表格納部107に最終的に格納されたパス条件表におけるパス条件を満たすテストケースを生成し、テストケース格納部111に格納する。
図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になる。
まず、図15を用いて、コールスタックについて説明する。図15に示したプログラムQは、メインの処理を表すコードQ1において関数funcAを呼び出し、関数funcAにおいて関数absを呼び出すプログラムである。命令1乃至7におけるいずれかの命令を実行中におけるコールスタックは識別情報「stack3」のようになっている。命令8乃至15におけるいずれかの命令を実行中におけるコールスタックは識別情報「stack2」のようになっている。命令16乃至19におけるいずれかの命令を実行中におけるコールスタックは識別情報「stack1」のようになっている。
まず、テストケース生成装置100における入力部101は、ユーザから対象プログラム10の入力を受け付け、対象プログラム格納部102に格納する。対象プログラム10が格納されると、シンボリック実行部105は、対象プログラム10からコールツリー20を生成する(ステップS101)。コールツリー20は、コールツリー格納部108に格納される。コールツリー20が生成されると、次いで、ドライバ・スタブ生成部103は、後述するドライバ・スタブ生成処理を実行する(ステップS102)。ドライバ・スタブ生成処理は、各関数に対して並列に実行される。これにより、関数毎のドライバ及びスタブが生成される。
ドライバ・スタブ生成部103は、まず、処理対象となる対象関数を解析し、対象関数から、パラメータ及び対象関数から呼び出される被呼出関数を抽出する(ステップS201)。例えば、図2に示した関数funcAの場合、被呼出関数として関数funcBが呼び出される。ドライバ・スタブ生成部103は、次いで、ステップS201において抽出された被呼出関数それぞれについて対応するスタブを生咸し(ステップS202)、ドライバ・スタブ格納部104に格納する。スタブはドライバから呼び出され、呼び出しに応じてシンボルを返すプログラムである。次いで、ドライバ・スタブ生成部103は、対象関数のパラメータ及び被呼出関数に対応するシンボル変数を設定するためのプログラムであるドライバを生成し(ステップS203)、ドライバ・スタブ格納部104に格納する。そして処理を終了する。
図19に示したスタブの6行目において、ドライバに対してシンボルを返すようになっている。また、図19に示したドライバにおいては、3行目及び4行目においてシンボル変数を設定し、5行目においてスタブを呼び出し、6行目においてfuncAを呼び出している。以上のようなドライバ・スタブ生成処理を実行すれば、関数単体でシンボリック実行を行えるようになる。
まず、シンボリック実行部105は、実行状態格納部106に格納されている、実行状態pのプログラムカウンタの値に基づき、命令を1つ読み出す(ステップS301)。例えばプログラムカウンタの値が「2」である場合、対象関数の2行目の命令を読み出す。以下では、ステップS301において読み出された命令を「処理対象の命令」と呼ぶ。
まず、シンボリック実行部105は、コールツリー格納部108に格納されているコールツリー20に最も後に追加された関数の位置を現在位置に設定する(S601)。シンボリック実行部105は、被呼出関数がコールツリーにおける現在位置より上位の位置に存在するか判断する(ステップS602)。現在位置より上位の位に存在しない場合(ステップS602:NO)、再帰呼び出しには該当しないので、シンボリック実行部105は、コールツリーにおける現在位置の下に関数を追加する(ステップS603)。一方、現在位置より上位の位置に存在する場合(ステップS602:YES)、再帰呼び出しに該当する。そこで、シンボリック実行部105は、被呼出関数についての条件を、実行中のパスについての条件から削除する(ステップS604)。そして呼び出し元の処理に戻る。尚、コールツリーへの関数追加時に、現在位置の右下に追加するようにすることで、追加順が新しい関数ほど右に出現するようにし、検索しやすいようにすることが望ましい。
まず、パス条件統合部109は、パス条件表格納部107に、統合すべき2つのパス条件表(ここでは、パス条件表A及びパス条件表Bと表記する)が存在するか判断する(ステップS701)。パス条件表Aやパス条件表Bは、例えば上述したパス条件表T1やパス条件表T2に対応する。統合すべき2つのパス条件表A及びBが存在しない場合(ステップS701:NO)、呼び出し元の処理に戻る。
図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/F100Gには、表示装置220が接続される。表示装置220としては、例えば液晶ディスプレイがある。
入出力I/F100Hには、半導体メモリ230が接続される。半導体メモリ230としては、例えばUniversal Serial Bus(USB)メモリやフラッシュメモリなどがある。入出力I/F100Hは、半導体メモリ230に記憶されたプログラムやデータを読み取る。
入力I/F100F及び入出力I/F100Hは、例えばUSBポートを備えている。出力I/F100Gは、例えばディスプレイポートを備えている。
ネットワークI/F100Dは、例えばポートとPhysical Layer Chip(PHYチップ)とを備えている。テストケース生成装置100は、ネットワークI/F100Dを介してネットワークと接続される。
(付記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項に記載のテストケース生成装置。
103 ドライバ・スタブ生成部(第3の生成手段)
105 シンボリック実行部(第1の生成手段)
109 パス条件統合部(統合手段)
110 テストケース生成部(第2の生成手段)
Claims (7)
- 対象プログラムにおいて実行される複数の関数の呼び出し関係を表すコールツリーを生成し、
前記複数の関数の各々についてシンボリック実行により、シンボル変数に関わる分岐を辿った履歴を表す第1の条件と、当該関数の引数及び返却値についての第2の条件の少なくともいずれかを含むパス条件表を前記複数の関数の各々について生成し、
前記コールツリーに基づいて、前記複数の関数に含まれるいずれかの関数を呼び出す第1の関数と前記第1の関数に呼び出される第2の関数との関連数を求め、
前記関連数の大きさに基づいた前記第1の関数と前記第2の関数のペア毎に、前記パス条件表を並列に統合し、
統合後のパス条件表を満たすシンボル変数の値を算出し、
当該値をテストケースとして生成する、
処理をコンピュータに実行させるテストケース生成プログラム。 - 前記第2の関数が複数の前記第1の関数から呼び出される場合に、前記第2の関数を呼出元毎に複製する処理をさらに含むことを特徴とする請求項1に記載のテストケース生成プログラム。
- 前記パス条件表を生成する処理を、前記複数の関数の各々について並列に実行させることを特徴とする請求項1又は2に記載のテストケース生成プログラム。
- 前記シンボル変数を設定するためのドライバと当該ドライバにおいて呼び出されるスタブを生成する処理をさらに含み、
前記ドライバと前記スタブを生成する処理を、前記複数の関数の各々について並列に実行させることを特徴とする請求項1から3のいずれか1項に記載のテストケース生成プログラム。 - 対象プログラムにおいて実行される複数の関数の呼び出し関係を表すコールツリーを生成し、
前記複数の関数の各々についてシンボリック実行により、シンボル変数に関わる分岐を辿った履歴を表す第1の条件と、当該関数の引数及び返却値についての第2の条件の少なくともいずれかを含むパス条件表を前記複数の関数の各々について生成し、
前記コールツリーに基づいて、前記複数の関数に含まれるいずれかの関数を呼び出す第1の関数と前記第1の関数に呼び出される第2の関数との関連数を求め、
前記関連数の大きさに基づいた前記第1の関数と前記第2の関数のペア毎に、前記パス条件表を並列に統合し、
統合後のパス条件表を満たすシンボル変数の値を算出し、
当該値をテストケースとして生成する、
処理をコンピュータが実行するテストケース生成方法。 - 対象プログラムにおいて実行される複数の関数の呼び出し関係を表すコールツリーを生成し、前記複数の関数の各々についてシンボリック実行により、シンボル変数に関わる分岐を辿った履歴を表す第1の条件と、当該関数の引数及び返却値についての第2の条件の少なくともいずれかを含むパス条件表を前記複数の関数の各々について生成する第1の生成手段と、
前記コールツリーに基づいて、前記複数の関数に含まれるいずれかの関数を呼び出す第1の関数と前記第1の関数に呼び出される第2の関数との関連数を求め、前記関連数の大きさに基づいた前記第1の関数と前記第2の関数のペア毎に、前記パス条件表を並列に統合する統合手段と、
統合後のパス条件表を満たすシンボル変数の値を算出し、当該値をテストケースとして生成する第2の生成手段と、
を有するテストケース生成装置。 - 前記処理は、前記関連数が最大の前記第1の関数と前記第2の関数のペア毎に、前記パス条件表を論理積によって並列に統合する、
ことを特徴とする請求項1に記載のテストケース生成プログラム。
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)
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)
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 |
-
2014
- 2014-06-25 JP JP2014129814A patent/JP6331756B2/ja active Active
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 |