Skip to main content

Symbiotic  6: generating test cases by slicing and symbolic execution

Abstract

Symbiotic is a bug-finding and verification tool that integrates light-weight static analyses and instrumentation with program slicing and symbolic execution. The techniques are suitably combined according to a given goal. The paper describes a particular configuration competing in Test-Comp  2019. We also provide a brief analysis of Symbiotic ’s results achieved in the competition. As our tool uses a fork of the open-source symbolic executor Klee, we focus on comparison with mainstream Klee that also participated in the competition this year.

This is a preview of subscription content, access via your institution.

Fig. 1

References

  1. Cadar, C., Dunbar, D., Engler, D.: KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs. In: OSDI, pp. 209–224. USENIX Association (2008)

  2. Chalupa, M., Strejček, J., Vitovská, M.: Joint forces for memory safety checking revisited. Int. J. Softw. Tools Technol. Transf. 22, 115–133 (2020). https://doi.org/10.1007/s10009-019-00526-2

    Article  Google Scholar 

  3. Chalupa, M., Vitovská, M., Strejček, J.: Symbiotic 5: Boosted instrumentation-(competition contribution). In: Beyer, D., Huisman, M. (eds.) TACAS, volume 10806 of Lecture Notes in Computer Science, pp. 442–446. Springer, Berlin (2018)

    Google Scholar 

  4. De Moura, L., Bjørner, N.: Z3: an efficient SMT solver. In: TACAS, volume 4963 of LNCS, pp. 337–340. Springer (2008)

  5. Ferrante, J., Ottenstein, K.J., Warren, J.D.: The program dependence graph and its use in optimization. In: International Symposium on Programming, volume 167 of Lecture Notes in Computer Science, pp. 125–132. Springer (1984)

  6. Ganesh, V., Dill, D.L.: A decision procedure for bit-vectors and arrays. In: CAV, volume 4590 of Lecture Notes in Computer Science, pp. 519–531. Springer (2007)

  7. Horwitz, S., Reps, T.W., Binkley, D.: Interprocedural slicing using dependence graphs. ACM Trans. Program. Lang. Syst. 12(1), 26–60 (1990)

    Article  Google Scholar 

  8. King, J.C.: Symbolic execution and program testing. Commun. ACM 19(7), 385–394 (1976)

    Article  MathSciNet  Google Scholar 

  9. LLVM. http://llvm.org/

  10. Slaby, J., Strejček, J., Trtík, M.: Symbiotic: synergy of instrumentation, slicing, and symbolic execution-(competition contribution). In: TACAS, volume 7795 of Lecture Notes in Computer Science, pp. 630–632. Springer (2013)

  11. Vitovská, M., Chalupa, M., Strejček, J.: SBT-instrumentation: a tool for configurable instrumentation of LLVM bitcode. CoRR, arXiv:1810.12617 (2018)

  12. Weiser, M.: Program slicing. In: ICSE, pp. 439–449. IEEE (1981)

Download references

Acknowledgements

The research is supported by The Czech Science Foundation grant GA18-02177S.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Marek Chalupa.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Jury member: Martina Vitovská.

Rights and permissions

Reprints and Permissions

About this article

Verify currency and authenticity via CrossMark

Cite this article

Chalupa, M., Vitovská, M., Jašek, T. et al. Symbiotic  6: generating test cases by slicing and symbolic execution. Int J Softw Tools Technol Transfer 23, 875–877 (2021). https://doi.org/10.1007/s10009-020-00573-0

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10009-020-00573-0

Keywords

  • Symbiotic
  • Program slicing
  • Symbolic execution
  • Klee