skip to main content
research-article

Testing Programs with Contextual Unfoldings

Published:22 November 2017Publication History
Skip Abstract Section

Abstract

In this article, we present a new algorithm that combines contextual unfoldings and dynamic symbolic execution to systematically test multithreaded programs. The approach uses symbolic execution to limit the number of input values and unfoldings to thus limit the number of thread interleavings that are needed to cover reachable local states of threads in the program under test. We show that the use of contextual unfoldings allows interleavings of threads to be succinctly represented. This can in some cases lead to a substantial reduction in the number of needed test executions when compared to previous approaches.

References

  1. Parosh Aziz Abdulla, Stavros Aronis, Bengt Jonsson, and Konstantinos F. Sagonas. 2014. Optimal dynamic partial order reduction. In POPL, Suresh Jagannathan and Peter Sewell (Eds.). ACM, 373--384. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Paolo Baldan, Alessandro Bruni, Andrea Corradini, Barbara König, César Rodríguez, and Stefan Schwoon. 2012. Efficient unfolding of contextual Petri nets. Theor. Comput. Sci. 449 (2012), 2--22. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Paolo Baldan, Andrea Corradini, Barbara König, and Stefan Schwoon. 2008. McMillan’s complete prefix for contextual nets. T. Petri Nets and Other Models of Concurrency 1 (2008), 199--220. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Leonardo Mendonça de Moura and Nikolaj Bjørner. 2008. Z3: An efficient SMT solver. In Proceedings of the 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS 2008) (Lecture Notes in Computer Science), Vol. 4963. Springer, 337--340. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Volker Diekert. 1995. The Book of Traces. World Scientific Publishing Co., Inc., River Edge, NJ, USA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Javier Esparza and Keijo Heljanko. 2008. Unfoldings -- A Partial-Order Approach to Model Checking. Springer-Verlag. 172 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Azadeh Farzan and P. Madhusudan. 2006. Causal atomicity. In CAV (Lecture Notes in Computer Science), Thomas Ball and Robert B. Jones (Eds.), Vol. 4144. Springer, 315--328. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Cormac Flanagan and Patrice Godefroid. 2005. Dynamic partial-order reduction for model checking software. In POPL, Jens Palsberg and Martín Abadi (Eds.). ACM, 110--121. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Patrice Godefroid. 1996. Partial-Order Methods for the Verification of Concurrent Systems: An Approach to the State-Explosion Problem. Springer-Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Patrice Godefroid. 1997. Model checking for programming languages using Verisoft. In POPL, Peter Lee, Fritz Henglein, and Neil D. Jones (Eds.). ACM Press, 174--186. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Patrice Godefroid, Nils Klarlund, and Koushik Sen. 2005. DART: Directed automated random testing. In Proceedings of the ACM SIGPLAN 2005 Conference on Programming Language Design and Implementation (PLDI’05). ACM, 213--223. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Kari Kähkönen. 2015. Automated Systematic Testing Methods for Multithreaded Programs. Doctoral Dissertation. School of Science, Aalto University.Google ScholarGoogle Scholar
  13. Kari Kähkönen and Keijo Heljanko. 2014. Lightweight state capturing for automated testing of multithreaded programs. In TAP (Lecture Notes in Computer Science), Martina Seidl and Nikolai Tillmann (Eds.), Vol. 8570. Springer, 187--203.Google ScholarGoogle Scholar
  14. Kari Kähkönen and Keijo Heljanko. 2014. Testing multithreaded programs with contextual unfoldings and dynamic symbolic execution. In Proceedings of the 14th International Conference on Application of Concurrency to System Design (ACSD’14). IEEE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Kari Kähkönen, Olli Saarikivi, and Keijo Heljanko. 2012. Using unfoldings in automated testing of multithreaded programs. In Proceedings of the 27th IEEE/ACM International Conference Automated Software Engineering (ASE’12). 150--159. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Kari Kähkönen, Olli Saarikivi, and Keijo Heljanko. 2015. Unfolding based automated testing of multithreaded programs. Autom. Softw. Eng. 22, 4 (2015), 475--515. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Victor Khomenko, Alex Kondratyev, Maciej Koutny, and Walter Vogler. 2005. Merged processes - A new condensed representation of Petri net behaviour. In CONCUR (Lecture Notes in Computer Science), Martín Abadi and Luca de Alfaro (Eds.), Vol. 3653. Springer, 338--352. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Ugo Montanari and Francesca Rossi. 1995. Contextual nets. Acta Inf. 32, 6 (1995), 545--596. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Doron Peled. 1993. All from one, one for all: On model checking using representatives. In CAV (Lecture Notes in Computer Science), Costas Courcoubetis (Ed.), Vol. 697. Springer, 409--423. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. César Rodríguez, Stefan Schwoon, and Victor Khomenko. 2013. Contextual merged processes. In Petri Nets (Lecture Notes in Computer Science), José Manuel Colom and Jörg Desel (Eds.), Vol. 7927. Springer, 29--48. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Olli Saarikivi, Kari Kähkönen, and Keijo Heljanko. 2012. Improving dynamic partial order reductions for concolic testing. In Proceedings of the 12th International Conference on Application of Concurrency to System Design (ACSD’12). 132--141. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Koushik Sen. 2006. Scalable Automated Methods for Dynamic Program Analysis. Doctoral thesis. University of Illinois. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Koushik Sen and Gul Agha. 2006. A race-detection and flipping algorithm for automated testing of multi-threaded programs. In Haifa Verification Conference (Lecture Notes in Computer Science), Vol. 4383. Springer, 166--182. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Antti Valmari. 1991. Stubborn sets for reduced state space generation. In Proceedings of the 10th International Conference on Applications and Theory of Petri Nets: Advances in Petri Nets 1990. Springer-Verlag, London, UK, 491--515. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Testing Programs with Contextual Unfoldings

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!