Correctness attraction: a study of stability of software behavior under runtime perturbation

  title={Correctness attraction: a study of stability of software behavior under runtime perturbation},
  author={Benjamin Danglot and Philippe Preux and Beno{\^i}t Baudry and Monperrus Martin},
  journal={Empirical Software Engineering},
Can the execution of software be perturbed without breaking the correctness of the output? In this paper, we devise a protocol to answer this question from a novel perspective. In an experimental study, we observe that many perturbations do not break the correctness in ten subject programs. We call this phenomenon “correctness attraction”. The uniqueness of this protocol is that it considers a systematic exploration of the perturbation space as well as perfect oracles to determine the… 
Software robustness: a survey, a theory, and prospects
It is theorised that for failed disruption propagation to occur, a necessary condition is that the code region where the disruption occurs is composed with or succeeded by a subsequent code region that suffers entropy loss over all executions.
TripleAgent: Monitoring, Perturbation and Failure-Obliviousness for Automated Resilience Improvement in Java Applications
  • Long Zhang, Monperrus Martin
  • Computer Science
    2019 IEEE 30th International Symposium on Software Reliability Engineering (ISSRE)
  • 2019
A novel resilience improvement system to combine automated monitoring, automated perturbation injection, and automated resilience improvement that is achieved thanks to the failure-oblivious computing concept.
A journey among Java neutral program variants
This work aims at characterizing plastic code regions in Java programs, i.e., the code regions that are modifiable while maintaining functional correctness, according to a test suite, and designs 3 novel program transformations, targeted at specific plastic regions.
Analyzing the Effects of Bugs on Software Interfaces
The results point out that the traditional error models, as used so far, do not accurately emulate software faults, but that richer interface errors need to be injected, by: injecting both fail-stop behaviors and data corruptions; targeting larger amounts of corrupted data structures.
Automatic Unit Test Amplification For DevOps
This thesis aims at addressing the lack of a tool that assists developers in regression testing by using test suite amplification, and proposes a new approach based on both test inputs transformation and assertions generation to amplify the test suite.
Incremental Evaluation in Genetic Programming
Sometimes GP evolves side effect free trees, which gives rise to functional resilience to source code changes, and GP convergence is viewed via information theory as evolving a smooth landscape and software plasticity.
Naive Bayes: applications, variations and vulnerabilities: a review of literature with code snippets for implementation
This manuscript surveys the latest applications of NB and discusses its variations in different settings, and recommendations are made regarding the applicability of NB while exploring the robustness of the algorithm.
Dissipative polynomials
Limited precision floating point computer implementations of large polynomial arithmetic expressions are nonlinear and dissipative, so even with a large number of test cases, both large and small changes deep within software typically have no effect and are invisible externally.
Amplification Automatique de Tests Unitaires pour DevOps
Au cours des dernieres annees, les tests unitaires sont devenus un element essentiel de tout projetlogiciel serieux afin de verifier son bon fonctionnement.Cependant, les tests sont fastidieux et


Avoiding Program Failures Through Safe Execution Perturbations
An online framework to capture and recover from program failures and prevent them from occurring in the future through safe execution perturbations that is very effective in avoiding concurrency faults, heap memory overflow faults, and malicious requests.
Application-Level Correctness and its Impact on Fault Tolerance
  • Xuanhua Li, D. Yeung
  • Computer Science
    2007 IEEE 13th International Symposium on High Performance Computer Architecture
  • 2007
A detailed fault susceptibility study that measures how much more fault resilient programs are when defining correctness at the application level compared to the architecture level and presents a lightweight fault recovery mechanism that exploits the relaxed requirements on numerical integrity provided by application-level correctness to reduce checkpoint cost.
Perturbation analysis of computer programs
A model for perturbation analysis is defined, and the model is used to explain the performance of analysis techniques (e.g. statement, data flow, and mutation analysis).
Perturbing and evaluating numerical programs without recompilation—the wonglediff way
An implementation of wonglediff that checks the sensitivity of programs to random changes in the floating‐point rounding modes, with an HTML version of the output file, with inline mark‐up summarizing individual differences among the multiple instances.
Y-branches: when you come to a fork in the road, take it
The effects of manipulating the architected direction of conditional branches are studied to find that about 40% of all dynamic branches and about 50% of mispredicted branches do not affect correct program behavior when forced down the incorrect path.
The Oracle Problem in Software Testing: A Survey
This paper provides a comprehensive survey of current approaches to the test oracle problem and an analysis of trends in this important area of software testing research and practice.
The Multiple Facets of Software Diversity
This survey includes classical work about design and data diversity for fault tolerance, as well as the cybersecurity literature that investigates randomization at different system levels, with an emphasis on the most recent advances in the field.
ASAC: automatic sensitivity analysis for approximate computing
This paper proposes a novel sensitivity analysis that automatically generates annotations for programs for the purpose of approximate computing, and evaluated its analysis on a range of applications, achieving a 86% accuracy compared to manual annotations by programmers.
Decompilation as search
This thesis makes the case that decompilation is more effectively accomplished through search, and proposes an approach to prototype recovery that follows the principle of conformant execution, in the form of inlined data source tracking, to infer arrays, pointer-to-pointers and recursive data structures.
Perturbing numerical calculations for statistical analysis of floating-point program (in)stability
This paper develops a novel, practical technique to help application programmers (or even numerical experts) obtain high-level information regarding the numerical stability and accuracy of their code by systematically altering the underlying numerical calculation, and proposes two complementary perturbations to statistically measure numerical stability.