3,342 research outputs found
Simplifying Contract-Violating Traces
Contract conformance is hard to determine statically, prior to the deployment
of large pieces of software. A scalable alternative is to monitor for contract
violations post-deployment: once a violation is detected, the trace
characterising the offending execution is analysed to pinpoint the source of
the offence. A major drawback with this technique is that, often, contract
violations take time to surface, resulting in long traces that are hard to
analyse. This paper proposes a methodology together with an accompanying tool
for simplifying traces and assisting contract-violation debugging.Comment: In Proceedings FLACOS 2012, arXiv:1209.169
Using hardware performance counters for fault localization
In this work, we leverage hardware performance counters-collected data as abstraction mechanisms for program executions and use these abstractions to identify likely causes of failures. Our approach can be summarized as follows: Hardware counters-based data is collected from both successful and failed executions, the data collected from the successful executions is used to create normal behavior models of programs, and deviations from these models observed in failed executions are scored and reported as likely causes of failures. The results of our experiments conducted on three open source projects suggest that the proposed approach can effectively prioritize the space of likely causes of failures, which can in turn improve the turn around time for defect fixes
Semantics-based Automated Web Testing
We present TAO, a software testing tool performing automated test and oracle
generation based on a semantic approach. TAO entangles grammar-based test
generation with automated semantics evaluation using a denotational semantics
framework. We show how TAO can be incorporated with the Selenium automation
tool for automated web testing, and how TAO can be further extended to support
automated delta debugging, where a failing web test script can be
systematically reduced based on grammar-directed strategies. A real-life
parking website is adopted throughout the paper to demonstrate the effectivity
of our semantics-based web testing approach.Comment: In Proceedings WWV 2015, arXiv:1508.0338
Cause Clue Clauses: Error Localization using Maximum Satisfiability
Much effort is spent everyday by programmers in trying to reduce long,
failing execution traces to the cause of the error. We present a new algorithm
for error cause localization based on a reduction to the maximal satisfiability
problem (MAX-SAT), which asks what is the maximum number of clauses of a
Boolean formula that can be simultaneously satisfied by an assignment. At an
intuitive level, our algorithm takes as input a program and a failing test, and
comprises the following three steps. First, using symbolic execution, we encode
a trace of a program as a Boolean trace formula which is satisfiable iff the
trace is feasible. Second, for a failing program execution (e.g., one that
violates an assertion or a post-condition), we construct an unsatisfiable
formula by taking the trace formula and additionally asserting that the input
is the failing test and that the assertion condition does hold at the end.
Third, using MAX-SAT, we find a maximal set of clauses in this formula that can
be satisfied together, and output the complement set as a potential cause of
the error. We have implemented our algorithm in a tool called bug-assist for C
programs. We demonstrate the surprising effectiveness of the tool on a set of
benchmark examples with injected faults, and show that in most cases,
bug-assist can quickly and precisely isolate the exact few lines of code whose
change eliminates the error. We also demonstrate how our algorithm can be
modified to automatically suggest fixes for common classes of errors such as
off-by-one.Comment: The pre-alpha version of the tool can be downloaded from
http://bugassist.mpi-sws.or
Applying and Extending the Delta Debugging Algorithm for Elevator Dispatching Algorithms (Experience Paper)
Elevator systems are one kind of Cyber-Physical Systems (CPSs), and as such,
test cases are usually complex and long in time. This is mainly because
realistic test scenarios are employed (e.g., for testing elevator dispatching
algorithms, typically a full day of passengers traveling through a system of
elevators is used). However, in such a context, when needing to reproduce a
failure, it is of high benefit to provide the minimal test input to the
software developers. This way, analyzing and trying to localize the root-cause
of the failure is easier and more agile. Delta debugging has been found to be
an efficient technique to reduce failure-inducing test inputs. In this paper,
we enhance this technique by first monitoring the environment at which the CPS
operates as well as its physical states. With the monitored information, we
search for stable states of the CPS during the execution of the simulation. In
a second step, we use such identified stable states to help the delta debugging
algorithm isolate the failure-inducing test inputs more efficiently.
We report our experience of applying our approach into an industrial elevator
dispatching algorithm. An empirical evaluation carried out with real
operational data from a real installation of elevators suggests that the
proposed environment-wise delta debugging algorithm is between 1.3 to 1.8 times
faster than the traditional delta debugging, while producing a larger reduction
in the failure-inducing test inputs. The results provided by the different
implemented delta debugging algorithm versions are qualitatively assessed with
domain experts. This assessment provides new insights and lessons learned, such
as, potential applications of the delta debugging algorithm beyond debugging
- …