Program evolution: processes of software change
Program evolution: processes of software change
A methodology for controlling the size of a test suite
ACM Transactions on Software Engineering and Methodology (TOSEM)
Simulated annealing and genetic algorithms for optimal regression testing
Journal of Software Maintenance: Research and Practice
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Test Case Prioritization: A Family of Empirical Studies
IEEE Transactions on Software Engineering
Fundamentals of Software Engineering
Fundamentals of Software Engineering
Modernizing Legacy Systems: Software Technologies, Engineering Process and Business Practices
Modernizing Legacy Systems: Software Technologies, Engineering Process and Business Practices
Machine Learning
Automated support for classifying software failure reports
Proceedings of the 25th International Conference on Software Engineering
Bug isolation via remote program sampling
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Bi-Criteria Models for All-Uses Test Suite Reduction
Proceedings of the 26th International Conference on Software Engineering
Finding Latent Code Errors via Machine Learning over Program Executions
Proceedings of the 26th International Conference on Software Engineering
Active learning for automatic classification of software behavior
ISSTA '04 Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis
Ordering Broken Unit Tests for Focused Debugging
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
Tree-Based Methods for Classifying Software Failures
ISSRE '04 Proceedings of the 15th International Symposium on Software Reliability Engineering
Applying classification techniques to remotely-collected program execution data
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Empirical evaluation of the tarantula automatic fault-localization technique
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Automated path generation for software fault localization
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Identifying Refactorings from Source-Code Changes
ASE '06 Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering
Data Mining Static Code Attributes to Learn Defect Predictors
IEEE Transactions on Software Engineering
On the Accuracy of Spectrum-based Fault Localization
TAICPART-MUTATION '07 Proceedings of the Testing: Academic and Industrial Conference Practice and Research Techniques - MUTATION
Automated detection of api refactorings in libraries
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Predicting Defective Software Components from Code Complexity Measures
PRDC '07 Proceedings of the 13th Pacific Rim International Symposium on Dependable Computing
An experimental study of four typical test suite reduction techniques
Information and Software Technology
The effect of program and model structure on mc/dc test adequacy coverage
Proceedings of the 30th international conference on Software engineering
An approach to detecting duplicate bug reports using natural language and execution information
Proceedings of the 30th international conference on Software engineering
Mining Software Repositories to Study Co-Evolution of Production & Test Code
ICST '08 Proceedings of the 2008 International Conference on Software Testing, Verification, and Validation
Automated Session Data Repair for Web Application Regression Testing
ICST '08 Proceedings of the 2008 International Conference on Software Testing, Verification, and Validation
On similarity-awareness in testing-based fault localization
Automated Software Engineering
Automatically repairing event sequence-based GUI test suites for regression testing
ACM Transactions on Software Engineering and Methodology (TOSEM)
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Automatically finding patches using genetic programming
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Refactoring sequential Java code for concurrency via concurrent libraries
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
JUnitMX - A change-aware unit testing tool
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Time-aware test-case prioritization using integer linear programming
Proceedings of the eighteenth international symposium on Software testing and analysis
Cross-project defect prediction: a large scale experiment on data vs. domain vs. process
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
MAPO: Mining and Recommending API Usage Patterns
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Test input reduction for result inspection to facilitate fault localization
Automated Software Engineering
Interactive fault localization using test information
Journal of Computer Science and Technology - Special section on trust and reputation management in future computing systmes and applications
ReAssert: Suggesting Repairs for Broken Unit Tests
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
A Linear Programming Approach for Automated Localization of Multiple Faults
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
Jtop: Managing JUnit Test Cases in Absence of Coverage Information
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
Is operator-based mutant selection superior to random mutant selection?
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
On test repair using symbolic execution
Proceedings of the 19th international symposium on Software testing and analysis
Finding Bugs in Web Applications Using Dynamic Test Generation and Explicit-State Model Checking
IEEE Transactions on Software Engineering
Dealing with noise in defect prediction
Proceedings of the 33rd International Conference on Software Engineering
ReAssert: a tool for repairing broken unit tests
Proceedings of the 33rd International Conference on Software Engineering
Cause clue clauses: error localization using maximum satisfiability
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Localizing failure-inducing program edits based on spectrum information
ICSM '11 Proceedings of the 2011 27th IEEE International Conference on Software Maintenance
An Empirical Study of JUnit Test-Suite Reduction
ISSRE '11 Proceedings of the 2011 IEEE 22nd International Symposium on Software Reliability Engineering
GenProg: A Generic Method for Automatic Software Repair
IEEE Transactions on Software Engineering
Automated detection of refactorings in evolving components
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Supporting Test Suite Evolution through Test Case Adaptation
ICST '12 Proceedings of the 2012 IEEE Fifth International Conference on Software Testing, Verification and Validation
Proceedings of the 2012 International Symposium on Software Testing and Analysis
On-demand test suite reduction
Proceedings of the 34th International Conference on Software Engineering
Can I clone this piece of code here?
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Understanding myths and realities of test-suite evolution
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
A Static Approach to Prioritizing JUnit Test Cases
IEEE Transactions on Software Engineering
Bridging the gap between the total and additional test-case prioritization strategies
Proceedings of the 2013 International Conference on Software Engineering
Automatic patch generation learned from human-written patches
Proceedings of the 2013 International Conference on Software Engineering
Hi-index | 0.00 |
In software evolution, developers typically need to identify whether the failure of a test is due to a bug in the source code under test or the obsoleteness of the test code when they execute a test suite. Only after finding the cause of a failure can developers determine whether to fix the bug or repair the obsolete test. Researchers have proposed several techniques to automate test repair. However, test-repair techniques typically assume that test failures are always due to obsolete tests. Thus, such techniques may not be applicable in real world software evolution when developers do not know whether the failure is due to a bug or an obsolete test. To know whether the cause of a test failure lies in the source code under test or in the test code, we view this problem as a classification problem and propose an automatic approach based on machine learning. Specifically, we target Java software using the JUnit testing framework and collect a set of features that may be related to failures of tests. Using this set of features, we adopt the Best-first Decision Tree Learning algorithm to train a classifier with some existing regression test failures as training instances. Then, we use the classifier to classify future failed tests. Furthermore, we evaluated our approach using two Java programs in three scenarios (within the same version, within different versions of a program, and between different programs), and found that our approach can effectively classify the causes of failed tests.