|
ABSTRACT
When regression tests fail unexpectedly after a long session of editing, it may be tedious for programmers to find out the failure-inducing changes by manually inspecting all code edits. To eliminate the expensive effort spent on debugging, we present a hybrid approach, which combines both static and dynamic analysis techniques, to automatically identify the faulty changes. Our approach first uses static change impact analysis to isolate a subset of responsible changes for a failed test, then utilizes the dynamic test execution information to rank these changes according to our proposed heuristic (indicating the likelihood that they may have contributed to the failure), and finally employs an improved Three-Phase delta debugging algorithm, working from the coarse method level to the fine statement level, to find a minimal set of faulty statements. We implemented the proposed approach for both Java and AspectJ programs in our AutoFlow prototype. In our evaluation with two third-party applications, we demonstrate that this hybrid approach can be very effective: at least for the subjective programs we investigated, it takes significantly (almost 4X) fewer tests than the original delta debugging algorithm to locate the faulty code.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
AspectJ compiler 1.5, May 2005. http://www.eclipse.org/aspectj//.
|
| |
2
|
AspectJ Development Tools (AJDT). http://www.eclipse.org/ajdt//.
|
| |
3
|
GDB: The GNU Project Debugger. http://gnu.org/software/gdb.
|
| |
4
|
The Eclipse Development Platform. http://www.eclipse.org/.
|
| |
5
|
The XML-Security Project. http://santuario.apache.org/.
|
| |
6
|
|
 |
7
|
|
| |
8
|
|
 |
9
|
|
| |
10
|
M. D. Ernst. Static and dynamic analysis: Synergy and duality. In ICSE Workshop on Dynamic Analysis, pages 24--27, May 2003.
|
| |
11
|
|
 |
12
|
Neelam Gupta , Haifeng He , Xiangyu Zhang , Rajiv Gupta, Locating faulty code using failure-inducing chops, Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering, November 07-11, 2005, Long Beach, CA, USA
[doi> 10.1145/1101908.1101948]
|
 |
13
|
|
 |
14
|
|
| |
15
|
G. Kiczales, J. Lamping, A. Menhdhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-oriented programming. In Proc. 11th European Conference on Object-Oriented Programming, pages 220--242. 1997.
|
 |
16
|
|
 |
17
|
|
| |
18
|
|
 |
19
|
|
 |
20
|
Xiaoxia Ren , Fenil Shah , Frank Tip , Barbara G. Ryder , Ophelia Chesley, Chianti: a tool for change impact analysis of java programs, Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, October 24-28, 2004, Vancouver, BC, Canada
|
| |
21
|
M. Renieris and S. Reiss. Fault localization with nearest neighbor queries. In In Automated Software Engineering, 2003., 2003.
|
 |
22
|
|
 |
23
|
Maximilian Stoerzer , Barbara G. Ryder , Xiaoxia Ren , Frank Tip, Finding failure-inducing changes in java programs using change classification, Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering, November 05-11, 2006, Portland, Oregon, USA
[doi> 10.1145/1181775.1181783]
|
 |
24
|
|
| |
25
|
|
| |
26
|
M. Young. Symbiosis of static analysis and program testing. In Proc. 6th International Conference on Fundamental Approaches to Software Engineering., pages 1--5, April 2003.
|
 |
27
|
|
| |
28
|
|
| |
29
|
S. Zhang, Z. Gu, Y. Lin, and J. Zhao. Autoflow: An automatic debugging tool for AspectJ software. In Proc. 24th International Conference on Software Maintenance (ICSM 2008 demo), Oct 2008.
|
| |
30
|
S. Zhang, Z. Gu, Y. Lin, and J. Zhao. Autoflow: An automatic framework for AspectJ programs. In Technical Report, SJTU-CSE-08-03, Jan 2008.
|
 |
31
|
|
| |
32
|
S. Zhang, Z. Gu, Y. Lin, and J. Zhao. Change impact analysis for AspectJ programs. In Proc. 24th International Conference on Software Maintenance (ICSM 2008), Oct 2008.
|
 |
33
|
|
| |
34
|
|
 |
35
|
|
|