JP2018055676A - 自動ソフトウェアプログラム修復 - Google Patents
自動ソフトウェアプログラム修復 Download PDFInfo
- Publication number
- JP2018055676A JP2018055676A JP2017145312A JP2017145312A JP2018055676A JP 2018055676 A JP2018055676 A JP 2018055676A JP 2017145312 A JP2017145312 A JP 2017145312A JP 2017145312 A JP2017145312 A JP 2017145312A JP 2018055676 A JP2018055676 A JP 2018055676A
- Authority
- JP
- Japan
- Prior art keywords
- software program
- test
- repair
- test suite
- failure rate
- 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.)
- Granted
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/3664—Environments for 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/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)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
Description
テストスイートを使用して、ソフトウェアプログラム内のフォールトのフォールト位置を特定するステップと、
前記ソフトウェアプログラムにおいて、前記フォールトに対して修復候補を実装するステップと、
前記ソフトウェアプログラムの観測された挙動に基づく複数のテストオラクルであって、前記フォールト位置に対応する複数のテストオラクルを用いて、前記テストスイートを拡張するステップと、
前記の実装された修復候補を有する前記ソフトウェアプログラムに対して、前記の拡張されたテストスイートを実行するステップと、
前記の拡張されたテストスイートを実行したことに対する前記複数のテストオラクルの失敗率に基づいて、前記ソフトウェアプログラムの修復として、前記修復候補を優先順位付けするステップと、
を含む方法。
前記失敗率に基づいて、前記修復候補を優先順位付けすることは、前記失敗率が、前記ソフトウェアプログラム内の誤った実行パスの推定数に基づく閾失敗率を超えているかどうかに基づく、付記1に記載の方法。
前記修復候補を実装した後であって、前記テストスイートを拡張する前に、実装された前記修復候補を有する前記ソフトウェアプログラムに対して、前記テストスイートを実行するステップと、
前記ソフトウェアプログラムにおいて実装された前記修復候補に対して、前記テストスイートの全てのテストが合格したことに応じて、前記テストスイートを拡張し、前記の拡張されたテストスイートを実行するステップと、
をさらに含む、付記1に記載の方法。
前記修復候補を実装した後であって、前記テストスイートを拡張する前に、前記フォールト位置を含む、前記ソフトウェアプログラムのユニットに対してのみ、前記テストスイートを実行するステップをさらに含む、付記3に記載の方法。
前記修復候補を実装する前に、前記ソフトウェアプログラムの観測された挙動に基づいて、前記複数のテストオラクルを生成するステップをさらに含む、付記1に記載の方法。
前記フォールト位置を含む、前記ソフトウェアプログラムのユニットに基づいて、
前記ソフトウェアプログラムの前記ユニットに対して、前記複数のテストオラクルを生成するステップと、
前記ソフトウェアプログラムの前記ユニットに対してのみ、前記の拡張されたテストスイートを実行するステップと、
のうちの1つ以上をさらに含む、付記1に記載の方法。
前記ソフトウェアプログラムの前記ユニットは、前記ソフトウェアプログラムのモジュールと、前記ソフトウェアプログラムのファイルと、前記ソフトウェアプログラムの構造体と、前記ソフトウェアプログラムの関数と、のうちの1つ以上を含む、付記6に記載の方法。
前記失敗率に基づいて、前記修復候補の有効度を決定するステップと、
前記の決定された有効度に基づいて、前記ソフトウェアプログラムの修復として、前記修復候補を優先順位付けするステップと、
をさらに含む、付記1に記載の方法。
前記ソフトウェアプログラムの修復として、前記修復候補を優先順位付けすることは、前記失敗率に基づいて、前記ソフトウェアプログラムの修復として、前記修復候補を受け入れることを含む、付記1に記載の方法。
前記複数のテストオラクルは、前記フォールト位置を含む、前記ソフトウェアプログラムのユニットに関する、前記ソフトウェアプログラムの観測された挙動に基づく、付記1に記載の方法。
命令を記憶するよう構成されている非一時的なコンピュータ読み取り可能な記憶媒体であって、前記命令が実行されたときに、前記命令はシステムに複数の動作を実行させ、前記複数の動作は、
テストスイートを使用して、ソフトウェアプログラム内のフォールトのフォールト位置を特定する動作と、
前記ソフトウェアプログラムにおいて、前記フォールトに対して修復候補を実装する動作と、
前記ソフトウェアプログラムの観測された挙動に基づく複数のテストオラクルであって、前記フォールト位置に対応する複数のテストオラクルを用いて、前記テストスイートを拡張する動作と、
前記の実装された修復候補を有する前記ソフトウェアプログラムに対して、前記の拡張されたテストスイートを実行する動作と、
前記の拡張されたテストスイートを実行したことに対する前記複数のテストオラクルの失敗率に基づいて、前記ソフトウェアプログラムの修復として、前記修復候補を優先順位付けする動作と、
を含む、非一時的なコンピュータ読み取り可能な記憶媒体。
前記失敗率に基づいて、前記修復候補を優先順位付けすることは、前記失敗率が、前記ソフトウェアプログラム内の誤った実行パスの推定数に基づく閾失敗率を超えているかどうかに基づく、付記11に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
前記複数の動作は、
前記修復候補を実装した後であって、前記テストスイートを拡張する前に、実装された前記修復候補を有する前記ソフトウェアプログラムに対して、前記テストスイートを実行する動作と、
前記ソフトウェアプログラムにおいて実装された前記修復候補に対して、前記テストスイートの全てのテストが合格したことに応じて、前記テストスイートを拡張し、前記の拡張されたテストスイートを実行する動作と、
をさらに含む、付記11に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
前記複数の動作は、前記修復候補を実装した後であって、前記テストスイートを拡張する前に、前記フォールト位置を含む、前記ソフトウェアプログラムのユニットに対してのみ、前記テストスイートを実行する動作をさらに含む、付記13に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
前記複数の動作は、前記修復候補を実装する前に、前記ソフトウェアプログラムの観測された挙動に基づいて、前記複数のテストオラクルを生成する動作をさらに含む、付記11に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
前記複数の動作は、前記フォールト位置を含む、前記ソフトウェアプログラムのユニットに基づいて、
前記ソフトウェアプログラムの前記ユニットに対して、前記複数のテストオラクルを生成する動作と、
前記ソフトウェアプログラムの前記ユニットに対してのみ、前記の拡張されたテストスイートを実行する動作と、
のうちの1つ以上をさらに含む、付記11に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
前記ソフトウェアプログラムの前記ユニットは、前記ソフトウェアプログラムのモジュールと、前記ソフトウェアプログラムのファイルと、前記ソフトウェアプログラムの構造体と、前記ソフトウェアプログラムの関数と、のうちの1つ以上を含む、付記16に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
前記複数の動作は、
前記失敗率に基づいて、前記修復候補の有効度を決定する動作と、
前記の決定された有効度に基づいて、前記ソフトウェアプログラムの修復として、前記修復候補を優先順位付けする動作と、
をさらに含む、付記11に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
前記ソフトウェアプログラムの修復として、前記修復候補を優先順位付けすることは、前記失敗率に基づいて、前記ソフトウェアプログラムの修復として、前記修復候補を受け入れることを含む、付記11に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
前記複数のテストオラクルは、前記フォールト位置を含む、前記ソフトウェアプログラムのユニットに関する、前記ソフトウェアプログラムの観測された挙動に基づく、付記11に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
106 修復モジュール
108 変更されたテスト対象コード
111 テストスイート
112 修復テンプレート
202 コンピューティングシステム
250 プロセッサ
252 メモリ
254 データストレージ
Claims (20)
- テストスイートを使用して、ソフトウェアプログラム内のフォールトのフォールト位置を特定するステップと、
前記ソフトウェアプログラムにおいて、前記フォールトに対して修復候補を実装するステップと、
前記ソフトウェアプログラムの観測された挙動に基づく複数のテストオラクルであって、前記フォールト位置に対応する複数のテストオラクルを用いて、前記テストスイートを拡張するステップと、
前記の実装された修復候補を有する前記ソフトウェアプログラムに対して、前記の拡張されたテストスイートを実行するステップと、
前記の拡張されたテストスイートを実行したことに対する前記複数のテストオラクルの失敗率に基づいて、前記ソフトウェアプログラムの修復として、前記修復候補を優先順位付けするステップと、
を含む方法。 - 前記失敗率に基づいて、前記修復候補を優先順位付けすることは、前記失敗率が、前記ソフトウェアプログラム内の誤った実行パスの推定数に基づく閾失敗率を超えているかどうかに基づく、請求項1に記載の方法。
- 前記修復候補を実装した後であって、前記テストスイートを拡張する前に、実装された前記修復候補を有する前記ソフトウェアプログラムに対して、前記テストスイートを実行するステップと、
前記ソフトウェアプログラムにおいて実装された前記修復候補に対して、前記テストスイートの全てのテストが合格したことに応じて、前記テストスイートを拡張し、前記の拡張されたテストスイートを実行するステップと、
をさらに含む、請求項1に記載の方法。 - 前記修復候補を実装した後であって、前記テストスイートを拡張する前に、前記フォールト位置を含む、前記ソフトウェアプログラムのユニットに対してのみ、前記テストスイートを実行するステップをさらに含む、請求項3に記載の方法。
- 前記修復候補を実装する前に、前記ソフトウェアプログラムの観測された挙動に基づいて、前記複数のテストオラクルを生成するステップをさらに含む、請求項1に記載の方法。
- 前記フォールト位置を含む、前記ソフトウェアプログラムのユニットに基づいて、
前記ソフトウェアプログラムの前記ユニットに対して、前記複数のテストオラクルを生成するステップと、
前記ソフトウェアプログラムの前記ユニットに対してのみ、前記の拡張されたテストスイートを実行するステップと、
のうちの1つ以上をさらに含む、請求項1に記載の方法。 - 前記ソフトウェアプログラムの前記ユニットは、前記ソフトウェアプログラムのモジュールと、前記ソフトウェアプログラムのファイルと、前記ソフトウェアプログラムの構造体と、前記ソフトウェアプログラムの関数と、のうちの1つ以上を含む、請求項6に記載の方法。
- 前記失敗率に基づいて、前記修復候補の有効度を決定するステップと、
前記の決定された有効度に基づいて、前記ソフトウェアプログラムの修復として、前記修復候補を優先順位付けするステップと、
をさらに含む、請求項1に記載の方法。 - 前記ソフトウェアプログラムの修復として、前記修復候補を優先順位付けすることは、前記失敗率に基づいて、前記ソフトウェアプログラムの修復として、前記修復候補を受け入れることを含む、請求項1に記載の方法。
- 前記複数のテストオラクルは、前記フォールト位置を含む、前記ソフトウェアプログラムのユニットに関する、前記ソフトウェアプログラムの観測された挙動に基づく、請求項1に記載の方法。
- 命令を記憶するよう構成されている非一時的なコンピュータ読み取り可能な記憶媒体であって、前記命令が実行されたときに、前記命令はシステムに複数の動作を実行させ、前記複数の動作は、
テストスイートを使用して、ソフトウェアプログラム内のフォールトのフォールト位置を特定する動作と、
前記ソフトウェアプログラムにおいて、前記フォールトに対して修復候補を実装する動作と、
前記ソフトウェアプログラムの観測された挙動に基づく複数のテストオラクルであって、前記フォールト位置に対応する複数のテストオラクルを用いて、前記テストスイートを拡張する動作と、
前記の実装された修復候補を有する前記ソフトウェアプログラムに対して、前記の拡張されたテストスイートを実行する動作と、
前記の拡張されたテストスイートを実行したことに対する前記複数のテストオラクルの失敗率に基づいて、前記ソフトウェアプログラムの修復として、前記修復候補を優先順位付けする動作と、
を含む、非一時的なコンピュータ読み取り可能な記憶媒体。 - 前記失敗率に基づいて、前記修復候補を優先順位付けすることは、前記失敗率が、前記ソフトウェアプログラム内の誤った実行パスの推定数に基づく閾失敗率を超えているかどうかに基づく、請求項11に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
- 前記複数の動作は、
前記修復候補を実装した後であって、前記テストスイートを拡張する前に、実装された前記修復候補を有する前記ソフトウェアプログラムに対して、前記テストスイートを実行する動作と、
前記ソフトウェアプログラムにおいて実装された前記修復候補に対して、前記テストスイートの全てのテストが合格したことに応じて、前記テストスイートを拡張し、前記の拡張されたテストスイートを実行する動作と、
をさらに含む、請求項11に記載の非一時的なコンピュータ読み取り可能な記憶媒体。 - 前記複数の動作は、前記修復候補を実装した後であって、前記テストスイートを拡張する前に、前記フォールト位置を含む、前記ソフトウェアプログラムのユニットに対してのみ、前記テストスイートを実行する動作をさらに含む、請求項13に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
- 前記複数の動作は、前記修復候補を実装する前に、前記ソフトウェアプログラムの観測された挙動に基づいて、前記複数のテストオラクルを生成する動作をさらに含む、請求項11に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
- 前記複数の動作は、前記フォールト位置を含む、前記ソフトウェアプログラムのユニットに基づいて、
前記ソフトウェアプログラムの前記ユニットに対して、前記複数のテストオラクルを生成する動作と、
前記ソフトウェアプログラムの前記ユニットに対してのみ、前記の拡張されたテストスイートを実行する動作と、
のうちの1つ以上をさらに含む、請求項11に記載の非一時的なコンピュータ読み取り可能な記憶媒体。 - 前記ソフトウェアプログラムの前記ユニットは、前記ソフトウェアプログラムのモジュールと、前記ソフトウェアプログラムのファイルと、前記ソフトウェアプログラムの構造体と、前記ソフトウェアプログラムの関数と、のうちの1つ以上を含む、請求項16に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
- 前記複数の動作は、
前記失敗率に基づいて、前記修復候補の有効度を決定する動作と、
前記の決定された有効度に基づいて、前記ソフトウェアプログラムの修復として、前記修復候補を優先順位付けする動作と、
をさらに含む、請求項11に記載の非一時的なコンピュータ読み取り可能な記憶媒体。 - 前記ソフトウェアプログラムの修復として、前記修復候補を優先順位付けすることは、前記失敗率に基づいて、前記ソフトウェアプログラムの修復として、前記修復候補を受け入れることを含む、請求項11に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
- 前記複数のテストオラクルは、前記フォールト位置を含む、前記ソフトウェアプログラムのユニットに関する、前記ソフトウェアプログラムの観測された挙動に基づく、請求項11に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/276,628 US10180897B2 (en) | 2016-09-26 | 2016-09-26 | Automated software program repair |
US15/276,628 | 2016-09-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018055676A true JP2018055676A (ja) | 2018-04-05 |
JP6891703B2 JP6891703B2 (ja) | 2021-06-18 |
Family
ID=61685462
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017145312A Active JP6891703B2 (ja) | 2016-09-26 | 2017-07-27 | 自動ソフトウェアプログラム修復 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10180897B2 (ja) |
JP (1) | JP6891703B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10268572B2 (en) * | 2017-08-03 | 2019-04-23 | Fujitsu Limited | Interactive software program repair |
US10664383B2 (en) | 2018-08-22 | 2020-05-26 | Fujitsu Limited | Automated software program repair of similar code snippets |
CN111506492B (zh) * | 2019-01-31 | 2023-05-26 | 百度在线网络技术(北京)有限公司 | 一种应用程序的测试方法及装置、设备、存储介质 |
US11119740B2 (en) * | 2020-01-08 | 2021-09-14 | Fujitsu Limited | Parsability of code snippets |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004046310A (ja) * | 2002-07-09 | 2004-02-12 | Hitachi Ltd | 障害修復プログラム適用方法及びその実施装置並びにその処理プログラム |
JP2008250914A (ja) * | 2007-03-30 | 2008-10-16 | Canon Software Inc | プログラム修正装置及び方法、並びにプログラム |
US20090292941A1 (en) * | 2008-05-22 | 2009-11-26 | Nec Laboratories America, Inc. | Proof-guided error diagnosis (ped) by triangulation of program error causes |
JP2015035185A (ja) * | 2013-08-09 | 2015-02-19 | 富士通株式会社 | テストデータ生成プログラム、テストデータ生成方法、およびテストデータ生成装置 |
JP2017151977A (ja) * | 2016-02-23 | 2017-08-31 | 富士通株式会社 | ソフトウエアプログラムの修復のための方法及びプログラム |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6161193A (en) * | 1998-03-18 | 2000-12-12 | Lucent Technologies Inc. | Methods and apparatus for process replication/recovery in a distributed system |
GB0423357D0 (en) * | 2004-10-21 | 2004-11-24 | Ibm | System and method for automatically generating self-checking software |
US8271961B1 (en) * | 2008-08-13 | 2012-09-18 | Intuit Inc. | Method and system for predictive software system quality measurement |
US8527813B2 (en) * | 2011-12-19 | 2013-09-03 | Siemens Aktiengesellschaft | Dynamic reprioritization of test cases during test execution |
US8881095B1 (en) * | 2012-03-30 | 2014-11-04 | Sprint Communications Company L.P. | Software defect prediction |
US8874968B1 (en) * | 2012-04-27 | 2014-10-28 | Coresonic Ab | Method and system for testing a processor designed by a configurator |
US10108526B2 (en) * | 2012-11-27 | 2018-10-23 | Purdue Research Foundation | Bug localization using version history |
GB2530516A (en) * | 2014-09-24 | 2016-03-30 | Ibm | Intelligent Software Test Augmenting |
-
2016
- 2016-09-26 US US15/276,628 patent/US10180897B2/en active Active
-
2017
- 2017-07-27 JP JP2017145312A patent/JP6891703B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004046310A (ja) * | 2002-07-09 | 2004-02-12 | Hitachi Ltd | 障害修復プログラム適用方法及びその実施装置並びにその処理プログラム |
JP2008250914A (ja) * | 2007-03-30 | 2008-10-16 | Canon Software Inc | プログラム修正装置及び方法、並びにプログラム |
US20090292941A1 (en) * | 2008-05-22 | 2009-11-26 | Nec Laboratories America, Inc. | Proof-guided error diagnosis (ped) by triangulation of program error causes |
JP2015035185A (ja) * | 2013-08-09 | 2015-02-19 | 富士通株式会社 | テストデータ生成プログラム、テストデータ生成方法、およびテストデータ生成装置 |
JP2017151977A (ja) * | 2016-02-23 | 2017-08-31 | 富士通株式会社 | ソフトウエアプログラムの修復のための方法及びプログラム |
Non-Patent Citations (1)
Title |
---|
鷲見 創一,外3名: "自動プログラム修正の修正可能バグ数に関する考察", コンピュータソフトウェア, vol. 第33巻,第3号, JPN6021014654, 25 July 2016 (2016-07-25), JP, pages 81 - 87, ISSN: 0004492054 * |
Also Published As
Publication number | Publication date |
---|---|
JP6891703B2 (ja) | 2021-06-18 |
US10180897B2 (en) | 2019-01-15 |
US20180089065A1 (en) | 2018-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10296447B2 (en) | Automated software program repair | |
US10152406B2 (en) | Software program repair | |
JP6878933B2 (ja) | ソフトウエアプログラムの修復のための方法及びプログラム | |
US9846637B2 (en) | Machine learning based software program repair | |
US10678673B2 (en) | Software program fault localization | |
US8533685B2 (en) | Processing apparatus, trace unit and diagnostic apparatus | |
JP7110789B2 (ja) | 自動化されたソフトウェアプログラム修復候補の選択 | |
JP6891703B2 (ja) | 自動ソフトウェアプログラム修復 | |
US10268572B2 (en) | Interactive software program repair | |
US10664383B2 (en) | Automated software program repair of similar code snippets | |
US10049031B2 (en) | Correlation of violating change sets in regression testing of computer software | |
US11586534B2 (en) | Identifying flaky tests | |
JP7404839B2 (ja) | ソフトウェアプログラム不良位置の識別 | |
JP2016115175A (ja) | ソフトウェアテスト装置およびソフトウェアテストプログラム | |
JP2018060525A (ja) | イベント駆動型ソフトウェアテストシーケンス決定 | |
US10496519B2 (en) | Method invocation synthesis for software program repair | |
US10642716B1 (en) | Automated software program repair | |
US10761962B1 (en) | Automated software program repair | |
JPWO2019142266A1 (ja) | テストケース生成装置、テストケース生成方法およびテストケース生成プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200514 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210412 |
|
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: 20210427 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210510 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6891703 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |