JP6559376B2 - テストケース選択装置およびテストケース選択プログラム - Google Patents
テストケース選択装置およびテストケース選択プログラム Download PDFInfo
- Publication number
- JP6559376B2 JP6559376B2 JP2019500103A JP2019500103A JP6559376B2 JP 6559376 B2 JP6559376 B2 JP 6559376B2 JP 2019500103 A JP2019500103 A JP 2019500103A JP 2019500103 A JP2019500103 A JP 2019500103A JP 6559376 B2 JP6559376 B2 JP 6559376B2
- Authority
- JP
- Japan
- Prior art keywords
- change
- function
- test case
- target
- 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
Links
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
-
- 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
-
- 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/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- 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/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- 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/368—Test management for test version control, e.g. updating test cases to a new software version
-
- 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/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3692—Test management for test results analysis
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)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Description
プログラムに新たな不具合が生じていないかを確認する方法として、変更前のプログラムに対して実施された全てのテストケースを変更後のプログラムに対して実施する方法がある。
しかし、ソフトウェアの開発規模が大きければテストケースの数が多いため全てのテストケースを実施するための工数が膨大になってしまう。また、変更された仕様に基づいて各テストケースにおける出力期待値は変更された仕様に基づいて人手で再設定する必要があるため、各テストケースにおける出力期待値を再設定するための工数も膨大になってしまう。
そのため、プログラムの変更に伴う不具合が発見される可能性があるテストケース、すなわち、プログラムの変更前後で実行結果が変わる可能性があるテストケースを選択し、選択されたテストケースだけを実施する方法が用いられることがある。
特許文献2には、変更前後のプログラムの各々に対してシンボリック実行を行って出力値域の変化を抽出し、値域が変化する出力変数が使用されるテストケースを選択する技術が開示されている。
変更前プログラムに含まれる変更前対象関数と変更後プログラムに含まれる関数であり前記変更前対象関数に対応する関数であり前記変更前対象関数と一致しない関数である変更後対象関数との組である対象組を1つ以上示す対象組リストから、前記変更前対象関数と前記変更後対象関数との両方に同じ入力が与えられた場合に前記変更後対象関数の出力が前記変更前対象関数の出力と一致するという条件を満たさない対象組である不等価組を抽出する不等価組抽出部と、
前記複数のテストケースから、前記不等価組に含まれる変更前対象関数が呼び出されるテストケースを前記重要テストケースとして選択するテストケース選択部とを備える。
変更前プログラムに対して実施された複数のテストケースから変更後プログラムに対して実施すべきテストケースを選択する形態について、図1から図18に基づいて説明する。
図1に基づいて、テストケース選択装置100の構成を説明する。
テストケース選択装置100は、プロセッサ901とメモリ902と補助記憶装置903といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
メモリ902は揮発性の記憶装置である。メモリ902は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ902はRAM(Random Access Memory)である。メモリ902に記憶されたデータは必要に応じて補助記憶装置903に保存される。
補助記憶装置903は不揮発性の記憶装置である。例えば、補助記憶装置903は、ROM(Read Only Memory)、HDD(Hard Disk Drive)、またはフラッシュメモリである。補助記憶装置903に記憶されたデータは必要に応じてメモリ902にロードされる。
さらに、補助記憶装置903にはOS(Operating System)が記憶されている。OSの少なくとも一部は、メモリ902にロードされて、プロセッサ901によって実行される。
つまり、プロセッサ901は、OSを実行しながら、テストケース選択プログラムを実行する。
テストケース選択プログラムを実行して得られるデータは、メモリ902、補助記憶装置903、プロセッサ901内のレジスタまたはプロセッサ901内のキャッシュメモリといった記憶装置に記憶される。
テストケース選択装置100は、変更前プログラムに対して実施された複数のテストケースから、変更後プログラムに対して実施すべきテストケースを選択する。
変更前プログラムは、1つ以上の関数を含んだプログラムである。
変更前プログラムに含まれる1つ以上の関数のそれぞれを変更前関数という。
変更後プログラムは、変更が加えられたプログラムである。
変更後プログラムに含まれる1つ以上の関数のそれぞれを変更後関数という。
テストケースは、プログラムに対するテストの手順を示すデータである。
変更後プログラムに対して実施すべきテストケースを重要テストケースという。
具体的には、重要テストケースは、プログラムの変更前後で実行結果が変化する可能性があるテストケースである。つまり、重要テストケースは、変更後プログラムに対して実施されたときに得られる結果が変更前プログラムに対して実施されたときに得られる結果と異なる可能性があるテストケースである。
ステップS110において、対象組リスト生成部110は対象組リストを生成する。
対象組リストは、対象組を1つ以上示すリストである。
対象組は、変更前対象関数と変更後対象関数との組である。
変更前対象関数は、変更後対象関数に対応し、且つ、変更後対象関数と一致しない変更前関数である。
変更後対象関数は、変更前対象関数に対応し、且つ、変更前対象関数と一致しない変更後関数である。
対象組リスト生成処理(S110)の詳細については後述する。
不等価組は、変更前対象関数と変更後対象関数との両方に同じ入力が与えられた場合に変更後対象関数の出力が変更前対象関数の出力と一致するという条件を満たさない対象組である。
不等価組抽出処理(S120)の詳細については後述する。
呼び出しリストは、変更前プログラムが実行された場合に呼び出される変更前関数をテストケース毎に示すリストである。
呼び出しリスト生成処理(S130)の詳細については後述する。
具体的には、テストケース選択部140は、複数のテストケースから、不等価組に含まれる変更前対象関数が呼び出されるテストケースを重要テストケースとして選択する。
テストケース選択処理(S140)の詳細については後述する。
変更前プログラム200は、4つの変更前関数(f1、f2、f3、f4)を含んでいる。f2、f3およびf4はf1から呼び出される関数である。
変更後プログラム210は、4つの変更後関数(f1’、f2’、f4’、f5’)を含んでいる。f2’およびf4’はf1’から呼び出される関数であり、f5’はf2’から呼び出される関数である。
以下、変更前プログラム200および変更後プログラム210を例にして説明を行う。
ステップS111において、対象組リスト生成部110は、変更後プログラムに含まれる1つ以上の変更後関数の中から、未選択の変更後関数を1つ選択する。
具体的には、対象組リスト生成部110は、変更後関数リストから、未選択の変更後関数を1つ選択する。
変更後関数リストは、変更後プログラムに含まれる1つ以上の変更後関数を示すリストであり、記憶部191に記憶されている。
変更後関数リスト220は、変更後プログラム210に含まれる4つの変更後関数(f1’、f2’、f4’、f5’)のそれぞれの関数名を含んでいる。
例えば、対象組リスト生成部110は、変更後関数リスト220に含まれる関数名の順番、つまり、f1’、f2’、f4’、f5’の順番で変更後関数を選択する。
ステップS112において、対象組リスト生成部110は、選択された変更後関数に対応する変更前関数が有るか判定する。
具体的には、対象組リスト生成部110は、選択された変更後関数が関数対応表において変更前関数に対応付けられているか判定する。選択された変更後関数が関数対応表において変更前関数に対応付けられている場合、選択された変更後関数に対応する変更前関数が有る。
関数対応表は、変更後関数と変更後関数に対応する変更前関数との組を示す表であり、記憶部191に記憶されている。
選択された変更後関数に対応する変更前関数が有る場合、処理はステップS113に進む。
選択された変更後関数に対応する変更前関数が無い場合、処理はステップS115に進む。
関数対応表230において、ハイフンは対応する関数が無いことを意味する。
選択された変更後関数がf1’である場合について説明する。関数対応表230において、選択された変更後関数f1’は変更前関数f1に対応付けられている。したがって、対象組リスト生成部110は、選択された変更後関数f1’に対応する変更前関数f1が有ると判定する。
選択された変更後関数がf5’である場合について説明する。関数対応表230において、選択された変更後関数f5’は変更前関数に対応付けられていない。したがって、対象組リスト生成部110は、選択された変更後関数f5’に対応する変更前関数が無いと判定する。
ステップS113において、対象組リスト生成部110は、選択された変更後関数のソースコードを対応する変更前関数のソースコードと比較することによって、選択された変更後関数のソースコードが対応する変更前関数のソースコードと一致するか判定する。つまり、対象組リスト生成部110は、選択された変更後関数が対応する変更前関数とテキストレベルで完全に同一であるか判定する。
それぞれの変更前関数のソースコードおよびそれぞれの変更後関数のソースコードは、記憶部191に記憶されている。
選択された変更後関数のソースコードが対応する変更前関数のソースコードと一致する場合、処理はステップS115に進む。
選択された変更後関数のソースコードが対応する変更前関数のソースコードと一致しない場合、処理はステップS114に進む。
未選択の変更後関数が有る場合、処理はステップS111に進む。
未選択の変更後関数が無い場合、対象組リスト生成処理(S110)は終了する。
対象組リスト240は、(f1,f1’)と(f2,f2’)と(f4,f4’)との3つの対象組を示している。
対象組(f1,f1’)において、変更前関数f1が変更前対象関数であり、変更後関数f1’が変更後対象関数である。
対象組(f2,f2’)において、変更前関数f2が変更前対象関数であり、変更後関数f2’が変更後対象関数である。
対象組(f4,f4’)において、変更前関数f4が変更前対象関数であり、変更後関数f4’が変更後対象関数である。
ステップS121において、不等価組抽出部120は、対象組リストから、未選択の対象組を1つ選択する。
例えば、不等価組抽出部120は、図7の対象組リスト240に示される対象組の順番、つまり、(f1,f1’)、(f2,f2’)、(f4,f4’)の順番で対象組を選択する。
ステップS122からステップS127までの説明において、選択された対象組は、ステップS121で選択された対象組を意味する。
変更前論理式は、変更前対象関数において成り立つ論理式である。言い換えると、変更前論理式は、変更前対象関数の実行後に成り立つ条件を表す論理式である。
まず、不等価組抽出部120は、変更前対象関数のソースコードに含まれるステートメント(命令)毎に変換ルールに従ってステートメントをステートメント論理式に変換する。これにより、複数のステートメント論理式が得られる。変換ルールは、ステートメントをステートメント論理式に変換するためのルールである。例えば、変換ルールは、ステートメントのパターン毎にステートメント論理式のパターンを示す。ステートメント論理式は、ステートメントにおいて成り立つ論理式である。
そして、不等価組抽出部120は、複数のステートメント論理式を連結ルールに従って連結する。これにより、変更前論理式が得られる。連結ルールは、複数のステートメント論理式を連結するためのルールである。例えば、連結ルールは、ステートメント論理式のパターンの組み合わせ毎に論理式のパターンを示す。
(A)関数の実行によって変数xに値cが代入される。この関数の実行後に成り立つ条件は、x=cである。
(B)関数の実行によってステートメントS1とステートメントS2とが順に実行される。この関数の実行後に成り立つ条件は、ステートメントS1の実行後に成り立つ条件の下で、ステートメントS2を実行した場合に成り立つ条件である。
(C)関数の実行によって条件Bが成り立つ場合にステートメントS1が実行され、条件Bが成り立たない場合にステートメントS2が実行される。この関数の実行後に成り立つ条件は、第1論理積と第2論理積との論理和である。第1論理積は、ステートメントS1の実行後に成り立つ条件と条件Bとの論理積である。第2論理積は、ステートメントS2の実行後に成り立つ条件と条件Bの否定との論理積である。
(a)呼び出し先関数は、プログラムの変更に伴って削除または追加された関数である。つまり、呼び出し先関数は変更前プログラムに含まれるが、呼び出し先関数に対応する関数は変更後プログラムに含まれない。または、呼び出し先関数に対応する関数は変更前プログラムに含まれないが、呼び出し先関数は変更後プログラムに含まれる。これらの場合、呼び出し先関数を呼び出し元関数の中に展開して得られる関数の論理式が生成される。
例えば、図3において、関数f1の中で呼び出される関数f3は変更前プログラム200に含まれるが、関数f3に対応する関数は変更後プログラム210に含まれない。そのため、関数f1において関数f3を呼び出すステートメントが関数f3の中のステートメントに置き換えられた後、関数f1の論理式が生成される。
図10に示す関数gでは、図9に示す関数fが呼び出される。関数fは、プログラムの変更に伴って削除または追加された関数である。この場合、関数gの論理式は式(2)で表される。図10は、C言語で記述された関数gのソースコードを示している。
例えば、図3において、関数f1の中で呼び出される関数f2および関数f4は変更前プログラム200に含まれる。そして、関数f2に対応する関数f2’および関数f4に対応する関数f4’が変更後プログラム210に含まれる。そのため、関数f1において関数f2を呼び出すステートメントおよび関数f4を呼び出すステートメントが関数f2の中のステートメントおよび関数f4の中のステートメントに置き換えられずに、関数f1の論理式が生成される。そして、「関数f2が関数f2’と等価であり、関数f4が関数f4’と等価であるならば、関数f1は関数f1’と等価である」という条件が成り立つ。
図10に示す関数gでは、図9に示す関数fが呼び出される。関数fは、プログラムの変更に伴って削除または追加された関数ではない。この場合、関数gの論理式は式(3)で表される。
ステップS123において、不等価組抽出部120は、選択された対象組に示される変更後対象関数の論理式を生成する。変更後対象関数の論理式を変更後論理式という。
変更後論理式は、変更後対象関数において成り立つ論理式である。言い換えると、変更後論理式は、変更後対象関数の実行後に成り立つ条件を表す論理式である。
変更後論理式を生成する方法は、変更前論理式を生成する方法と同様である(ステップS121参照)。
具体的には、不等価組抽出部120は以下のように判定を行う。
等価性論理式は、変更前対象関数と変更後対象関数との等価性を表す論理式である。
但し、関数Fの論理式をP1とし、関数Fの入力変数をi1とし、関数Fの出力変数をo1とする。また、関数Gの論理式をP2とし、関数Gの入力変数をi2とし、関数Gの出力変数をo2とする。
したがって、式(4)の等価性論理式が恒真であるならば、関数Fは関数Gと等価である。また、式(4)の等価性論理式が恒真でないならば、関数Fは関数Gと不等価である。
等価性論理式が恒真であるか否かは、命題論理式の充足可能性判定問題に帰着され、SATソルバと呼ばれるツールを用いることによって判定することができる。SATはSatisfiability Problemの略称である。
ステップS124で生成された等価性論理式が恒真である場合、処理はステップS126に進む。
ステップS124で生成された等価性論理式が恒真でない場合、処理はステップS127に進む。
等価性ファイルは、それぞれの対象組が等価性組であるかを示す。
未選択の対象組が有る場合、処理はステップS121に進む。
未選択の対象組が無い場合、不等価組抽出処理(S120)は終了する。
等価性リスト250において、対象組(f1,f1’)および対象組(f2,f2’)は等価組であり、対象組(f4,f4’)は不等価組である。
ステップS131において、呼び出しリスト生成部130は、それぞれの変更前関数用の呼び出しフラグを変更前プログラムに追加する。
呼び出しフラグは、変更前関数が呼び出されたときに更新されるフラグである。
フラグ更新命令は、呼び出しフラグを更新する命令である。
変更前プログラム260は、エントリ関数mainを除いて3つの変更前関数(sub1、sub2、sub3)を含んでいる。
変更前プログラム261において、「int g1,g2,g3;」はg1、g2およびg3を大域変数として宣言する宣言文である。g1はsub1用の呼び出しフラグであり、g2はsub2用の呼び出しフラグであり、g3はsub3用の呼び出しフラグである。それぞれの呼び出しフラグの初期値は0である。g1++、g2++およびg3++は、フラグ更新命令である。sub1が呼び出される度にフラグ更新命令(g1++)によってg1に1が足される。sub2が呼び出される度にフラグ更新命令(g2++)によってg2に1が足される。sub3が呼び出される度にフラグ更新命令(g3++)によってg3に1が足される。
例えば、変更前プログラム261が実行された結果、関数sub1が1回も呼び出されなかった場合、呼び出しフラグg1の値は更新されず0のままである。つまり、呼び出しフラグg1の値が0であれば、呼び出しフラグg1に対応する変更前関数sub1は呼び出されていないことになる。
例えば、変更前プログラム261が実行された結果、関数sub1がN回呼び出された場合、呼び出しフラグg1の値はNに更新される。つまり、呼び出しフラグg1の値がNであれば、呼び出しフラグg1に対応する変更前関数sub1はN回呼び出されたことになる。
そして、呼び出しリスト生成部130は、更新された呼び出しフラグに対応する変更前関数を特定する。
具体的には、呼び出しリスト生成部130は、特定された変更前関数の関数名をテストケースの識別子に対応付けて呼び出しリストに登録する。
未選択のテストケースが有る場合、処理はステップS133に進む。
未選択のテストケースが無い場合、呼び出しリスト生成処理(S130)は終了する。
呼び出しリスト270は、変更前プログラムが実行された場合に呼び出される変数前関数をテストケース毎に以下にように示している。
テストケース(1)が実施された場合、2つの変更前関数(f1、f2)が呼び出される。
テストケース(2)が実施された場合、2つの変更前関数(f1、f4)が呼び出される。
テストケース(3)が実施された場合、2つの変更前関数(f1、f2、f3)が呼び出される。
テストケース(4)が実施された場合、2つの変更前関数(f1、f3、f4)が呼び出される。
テストケース選択処理(S140)において、テストケース選択部140は、呼び出しリストに示される変更前関数のうち対象のテストケースに対応する変更前関数が不等価組に含まれる変更前対象関数である場合、対象のテストケースが重要テストケースであると判定する。
ステップS142およびステップS143において、選択されたテストケースは、ステップS141で選択されたテストケースを意味する。
判定処理(S142)において、テストケース選択部140は、選択されたテストケースに対応付けられた変更前関数のいずれかがいずれかの不等価組に含まれる変更前対象関数である場合に、選択されたテストケースが重要テストケースであると判定する。
変更前関数が不等価組に含まれる変更前対象関数である場合、処理はステップS1424に進む。
変更前関数が不等価組に含まれる変更前対象関数でない場合、処理はステップS1425に進む。
ステップS1424の後、判定処理(S142)は終了する。
未選択の不等価組が有る場合、処理はステップS1422に進む。
未選択の不等価組が無い場合、処理はステップS1426に進む。
未選択の変更前関数が有る場合、処理はステップS1421に進む。
未選択の変更前関数が無い場合、処理はステップS1427に進む。
ステップS1427の後、判定処理(S142)は終了する。
ステップS143において、テストケース選択部140は、選択されたテストケースを重要テストケースリストに登録する。
重要テストケースリストは、重要テストケースを示すリストである。
未選択のテストケースが有る場合、処理はステップS141に進む。
未選択のテストケースが無い場合、テストケース選択処理(S140)は終了する。
図11の等価性リスト250において、不等価組に含まれる変更前対象関数は関数f4である。
図15の呼び出しリスト270において、関数f4に対応付けられたテストケースはテストケース2およびテストケース4である。
したがって、図18の重要テストケースリスト280は、テストケース2とテストケース4とを重要テストケースとして示している。
変更前プログラムに対して実施された複数のテストケースを以下の2種類に分けることができる。
テストケース(1)は、プログラムの変更前後で機能的に変化していない等価な関数しか呼び出されないテストケース、すなわち、プログラムの変更前後で実行結果が変わらないテストケースである。
テストケース(2)は、プログラムの変更に伴って機能的に不等価となった関数が呼び出されるテストケース、すなわち、プログラムの変更前後で実行結果が変わる可能性があるテストケースである。実施の形態1における重要テストケースはテストケース(2)である。
プログラムの変更に伴って予期せぬ不具合が混入していないことを確かめるため、変更前プログラムに対して実施されたテストケースを変更後プログラムに対して実施する場合を考える。
この場合、プログラムの変更前後で出力が変化する可能性のあるテストケース、すなわち、不具合を発見する可能性のあるテストケースのみを選択することができる。選択されたテストケースのみを変更後プログラムに対して実施すれば、変更後プログラムに対して実施されるテストケースの数が削減される。
実施の形態1では、プログラムの変更前後における関数の等価性が検査される。そのため、従来手法では出力が変化すると判定される関数であっても、その関数は、プログラムの変更前後で機能的に同等であれば、出力が変化しない関数であると判定される。その結果、プログラムの変更前後で出力が変化しないテストケースを従来手法よりも多く発見し、変更後プログラムに対して実施すべきテストケースの数を従来手法よりも削減することができる。これによって、変更後プログラムに対するテストにかかるコストを削減できる。さらに、テストケース毎の出力期待値を変更後プログラムの仕様に基づいて変更する作業を削減し、変更後プログラムの開発におけるテスト工程をより効率化することが可能となる。
残りのテストケース、すなわち、プログラムの変更前後で出力が変化しないテストケースを用いることによって、以下のような効果が得られる。
変更後プログラムに対して残りのテストケースを実施することにより、プログラムの変更前後で機能が変化していない部分をテストすることができる。そして、テストケース毎の出力期待値を変更することなく、プログラムの変更前後で出力が変化していないことを確かめることが可能となる。
不等価関数において、変更前プログラムに対して実施されたテストケースでは網羅できないパスに含まれる命令を実行するためのテストケースを新たに生成することが可能となる。つまり、プログラムの変更部分を網羅的に検証するテストを実施することが可能となる。
不等価組抽出処理(S120)で説明したアルゴリズムは、関数の等価性を検査するためのアルゴリズムの一例である。つまり、2つの関数が論理的に等価であるか否かを判定することが可能であれば、等価性検査の手段は問わない。
実施の形態において、テストケース選択装置100の機能はハードウェアで実現してもよい。
図19に、テストケース選択装置100の機能がハードウェアで実現される場合の構成を示す。
テストケース選択装置100は処理回路990を備える。処理回路990はプロセッシングサーキットリともいう。
処理回路990は、対象組リスト生成部110と不等価組抽出部120と呼び出しリスト生成部130とテストケース選択部140と記憶部191とを実現する専用の電子回路である。
例えば、処理回路990は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、FPGAまたはこれらの組み合わせである。GAはGate Arrayの略称であり、ASICはApplication Specific Integrated Circuitの略称であり、FPGAはField Programmable Gate Arrayの略称である。
Claims (7)
- 変更前プログラムに対して実施された複数のテストケースから、変更後プログラムに対して実施すべきテストケースである重要テストケースを選択するテストケース選択装置であって、
前記変更前プログラムに含まれる変更前対象関数と前記変更後プログラムに含まれる関数であり前記変更前対象関数に対応する関数であり前記変更前対象関数と一致しない関数である変更後対象関数との組である対象組を1つ以上示す対象組リストから、前記変更前対象関数と前記変更後対象関数との両方に同じ入力が与えられた場合に前記変更後対象関数の出力が前記変更前対象関数の出力と一致するという条件を満たさない対象組である不等価組を抽出する不等価組抽出部と、
前記複数のテストケースから、前記不等価組に含まれる変更前対象関数が呼び出されるテストケースを前記重要テストケースとして選択するテストケース選択部と
を備えるテストケース選択装置。 - 前記テストケース選択装置は、前記対象組リストを生成する対象組リスト生成部を備え、
前記対象組リスト生成部は、
前記変更前プログラムに含まれる1つ以上の変更前関数の中に前記変更後プログラムに含まれる変更後関数に対応する変更前関数が有るか判定し、
前記1つ以上の変更前関数の中に前記変更後関数に対応する変更前関数が有る場合、前記変更後関数のソースコードを前記変更後関数に対応する変更前関数のソースコードと比較し、
前記変更後関数のソースコードが前記変更後関数に対応する変更前関数のソースコードと一致しない場合、前記変更後関数に対応する変更前関数を前記変更前対象関数として含み前記変更後関数を前記変更後対象関数として含む対象組を前記対象組リストに登録する
請求項1に記載のテストケース選択装置。 - 前記不等価組抽出部は、前記変更前対象関数において成り立つ変更前論理式を生成し、前記変更後対象関数において成り立つ変更後論理式を生成し、前記変更前論理式と前記変更後論理式とを用いて前記対象組が前記不等価組であるか判定する
請求項1に記載のテストケース選択装置。 - 前記テストケース選択部は、前記変更前プログラムが実行された場合に呼び出される変更前関数をテストケース毎に示す呼び出しリストを用いて、前記重要テストケースを選択する
請求項1に記載のテストケース選択装置。 - 前記テストケース選択部は、前記呼び出しリストに示される変更前関数のうち対象のテストケースに対応する変更前関数が前記不等価組に含まれる前記変更前対象関数である場合、前記対象のテストケースが前記重要テストケースであると判定する
請求項4に記載のテストケース選択装置。 - 前記テストケース選択装置は、前記呼び出しリストを生成する呼び出しリスト生成部を備え、
前記呼び出しリスト生成部は、
それぞれの変更前関数に呼び出しフラグを更新するフラグ更新命令を追加し、
それぞれの変更前関数に前記フラグ更新命令が追加された後の変更前プログラムをテストケース毎に実行し、
更新された呼び出しフラグに対応する変更前関数をテストケース毎に前記呼び出しリストに登録する
請求項4に記載のテストケース選択装置。 - 変更前プログラムに対して実施された複数のテストケースから、変更後プログラムに対して実施すべきテストケースである重要テストケースを選択するテストケース選択プログラムであって、
前記変更前プログラムに含まれる変更前対象関数と前記変更後プログラムに含まれる関数であり前記変更前対象関数に対応する関数であり前記変更前対象関数と一致しない関数である変更後対象関数との組である対象組を1つ以上示す対象組リストから、前記変更前対象関数と前記変更後対象関数との両方に同じ入力が与えられた場合に前記変更後対象関数の出力が前記変更前対象関数の出力と一致するという条件を満たさない対象組である不等価組を抽出する不等価組抽出処理と、
前記複数のテストケースから、前記不等価組に含まれる変更前対象関数が呼び出されるテストケースを前記重要テストケースとして選択するテストケース選択処理と
をコンピュータに実行させるためのテストケース選択プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2017/005674 WO2018150507A1 (ja) | 2017-02-16 | 2017-02-16 | テストケース選択装置およびテストケース選択プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2018150507A1 JPWO2018150507A1 (ja) | 2019-06-27 |
JP6559376B2 true JP6559376B2 (ja) | 2019-08-14 |
Family
ID=63169209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019500103A Active JP6559376B2 (ja) | 2017-02-16 | 2017-02-16 | テストケース選択装置およびテストケース選択プログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US20190377667A1 (ja) |
EP (1) | EP3570172B1 (ja) |
JP (1) | JP6559376B2 (ja) |
WO (1) | WO2018150507A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114595137B (zh) * | 2020-12-03 | 2024-05-10 | 中国联合网络通信集团有限公司 | 一种测试用例获取方法和装置 |
CN113254354A (zh) * | 2021-07-02 | 2021-08-13 | 南昌航空大学 | 测试用例推荐方法、装置、可读存储介质及电子设备 |
CN113641592B (zh) * | 2021-10-15 | 2022-02-22 | 卡斯柯信号(北京)有限公司 | 测试序列的生成方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8561036B1 (en) * | 2006-02-23 | 2013-10-15 | Google Inc. | Software test case management |
JP2008003985A (ja) * | 2006-06-26 | 2008-01-10 | Dainippon Screen Mfg Co Ltd | 開発支援システム、開発支援方法および開発支援プログラム |
JP4134218B2 (ja) * | 2006-11-16 | 2008-08-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 回帰テストにおいて実施すべきテストケースの優先度を決定するための情報処理装置、方法、及びプログラム |
WO2012066635A1 (ja) * | 2010-11-16 | 2012-05-24 | 株式会社日立製作所 | テスト方法、テスト装置及びテスト実行用プログラム |
US9779009B2 (en) * | 2013-08-28 | 2017-10-03 | Hitachi, Ltd. | Source code equivalence verification device and source code equivalence verification method |
JP6135466B2 (ja) | 2013-11-06 | 2017-05-31 | 富士通株式会社 | テストケース抽出プログラム、方法及び装置 |
JP2016164727A (ja) | 2015-03-06 | 2016-09-08 | 株式会社 日立産業制御ソリューションズ | テストケース選択装置 |
-
2017
- 2017-02-16 EP EP17897128.9A patent/EP3570172B1/en active Active
- 2017-02-16 WO PCT/JP2017/005674 patent/WO2018150507A1/ja unknown
- 2017-02-16 JP JP2019500103A patent/JP6559376B2/ja active Active
- 2017-02-16 US US16/476,514 patent/US20190377667A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20190377667A1 (en) | 2019-12-12 |
JPWO2018150507A1 (ja) | 2019-06-27 |
WO2018150507A1 (ja) | 2018-08-23 |
EP3570172B1 (en) | 2021-04-07 |
EP3570172A4 (en) | 2020-02-19 |
EP3570172A1 (en) | 2019-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6627658B2 (ja) | ソフトウェアプログラムを修復する方法、記憶媒体及びシステム | |
JP6559376B2 (ja) | テストケース選択装置およびテストケース選択プログラム | |
JP2008191963A (ja) | ソースコード検証システム、ソースコード検証方法、およびソースコード検証用プログラム | |
JP2019029015A (ja) | インタラクティブなソフトウェアプログラムの修復 | |
JP6556410B2 (ja) | 等価性検証装置 | |
JP6567212B2 (ja) | 等価性検証装置および等価性検証プログラム | |
JP6789844B2 (ja) | 類似関数抽出装置および類似関数抽出プログラム | |
JP6824053B2 (ja) | 関係分析装置および関係分析プログラム | |
JP2017204201A (ja) | 情報処理装置、コンパイル方法、およびコンパイルプログラム | |
JP7384054B2 (ja) | 自動化されたソフトウェアプログラム修復 | |
JP2007041804A (ja) | プログラム生成装置、プログラム検証装置および検証プログラム | |
JP2011253253A (ja) | コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム | |
US10761962B1 (en) | Automated software program repair | |
JP2009134360A (ja) | モデル検査システム、モデル検査方法およびモデル検査用プログラム | |
JP7059827B2 (ja) | ソースコード生成装置 | |
JP6419357B2 (ja) | ソースコード比較装置およびソースコード比較プログラム | |
JPWO2019142266A1 (ja) | テストケース生成装置、テストケース生成方法およびテストケース生成プログラム | |
JP2023108555A (ja) | プログラム修正支援システム、プログラム修正支援方法 | |
JP2012059202A (ja) | テストケース生成装置、テストケース生成方法およびテストケース生成プログラム | |
JP2015069400A (ja) | ソフトウェアテストシステム | |
JPH11282722A (ja) | プログラム検証方法 | |
JP2023042058A (ja) | 情報処理装置及び情報処理方法 | |
JP2010079525A (ja) | プログラム検証支援装置、プログラム検証支援方法、及び、プログラム検証支援プログラム | |
JP2018088100A (ja) | 状態遷移編集装置および状態遷移編集プログラム | |
JP2012128752A (ja) | ソース変換方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190319 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20190319 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20190403 |
|
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: 20190618 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190716 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6559376 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |