Dynamic Symbolic Execution for Testing Distributed Objects

This paper extends dynamic symbolic execution to distributed and concurrent systems. Dynamic symbolic execution can be used in software testing to systematically identify equivalence classes of input values and has been shown to scale well to large systems. Although mainly applied to sequential programs, this scalability makes it interesting to consider the technique in the distributed and concurrent setting as well. In order to extend the technique to concurrent systems, it is necessary to obtain sufficient control over the scheduling of concurrent activities to avoid race conditions. Creol, a modeling language for distributed concurrent objects, solves this problem by abstracting from a particular scheduling policy but explicitly defining scheduling points. This provides sufficient control to apply the technique of dynamic symbolic execution for model based testing of interleaved processes. The technique has been formalized in rewriting logic, executes in Maude, and applied to non-trivial examples, including an industrial case study.

[1]  Nikolai Tillmann,et al.  Pex-White Box Test Generation for .NET , 2008, TAP.

[2]  Sarfraz Khurshid,et al.  Generalized Symbolic Execution for Model Checking and Testing , 2003, TACAS.

[3]  Einar Broch Johnsen,et al.  An Asynchronous Communication Model for Distributed Concurrent Objects , 2004, SEFM.

[4]  Gregg Rothermel,et al.  Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis , 2004 .

[5]  Bernhard K. Aichernig,et al.  Modeling and Testing Multi-Threaded Asynchronous Systems with Creol , 2009, Electron. Notes Theor. Comput. Sci..

[6]  Koushik Sen,et al.  CUTE and jCUTE: Concolic Unit Testing and Explicit Path Model-Checking Tools , 2006, CAV.

[7]  José Meseguer,et al.  Conditioned Rewriting Logic as a United Model of Concurrency , 1992, Theor. Comput. Sci..

[8]  Frank S. de Boer,et al.  A Complete Guide to the Future , 2007, ESOP.

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

[10]  Dawson R. Engler,et al.  ARCHER: using symbolic, path-sensitive analysis to detect memory access errors , 2003, ESEC/FSE-11.

[11]  Eitan Farchi,et al.  Framework for testing multi‐threaded Java programs , 2003, Concurr. Comput. Pract. Exp..

[12]  Oscar Nierstrasz,et al.  Software Engineering - ESEC/FSE '99 , 1999 .

[13]  Insup Lee,et al.  A Temporal Logic Based Theory of Test Coverage and Generation , 2002, TACAS.

[14]  Karl N. Levitt,et al.  SELECT—a formal system for testing and debugging programs by symbolic execution , 1975 .

[15]  Raimund Kirner Towards Preserving Model Coverage and Structural Code Coverage , 2009, EURASIP J. Embed. Syst..

[16]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[17]  Brian Campbell,et al.  Amortised Memory Analysis Using the Depth of Data Structures , 2009, ESOP.

[18]  Narciso Martí-Oliet,et al.  Maude: specification and programming in rewriting logic , 2002, Theor. Comput. Sci..

[19]  Grigore Rosu,et al.  A Rewrite Logic Approach to Semantic Definition, Design and Analysis of Object-Oriented Languages , 2006 .

[20]  Sarfraz Khurshid,et al.  Test input generation with java PathFinder , 2004, ISSTA '04.

[21]  David Notkin,et al.  Symstra: A Framework for Generating Object-Oriented Unit Tests Using Symbolic Execution , 2005, TACAS.

[22]  W. Visser,et al.  Second Generation of a Java Model Checker , 2000 .

[23]  Jan Tretmans,et al.  TorX: Automated Model-Based Testing , 2003 .

[24]  Angelo Gargantini,et al.  Using model checking to generate tests from requirements specifications , 1999, ESEC/FSE-7.

[25]  Thomas Ball,et al.  Finding and Reproducing Heisenbugs in Concurrent Programs , 2008, OSDI.

[26]  Alexander Pretschner,et al.  One evaluation of model-based testing and its automation , 2005, ICSE.

[27]  Daniel Hoffman,et al.  Tool Support for Testing Concurrent Java Components , 2003, IEEE Trans. Software Eng..

[28]  Koushik Sen DART: Directed Automated Random Testing , 2009, Haifa Verification Conference.