JP5652326B2 - ソフトウェアモジュールのテスト方法及びシステム - Google Patents
ソフトウェアモジュールのテスト方法及びシステム Download PDFInfo
- Publication number
- JP5652326B2 JP5652326B2 JP2011115090A JP2011115090A JP5652326B2 JP 5652326 B2 JP5652326 B2 JP 5652326B2 JP 2011115090 A JP2011115090 A JP 2011115090A JP 2011115090 A JP2011115090 A JP 2011115090A JP 5652326 B2 JP5652326 B2 JP 5652326B2
- Authority
- JP
- Japan
- Prior art keywords
- variable
- software module
- conditional branch
- variables
- input
- 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
- 238000012360 testing method Methods 0.000 title claims description 377
- 238000000034 method Methods 0.000 claims description 53
- 238000003860 storage Methods 0.000 claims description 49
- 230000015654 memory Effects 0.000 claims description 41
- 238000004458 analytical method Methods 0.000 claims description 15
- 230000001419 dependent effect Effects 0.000 claims description 11
- 238000004891 communication Methods 0.000 description 12
- 230000003287 optical effect Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000013515 script Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 101100166308 Dictyostelium discoideum cbpA gene Proteins 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000004880 explosion Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000013100 final test Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Description
(外2)
(外3)
(付記1)
1つ以上の計算装置によって実行される方法であって、
ソフトウェアモジュールにアクセスするステップであり、
前記ソフトウェアモジュールは、
1つ以上の入力変数と、
1つ以上の中間変数であり、各中間変数の値が前記入力変数のうちの少なくとも1つの入力変数の値に直接的あるいは間接的に依存する、1つ以上の中間変数と、
1つ以上の条件付き分岐点であり、各条件付き分岐点が、前記入力変数及び前記中間変数のうちの少なくとも1つの入力変数及び/又は中間変数によって規定される分岐条件を有し、該分岐条件が満たされるかが、前記少なくとも1つの入力変数及び/又は中間変数の値に依存する、1つ以上の条件付き分岐点と、を有し、且つ
前記ソフトウェアモジュールの実行中に、前記条件付き分岐点の各々において、前記ソフトウェアモジュールは、該条件付き分岐点の分岐条件が満たされるかに応じて異なる経路に進む、アクセスするステップと、
前記1つ以上の入力変数に対応する1つ以上の変数セットを構築するステップであり、各変数セットが、前記入力変数のうちの1つと、前記入力変数のうちの該1つの値に直接的あるいは間接的に依存する値を有する中間変数とを含む、構築するステップと、
各変数セットに関して、該変数セットの前記入力変数及び前記中間変数によって影響される平均分岐深さを計算するステップと、
前記1つ以上の変数セットのうち最小の平均分岐深さを有する第1変数セットを選択するステップと、
前記第1変数セットの前記入力変数に第1記号値を割り当てるステップと、
前記第1記号値を有する前記第1変数セットの前記入力変数を用いて、前記ソフトウェアモジュールを記号的に実行し、前記第1変数セットの前記入力変数及び前記中間変数に関する第1テストケースセットを生成するステップと、
前記第1テストケースセットを用いて前記ソフトウェアモジュールを検証するステップと、
を有する方法。
(付記2)
前記入力変数の各々に関して、前記中間変数のうちの何れが該入力変数の値に直接的あるいは間接的に依存する値を有するかを、関連性分析を用いて決定するステップ、を更に有する付記1に記載の方法。
(付記3)
前記ソフトウェアモジュールは1以上の分岐階層を有し、
前記分岐階層の各々は、前記条件付き分岐点のうちの少なくとも1つを有し、
各変数セットに関して、該変数セットの前記入力変数及び前記中間変数によって影響される前記平均分岐深さを計算する前記ステップは、
該変数セットの前記入力変数に関して、分岐条件が該入力変数に依存する条件付き分岐点を有する分岐階層の数を計算するステップと、
該変数セットの前記中間変数の各々に関して、分岐条件が該中間変数に依存する条件付き分岐点を有する分岐階層の数を計算するステップと、
これらの分岐階層の数の平均を、該変数セットの前記平均分岐深さとして計算するステップと
を有する、
付記1又は2に記載の方法。
(付記4)
最小の平均分岐深さを有する前記第1変数セットを選択するとき、最小の平均分岐深さを有する変数セットが複数存在する場合、前記第1変数セットとして、最小の平均分岐深さを有する変数セットのうちの1つをランダムに選択する、付記1乃至3の何れか一に記載の方法。
(付記5)
前記1つ以上の変数セットのうち、次に最小の平均分岐深さを有する第2変数セットを選択するステップと、
前記第2変数セットの前記入力変数に第2記号値を割り当てるステップと、
前記第2記号値を有する前記第2変数セットの前記入力変数を用いて、前記ソフトウェアモジュールを記号的に実行し、前記第2変数セットの前記入力変数及び前記中間変数に関する第2テストケースセットを生成するステップと、
前記第2テストケースセットを用いて前記ソフトウェアモジュールを検証するステップと、
を更に有する付記1乃至4の何れか一に記載の方法。
(付記6)
1つ以上の計算装置によって実行される方法であって、
ソフトウェアモジュール及び該ソフトウェアモジュール用の複数のテストケースにアクセスするステップであり、
前記ソフトウェアモジュールは、
1つ以上の変数と、
1つ以上の条件付き分岐点であり、各条件付き分岐点が、前記変数のうちの少なくとも1つの変数によって規定される分岐条件を有し、該分岐条件が満たされるかが、前記少なくとも1つの変数の値に依存する、1つ以上の条件付き分岐点と、を有し、
前記ソフトウェアモジュールの実行中に、前記条件付き分岐点の各々において、前記ソフトウェアモジュールは、該条件付き分岐点の分岐条件が満たされるかに応じて異なる経路に進み、
前記テストケースの各々は、前記条件付き分岐点のうちの少なくとも1つをカバーし、且つ前記条件付き分岐点のうちの前記少なくとも1つの分岐条件を規定する前記少なくとも1つの変数に関する少なくとも1つのテスト値を有する、アクセスするステップと、
前記条件付き分岐点の各々に関して、前記複数のテストケースのうちに、該条件付き分岐点をカバーし且つ前記ソフトウェアモジュールを実行中に同一の経路に進ませるテストケースが複数存在する場合に、該条件付き分岐点をカバーし且つ前記ソフトウェアモジュールを実行中に同一の経路に進ませるテストケースのうち1つを除く全てを、前記複数のテストケースから除去するステップと、
残りのテストケースから1つ以上の第1テストケースを選択するステップであり、各第1テストケースは、前記条件付き分岐点のうちの少なくとも1つが該第1テストケースによってのみカバーされるテストケースである、選択するステップと、
前記条件付き分岐点の全てが前記第1テストケース及び第2テストケースのうちの少なくとも1つのテストケースによってカバーされるまで、残りのテストケースから1つ以上の第2テストケースを繰り返し選択するステップであり、各繰り返しにおいて選択される第2テストケースは、該繰り返しにおいて最も多数の条件付き分岐点をカバーするテストケースである、選択するステップと、
選択された前記第1テストケース及び前記第2テストケースのみを用いて、前記ソフトウェアモジュールをテストするステップと、
を有する方法。
(付記7)
前記ソフトウェアモジュールの前記変数は、1つ以上の入力変数と1つ以上の中間変数とを有し、各中間変数の値は、前記入力変数のうちの少なくとも1つの入力変数の値に直接的あるいは間接的に依存する、付記6に記載の方法。
(付記8)
前記入力変数と前記入力変数に関する前記テストケースからの前記テスト値とを表すグラフを構築するステップを更に有し、
前記グラフは、
各階層が前記入力変数のうちの1つに関連付けられた、前記1つ以上の入力変数に対応する1つ以上の階層と、
前記階層の各々の1つ以上のノードと、
1つ以上のエッジであり、各エッジが、隣接する2つの階層からの2つのノードを結び付け、且つ前記隣接する2つの階層のうちの高い側の階層に関連付けられた入力変数の前記テスト値のうちの1つを表す、1つ以上のエッジと、
を有する、
付記7に記載の方法。
(付記9)
前記テストケースと前記条件付き分岐点とを表す二部グラフを構築するステップを更に有し、
前記二部グラフは、
各第1ノードが前記テストケースのうちの1つを表す、前記複数のテストケースに対応する複数の第1ノードと、
各第2ノードが前記条件付き分岐点のうちの1つを表す、前記1つ以上の条件付き分岐点に対応する1つ以上の第2ノードと、
各エッジが前記第1ノードのうちの1つと前記第2ノードのうちの1つとを結び付ける複数のエッジであり、前記第1ノードのうちの該1つによって表されるテストケースが、前記第2ノードのうちの該1つによって表される条件付き分岐点をカバーする、複数のエッジと
を有する、
付記6乃至8の何れか一に記載の方法。
(付記10)
1つ以上のプロセッサによって実行可能な命令を有するメモリと、
前記メモリに結合され、前記命令を実行するよう動作する1つ以上のプロセッサと
を有するシステムであって、
前記1つ以上のプロセッサは、前記命令を実行するとき、
− ソフトウェアモジュールにアクセスし、
前記ソフトウェアモジュールは、
1つ以上の入力変数と、
1つ以上の中間変数であり、各中間変数の値が前記入力変数のうちの少なくとも1つの入力変数の値に直接的あるいは間接的に依存する、1つ以上の中間変数と、
1つ以上の条件付き分岐点であり、各条件付き分岐点が、前記入力変数及び前記中間変数のうちの少なくとも1つの入力変数及び/又は中間変数によって規定される分岐条件を有し、該分岐条件が満たされるかが、前記少なくとも1つの入力変数及び/又は中間変数の値に依存する、1つ以上の条件付き分岐点と、を有し、且つ
前記ソフトウェアモジュールの実行中に、前記条件付き分岐点の各々において、前記ソフトウェアモジュールは、該条件付き分岐点の分岐条件が満たされるかに応じて異なる経路に進み、
− 前記1つ以上の入力変数に対応する1つ以上の変数セットを構築し、各変数セットは、前記入力変数のうちの1つと、前記入力変数のうちの該1つの値に直接的あるいは間接的に依存する値を有する中間変数とを含み、
− 各変数セットに関して、該変数セットの前記入力変数及び前記中間変数によって影響される平均分岐深さを計算し、
− 前記1つ以上の変数セットのうち最小の平均分岐深さを有する第1変数セットを選択し、
− 前記第1変数セットの前記入力変数に第1記号値を割り当て、
− 前記第1記号値を有する前記第1変数セットの前記入力変数を用いて、前記ソフトウェアモジュールを記号的に実行することで、前記第1変数セットの前記入力変数及び前記中間変数に関する第1テストケースセットを生成し、
− 前記第1テストケースセットを用いて前記ソフトウェアモジュールを検証する、
よう動作する、システム。
(付記11)
前記1つ以上のプロセッサは更に、前記命令を実行するとき、前記入力変数の各々に関して、前記中間変数のうちの何れが該入力変数の値に直接的あるいは間接的に依存する値を有するかを、関連性分析を用いて決定するよう動作する、付記10に記載のシステム。
(付記12)
前記ソフトウェアモジュールは1以上の分岐階層を有し、
前記分岐階層の各々は、前記条件付き分岐点のうちの少なくとも1つを有し、
各変数セットに関して、該変数セットの前記入力変数及び前記中間変数によって影響される前記平均分岐深さを計算することは、
該変数セットの前記入力変数に関して、分岐条件が該入力変数に依存する条件付き分岐点を有する分岐階層の数を計算し、
該変数セットの前記中間変数の各々に関して、分岐条件が該中間変数に依存する条件付き分岐点を有する分岐階層の数を計算し、
これらの分岐階層の数の平均を、該変数セットの前記平均分岐深さとして計算する
ことを有する、
付記10又は11に記載のシステム。
(付記13)
最小の平均分岐深さを有する前記第1変数セットを選択するとき、最小の平均分岐深さを有する変数セットが複数存在する場合、前記第1変数セットとして、最小の平均分岐深さを有する変数セットのうちの1つをランダムに選択する、付記10乃至12の何れか一に記載のシステム。
(付記14)
前記1つ以上のプロセッサは更に、前記命令を実行するとき、
前記1つ以上の変数セットのうち、次に最小の平均分岐深さを有する第2変数セットを選択し、
前記第2変数セットの前記入力変数に第2記号値を割り当て、
前記第2記号値を有する前記第2変数セットの前記入力変数を用いて、前記ソフトウェアモジュールを記号的に実行することで、前記第2変数セットの前記入力変数及び前記中間変数に関する第2テストケースセットを生成し、
前記第2テストケースセットを用いて前記ソフトウェアモジュールを検証する、
よう動作する、付記10乃至13の何れか一に記載のシステム。
(付記15)
1つ以上のプロセッサによって実行可能な命令を有するメモリと、
前記メモリに結合され、前記命令を実行するよう動作する1つ以上のプロセッサと
を有するシステムであって、
前記1つ以上のプロセッサは、前記命令を実行するとき、
− ソフトウェアモジュール及び該ソフトウェアモジュール用の複数のテストケースにアクセスし、
前記ソフトウェアモジュールは、
1つ以上の変数と、
1つ以上の条件付き分岐点であり、各条件付き分岐点が、前記変数のうちの少なくとも1つの変数によって規定される分岐条件を有し、該分岐条件が満たされるかが、前記少なくとも1つの変数の値に依存する、1つ以上の条件付き分岐点と、を有し、
前記ソフトウェアモジュールの実行中に、前記条件付き分岐点の各々において、前記ソフトウェアモジュールは、該条件付き分岐点の分岐条件が満たされるかに応じて異なる経路に進み、
前記テストケースの各々は、前記条件付き分岐点のうちの少なくとも1つをカバーし、且つ前記条件付き分岐点のうちの前記少なくとも1つの分岐条件を規定する前記少なくとも1つの変数に関する少なくとも1つのテスト値を有し、
− 前記条件付き分岐点の各々に関して、前記複数のテストケースのうちに、該条件付き分岐点をカバーし且つ前記ソフトウェアモジュールを実行中に同一の経路に進ませるテストケースが複数存在する場合に、該条件付き分岐点をカバーし且つ前記ソフトウェアモジュールを実行中に同一の経路に進ませるテストケースのうち1つを除く全てを、前記複数のテストケースから除去し、
− 残りのテストケースから1つ以上の第1テストケースを選択し、各第1テストケースは、前記条件付き分岐点のうちの少なくとも1つが該第1テストケースによってのみカバーされるテストケースであり、
− 前記条件付き分岐点の全てが前記第1テストケース及び第2テストケースのうちの少なくとも1つのテストケースによってカバーされるまで、残りのテストケースから1つ以上の第2テストケースを繰り返し選択し、各繰り返しにおいて選択される第2テストケースは、該繰り返しにおいて最も多数の条件付き分岐点をカバーするテストケースであり、
− 選択された前記第1テストケース及び前記第2テストケースのみを用いて、前記ソフトウェアモジュールをテストする、
よう動作する、システム。
(付記16)
前記ソフトウェアモジュールの前記変数は、1つ以上の入力変数と1つ以上の中間変数とを有し、各中間変数の値は、前記入力変数のうちの少なくとも1つの入力変数の値に直接的あるいは間接的に依存する、付記15に記載のシステム。
(付記17)
前記1つ以上のプロセッサは更に、前記命令を実行するとき、前記入力変数と前記入力変数に関する前記テストケースからの前記テスト値とを表すグラフを構築するよう動作し、
前記グラフは、
各階層が前記入力変数のうちの1つに関連付けられた、前記1つ以上の入力変数に対応する1つ以上の階層と、
前記階層の各々の1つ以上のノードと、
1つ以上のエッジであり、各エッジが、隣接する2つの階層からの2つのノードを結び付け、且つ前記隣接する2つの階層のうちの高い側の階層に関連付けられた入力変数の前記テスト値のうちの1つを表す、1つ以上のエッジと、
を有する、
付記16に記載のシステム。
(付記18)
前記1つ以上のプロセッサは更に、前記命令を実行するとき、前記テストケースと前記条件付き分岐点とを表す二部グラフを構築するよう動作し、
前記二部グラフは、
各第1ノードが前記テストケースのうちの1つを表す、前記複数のテストケースに対応する複数の第1ノードと、
各第2ノードが前記条件付き分岐点のうちの1つを表す、前記1つ以上の条件付き分岐点に対応する1つ以上の第2ノードと、
各エッジが前記第1ノードのうちの1つと前記第2ノードのうちの1つとを結び付ける複数のエッジであり、前記第1ノードのうちの該1つによって表されるテストケースが、前記第2ノードのうちの該1つによって表される条件付き分岐点をカバーする、複数のエッジと
を有する、
付記15乃至17の何れか一に記載のシステム。
(付記19)
プログラムを格納したコンピュータ読み取り可能記憶媒体であって、前記プログラムは、1つ以上の計算装置によって実行されるとき、該1つ以上の計算装置に、
− ソフトウェアモジュールにアクセスさせ、
前記ソフトウェアモジュールは、
1つ以上の入力変数と、
1つ以上の中間変数であり、各中間変数の値が前記入力変数のうちの少なくとも1つの入力変数の値に直接的あるいは間接的に依存する、1つ以上の中間変数と、
1つ以上の条件付き分岐点であり、各条件付き分岐点が、前記入力変数及び前記中間変数のうちの少なくとも1つの入力変数及び/又は中間変数によって規定される分岐条件を有し、該分岐条件が満たされるかが、前記少なくとも1つの入力変数及び/又は中間変数の値に依存する、1つ以上の条件付き分岐点と、を有し、且つ
前記ソフトウェアモジュールの実行中に、前記条件付き分岐点の各々において、前記ソフトウェアモジュールは、該条件付き分岐点の分岐条件が満たされるかに応じて異なる経路に進み、
− 前記1つ以上の入力変数に対応する1つ以上の変数セットを構築させ、各変数セットは、前記入力変数のうちの1つと、前記入力変数のうちの該1つの値に直接的あるいは間接的に依存する値を有する中間変数とを含み、
− 各変数セットに関して、該変数セットの前記入力変数及び前記中間変数によって影響される平均分岐深さを計算させ、
− 前記1つ以上の変数セットのうち最小の平均分岐深さを有する第1変数セットを選択させ、
− 前記第1変数セットの前記入力変数に第1記号値を割り当てさせ、
− 前記第1記号値を有する前記第1変数セットの前記入力変数を用いて、前記ソフトウェアモジュールを記号的に実行させて、前記第1変数セットの前記入力変数及び前記中間変数に関する第1テストケースセットを生成させ、
− 前記第1テストケースセットを用いて前記ソフトウェアモジュールを検証させる、
コンピュータ読み取り可能記憶媒体。
(付記20)
前記プログラムは更に、前記1つ以上の計算装置によって実行されるとき、前記1つ以上の計算装置に、前記入力変数の各々に関して、前記中間変数のうちの何れが該入力変数の値に直接的あるいは間接的に依存する値を有するかを、関連性分析を用いて決定させる、付記19に記載のコンピュータ読み取り可能記憶媒体。
(付記21)
前記ソフトウェアモジュールは1以上の分岐階層を有し、
前記分岐階層の各々は、前記条件付き分岐点のうちの少なくとも1つを有し、
各変数セットに関して、該変数セットの前記入力変数及び前記中間変数によって影響される前記平均分岐深さを計算させることは、
該変数セットの前記入力変数に関して、分岐条件が該入力変数に依存する条件付き分岐点を有する分岐階層の数を計算させ、
該変数セットの前記中間変数の各々に関して、分岐条件が該中間変数に依存する条件付き分岐点を有する分岐階層の数を計算させ、
これらの分岐階層の数の平均を、該変数セットの前記平均分岐深さとして計算させる
ことを有する、
付記19又は20に記載のコンピュータ読み取り可能記憶媒体。
(付記22)
最小の平均分岐深さを有する前記第1変数セットを選択させるとき、最小の平均分岐深さを有する変数セットが複数存在する場合、前記第1変数セットとして、最小の平均分岐深さを有する変数セットのうちの1つをランダムに選択させる、付記19乃至21の何れか一に記載のコンピュータ読み取り可能記憶媒体。
(付記23)
前記プログラムは更に、前記1つ以上の計算装置によって実行されるとき、前記1つ以上の計算装置に、
前記1つ以上の変数セットのうち、次に最小の平均分岐深さを有する第2変数セットを選択させ、
前記第2変数セットの前記入力変数に第2記号値を割り当てさせ、
前記第2記号値を有する前記第2変数セットの前記入力変数を用いて、前記ソフトウェアモジュールを記号的に実行させて、前記第2変数セットの前記入力変数及び前記中間変数に関する第2テストケースセットを生成させ、
前記第2テストケースセットを用いて前記ソフトウェアモジュールを検証させる、
付記19乃至22の何れか一に記載のコンピュータ読み取り可能記憶媒体。
(付記24)
プログラムを格納したコンピュータ読み取り可能記憶媒体であって、前記プログラムは、1つ以上の計算装置によって実行されるとき、該1つ以上の計算装置に、
− ソフトウェアモジュール及び該ソフトウェアモジュール用の複数のテストケースにアクセスさせ、
前記ソフトウェアモジュールは、
1つ以上の変数と、
1つ以上の条件付き分岐点であり、各条件付き分岐点が、前記変数のうちの少なくとも1つの変数によって規定される分岐条件を有し、該分岐条件が満たされるかが、前記少なくとも1つの変数の値に依存する、1つ以上の条件付き分岐点と、を有し、
前記ソフトウェアモジュールの実行中に、前記条件付き分岐点の各々において、前記ソフトウェアモジュールは、該条件付き分岐点の分岐条件が満たされるかに応じて異なる経路に進み、
前記テストケースの各々は、前記条件付き分岐点のうちの少なくとも1つをカバーし、且つ前記条件付き分岐点のうちの前記少なくとも1つの分岐条件を規定する前記少なくとも1つの変数に関する少なくとも1つのテスト値を有し、
− 前記条件付き分岐点の各々に関して、前記複数のテストケースのうちに、該条件付き分岐点をカバーし且つ前記ソフトウェアモジュールを実行中に同一の経路に進ませるテストケースが複数存在する場合に、該条件付き分岐点をカバーし且つ前記ソフトウェアモジュールを実行中に同一の経路に進ませるテストケースのうち1つを除く全てを、前記複数のテストケースから除去させ、
− 残りのテストケースから1つ以上の第1テストケースを選択させ、各第1テストケースは、前記条件付き分岐点のうちの少なくとも1つが該第1テストケースによってのみカバーされるテストケースであり、
− 前記条件付き分岐点の全てが前記第1テストケース及び第2テストケースのうちの少なくとも1つのテストケースによってカバーされるまで、残りのテストケースから1つ以上の第2テストケースを繰り返し選択させ、各繰り返しにおいて選択される第2テストケースは、該繰り返しにおいて最も多数の条件付き分岐点をカバーするテストケースであり、
− 選択された前記第1テストケース及び前記第2テストケースのみを用いて、前記ソフトウェアモジュールをテストさせる、
コンピュータ読み取り可能記憶媒体。
(付記25)
前記ソフトウェアモジュールの前記変数は、1つ以上の入力変数と1つ以上の中間変数とを有し、各中間変数の値は、前記入力変数のうちの少なくとも1つの入力変数の値に直接的あるいは間接的に依存する、付記24に記載のコンピュータ読み取り可能記憶媒体。
(付記26)
前記プログラムは更に、前記1つ以上の計算装置によって実行されるとき、前記1つ以上の計算装置に、前記入力変数と前記入力変数に関する前記テストケースからの前記テスト値とを表すグラフを構築させ、
前記グラフは、
各階層が前記入力変数のうちの1つに関連付けられた、前記1つ以上の入力変数に対応する1つ以上の階層と、
前記階層の各々の1つ以上のノードと、
1つ以上のエッジであり、各エッジが、隣接する2つの階層からの2つのノードを結び付け、且つ前記隣接する2つの階層のうちの高い側の階層に関連付けられた入力変数の前記テスト値のうちの1つを表す、1つ以上のエッジと、
を有する、
付記25に記載のコンピュータ読み取り可能記憶媒体。
(付記27)
前記プログラムは更に、前記1つ以上の計算装置によって実行されるとき、前記1つ以上の計算装置に、前記テストケースと前記条件付き分岐点とを表す二部グラフを構築させ、
前記二部グラフは、
各第1ノードが前記テストケースのうちの1つを表す、前記複数のテストケースに対応する複数の第1ノードと、
各第2ノードが前記条件付き分岐点のうちの1つを表す、前記1つ以上の条件付き分岐点に対応する1つ以上の第2ノードと、
各エッジが前記第1ノードのうちの1つと前記第2ノードのうちの1つとを結び付ける複数のエッジであり、前記第1ノードのうちの該1つによって表されるテストケースが、前記第2ノードのうちの該1つによって表される条件付き分岐点をカバーする、複数のエッジと
を有する、
付記24乃至26の何れか一に記載のシステム。
(付記28)
ソフトウェアモジュールにアクセスする手段であり、
前記ソフトウェアモジュールは、
1つ以上の入力変数と、
1つ以上の中間変数であり、各中間変数の値が前記入力変数のうちの少なくとも1つの入力変数の値に直接的あるいは間接的に依存する、1つ以上の中間変数と、
1つ以上の条件付き分岐点であり、各条件付き分岐点が、前記入力変数及び前記中間変数のうちの少なくとも1つの入力変数及び/又は中間変数によって規定される分岐条件を有し、該分岐条件が満たされるかが、前記少なくとも1つの入力変数及び/又は中間変数の値に依存する、1つ以上の条件付き分岐点と、を有し、且つ
前記ソフトウェアモジュールの実行中に、前記条件付き分岐点の各々において、前記ソフトウェアモジュールは、該条件付き分岐点の分岐条件が満たされるかに応じて異なる経路に進む、アクセスする手段と、
前記1つ以上の入力変数に対応する1つ以上の変数セットを構築する手段であり、各変数セットが、前記入力変数のうちの1つと、前記入力変数のうちの該1つの値に直接的あるいは間接的に依存する値を有する中間変数とを含む、構築する手段と、
各変数セットに関して、該変数セットの前記入力変数及び前記中間変数によって影響される平均分岐深さを計算する手段と、
前記1つ以上の変数セットのうち最小の平均分岐深さを有する第1変数セットを選択する手段と、
前記第1変数セットの前記入力変数に第1記号値を割り当てる手段と、
前記第1記号値を有する前記第1変数セットの前記入力変数を用いて、前記ソフトウェアモジュールを記号的に実行し、前記第1変数セットの前記入力変数及び前記中間変数に関する第1テストケースセットを生成する手段と、
前記第1テストケースセットを用いて前記ソフトウェアモジュールを検証する手段と、
を有するシステム。
(付記29)
ソフトウェアモジュール及び該ソフトウェアモジュール用の複数のテストケースにアクセスする手段であり、
前記ソフトウェアモジュールは、
1つ以上の変数と、
1つ以上の条件付き分岐点であり、各条件付き分岐点が、前記変数のうちの少なくとも1つの変数によって規定される分岐条件を有し、該分岐条件が満たされるかが、前記少なくとも1つの変数の値に依存する、1つ以上の条件付き分岐点と、を有し、
前記ソフトウェアモジュールの実行中に、前記条件付き分岐点の各々において、前記ソフトウェアモジュールは、該条件付き分岐点の分岐条件が満たされるかに応じて異なる経路に進み、
前記テストケースの各々は、前記条件付き分岐点のうちの少なくとも1つをカバーし、且つ前記条件付き分岐点のうちの前記少なくとも1つの分岐条件を規定する前記少なくとも1つの変数に関する少なくとも1つのテスト値を有する、アクセスする手段と、
前記条件付き分岐点の各々に関して、前記複数のテストケースのうちに、該条件付き分岐点をカバーし且つ前記ソフトウェアモジュールを実行中に同一の経路に進ませるテストケースが複数存在する場合に、該条件付き分岐点をカバーし且つ前記ソフトウェアモジュールを実行中に同一の経路に進ませるテストケースのうち1つを除く全てを、前記複数のテストケースから除去する手段と、
残りのテストケースから1つ以上の第1テストケースを選択する手段であり、各第1テストケースは、前記条件付き分岐点のうちの少なくとも1つが該第1テストケースによってのみカバーされるテストケースである、選択する手段と、
前記条件付き分岐点の全てが前記第1テストケース及び第2テストケースのうちの少なくとも1つのテストケースによってカバーされるまで、残りのテストケースから1つ以上の第2テストケースを繰り返し選択する手段であり、各繰り返しにおいて選択される第2テストケースは、該繰り返しにおいて最も多数の条件付き分岐点をカバーするテストケースである、選択する手段と、
選択された前記第1テストケース及び前記第2テストケースのみを用いて、前記ソフトウェアモジュールをテストする手段と、
を有するシステム。
302 関連性分析部
304 分岐深さ計算部
306 記号的実行部
312 ソフトウェアモジュール
314 テストケースセット
600 システム
602 動的テストケース生成部
604 二部グラフ構築部
606 テストケース選択部
612 テストケースセット
614 選択されたテストケース
700 グラフ
702、704、706、708、710 ノード
800 二部グラフ
812、814、816 ノード(テストケース)
822、824、826、828 ノード(条件付き分岐点)
900 ネットワーク環境
910 ネットワーク
920 サーバ
930 クライアント
932 ブラウザ
940 データストレージ
950 リンク
1000 コンピュータシステム
1002 プロセッサ
1004 メモリ
1006 ストレージ
1008 I/Oインタフェース
1010 通信インタフェース
1012 バス
Claims (15)
- 1つ以上の計算装置によって実行される方法であって、
ソフトウェアモジュールにアクセスするステップであり、
前記ソフトウェアモジュールは、
1つ以上の入力変数と、
1つ以上の中間変数であり、各中間変数の値が前記入力変数のうちの少なくとも1つの入力変数の値に直接的あるいは間接的に依存する、1つ以上の中間変数と、
1つ以上の条件付き分岐点であり、各条件付き分岐点が、前記入力変数及び前記中間変数のうちの少なくとも1つの入力変数及び/又は中間変数によって規定される分岐条件を有し、該分岐条件が満たされるかが、前記少なくとも1つの入力変数及び/又は中間変数の値に依存する、1つ以上の条件付き分岐点と、を有し、且つ
前記ソフトウェアモジュールの実行中に、前記条件付き分岐点の各々において、前記ソフトウェアモジュールは、該条件付き分岐点の分岐条件が満たされるかに応じて異なる経路に進む、アクセスするステップと、
前記1つ以上の入力変数に対応する1つ以上の変数セットを構築するステップであり、各変数セットが、前記入力変数のうちの1つと、前記入力変数のうちの該1つの値に直接的あるいは間接的に依存する値を有する中間変数とを含む、構築するステップと、
各変数セットに関して、該変数セットの前記入力変数及び前記中間変数によって影響される平均分岐深さを計算するステップと、
前記1つ以上の変数セットのうち最小の平均分岐深さを有する第1変数セットを選択するステップと、
前記第1変数セットの前記入力変数に第1記号値を割り当てるステップと、
前記第1記号値を有する前記第1変数セットの前記入力変数を用いて、前記ソフトウェアモジュールを記号的に実行し、前記第1変数セットの前記入力変数及び前記中間変数に関する第1テストケースセットを生成するステップと、
前記第1テストケースセットを用いて前記ソフトウェアモジュールを検証するステップと、
を有する方法。 - 前記入力変数の各々に関して、前記中間変数のうちの何れが該入力変数の値に直接的あるいは間接的に依存する値を有するかを、関連性分析を用いて決定するステップ、を更に有する請求項1に記載の方法。
- 前記ソフトウェアモジュールは1以上の分岐階層を有し、
前記分岐階層の各々は、前記条件付き分岐点のうちの少なくとも1つを有し、
各変数セットに関して、該変数セットの前記入力変数及び前記中間変数によって影響される前記平均分岐深さを計算する前記ステップは、
該変数セットの前記入力変数に関して、分岐条件が該入力変数に依存する条件付き分岐点を有する分岐階層の数を計算するステップと、
該変数セットの前記中間変数の各々に関して、分岐条件が該中間変数に依存する条件付き分岐点を有する分岐階層の数を計算するステップと、
これらの分岐階層の数の平均を、該変数セットの前記平均分岐深さとして計算するステップと
を有する、
請求項1又は2に記載の方法。 - 最小の平均分岐深さを有する前記第1変数セットを選択するとき、最小の平均分岐深さを有する変数セットが複数存在する場合、前記第1変数セットとして、最小の平均分岐深さを有する変数セットのうちの1つをランダムに選択する、請求項1乃至3の何れか一項に記載の方法。
- 前記1つ以上の変数セットのうち、次に最小の平均分岐深さを有する第2変数セットを選択するステップと、
前記第2変数セットの前記入力変数に第2記号値を割り当てるステップと、
前記第2記号値を有する前記第2変数セットの前記入力変数を用いて、前記ソフトウェアモジュールを記号的に実行し、前記第2変数セットの前記入力変数及び前記中間変数に関する第2テストケースセットを生成するステップと、
前記第2テストケースセットを用いて前記ソフトウェアモジュールを検証するステップと、
を更に有する請求項1乃至4の何れか一項に記載の方法。 - 1つ以上の計算装置によって実行される方法であって、
ソフトウェアモジュール及び該ソフトウェアモジュール用の複数のテストケースにアクセスするステップであり、
前記ソフトウェアモジュールは、
1つ以上の変数と、
1つ以上の条件付き分岐点であり、各条件付き分岐点が、前記変数のうちの少なくとも1つの変数によって規定される分岐条件を有し、該分岐条件が満たされるかが、前記少なくとも1つの変数の値に依存する、1つ以上の条件付き分岐点と、を有し、
前記ソフトウェアモジュールの実行中に、前記条件付き分岐点の各々において、前記ソフトウェアモジュールは、該条件付き分岐点の分岐条件が満たされるかに応じて異なる経路に進み、
前記テストケースの各々は、前記条件付き分岐点のうちの少なくとも1つをカバーし、且つ前記条件付き分岐点のうちの前記少なくとも1つの分岐条件を規定する前記少なくとも1つの変数に関する少なくとも1つのテスト値を有する、アクセスするステップと、
前記条件付き分岐点の各々に関して、前記複数のテストケースのうちに、該条件付き分岐点をカバーし且つ前記ソフトウェアモジュールを実行中に同一の経路に進ませるテストケースが複数存在する場合に、該条件付き分岐点をカバーし且つ前記ソフトウェアモジュールを実行中に同一の経路に進ませるテストケースのうち1つを除く全てを、前記複数のテストケースから除去するステップと、
残りのテストケースから1つ以上の第1テストケースを選択するステップであり、各第1テストケースは、前記条件付き分岐点のうちの少なくとも1つが該第1テストケースによってのみカバーされるテストケースである、選択するステップと、
前記条件付き分岐点の全てが前記第1テストケース及び第2テストケースのうちの少なくとも1つのテストケースによってカバーされるまで、残りのテストケースから1つ以上の第2テストケースを繰り返し選択するステップであり、各繰り返しにおいて選択される第2テストケースは、該繰り返しにおいて最も多数の条件付き分岐点をカバーするテストケースである、選択するステップと、
選択された前記第1テストケース及び前記第2テストケースのみを用いて、前記ソフトウェアモジュールをテストするステップと、
を有する方法。 - 前記ソフトウェアモジュールの前記変数は、1つ以上の入力変数と1つ以上の中間変数とを有し、各中間変数の値は、前記入力変数のうちの少なくとも1つの入力変数の値に直接的あるいは間接的に依存する、請求項6に記載の方法。
- 前記入力変数と前記入力変数に関する前記テストケースからの前記テスト値とを表すグラフを構築するステップを更に有し、
前記グラフは、
各階層が前記入力変数のうちの1つに関連付けられた、前記1つ以上の入力変数に対応する1つ以上の階層と、
前記階層の各々の1つ以上のノードと、
1つ以上のエッジであり、各エッジが、隣接する2つの階層からの2つのノードを結び付け、且つ前記隣接する2つの階層のうちの高い側の階層に関連付けられた入力変数の前記テスト値のうちの1つを表す、1つ以上のエッジと、
を有する、
請求項7に記載の方法。 - 前記テストケースと前記条件付き分岐点とを表す二部グラフを構築するステップを更に有し、
前記二部グラフは、
各第1ノードが前記テストケースのうちの1つを表す、前記複数のテストケースに対応する複数の第1ノードと、
各第2ノードが前記条件付き分岐点のうちの1つを表す、前記1つ以上の条件付き分岐点に対応する1つ以上の第2ノードと、
各エッジが前記第1ノードのうちの1つと前記第2ノードのうちの1つとを結び付ける複数のエッジであり、前記第1ノードのうちの該1つによって表されるテストケースが、前記第2ノードのうちの該1つによって表される条件付き分岐点をカバーする、複数のエッジと
を有する、
請求項6乃至8の何れか一項に記載の方法。 - 1つ以上のプロセッサによって実行可能な命令を有するメモリと、
前記メモリに結合され、前記命令を実行するよう動作する1つ以上のプロセッサと
を有するシステムであって、
前記1つ以上のプロセッサは、前記命令を実行するとき、
− ソフトウェアモジュールにアクセスし、
前記ソフトウェアモジュールは、
1つ以上の入力変数と、
1つ以上の中間変数であり、各中間変数の値が前記入力変数のうちの少なくとも1つの入力変数の値に直接的あるいは間接的に依存する、1つ以上の中間変数と、
1つ以上の条件付き分岐点であり、各条件付き分岐点が、前記入力変数及び前記中間変数のうちの少なくとも1つの入力変数及び/又は中間変数によって規定される分岐条件を有し、該分岐条件が満たされるかが、前記少なくとも1つの入力変数及び/又は中間変数の値に依存する、1つ以上の条件付き分岐点と、を有し、且つ
前記ソフトウェアモジュールの実行中に、前記条件付き分岐点の各々において、前記ソフトウェアモジュールは、該条件付き分岐点の分岐条件が満たされるかに応じて異なる経路に進み、
− 前記1つ以上の入力変数に対応する1つ以上の変数セットを構築し、各変数セットは、前記入力変数のうちの1つと、前記入力変数のうちの該1つの値に直接的あるいは間接的に依存する値を有する中間変数とを含み、
− 各変数セットに関して、該変数セットの前記入力変数及び前記中間変数によって影響される平均分岐深さを計算し、
− 前記1つ以上の変数セットのうち最小の平均分岐深さを有する第1変数セットを選択し、
− 前記第1変数セットの前記入力変数に第1記号値を割り当て、
− 前記第1記号値を有する前記第1変数セットの前記入力変数を用いて、前記ソフトウェアモジュールを記号的に実行することで、前記第1変数セットの前記入力変数及び前記中間変数に関する第1テストケースセットを生成し、
− 前記第1テストケースセットを用いて前記ソフトウェアモジュールを検証する、
よう動作する、システム。 - 1つ以上のプロセッサによって実行可能な命令を有するメモリと、
前記メモリに結合され、前記命令を実行するよう動作する1つ以上のプロセッサと
を有するシステムであって、
前記1つ以上のプロセッサは、前記命令を実行するとき、
− ソフトウェアモジュール及び該ソフトウェアモジュール用の複数のテストケースにアクセスし、
前記ソフトウェアモジュールは、
1つ以上の変数と、
1つ以上の条件付き分岐点であり、各条件付き分岐点が、前記変数のうちの少なくとも1つの変数によって規定される分岐条件を有し、該分岐条件が満たされるかが、前記少なくとも1つの変数の値に依存する、1つ以上の条件付き分岐点と、を有し、
前記ソフトウェアモジュールの実行中に、前記条件付き分岐点の各々において、前記ソフトウェアモジュールは、該条件付き分岐点の分岐条件が満たされるかに応じて異なる経路に進み、
前記テストケースの各々は、前記条件付き分岐点のうちの少なくとも1つをカバーし、且つ前記条件付き分岐点のうちの前記少なくとも1つの分岐条件を規定する前記少なくとも1つの変数に関する少なくとも1つのテスト値を有し、
− 前記条件付き分岐点の各々に関して、前記複数のテストケースのうちに、該条件付き分岐点をカバーし且つ前記ソフトウェアモジュールを実行中に同一の経路に進ませるテストケースが複数存在する場合に、該条件付き分岐点をカバーし且つ前記ソフトウェアモジュールを実行中に同一の経路に進ませるテストケースのうち1つを除く全てを、前記複数のテストケースから除去し、
− 残りのテストケースから1つ以上の第1テストケースを選択し、各第1テストケースは、前記条件付き分岐点のうちの少なくとも1つが該第1テストケースによってのみカバーされるテストケースであり、
− 前記条件付き分岐点の全てが前記第1テストケース及び第2テストケースのうちの少なくとも1つのテストケースによってカバーされるまで、残りのテストケースから1つ以上の第2テストケースを繰り返し選択し、各繰り返しにおいて選択される第2テストケースは、該繰り返しにおいて最も多数の条件付き分岐点をカバーするテストケースであり、
− 選択された前記第1テストケース及び前記第2テストケースのみを用いて、前記ソフトウェアモジュールをテストする、
よう動作する、システム。 - プログラムを格納したコンピュータ読み取り可能記憶媒体であって、前記プログラムは、1つ以上の計算装置によって実行されるとき、該1つ以上の計算装置に、
− ソフトウェアモジュールにアクセスさせ、
前記ソフトウェアモジュールは、
1つ以上の入力変数と、
1つ以上の中間変数であり、各中間変数の値が前記入力変数のうちの少なくとも1つの入力変数の値に直接的あるいは間接的に依存する、1つ以上の中間変数と、
1つ以上の条件付き分岐点であり、各条件付き分岐点が、前記入力変数及び前記中間変数のうちの少なくとも1つの入力変数及び/又は中間変数によって規定される分岐条件を有し、該分岐条件が満たされるかが、前記少なくとも1つの入力変数及び/又は中間変数の値に依存する、1つ以上の条件付き分岐点と、を有し、且つ
前記ソフトウェアモジュールの実行中に、前記条件付き分岐点の各々において、前記ソフトウェアモジュールは、該条件付き分岐点の分岐条件が満たされるかに応じて異なる経路に進み、
− 前記1つ以上の入力変数に対応する1つ以上の変数セットを構築させ、各変数セットは、前記入力変数のうちの1つと、前記入力変数のうちの該1つの値に直接的あるいは間接的に依存する値を有する中間変数とを含み、
− 各変数セットに関して、該変数セットの前記入力変数及び前記中間変数によって影響される平均分岐深さを計算させ、
− 前記1つ以上の変数セットのうち最小の平均分岐深さを有する第1変数セットを選択させ、
− 前記第1変数セットの前記入力変数に第1記号値を割り当てさせ、
− 前記第1記号値を有する前記第1変数セットの前記入力変数を用いて、前記ソフトウェアモジュールを記号的に実行させて、前記第1変数セットの前記入力変数及び前記中間変数に関する第1テストケースセットを生成させ、
− 前記第1テストケースセットを用いて前記ソフトウェアモジュールを検証させる、
コンピュータ読み取り可能記憶媒体。 - プログラムを格納したコンピュータ読み取り可能記憶媒体であって、前記プログラムは、1つ以上の計算装置によって実行されるとき、該1つ以上の計算装置に、
− ソフトウェアモジュール及び該ソフトウェアモジュール用の複数のテストケースにアクセスさせ、
前記ソフトウェアモジュールは、
1つ以上の変数と、
1つ以上の条件付き分岐点であり、各条件付き分岐点が、前記変数のうちの少なくとも1つの変数によって規定される分岐条件を有し、該分岐条件が満たされるかが、前記少なくとも1つの変数の値に依存する、1つ以上の条件付き分岐点と、を有し、
前記ソフトウェアモジュールの実行中に、前記条件付き分岐点の各々において、前記ソフトウェアモジュールは、該条件付き分岐点の分岐条件が満たされるかに応じて異なる経路に進み、
前記テストケースの各々は、前記条件付き分岐点のうちの少なくとも1つをカバーし、且つ前記条件付き分岐点のうちの前記少なくとも1つの分岐条件を規定する前記少なくとも1つの変数に関する少なくとも1つのテスト値を有し、
− 前記条件付き分岐点の各々に関して、前記複数のテストケースのうちに、該条件付き分岐点をカバーし且つ前記ソフトウェアモジュールを実行中に同一の経路に進ませるテストケースが複数存在する場合に、該条件付き分岐点をカバーし且つ前記ソフトウェアモジュールを実行中に同一の経路に進ませるテストケースのうち1つを除く全てを、前記複数のテストケースから除去させ、
− 残りのテストケースから1つ以上の第1テストケースを選択させ、各第1テストケースは、前記条件付き分岐点のうちの少なくとも1つが該第1テストケースによってのみカバーされるテストケースであり、
− 前記条件付き分岐点の全てが前記第1テストケース及び第2テストケースのうちの少なくとも1つのテストケースによってカバーされるまで、残りのテストケースから1つ以上の第2テストケースを繰り返し選択させ、各繰り返しにおいて選択される第2テストケースは、該繰り返しにおいて最も多数の条件付き分岐点をカバーするテストケースであり、
− 選択された前記第1テストケース及び前記第2テストケースのみを用いて、前記ソフトウェアモジュールをテストさせる、
コンピュータ読み取り可能記憶媒体。 - ソフトウェアモジュールにアクセスする手段であり、
前記ソフトウェアモジュールは、
1つ以上の入力変数と、
1つ以上の中間変数であり、各中間変数の値が前記入力変数のうちの少なくとも1つの入力変数の値に直接的あるいは間接的に依存する、1つ以上の中間変数と、
1つ以上の条件付き分岐点であり、各条件付き分岐点が、前記入力変数及び前記中間変数のうちの少なくとも1つの入力変数及び/又は中間変数によって規定される分岐条件を有し、該分岐条件が満たされるかが、前記少なくとも1つの入力変数及び/又は中間変数の値に依存する、1つ以上の条件付き分岐点と、を有し、且つ
前記ソフトウェアモジュールの実行中に、前記条件付き分岐点の各々において、前記ソフトウェアモジュールは、該条件付き分岐点の分岐条件が満たされるかに応じて異なる経路に進む、アクセスする手段と、
前記1つ以上の入力変数に対応する1つ以上の変数セットを構築する手段であり、各変数セットが、前記入力変数のうちの1つと、前記入力変数のうちの該1つの値に直接的あるいは間接的に依存する値を有する中間変数とを含む、構築する手段と、
各変数セットに関して、該変数セットの前記入力変数及び前記中間変数によって影響される平均分岐深さを計算する手段と、
前記1つ以上の変数セットのうち最小の平均分岐深さを有する第1変数セットを選択する手段と、
前記第1変数セットの前記入力変数に第1記号値を割り当てる手段と、
前記第1記号値を有する前記第1変数セットの前記入力変数を用いて、前記ソフトウェアモジュールを記号的に実行し、前記第1変数セットの前記入力変数及び前記中間変数に関する第1テストケースセットを生成する手段と、
前記第1テストケースセットを用いて前記ソフトウェアモジュールを検証する手段と、
を有するシステム。 - ソフトウェアモジュール及び該ソフトウェアモジュール用の複数のテストケースにアクセスする手段であり、
前記ソフトウェアモジュールは、
1つ以上の変数と、
1つ以上の条件付き分岐点であり、各条件付き分岐点が、前記変数のうちの少なくとも1つの変数によって規定される分岐条件を有し、該分岐条件が満たされるかが、前記少なくとも1つの変数の値に依存する、1つ以上の条件付き分岐点と、を有し、
前記ソフトウェアモジュールの実行中に、前記条件付き分岐点の各々において、前記ソフトウェアモジュールは、該条件付き分岐点の分岐条件が満たされるかに応じて異なる経路に進み、
前記テストケースの各々は、前記条件付き分岐点のうちの少なくとも1つをカバーし、且つ前記条件付き分岐点のうちの前記少なくとも1つの分岐条件を規定する前記少なくとも1つの変数に関する少なくとも1つのテスト値を有する、アクセスする手段と、
前記条件付き分岐点の各々に関して、前記複数のテストケースのうちに、該条件付き分岐点をカバーし且つ前記ソフトウェアモジュールを実行中に同一の経路に進ませるテストケースが複数存在する場合に、該条件付き分岐点をカバーし且つ前記ソフトウェアモジュールを実行中に同一の経路に進ませるテストケースのうち1つを除く全てを、前記複数のテストケースから除去する手段と、
残りのテストケースから1つ以上の第1テストケースを選択する手段であり、各第1テストケースは、前記条件付き分岐点のうちの少なくとも1つが該第1テストケースによってのみカバーされるテストケースである、選択する手段と、
前記条件付き分岐点の全てが前記第1テストケース及び第2テストケースのうちの少なくとも1つのテストケースによってカバーされるまで、残りのテストケースから1つ以上の第2テストケースを繰り返し選択する手段であり、各繰り返しにおいて選択される第2テストケースは、該繰り返しにおいて最も多数の条件付き分岐点をカバーするテストケースである、選択する手段と、
選択された前記第1テストケース及び前記第2テストケースのみを用いて、前記ソフトウェアモジュールをテストする手段と、
を有するシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/785,756 US8479171B2 (en) | 2010-05-24 | 2010-05-24 | Generating test sets using intelligent variable selection and test set compaction |
US12/785,756 | 2010-05-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011248887A JP2011248887A (ja) | 2011-12-08 |
JP5652326B2 true JP5652326B2 (ja) | 2015-01-14 |
Family
ID=44973536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011115090A Active JP5652326B2 (ja) | 2010-05-24 | 2011-05-23 | ソフトウェアモジュールのテスト方法及びシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US8479171B2 (ja) |
JP (1) | JP5652326B2 (ja) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100223599A1 (en) * | 2009-02-27 | 2010-09-02 | Fujitsu Limited | Efficient symbolic execution of software using static analysis |
US8504997B2 (en) * | 2009-03-19 | 2013-08-06 | Fujitsu Limited | Environment data refinement based on static analysis and symbolic execution |
US8719771B2 (en) * | 2009-09-28 | 2014-05-06 | Cadence Design Systems, Inc. | Method and system for test reduction and analysis |
US8453125B2 (en) * | 2010-12-13 | 2013-05-28 | International Business Machines Corporation | Generating inputs for client-server programs for fault-detection and localization |
JP5767471B2 (ja) * | 2010-12-24 | 2015-08-19 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | テストの網羅性を評価する装置及び方法 |
US8869113B2 (en) * | 2011-01-20 | 2014-10-21 | Fujitsu Limited | Software architecture for validating C++ programs using symbolic execution |
US9262307B2 (en) * | 2011-10-05 | 2016-02-16 | International Business Machines Corporation | Modeling test space for system behavior with optional variable combinations |
JP5900197B2 (ja) * | 2012-01-31 | 2016-04-06 | 富士通株式会社 | 経路条件選択装置、該プログラム、及び該方法 |
US9058427B2 (en) * | 2012-07-16 | 2015-06-16 | Fujitsu Limited | Iterative generation of symbolic test drivers for object-oriented languages |
JP5900212B2 (ja) * | 2012-07-18 | 2016-04-06 | 富士通株式会社 | テストデータ生成装置、該プログラム、及び該方法 |
US8850270B2 (en) | 2012-07-19 | 2014-09-30 | International Business Machines Corporation | Test selection |
US8949795B2 (en) * | 2012-08-23 | 2015-02-03 | International Business Machines Corporation | Generating test cases for covering enterprise rules and predicates |
US8856751B2 (en) * | 2012-09-20 | 2014-10-07 | Fujitsu Limited | Abstract symbolic execution for scaling symbolic execution generation and automatic test generation |
US9274933B2 (en) | 2012-11-14 | 2016-03-01 | International Business Machines Corporation | Pretest setup planning |
US8887112B2 (en) | 2012-11-14 | 2014-11-11 | International Business Machines Corporation | Test validation planning |
JP6003699B2 (ja) * | 2013-02-08 | 2016-10-05 | 富士通株式会社 | テストデータ生成プログラム、方法及び装置 |
US9292419B1 (en) * | 2013-06-04 | 2016-03-22 | The Mathworks, Inc. | Code coverage and confidence determination |
CN104252408B (zh) * | 2013-06-26 | 2017-04-12 | 国际商业机器公司 | 提供测试用例的方法和装置 |
US9830253B2 (en) | 2013-09-27 | 2017-11-28 | International Business Machines Corporation | Eliminating redundant interactions when testing computer software applications |
US9367434B2 (en) * | 2013-10-02 | 2016-06-14 | Accenture Global Services Limited | Testing framework for policy-based workflows |
US9983977B2 (en) * | 2014-02-26 | 2018-05-29 | Western Michigan University Research Foundation | Apparatus and method for testing computer program implementation against a design model |
US20160019135A1 (en) * | 2014-07-21 | 2016-01-21 | Simula Innovation As | Optimal test suite reduction as a network maximum flow |
US10387585B2 (en) * | 2014-10-30 | 2019-08-20 | The Mathworks, Inc. | System and method for performing model verification |
EP3238381A1 (en) * | 2014-12-23 | 2017-11-01 | Entit Software LLC | Load testing |
IN2015DE01188A (ja) * | 2015-04-29 | 2015-06-05 | Hcl Technologies Ltd | |
US10330728B2 (en) * | 2015-05-26 | 2019-06-25 | Samsung Electronics Co., Ltd. | Method and apparatus for obtaining a maximally compressed verification test set |
US9830255B2 (en) | 2015-12-03 | 2017-11-28 | Wipro Limited | System and method for optimizing test suite comprising plurality of test cases |
CN106294163A (zh) * | 2016-08-12 | 2017-01-04 | 北京航空航天大学 | 一种轻量级的代码分支覆盖率检测方法 |
US10474563B1 (en) * | 2016-12-28 | 2019-11-12 | Wells Fargo Bank, N.A. | System testing from production transactions |
US20180217921A1 (en) * | 2017-02-02 | 2018-08-02 | Cognizant Technology Solutions India Pvt. Ltd. | System and method for generating and executing automated test cases |
US10394697B2 (en) * | 2017-05-15 | 2019-08-27 | International Business Machines Corporation | Focus area integration test heuristics |
US10592405B2 (en) | 2017-10-03 | 2020-03-17 | International Business Machines Corporation | Visualization of vulnerabilities detected by static application testing |
US11061811B2 (en) | 2017-12-15 | 2021-07-13 | International Business Machines Corporation | Optimizing software testing via group testing |
US10705810B2 (en) * | 2018-11-30 | 2020-07-07 | Sap Se | Automatic code generation |
US11099975B2 (en) | 2019-01-24 | 2021-08-24 | International Business Machines Corporation | Test space analysis across multiple combinatoric models |
US11010282B2 (en) | 2019-01-24 | 2021-05-18 | International Business Machines Corporation | Fault detection and localization using combinatorial test design techniques while adhering to architectural restrictions |
US11010285B2 (en) | 2019-01-24 | 2021-05-18 | International Business Machines Corporation | Fault detection and localization to generate failing test cases using combinatorial test design techniques |
US11106567B2 (en) | 2019-01-24 | 2021-08-31 | International Business Machines Corporation | Combinatoric set completion through unique test case generation |
US11263116B2 (en) | 2019-01-24 | 2022-03-01 | International Business Machines Corporation | Champion test case generation |
US11422926B2 (en) * | 2019-04-16 | 2022-08-23 | Red Hat, Inc. | Managing test coverage for a software application |
US11036624B2 (en) | 2019-06-13 | 2021-06-15 | International Business Machines Corporation | Self healing software utilizing regression test fingerprints |
US10970195B2 (en) | 2019-06-13 | 2021-04-06 | International Business Machines Corporation | Reduction of test infrastructure |
US10963366B2 (en) | 2019-06-13 | 2021-03-30 | International Business Machines Corporation | Regression test fingerprints based on breakpoint values |
US10970197B2 (en) | 2019-06-13 | 2021-04-06 | International Business Machines Corporation | Breakpoint value-based version control |
US11232020B2 (en) | 2019-06-13 | 2022-01-25 | International Business Machines Corporation | Fault detection using breakpoint value-based fingerprints of failing regression test cases |
US11422924B2 (en) | 2019-06-13 | 2022-08-23 | International Business Machines Corporation | Customizable test set selection using code flow trees |
US10990510B2 (en) | 2019-06-13 | 2021-04-27 | International Business Machines Corporation | Associating attribute seeds of regression test cases with breakpoint value-based fingerprints |
US11074164B1 (en) * | 2020-03-06 | 2021-07-27 | Bank Of America Corporation | Real-time regression test generator |
US11288153B2 (en) | 2020-06-18 | 2022-03-29 | Bank Of America Corporation | Self-healing computing device |
Family Cites Families (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5317740A (en) * | 1991-03-07 | 1994-05-31 | Digital Equipment Corporation | Alternate and iterative analysis of computer programs for locating translatable code by resolving callbacks and other conflicting mutual dependencies |
JPH07219819A (ja) * | 1993-12-10 | 1995-08-18 | Nec Corp | プログラム評価データ作成方法 |
JPH09128266A (ja) * | 1995-10-31 | 1997-05-16 | Fujitsu Ltd | 原始プログラム経路検索装置及びその検索方法 |
US5761408A (en) * | 1996-01-16 | 1998-06-02 | Parasoft Corporation | Method and system for generating a computer program test suite using dynamic symbolic execution |
JP3418544B2 (ja) * | 1998-03-24 | 2003-06-23 | 日立ソフトウエアエンジニアリング株式会社 | プログラムのテストデータ自動生成装置 |
US6675382B1 (en) | 1999-06-14 | 2004-01-06 | Sun Microsystems, Inc. | Software packaging and distribution system |
US6938186B2 (en) | 2002-05-28 | 2005-08-30 | Microsoft Corporation | System and method for performing a path-sensitive verification on a program |
US7168009B2 (en) | 2003-09-24 | 2007-01-23 | International Business Machines Corporation | Method and system for identifying errors in computer software |
US7584455B2 (en) | 2003-10-23 | 2009-09-01 | Microsoft Corporation | Predicate-based test coverage and generation |
US7743350B2 (en) * | 2004-05-21 | 2010-06-22 | Fujitsu Limited | Verifying one or more properties of a design using SAT-based BMC |
US7661097B2 (en) | 2005-04-05 | 2010-02-09 | Cisco Technology, Inc. | Method and system for analyzing source code |
US20060247907A1 (en) | 2005-04-29 | 2006-11-02 | Microsoft Corporation | Deciding assertions in programs with references |
US20060253739A1 (en) | 2005-05-03 | 2006-11-09 | Godefroid Patrice I | Method and apparatus for performing unit testing of software modules with use of directed automated random testing |
US8046746B2 (en) * | 2005-08-04 | 2011-10-25 | Microsoft Corporation | Symbolic execution of object oriented programs with axiomatic summaries |
US7844951B2 (en) | 2005-12-30 | 2010-11-30 | Microsoft Corporation | Specification generation from implementations |
US8209667B2 (en) | 2006-01-11 | 2012-06-26 | International Business Machines Corporation | Software verification using hybrid explicit and symbolic model checking |
US7861226B1 (en) * | 2006-03-16 | 2010-12-28 | Avaya Inc. | Constraint solver to code based test data generation for improving software reliability and security |
US7926039B2 (en) * | 2006-03-28 | 2011-04-12 | Nec Laboratories America, Inc. | Reachability analysis for program verification |
US8924938B2 (en) * | 2006-09-28 | 2014-12-30 | Nec Laboratories America, Inc. | Software testing using machine learning |
US7681180B2 (en) | 2007-06-06 | 2010-03-16 | Microsoft Corporation | Parameterized test driven development |
US8185881B2 (en) | 2007-06-19 | 2012-05-22 | International Business Machines Corporation | Procedure summaries for pointer analysis |
US7873945B2 (en) | 2007-06-29 | 2011-01-18 | Microsoft Corporation | Automatically generating test cases for binary code |
US20090089759A1 (en) | 2007-10-02 | 2009-04-02 | Fujitsu Limited | System and Method for Providing Symbolic Execution Engine for Validating Web Applications |
US8302080B2 (en) | 2007-11-08 | 2012-10-30 | Ntt Docomo, Inc. | Automated test input generation for web applications |
US20090228871A1 (en) | 2008-03-10 | 2009-09-10 | Microsoft Corporation | Managing generation of security tests |
US8271953B2 (en) * | 2008-03-12 | 2012-09-18 | Fujitsu Limited | System and method for providing middleware for capture of global requirements and validation for web applications |
US8549486B2 (en) | 2008-04-21 | 2013-10-01 | Microsoft Corporation | Active property checking |
US8402440B2 (en) * | 2008-07-07 | 2013-03-19 | Nec Laboratories America, Inc. | Program verification through symbolic enumeration of control path programs |
US8387021B2 (en) * | 2008-09-26 | 2013-02-26 | Microsoft Corporation | Symbolic runtime checking of quantified contracts |
US8286140B2 (en) * | 2008-10-10 | 2012-10-09 | American Express Travel Related Services Company, Inc. | System, computer program, and method for a static code coverage analyzer for computer programs |
US8359576B2 (en) | 2008-11-14 | 2013-01-22 | Fujitsu Limited | Using symbolic execution to check global temporal requirements in an application |
US20100223599A1 (en) * | 2009-02-27 | 2010-09-02 | Fujitsu Limited | Efficient symbolic execution of software using static analysis |
US8468499B2 (en) * | 2009-03-16 | 2013-06-18 | Ntt Docomo, Inc. | Directed testing for property violations |
US8504997B2 (en) * | 2009-03-19 | 2013-08-06 | Fujitsu Limited | Environment data refinement based on static analysis and symbolic execution |
US8387016B2 (en) * | 2009-05-01 | 2013-02-26 | Microsoft Corporation | Whitebox trace fuzzing |
US20100287534A1 (en) * | 2009-05-07 | 2010-11-11 | Microsoft Corporation | Test case analysis and clustering |
US20100313187A1 (en) | 2009-06-05 | 2010-12-09 | Hee Beng Kuan Tan | Method and system for detecting infeasible paths |
US20110016456A1 (en) * | 2009-07-14 | 2011-01-20 | International Business Machines Corporation | Generating additional user inputs for fault detection and localization in dynamic software applications |
US8479170B2 (en) * | 2010-05-12 | 2013-07-02 | Fujitsu Limited | Generating software application user-input data through analysis of client-tier source code |
US20120017119A1 (en) * | 2010-07-16 | 2012-01-19 | Fujitsu Limited | Solving Hybrid Constraints to Generate Test Cases for Validating a Software Module |
US20120017200A1 (en) * | 2010-07-16 | 2012-01-19 | Fujitsu Limited | Solving Hybrid Constraints to Validate a Security Software Module for Detecting Injection Attacks |
US8402319B2 (en) * | 2010-09-30 | 2013-03-19 | Fujitsu Limited | Method and system to extract a navigation model for analysis of a web application |
US8914775B2 (en) * | 2010-10-29 | 2014-12-16 | Fujitsu Limited | Dynamic and intelligent partial computation management for efficient parallelization of software analysis in a distributed computing environment |
US8539500B2 (en) * | 2010-10-29 | 2013-09-17 | Fujitsu Limited | Efficient partial execution for the parallelization of software analysis in a distributed computing environment |
US8763001B2 (en) * | 2010-10-29 | 2014-06-24 | Fujitsu Limited | Technique for efficient parallelization of software analysis in a distributed computing environment through intelligent dynamic load balancing |
US8789054B2 (en) * | 2010-10-29 | 2014-07-22 | Fujitsu Limited | Scheduling policy for efficient parallelization of software analysis in a distributed computing environment |
US20120192162A1 (en) * | 2011-01-20 | 2012-07-26 | Fujitsu Limited | Optimizing Handlers for Application-Specific Operations for Validating C++ Programs Using Symbolic Execution |
US8869113B2 (en) * | 2011-01-20 | 2014-10-21 | Fujitsu Limited | Software architecture for validating C++ programs using symbolic execution |
US8943487B2 (en) * | 2011-01-20 | 2015-01-27 | Fujitsu Limited | Optimizing libraries for validating C++ programs using symbolic execution |
US8595701B2 (en) * | 2011-02-04 | 2013-11-26 | Fujitsu Limited | Symbolic execution and test generation for GPU programs |
US8645924B2 (en) * | 2011-06-06 | 2014-02-04 | Fujitsu Limited | Lossless path reduction for efficient symbolic execution and automatic test generation |
-
2010
- 2010-05-24 US US12/785,756 patent/US8479171B2/en active Active
-
2011
- 2011-05-23 JP JP2011115090A patent/JP5652326B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2011248887A (ja) | 2011-12-08 |
US8479171B2 (en) | 2013-07-02 |
US20110289488A1 (en) | 2011-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5652326B2 (ja) | ソフトウェアモジュールのテスト方法及びシステム | |
JP5786513B2 (ja) | ソフトウェアモジュールを検査するためのシステム、方法及び記憶媒体 | |
JP5786512B2 (ja) | インジェクション攻撃を検出するためのセキュリティ・ソフトウェア・モジュールを検証するためのハイブリッド制約条件の求解 | |
JP5786511B2 (ja) | ソフトウェア・モジュールの仕様要件を検証するためのハイブリッド制約条件の求解 | |
JP5803690B2 (ja) | 記号的実行を用いてc++プログラムを検証するソフトウェアアーキテクチャ | |
JP5821651B2 (ja) | 記号的実行を用いてc++プログラムを検証するための方法及びシステム | |
US8543983B2 (en) | Creating hierarchical message sequence charts for visualizing user-interactive applications | |
JP5742521B2 (ja) | ウェブアプリケーションのフォームの自動テストのための方法及びプログラム | |
EP2485149A1 (en) | Symbolic execution and test generation for programs to be run on a graphic processor | |
JP5682489B2 (ja) | ソフトウェア・フレームワークを比較するためのシステム及び方法 | |
EP2503464A1 (en) | Optimizing handlers for application-specific operations for validating C++ programs using symbolic execution | |
JP5691840B2 (ja) | コンピュータ装置により使用される方法、システム、記憶媒体及びコンピュータプログラム | |
US20160335171A1 (en) | Test automation modeling | |
JP2012018675A (ja) | アプリケーション分析用のデータベースモデルを生成するシステム及び方法 | |
US11334349B2 (en) | Removing feature flag-related codebase from applications | |
JP2010267265A (ja) | イベント駆動型アプリケーションの分析のためのドライバの生成 | |
JP5918102B2 (ja) | 解析システム、解析装置、解析方法及び解析プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140204 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140929 |
|
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: 20141021 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141103 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5652326 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |