74,517 research outputs found
Dynamic Analysis can be Improved with Automatic Test Suite Refactoring
Context: Developers design test suites to automatically verify that software
meets its expected behaviors. Many dynamic analysis techniques are performed on
the exploitation of execution traces from test cases. However, in practice,
there is only one trace that results from the execution of one manually-written
test case.
Objective: In this paper, we propose a new technique of test suite
refactoring, called B-Refactoring. The idea behind B-Refactoring is to split a
test case into small test fragments, which cover a simpler part of the control
flow to provide better support for dynamic analysis.
Method: For a given dynamic analysis technique, our test suite refactoring
approach monitors the execution of test cases and identifies small test cases
without loss of the test ability. We apply B-Refactoring to assist two existing
analysis tasks: automatic repair of if-statements bugs and automatic analysis
of exception contracts.
Results: Experimental results show that test suite refactoring can
effectively simplify the execution traces of the test suite. Three real-world
bugs that could previously not be fixed with the original test suite are fixed
after applying B-Refactoring; meanwhile, exception contracts are better
verified via applying B-Refactoring to original test suites.
Conclusions: We conclude that applying B-Refactoring can effectively improve
the purity of test cases. Existing dynamic analysis tasks can be enhanced by
test suite refactoring
A Critical Review of "Automatic Patch Generation Learned from Human-Written Patches": Essay on the Problem Statement and the Evaluation of Automatic Software Repair
At ICSE'2013, there was the first session ever dedicated to automatic program
repair. In this session, Kim et al. presented PAR, a novel template-based
approach for fixing Java bugs. We strongly disagree with key points of this
paper. Our critical review has two goals. First, we aim at explaining why we
disagree with Kim and colleagues and why the reasons behind this disagreement
are important for research on automatic software repair in general. Second, we
aim at contributing to the field with a clarification of the essential ideas
behind automatic software repair. In particular we discuss the main evaluation
criteria of automatic software repair: understandability, correctness and
completeness. We show that depending on how one sets up the repair scenario,
the evaluation goals may be contradictory. Eventually, we discuss the nature of
fix acceptability and its relation to the notion of software correctness.Comment: ICSE 2014, India (2014
Automatic Software Repair: a Bibliography
This article presents a survey on automatic software repair. Automatic
software repair consists of automatically finding a solution to software bugs
without human intervention. This article considers all kinds of repairs. First,
it discusses behavioral repair where test suites, contracts, models, and
crashing inputs are taken as oracle. Second, it discusses state repair, also
known as runtime repair or runtime recovery, with techniques such as checkpoint
and restart, reconfiguration, and invariant restoration. The uniqueness of this
article is that it spans the research communities that contribute to this body
of knowledge: software engineering, dependability, operating systems,
programming languages, and security. It provides a novel and structured
overview of the diversity of bug oracles and repair operators used in the
literature
Comparing and Combining Lexicase Selection and Novelty Search
Lexicase selection and novelty search, two parent selection methods used in
evolutionary computation, emphasize exploring widely in the search space more
than traditional methods such as tournament selection. However, lexicase
selection is not explicitly driven to select for novelty in the population, and
novelty search suffers from lack of direction toward a goal, especially in
unconstrained, highly-dimensional spaces. We combine the strengths of lexicase
selection and novelty search by creating a novelty score for each test case,
and adding those novelty scores to the normal error values used in lexicase
selection. We use this new novelty-lexicase selection to solve automatic
program synthesis problems, and find it significantly outperforms both novelty
search and lexicase selection. Additionally, we find that novelty search has
very little success in the problem domain of program synthesis. We explore the
effects of each of these methods on population diversity and long-term problem
solving performance, and give evidence to support the hypothesis that
novelty-lexicase selection resists converging to local optima better than
lexicase selection
Evolving web-based test automation into agile business specifications
Usually, test automation scripts for a web application directly mirror the actions that the tester carries out in the browser, but they tend to be verbose and repetitive, making them expensive to maintain and ineffective in an agile setting. Our research has focussed on providing tool-support for business-level, example-based specifications that are mapped to the browser level for automatic verification. We provide refactoring support for the evolution of existing browser-level tests into business-level specifications. As resulting business rule tables may be incomplete, redundant or contradictory, our tool provides feedback on coverage
GIZMO: A New Class of Accurate, Mesh-Free Hydrodynamic Simulation Methods
We present two new Lagrangian methods for hydrodynamics, in a systematic
comparison with moving-mesh, SPH, and stationary (non-moving) grid methods. The
new methods are designed to simultaneously capture advantages of both
smoothed-particle hydrodynamics (SPH) and grid-based/adaptive mesh refinement
(AMR) schemes. They are based on a kernel discretization of the volume coupled
to a high-order matrix gradient estimator and a Riemann solver acting over the
volume 'overlap.' We implement and test a parallel, second-order version of the
method with self-gravity & cosmological integration, in the code GIZMO: this
maintains exact mass, energy and momentum conservation; exhibits superior
angular momentum conservation compared to all other methods we study; does not
require 'artificial diffusion' terms; and allows the fluid elements to move
with the flow so resolution is automatically adaptive. We consider a large
suite of test problems, and find that on all problems the new methods appear
competitive with moving-mesh schemes, with some advantages (particularly in
angular momentum conservation), at the cost of enhanced noise. The new methods
have many advantages vs. SPH: proper convergence, good capturing of
fluid-mixing instabilities, dramatically reduced 'particle noise' & numerical
viscosity, more accurate sub-sonic flow evolution, & sharp shock-capturing.
Advantages vs. non-moving meshes include: automatic adaptivity, dramatically
reduced advection errors & numerical overmixing, velocity-independent errors,
accurate coupling to gravity, good angular momentum conservation and
elimination of 'grid alignment' effects. We can, for example, follow hundreds
of orbits of gaseous disks, while AMR and SPH methods break down in a few
orbits. However, fixed meshes minimize 'grid noise.' These differences are
important for a range of astrophysical problems.Comment: 57 pages, 33 figures. MNRAS. A public version of the GIZMO code,
user's guide, test problem setups, and movies are available at
http://www.tapir.caltech.edu/~phopkins/Site/GIZMO.htm
- …