Study of Integrating Random and Symbolic Testing for Object-Oriented Software

@inproceedings{Dimjasevic2018StudyOI,
  title={Study of Integrating Random and Symbolic Testing for Object-Oriented Software},
  author={Marko Dimjasevic and Falk Howar and Kasper S{\o}e Luckow and Zvonimir Rakamaric},
  booktitle={IFM},
  year={2018}
}
Testing is currently the main technique adopted by the industry for improving the quality, reliability, and security of software. In order to lower the cost of manual testing, automatic testing techniques have been devised, such as random and symbolic testing, with their respective trade-offs. For example, random testing excels at fast global exploration of software, while it plateaus when faced with hard-to-hit numerically-intensive execution paths. On the other hand, symbolic testing excels… 
PREACH: A Heuristic for Probabilistic Reachability to Identify Hard to Reach Statements
TLDR
The experiments indicate that the heuristic-based probabilistic reachability analysis tool PReach can identify hard to reach statements with high precision and accuracy in benchmarks from software verification and testing competitions, Apache Commons Lang, and the DARPA STAC program.
Towards making formal methods normal: meeting developers where they are
TLDR
A target of two orders of magnitude increase in adoption of formal methods by integrating formal methods with developers' existing practices and workflows is proposed by ensuring a positive `weekly cost-benefit' ratio for developer time invested.

References

SHOWING 1-10 OF 38 REFERENCES
Quantifying the Characteristics of Java Programs That May Influence Symbolic Execution from a Test Data Generation Perspective
TLDR
A sample of 100 open source Java projects is explored in order to analyze characteristics that are relevant to generate test data using symbolic execution to provide valuable insight into how researchers and practitioners can tailor symbolic execution techniques and tools to better suit the needs of different Java applications.
Improving Structural Testing of Object-Oriented Programs via Integrating Evolutionary Testing and Symbolic Execution
  • Kobi Inkumsah, Tao Xie
  • Computer Science
    2008 23rd IEEE/ACM International Conference on Automated Software Engineering
  • 2008
TLDR
A novel framework called Evacon is proposed that integrates evolutionary testing and symbolic execution and can achieve higher branch coverage than the ones generated by evolutionary testing, symbolic execution, or random testing within the same amount of time.
KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs
TLDR
A new symbolic execution tool, KLEE, capable of automatically generating tests that achieve high coverage on a diverse set of complex and environmentally-intensive programs, and significantly beat the coverage of the developers' own hand-written test suite is presented.
Generalized Symbolic Execution for Model Checking and Testing
TLDR
A source to source translation to instrument a program is defined, which enables standard model checkers to perform symbolic execution of the program, and a novel symbolic execution algorithm is given that handles dynamically allocated structures, method preconditions and concurrency.
Improving search-based test suite generation with dynamic symbolic execution
TLDR
The Genetic Algorithm is extended in the Evosuite unit test generator to integrate DSE in an adaptive approach where feedback from the search determines when a problem is suitable for DSE, and the hybrid approach improves over both its constituent techniques.
OCAT: object capture-based automated testing
TLDR
This work proposes a novel approach called Object Capture based Automated Testing (OCAT), which captures object instances dynamically from program executions and helps an existing automated test-generation tool, such as a random testing tool, to achieve higher code coverage.
Combining unit-level symbolic execution and system-level concrete execution for testing nasa software
TLDR
Symbolic Java PathFinder is developed, a symbolic execution framework that implements a non-standard bytecode interpreter on top of the Java Pathfinder model checking tool that combines unit-level symbolic execution and system-level concrete execution for generating test cases that satisfy user-specified testing criteria.
Time to Clean Your Test Objectives
TLDR
This work introduces a sound and scalable technique to prune out a significant part of the infeasible and redundant objectives produced by a panel of white-box criteria, and reduces this task to proving the validity of logical assertions in the code under test.
MACE: Model-inference-Assisted Concolic Exploration for Protocol and Vulnerability Discovery
TLDR
This paper uses a combination of symbolic and concrete execution to build an abstract model of the analyzed application, in the form of a finite-state automaton, and uses the model to guide further state-space exploration, which increases the code coverage and exploration depth.
CUTE: a concolic unit testing engine for C
TLDR
A method to represent and track constraints that capture the behavior of a symbolic execution of a unit with memory graphs as inputs is developed and an efficient constraint solver is proposed to facilitate incremental generation of such test inputs.
...
...