JP5786513B2 - ソフトウェアモジュールを検査するためのシステム、方法及び記憶媒体 - Google Patents
ソフトウェアモジュールを検査するためのシステム、方法及び記憶媒体 Download PDFInfo
- Publication number
- JP5786513B2 JP5786513B2 JP2011156021A JP2011156021A JP5786513B2 JP 5786513 B2 JP5786513 B2 JP 5786513B2 JP 2011156021 A JP2011156021 A JP 2011156021A JP 2011156021 A JP2011156021 A JP 2011156021A JP 5786513 B2 JP5786513 B2 JP 5786513B2
- Authority
- JP
- Japan
- Prior art keywords
- string
- variables
- software module
- constraints
- constraint
- 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
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)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
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記載の方法。
前記第二の数値に関する制約と前記第二の文字列に関する制約は、ソフトウェアモジュールを実現するプログラミング言語と、前記ソフトウェアモジュールが実行されるランタイム環境との仕様に基づいて更に推定される、
付記3記載の方法。
全ての前記第一及び第二の数値に関する制約と全ての前記第一及び第二の文字列に関する制約とを満たす解を発見することを試みるステップは、
前記1以上の数値の変数と前記1以上の文字列の変数とについて異なる可能性のある値を繰返し試み、ある解が発見されるか、前記第一及び第二の数値に関する制約と前記第一及び第二の文字列に関する制約とが満たされないと判定されるか、又はある繰り返し回数が閾値に到達するまで、前記異なる可能性のある値が前記第一及び第二の数値に関する制約と前記第一及び第二の文字列に関する制約の全てを満たす解を生成するかを検査するステップと、
前記解が発見された場合、前記1以上の数値の変数と前記1以上の文字列の変数の値を出力するステップと、
を含む付記1記載の方法。
前記ソフトウェアモジュールは、1以上の条件分岐点と前記1以上の条件分岐点から得られる前記1以上の実行経路とを含み、
前記1以上の条件分岐点のそれぞれは、前記1以上の数値の変数と前記1以上の文字列の変数とにより特定される分岐条件に関連され、
前記ソフトウェアモジュールの実行の間、前記1以上の条件分岐点のそれぞれで、前記ソフトウェアモジュールは、前記1以上の条件分岐点に関連する分岐条件が満たされるかに依存して、前記1以上の実行経路のうちの実行経路に進む、
付記1記載の方法。
前記可能性のあるエラーについて前記ソフトウェアモジュールを検査するステップと、
前記ソフトウェアモジュールの前記1以上の数値の変数と前記1以上の文字列の変数のうちの特定の変数に適用される1以上の制約のセットを決定するステップと、それぞれの制約のセットは、前記ソフトウェアモジュールの前記1以上の実行経路のうちの特定の実行経路に対応し、前記制約が満たされた場合、前記ソフトウェアモジュールに対応する実行経路の終わりに到達させ、
前記それぞれの制約のセットを満たす1以上の解を発見するステップと、
前記解に基づいて前記ソフトウェアモジュールについて1以上のテスト入力値のセットを生成するステップと、
それぞれのテスト入力値のセットを前記ソフトウェアモジュールに適用することで、増加されるテスト範囲で前記ソフトウェアモジュールを検査するステップと、
を含む付記6記載の方法。
前記それぞれの制約のセットは、前記第一及び第二の数値に関する制約と前記第一及び第二の文字列に関する制約とに基づいて決定される、
付記7記載の方法。
前記可能性のある値について前記ソフトウェアモジュールを検査するステップは、前記ソフトウェアモジュールに記号的実行を行い、制約のセットを取得するステップを更に含む、
付記7記載の方法。
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以上の中間の文字列に変数のうちの特定の変数に適用される前記第一の文字列に関する制約とは、前記ソフトウェアモジュールの記号的実行を行うことで決定される、
付記10記載のシステム。
前記第二の数値に関する制約は、前記第一の文字列に関する制約と前記第二の演算とに基づいて推定され、
前記第二の文字列に関する制約は、前記第一の数値に関する制約と前記第一の演算とに基づいて推定される、
付記10記載のシステム。
前記第二の数値に関する制約と前記第二の文字列に関する制約は、ソフトウェアモジュールを実現するプログラミング言語と、前記ソフトウェアモジュールが実行されるランタイム環境との仕様に基づいて更に推定される、
付記12記載のシステム。
全ての前記第一及び第二の数値に関する制約と全ての前記第一及び第二の文字列に関する制約とを満たす解を発見することを試みるステップは、
前記1以上の数値の変数と前記1以上の文字列の変数とについて異なる可能性のある値を繰返し試み、ある解が発見されるか、前記第一及び第二の数値に関する制約と前記第一及び第二の文字列に関する制約とが満たされないと判定されるか、又はある繰り返し回数が閾値に到達するまで、前記異なる可能性のある値が前記第一及び第二の数値に関する制約と前記第一及び第二の文字列に関する制約の全てを満たす解を生成するかを検査するステップと、
前記解が発見された場合、前記1以上の数値の変数と前記1以上の文字列の変数の値を出力するステップと、
を含む付記10記載のシステム。
前記ソフトウェアモジュールは、1以上の条件分岐点と前記1以上の条件分岐点から得られる前記1以上の実行経路とを含み、
前記1以上の条件分岐点のそれぞれは、前記1以上の数値の変数と前記1以上の文字列の変数とにより特定される分岐条件に関連され、
前記ソフトウェアモジュールの実行の間、前記1以上の条件分岐点のそれぞれで、前記ソフトウェアモジュールは、前記1以上の条件分岐点に関連する分岐条件が満たされるかに依存して、前記1以上の実行経路のうちの実行経路に進む、
付記10記載のシステム。
前記可能性のあるエラーについて前記ソフトウェアモジュールを検査するステップは、
前記ソフトウェアモジュールの前記1以上の数値の変数と前記1以上の文字列の変数のうちの特定の変数に適用される1以上の制約のセットを決定するステップと、それぞれの制約のセットは、前記ソフトウェアモジュールの前記1以上の実行経路のうちの特定の実行経路に対応し、前記制約が満たされた場合、前記ソフトウェアモジュールに、対応する実行経路の終わりに到達させ、
前記それぞれの制約のセットを満たす1以上の解を発見するステップと、
前記解に基づいて前記ソフトウェアモジュールについて1以上のテスト入力値のセットを生成するステップと、
それぞれのテスト入力値のセットを前記ソフトウェアモジュールに適用することで、増加されるテスト範囲で前記ソフトウェアモジュールを検査するステップと、
を含む付記15記載のシステム。
前記それぞれの制約のセットは、前記第一及び第二の数値に関する制約と前記第一及び第二の文字列に関する制約とに基づいて決定される、
付記16記載のシステム。
前記可能性のある値について前記ソフトウェアモジュールを検査するステップは、前記ソフトウェアモジュールに記号的実行を行い、制約のセットを取得するステップを更に含む、
付記16記載のシステム。
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以上の中間の文字列に変数のうちの特定の変数に適用される前記第一の文字列に関する制約とは、前記ソフトウェアモジュールの記号的実行を行うことで決定される、
付記19記載のコンピュータ読み取り可能な記録媒体。
前記第二の数値に関する制約は、前記第一の文字列に関する制約と前記第二の演算とに基づいて推定され、
前記第二の文字列に関する制約は、前記第一の数値に関する制約と前記第一の演算とに基づいて推定される、
付記19記載のコンピュータ読み取り可能な記録媒体。
前記第二の数値に関する制約と前記第二の文字列に関する制約は、ソフトウェアモジュールを実現するプログラミング言語と、前記ソフトウェアモジュールが実行されるランタイム環境との仕様に基づいて更に推定される、
付記21記載のコンピュータ読み取り可能な記録媒体。
全ての前記第一及び第二の数値に関する制約と全ての前記第一及び第二の文字列に関する制約とを満たす解を発見することを試みるステップは、
前記1以上の数値の変数と前記1以上の文字列の変数とについて異なる可能性のある値を繰返し試み、ある解が発見されるか、前記第一及び第二の数値に関する制約と前記第一及び第二の文字列に関する制約とが満たされないと判定されるか、又はある繰り返し回数が閾値に到達するまで、前記異なる可能性のある値が前記第一及び第二の数値に関する制約と前記第一及び第二の文字列に関する制約の全てを満たす解を生成するかを検査するステップと、
前記解が発見された場合、前記1以上の数値の変数と前記1以上の文字列の変数の値を出力するステップと、
を含む付記19記載のコンピュータ読み取り可能な記録媒体。
前記ソフトウェアモジュールは、1以上の条件分岐点と前記1以上の条件分岐点から得られる前記1以上の実行経路とを含み、
前記1以上の条件分岐点のそれぞれは、前記1以上の数値の変数と前記1以上の文字列の変数とにより特定される分岐条件に関連され、
前記ソフトウェアモジュールの実行の間、前記1以上の条件分岐点のそれぞれで、前記ソフトウェアモジュールは、前記1以上の条件分岐点に関連する分岐条件が満たされるかに依存して、前記1以上の実行経路のうちの実行経路に進む、
付記19記載のコンピュータ読み取り可能な記録媒体。
前記可能性のあるエラーについて前記ソフトウェアモジュールを検査するステップと、
前記ソフトウェアモジュールの前記1以上の数値の変数と前記1以上の文字列の変数のうちの特定の変数に適用される1以上の制約のセットを決定するステップと、それぞれの制約のセットは、前記ソフトウェアモジュールの前記1以上の実行経路のうちの特定の実行経路に対応し、前記制約が満たされた場合、前記ソフトウェアモジュールに対応する実行経路の終わりに到達させ、
前記それぞれの制約のセットを満たす1以上の解を発見するステップと、
前記解に基づいて前記ソフトウェアモジュールについて1以上のテスト入力値のセットを生成するステップと、
それぞれのテスト入力値のセットを前記ソフトウェアモジュールに適用することで、増加されるテスト範囲で前記ソフトウェアモジュールを検査するステップと、
を含む付記24記載のコンピュータ読み取り可能な記録媒体。
前記それぞれの制約のセットは、前記第一及び第二の数値に関する制約と前記第一及び第二の文字列に関する制約とに基づいて決定される、
付記25記載のコンピュータ読み取り可能な記録媒体。
前記可能性のある値について前記ソフトウェアモジュールを検査するステップは、前記ソフトウェアモジュールに記号的実行を行い、制約のセットを取得するステップを更に含む、
付記25記載のコンピュータ読み取り可能な記録媒体。
ソフトウェアモジュールに関連する1以上の第一の数値に関する制約と1以上の第一の文字列に関する制約とを分析する手段と、前記ソフトウェアモジュールは、1以上の数値の変数、1以上の文字列の変数、前記1以上の数値の変数のうちの特定の変数に適用され、数値又は文字列に関する結果を生成1以上の第一の演算、及び前記1以上の文字列の変数のうつの特定の変数に適用され、数値又は文字列の変数を生成する1以上の第二の演算を備え、前記第一の数値に関する制約は、前記1以上の数値の変数のうちの特定の変数に適用され、前記第一の文字列に関する制約は、前記1以上の数値の変数のうちの特定の変数に適用され、
前記1以上の文字列の変数のうちの特定の変数に適用される1以上の第二の数値に関する制約を推定する手段と、
前記1以上の数値の変数のうちの特定の変数に適用される1以上の第二の文字列に関する制約を推定する手段と、
前記第一の数値に関する制約と前記第二の数値に関する制約のそれぞれを式で表現する手段と、
前記第一の文字列に関する制約と前記第二の文字列に関する制約のそれぞれを有限状態マシンで表現する手段と、
全ての前記第一及び第二の数値に関する制約と全ての前記第一及び第二の文字列に関する制約とを満足する前記1以上の数値の変数と前記1以上の文字列の変数とのうちの特定の変数の1以上の値を含む解を発見することを試みることで、1以上の可能性のあるエラーについて前記ソフトウェアモジュールを検査する手段と、
を備えることを特徴とするシステム。
202:交差制約発生器
204:制約解法手段
206:記号的実行
212:ソフトウェアモジュール
214:指定された制約
Claims (20)
- 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記載の方法。 - 前記第二の数値に関する制約と前記第二の文字列に関する制約は、ソフトウェアモジュールを実現するプログラミング言語と、前記ソフトウェアモジュールが実行されるランタイム環境との仕様に基づいて更に推定される、請求項3記載の方法。
- 前記ソフトウェアモジュールを検査するステップは、
前記1以上の数値の変数と前記1以上の文字列の変数とについて異なる可能性のある値を繰返し試み、ある解が発見されるか、前記第一及び第二の数値に関する制約と前記第一及び第二の文字列に関する制約とが満たされないと判定されるか、又は前記の繰返し試みた回数が閾値に到達するまで、前記異なる可能性のある値が、前記第一及び第二の数値に関する制約と前記第一及び第二の文字列に関する制約との全てを満たす解をもたらしたか否かを検査するステップと、
前記解が発見された場合、前記1以上の数値の変数と前記1以上の文字列の変数の値を出力するステップと
を含む請求項1記載の方法。 - 前記ソフトウェアモジュールは、1以上の条件分岐点と前記1以上の条件分岐点から得られる前記1以上の実行経路とを含み、
前記1以上の条件分岐点のそれぞれは、前記1以上の数値の変数と前記1以上の文字列の変数とにより特定される分岐条件に関連付けられ、
前記ソフトウェアモジュールの実行中に、前記1以上の条件分岐点のそれぞれにおいて、前記ソフトウェアモジュールは、前記1以上の条件分岐点に関連する分岐条件が満たされるか否かに依存して、前記1以上の実行経路のうちの別の実行経路に進む、請求項1記載の方法。 - 前記1以上の可能性のあるエラーについて前記ソフトウェアモジュールを検査するステップが、
前記ソフトウェアモジュールの前記1以上の数値の変数と前記1以上の文字列の変数のうちの特定の変数に適用される1以上の制約のセットを決定するステップであって、前記制約のセットのそれぞれは、前記ソフトウェアモジュールの前記1以上の実行経路のうちの特定の実行経路に対応し、前記制約が満たされた場合、前記ソフトウェアモジュールを、対応する実行経路の終わりに到達させる、ステップと、
前記制約のセットそれぞれを満たす1以上の解を発見するステップと、
前記解に基づいて前記ソフトウェアモジュールについて1以上のテスト入力値のセットを生成するステップと、
それぞれのテスト入力値のセットを前記ソフトウェアモジュールに適用することで、増加したテスト範囲で前記ソフトウェアモジュールを検査するステップと
を含む請求項6記載の方法。 - 前記それぞれの制約のセットは、前記第一及び第二の数値に関する制約と前記第一及び第二の文字列に関する制約とに基づいて決定される、請求項7記載の方法。
- 前記1つ以上の可能性のある値について前記ソフトウェアモジュールを検査するステップが、前記ソフトウェアモジュールに記号的実行を行い、制約のセットを取得するステップを更に含む、請求項7記載の方法。
- 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以上の中間の文字列に変数のうちの特定の変数に適用される前記第一の文字列に関する制約とは、前記ソフトウェアモジュールの記号的実行を行うことで決定される、
請求項10記載のシステム。 - 前記第二の数値に関する制約は、前記第一の文字列に関する制約と前記第二の演算とに基づいて推定され、
前記第二の文字列に関する制約は、前記第一の数値に関する制約と前記第一の演算とに基づいて推定される、
請求項10記載のシステム。 - 前記第二の数値に関する制約と前記第二の文字列に関する制約は、ソフトウェアモジュールを実現するプログラミング言語と、前記ソフトウェアモジュールが実行されるランタイム環境との仕様に基づいて更に推定される、
請求項12記載のシステム。 - 前記ソフトウェアモジュールを検査するステップは、
前記1以上の数値の変数と前記1以上の文字列の変数とについて異なる可能性のある値を繰返し試み、ある解が発見されるか、前記第一及び第二の数値に関する制約と前記第一及び第二の文字列に関する制約とが満たされないと判定されるか、又は前記の繰返し試みた回数が閾値に到達するまで、前記異なる可能性のある値が、前記第一及び第二の数値に関する制約と前記第一及び第二の文字列に関する制約との全てを満たす解をもたらしたか否かを検査するステップと、
前記解が発見された場合、前記1以上の数値の変数と前記1以上の文字列の変数の値を出力するステップと
を含む請求項10記載のシステム。 - 前記ソフトウェアモジュールは、1以上の条件分岐点と前記1以上の条件分岐点から得られる前記1以上の実行経路とを含み、
前記1以上の条件分岐点のそれぞれは、前記1以上の数値の変数と前記1以上の文字列の変数とにより特定される分岐条件に関連付けられ、
前記ソフトウェアモジュールの実行中に、前記1以上の条件分岐点のそれぞれにおいて、前記ソフトウェアモジュールは、前記1以上の条件分岐点に関連する分岐条件が満たされるか否かに依存して、前記1以上の実行経路のうちの別の実行経路に進む、請求項10記載のシステム。 - 前記1以上の可能性のあるエラーについて前記ソフトウェアモジュールを検査するステップが、
前記ソフトウェアモジュールの前記1以上の数値の変数と前記1以上の文字列の変数のうちの特定の変数に適用される1以上の制約のセットを決定するステップであって、前記制約のセットのそれぞれは、前記ソフトウェアモジュールの前記1以上の実行経路のうちの特定の実行経路に対応し、前記制約が満たされた場合、前記ソフトウェアモジュールに、対応する実行経路の終わりに到達させる、ステップと、
前記制約のセットそれぞれを満たす1以上の解を発見するステップと、
前記解に基づいて前記ソフトウェアモジュールについて1以上のテスト入力値のセットを生成するステップと、
それぞれのテスト入力値のセットを前記ソフトウェアモジュールに適用することで、増加したテスト範囲で前記ソフトウェアモジュールを検査するステップと
を含む請求項15記載のシステム。 - 前記それぞれの制約のセットは、前記第一及び第二の数値に関する制約と前記第一及び第二の文字列に関する制約とに基づいて決定される、
請求項16記載のシステム。 - 前記1つ以上の可能性のある値について前記ソフトウェアモジュールを検査するステップが、前記ソフトウェアモジュールに記号的実行を行い、制約のセットを取得するステップを更に含む、請求項16記載のシステム。
- 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以上の可能性のあるエラーについて前記ソフトウェアモジュールを検査する手段と
を備えることを特徴とするシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/837,974 US20120017119A1 (en) | 2010-07-16 | 2010-07-16 | Solving Hybrid Constraints to Generate Test Cases for Validating a Software Module |
US12/837,974 | 2010-07-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012022688A JP2012022688A (ja) | 2012-02-02 |
JP5786513B2 true JP5786513B2 (ja) | 2015-09-30 |
Family
ID=44508742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011156021A Active JP5786513B2 (ja) | 2010-07-16 | 2011-07-14 | ソフトウェアモジュールを検査するためのシステム、方法及び記憶媒体 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20120017119A1 (ja) |
EP (1) | EP2420931B1 (ja) |
JP (1) | JP5786513B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210045122A (ko) * | 2019-10-16 | 2021-04-26 | 연세대학교 산학협력단 | 기호 실행을 사용하는 소프트웨어 테스트 입력 생성 장치 및 방법 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8504997B2 (en) * | 2009-03-19 | 2013-08-06 | Fujitsu Limited | Environment data refinement based on static analysis and symbolic execution |
US8479171B2 (en) * | 2010-05-24 | 2013-07-02 | Fujitsu Limited | Generating test sets using intelligent variable selection and test set compaction |
US8572574B2 (en) | 2010-07-16 | 2013-10-29 | Fujitsu Limited | Solving hybrid constraints to validate specification requirements of a software module |
US8863292B2 (en) * | 2011-12-07 | 2014-10-14 | International Business Machines Corporation | Interactive analysis of a security specification |
GB2501265A (en) | 2012-04-17 | 2013-10-23 | Ibm | Constructing instructions for a mainframe by embedding programming in job control language, and executing those instructions at the mainframe |
US9529699B2 (en) * | 2013-06-11 | 2016-12-27 | Wipro Limited | System and method for test data generation and optimization for data driven testing |
US10872187B2 (en) | 2013-10-11 | 2020-12-22 | Carnegie Mellon University | Verified runtime validation of verified cyber-physical system models |
CN104731696B (zh) * | 2013-12-19 | 2017-10-10 | 腾讯科技(深圳)有限公司 | 定位程序代码中bug的方法及相关装置 |
US9436587B2 (en) * | 2014-01-31 | 2016-09-06 | Fujitsu Limited | Test context generation |
EP3130123B1 (en) * | 2014-04-11 | 2021-07-07 | HDIV Security, S.L. | Detection of manipulation of applications |
US10423793B2 (en) * | 2014-06-19 | 2019-09-24 | Entit Software Llc | Install runtime agent for security test |
US9152543B1 (en) * | 2014-06-28 | 2015-10-06 | Fujitsu Limited | Symbolic execution with automatic abstractions |
US9892027B2 (en) * | 2014-07-09 | 2018-02-13 | Fujitsu Limited | Event-driven software testing |
US10275236B2 (en) * | 2014-09-04 | 2019-04-30 | Home Box Office, Inc. | Generating related templated files |
EP3249530A4 (en) * | 2015-01-22 | 2018-01-24 | Fujitsu Limited | Application function expansion method, application function expansion program, and application function expansion device |
US10169217B2 (en) * | 2016-04-06 | 2019-01-01 | General Electric Company | System and method for test generation from software specification models that contain nonlinear arithmetic constraints over real number ranges |
JP6954806B2 (ja) * | 2017-11-06 | 2021-10-27 | 株式会社日立社会情報サービス | 不具合検出装置、及び不具合検出方法 |
CN109739767A (zh) * | 2018-12-29 | 2019-05-10 | 北京润科通用技术有限公司 | 一种人机交互界面逻辑功能测试方法及装置 |
US11200151B1 (en) | 2021-03-12 | 2021-12-14 | Sas Institute Inc. | Graphical user interface and debugger system for selecting and testing alterations to source code for software applications |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7519952B2 (en) * | 2003-07-28 | 2009-04-14 | International Business Machines Corporation | Detecting an integrity constraint violation in a database by analyzing database schema, application and mapping and inserting a check into the database and application |
US7945898B1 (en) * | 2006-03-16 | 2011-05-17 | Avaya Inc. | Handling loops in programs and examining feasible software behavior for detecting malicious code |
US7512634B2 (en) * | 2006-06-05 | 2009-03-31 | Tarari, Inc. | Systems and methods for processing regular expressions |
US7831606B2 (en) * | 2006-12-08 | 2010-11-09 | Pandya Ashish A | Signature search architecture for programmable intelligent search memory |
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 |
US8359576B2 (en) * | 2008-11-14 | 2013-01-22 | Fujitsu Limited | Using symbolic execution to check global temporal requirements in an application |
US8515891B2 (en) * | 2010-11-19 | 2013-08-20 | Microsoft Corporation | Symbolic finite automata |
-
2010
- 2010-07-16 US US12/837,974 patent/US20120017119A1/en not_active Abandoned
-
2011
- 2011-06-27 EP EP11171490.3A patent/EP2420931B1/en active Active
- 2011-07-14 JP JP2011156021A patent/JP5786513B2/ja active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210045122A (ko) * | 2019-10-16 | 2021-04-26 | 연세대학교 산학협력단 | 기호 실행을 사용하는 소프트웨어 테스트 입력 생성 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
EP2420931A1 (en) | 2012-02-22 |
EP2420931B1 (en) | 2017-11-22 |
JP2012022688A (ja) | 2012-02-02 |
US20120017119A1 (en) | 2012-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5786513B2 (ja) | ソフトウェアモジュールを検査するためのシステム、方法及び記憶媒体 | |
JP5786512B2 (ja) | インジェクション攻撃を検出するためのセキュリティ・ソフトウェア・モジュールを検証するためのハイブリッド制約条件の求解 | |
JP5786511B2 (ja) | ソフトウェア・モジュールの仕様要件を検証するためのハイブリッド制約条件の求解 | |
JP5652326B2 (ja) | ソフトウェアモジュールのテスト方法及びシステム | |
JP5742521B2 (ja) | ウェブアプリケーションのフォームの自動テストのための方法及びプログラム | |
US8918678B2 (en) | Functional testing of a processor design | |
JP5803690B2 (ja) | 記号的実行を用いてc++プログラムを検証するソフトウェアアーキテクチャ | |
JP5821651B2 (ja) | 記号的実行を用いてc++プログラムを検証するための方法及びシステム | |
US9507943B1 (en) | Analysis tool for data security | |
US20090089759A1 (en) | System and Method for Providing Symbolic Execution Engine for Validating Web Applications | |
US20110307867A1 (en) | Creating Hierarchical Message Sequence Charts for Visualizing User-Interactive Applications | |
US20120192162A1 (en) | Optimizing Handlers for Application-Specific Operations for Validating C++ Programs Using Symbolic Execution | |
WO2012079832A1 (en) | Formal analysis of the quality and conformance of information flow downgraders | |
CN108228312B (zh) | 通过解释器执行代码的系统和方法 | |
Kim et al. | {FuzzOrigin}: Detecting {UXSS} vulnerabilities in browsers through origin fuzzing | |
Zhang et al. | A distributed framework for demand-driven software vulnerability detection | |
Baradaran et al. | A unit-based symbolic execution method for detecting memory corruption vulnerabilities in executable codes | |
JP2012018675A (ja) | アプリケーション分析用のデータベースモデルを生成するシステム及び方法 | |
Windsor et al. | High‐coverage metamorphic testing of concurrency support in C compilers | |
Duraibi et al. | A Survey of Symbolic Execution Tools. | |
US20240289131A1 (en) | System and method for code execution on browser extension | |
Bernhard et al. | DarthShader: Fuzzing WebGPU Shader Translators & Compilers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140304 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20141126 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20141209 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150109 |
|
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: 20150630 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150713 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5786513 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |