Wei Jin 0001

dblp:66/2173-1 · DBLP profile ↗
← Back
9ranked-venue papers
5as first author
0since 2021 · last 2015
0000-0002-6026-6105ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 9 · 5 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
6 papers
Debugging and program repair · 66% Software testing · 28% Program analysis · 4%

Topics — the 8 heaviest of 9, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Debugging and program repair
fault localization
0.852015
Automated Support for Reproducing and Debugging Field Failures · ACM Trans. Softw. Eng. Methodol. 2015
MIMIC: locating and understanding bugs by analyzing mimicked executions · ASE 2014
SBFR: A search based approach for reproducing failures of programs with grammar based input · ASE 2013
Debugging and program repair
bug reproduction
0.532013
SBFR: A search based approach for reproducing failures of programs with grammar based input · ASE 2013
F3: fault localization for field failures · ISSTA 2013
BugRedux: Reproducing field failures for in-house debugging · ICSE 2012
Software testing
test generation
0.432015
Automated Support for Reproducing and Debugging Field Failures · ACM Trans. Softw. Eng. Methodol. 2015
F3: fault localization for field failures · ISSTA 2013
SBFR: A search based approach for reproducing failures of programs with grammar based input · ASE 2013
Debugging and program repair › bug reproduction
field failure reproduction
0.422015
Automated Support for Reproducing and Debugging Field Failures · ACM Trans. Softw. Eng. Methodol. 2015
BugRedux: Reproducing field failures for in-house debugging · ICSE 2012
Program analysis
dynamic analysis
0.112010
BERT: a tool for behavioral regression testing · SIGSOFT FSE 2010
Software testing
regression testing
0.112010
BERT: a tool for behavioral regression testing · SIGSOFT FSE 2010
Program synthesis and code generation
grammar-constrained generation
0.012013
SBFR: A search based approach for reproducing failures of programs with grammar based input · ASE 2013
Debugging and program repair › fault localization
regression fault localization
0.012010
BERT: a tool for behavioral regression testing · SIGSOFT FSE 2010

Methods — techniques the papers use, named apart from their topics

fault localization · 0.4execution synthesis · 0.3dynamic data collection · 0.2input generation · 0.2anomaly detection · 0.2search-based software engineering · 0.2genetic programming · 0.2empirical study · 0.1test input generation · 0.1dynamic analysis · 0.1
YearPublicationVenuePosition
2015 Automated Support for Reproducing and Debugging Field Failures
abstract
As confirmed by a recent survey conducted among developers of the Apache, Eclipse, and Mozilla projects, two extremely challenging tasks during maintenance are reproducing and debugging field failures—failures that occur on user machines after release. To help developers with these tasks, in this article we present an overall approach that comprises two different techniques: B ug R edux and F 3 . B ug R edux is a general technique for reproducing field failures that collects dynamic data about failing executions in the field and uses this data to synthesize executions that mimic the observed field failures. F 3 leverages the executions generated by B ug R edux to perform automated debugging using a set of suitably optimized fault-localization techniques. To assess the usefulness of our approach, we performed an empirical evaluation of the approach on a set of real-world programs and field failures. The results of our evaluation are promising in that, for all the failures considered, our approach was able to (1) synthesize failing executions that mimicked the observed field failures, (2) synthesize passing executions similar to the failing ones, and (3) use the synthesized executions to successfully perform fault localization with accurate results.
Wei Jin 0001, Alessandro Orso
ACM Trans. Softw. Eng. Methodol.1
2014 Reproducing Field Failures for Programs with Complex Grammar-Based Input
abstract
To isolate and fix failures that occur in the field, after deployment, developers must be able to reproduce and investigate such failures in-house. In practice, however, bug reports rarely provide enough information to recreate field failures, thus making in-house debugging an arduous task. This task becomes even more challenging for programs whose input must adhere to a formal specification, such as a grammar. To help developers address this issue, we propose an approach for automatically generating inputs that recreate field failures in-house. Given a faulty program and a field failure for this program, our approach exploits the potential of grammar-guided genetic programming to iteratively find legal inputs that can trigger the observed failure using a limited amount of runtime data collected in the field. When applied to 11 failures of 5 real-world programs, our approach was able to reproduce all but one of the failures while imposing a limited amount of overhead.
Fitsum Meshesha Kifetew, Wei Jin 0001, Roberto Tiella, Alessandro Orso, Paolo Tonella
ICST2
2014 MIMIC: locating and understanding bugs by analyzing mimicked executions
abstract
Automated debugging techniques aim to help developers locate and understand the cause of a failure, an extremely challenging yet fundamental task. Most state-of-the-art approaches suffer from two problems: they require a large number of passing and failing tests and report possible faulty code with no explanation. To mitigate these issues, we present MIMIC, a novel automated debugging technique that combines and extends our previous input generation and anomaly detection techniques. MIMIC (1) synthesizes multiple passing and failing executions similar to an observed failure and (2) uses these executions to detect anomalies in behavior that may explain the failure. We evaluated MIMIC on six failures of real-world programs with promising results: for five of these failures, MIMIC identified their root causes while producing a limited number of false positives. Most importantly, the anomalies identified by MIMIC provided information that may help developers understand (and ultimately eliminate) such root causes.
Daniele Zuddas, Wei Jin 0001, Fabrizio Pastore, Leonardo Mariani, Alessandro Orso
ASE2
2013 F3: fault localization for field failures
abstract
Reproducing and debugging field failures--failures that occur on user machines after release--are challenging tasks for developers. To help the first task, in previous work we have proposed BugRedux, a technique for reproducing, in-house, failures observed in the field. Although BugRedux can help developers reproduce field failures, it does not provide any specific support for debugging such failures. To address this limitation, in this paper we present F3, a novel technique that builds on BugRedux and extends it with support for fault localization. Specifically, in F3 we extend our previous technique in two main ways: first, we modify BugRedux so that it generates multiple failing and passing executions "similar" to the observed field failure; second, we add to BugRedux debugging capabilities by combining it with a customized fault-localization technique. The results of our empirical evaluation, performed on a set of real-world programs and field failures, are promising: for all the failures considered, F3 was able to (1) synthesize passing and failing executions and (2) successfully use the synthesized executions to perform fault localization and, ultimately, help debugging.
Wei Jin 0001, Alessandro Orso
ISSTA1
2013 SBFR: A search based approach for reproducing failures of programs with grammar based input
abstract
Reproducing field failures in-house, a step developers must perform when assigned a bug report, is an arduous task. In most cases, developers must be able to reproduce a reported failure using only a stack trace and/or some informal description of the failure. The problem becomes even harder for the large class of programs whose input is highly structured and strictly specified by a grammar. To address this problem, we present SBFR, a search-based failure-reproduction technique for programs with structured input. SBFR formulates failure reproduction as a search problem. Starting from a reported failure and a limited amount of dynamic information about the failure, SBFR exploits the potential of genetic programming to iteratively find legal inputs that can trigger the failure.
Fitsum Meshesha Kifetew, Wei Jin 0001, Roberto Tiella, Alessandro Orso, Paolo Tonella
ASE2
2012 BugRedux: Reproducing field failures for in-house debugging
abstract
A recent survey conducted among developers of the Apache, Eclipse, and Mozilla projects showed that the ability to recreate field failures is considered of fundamental importance when investigating bug reports. Unfortunately, the information typically contained in a bug report, such as memory dumps or call stacks, is usually insufficient for recreating the problem. Even more advanced approaches for gathering field data and help in-house debugging tend to collect either too little information, and be ineffective, or too much information, and be inefficient. To address these issues, we present BugRedux, a novel general approach for in-house debugging of field failures. BugRedux aims to synthesize, using execution data collected in the field, executions that mimic the observed field failures. We define several instances of BugRedux that collect different types of execution data and perform, through an empirical study, a cost-benefit analysis of the approach and its variations. In the study, we apply BugRedux to 16 failures of 14 real-world programs. Our results are promising in that they show that it is possible to synthesize in-house executions that reproduce failures observed in the field using a suitable set of execution data.
Wei Jin 0001, Alessandro Orso
ICSE1
2011 Execution Hijacking: Improving Dynamic Analysis by Flying off Course
abstract
Typically, dynamic-analysis techniques operate on a small subset of all possible program behaviors, which limits their effectiveness and the representativeness of the computed results. To address this issue, a new paradigm is emerging: execution hijacking, consisting of techniques that explore a larger set of program behaviors by forcing executions along specific paths. Although hijacked executions are infeasible for the given inputs, they can still produce feasible behaviors that could be observed under other inputs. In such cases, execution hijacking can improve the effectiveness of dynamic analysis without requiring the (expensive) generation of additional inputs. To evaluate the usefulness of execution hijacking, we defined, implemented, and evaluated several variants of it. Specifically, we performed an empirical study where we assessed whether execution hijacking could improve the effectiveness of a common dynamic analysis: memory error detection. The results of the study show that execution hijacking, if suitably performed, can indeed improve dynamic analysis.
Petar Tsankov, Wei Jin 0001, Alessandro Orso, Saurabh Sinha 0003
ICST2
2010 Automated Behavioral Regression Testing
abstract
When a program is modified during software evolution, developers typically run the new version of the program against its existing test suite to validate that the changes made on the program did not introduce unintended side effects (i.e., regression faults). This kind of regression testing can be effective in identifying some regression faults, but it is limited by the quality of the existing test suite. Due to the cost of testing, developers build test suites by finding acceptable tradeoffs between cost and thoroughness of the tests. As a result, these test suites tend to exercise only a small subset of the program's functionality and may be inadequate for testing the changes in a program. To address this issue, we propose a novel approach called Behavioral Regression Testing (BERT). Given two versions of a program, BERT identifies behavioral differences between the two versions through dynamical analysis, in three steps. First, it generates a large number of test inputs that focus on the changed parts of the code. Second, it runs the generated test inputs on the old and new versions of the code and identifies differences in the tests' behavior. Third, it analyzes the identified differences and presents them to the developers. By focusing on a subset of the code and leveraging differential behavior, BERT can provide developers with more (and more detailed) information than traditional regression testing techniques. To evaluate BERT, we implemented it as a plug-in for Eclipse, a popular Integrated Development Environment, and used the plug-in to perform a preliminary study on two programs. The results of our study are promising, in that BERT was able to identify true regression faults in the programs.
Wei Jin 0001, Alessandro Orso, Tao Xie 0001
ICST1
2010 BERT: a tool for behavioral regression testing
abstract
During maintenance, software is modified and evolved to enhance its functionality, eliminate faults, and adapt it to changed or new platforms. In this demo, we present BERT, a tool for helping developers identify regression faults that they may have introduced when modifying their code. BERT is based on the concept of behavioral regression testing: given two versions of a program, BERT identifies behavioral differences between the two versions through dynamic analysis, in three steps. First, it generates a large number of test inputs that focus on the changed parts of the code. Second, it runs the generated test inputs on the old and new versions of the code and identifies differences in the tests' behavior. Third, it analyzes the identified differences and presents them to the developers. By focusing on a subset of the code and leveraging differential behavior, BERT can provide developers with more detailed information than traditional regression testing approaches---approaches that rely exclusively on existing test suites, which may be limited in scope and may not adequately test the changes in a program. BERT is implemented as a plug-in for Eclipse, a popular Integrated Development Environment, and is freely available. This demo presents BERT, its underlying technology, and examples of its usage.
Wei Jin 0001, Alessandro Orso, Tao Xie 0001
SIGSOFT FSE1