Control of nondeterminism in testing distributed multithreaded programs

Distributed and multithreaded systems are usually much more complex to analyze statically or test dynamically due to the nondeterminism involved. Forcing the system to take a particular execution path manually may be fairly difficult sometimes. In this paper, we present our work in test control methods for distributed concurrent systems, and introduce the framework of our automated test control toolkit that can help users to realize some particular execution paths desired. The testing is specification-based: a test scenario is given as a pair of a test case and a control constraint expressing the partial order among certain events we are interested in. The test control is however based on a derived constraint only on shared objects. This allows us to develop more efficient test tools based on some unique code extension for different test scenarios. In our experiment, systems under testing consist of a set of processes, each in Java possibly with multiple threads, and communications among the processes are through CORBA.

[1]  Ivar Jacobson,et al.  The Unified Modeling Language User Guide , 1998, J. Database Manag..

[2]  Thomas J. LeBlanc,et al.  Debugging Parallel Programs with Instant Replay , 1987, IEEE Transactions on Computers.

[3]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[4]  Mukesh Singhal,et al.  Efficient Distributed Detection of Conjunctions of Local Predicates , 1998, IEEE Trans. Software Eng..

[5]  Jerzy Tiuryn,et al.  Logics of Programs , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[6]  Mordechai Ben-Ari,et al.  Principles of concurrent and distributed programming , 2005, PHI Series in computer science.

[7]  Zengo Furukawa,et al.  A prototype of a concurrent behavior monitoring tool for testing of concurrent programs , 1996, Proceedings 1996 Asia-Pacific Software Engineering Conference.

[8]  Ekkart Rudolph,et al.  Tutorial on Message Sequence Charts , 1996, Comput. Networks ISDN Syst..

[9]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[10]  Richard H. Carver,et al.  Use of sequencing constraints for specification-based testing of concurrent programs , 1998 .

[11]  Richard H. Carver,et al.  Replay and testing for concurrent programs , 1991, IEEE Software.

[12]  Kuo-Chung Tai,et al.  Design of a toolset for dynamic analysis of concurrent Java programs , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[13]  S. Venkatesan,et al.  Testing and Debugging Distributed Programs Using Global Predicates , 1995, IEEE Trans. Software Eng..

[14]  Colin Stirling,et al.  Modal and Temporal Logics for Processes , 1996, Banff Higher Order Workshop.

[15]  Peter C. Bates Debugging Heterogeneous Distributed Systems Using Event-Based Models of Behavior , 1995, ACM Trans. Comput. Syst..

[16]  E. Allen Emerson,et al.  Automated Temporal Reasoning about Reactive Systems , 1996, Banff Higher Order Workshop.

[17]  David Chenho Kung,et al.  State-based reproducible testing for CORBA applications , 1999, 1999 Proceedings International Symposium on Software Engineering for Parallel and Distributed Systems.