Symbiotic 8: Parallel and Targeted Test Generation

The setup of Symbiotic 8 for Test-Comp 2021 brings radical changes in the test generation for coverage-branches property. Similarly as in Symbiotic 7, we generate tests by running our fork of symbolic executor Klee on the analyzed program. Symbiotic 8, however, runs several instances of Klee in parallel. We run one instance of Klee on the original program and, simultaneously, we create one (intentionally unsound) program slice for every program-terminating instruction in the program and run Klee on these slices. Apart from this principal change, we also improved other components of the tool, mainly the program slicer. Further, our fork of Klee now supports symbolic pointer arithmetics and comparison of symbolic addresses.

[1]  James C. King,et al.  Symbolic execution and program testing , 1976, CACM.

[2]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[3]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[4]  Dawson R. Engler,et al.  KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs , 2008, OSDI.

[5]  Marek Chalupa,et al.  Symbiotic 6: generating test cases by slicing and symbolic execution , 2020, International Journal on Software Tools for Technology Transfer.

[6]  Tomás Vojnar,et al.  Symbiotic 7: Integration of Predator and More , 2020, TACAS.