A concurrency test tool for Java monitors

The Java programming language supports monitors. Monitor implementations, like other concurrent programs, are hard to test due to the inherent non-determinism. This paper presents the ConAn (Concurrency Analyser) tool for generating drivers for the testing of Java monitors. To obtain adequate controllability over the interactions between Java threads, the generated driver contains processes that are synchronized by a clock. The driver automatically executes the calls in the test sequence in the prescribed order and compares the outputs against the expected outputs specified in the test sequence. The method and tool are illustrated on an asymmetric producer-consumer monitor and their application to two other monitors is discussed.

[1]  Daniel Hoffman,et al.  Prose+test cases=specifications , 2000, Proceedings. 34th International Conference on Technology of Object-Oriented Languages and Systems - TOOLS 34.

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

[3]  Daniel Hoffman,et al.  Tool Support for Testing Java Monitors , 2001 .

[4]  Wei Jen Yeh,et al.  Re‐designing tasking structures of Ada programs for analysis: A case study , 1994, Softw. Test. Verification Reliab..

[5]  Matthew B. Dwyer,et al.  Using the Bandera Tool Set to Model-Check Properties of Concurrent Java Software , 2001, CONCUR.

[6]  Richard N. Taylor,et al.  A general-purpose algorithm for analyzing concurrent programs , 1983, CACM.

[7]  Jong-Deok Choi,et al.  Deterministic replay of Java multithreaded applications , 1998, SPDT '98.

[8]  Kazuo Ushijima,et al.  Test-case generation for concurrent programs with the testing criteria using interaction sequences , 1999, Proceedings Sixth Asia Pacific Software Engineering Conference (ASPEC'99) (Cat. No.PR00509).

[9]  George S. Avrunin,et al.  Data flow analysis for checking properties of concurrent Java programs , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[10]  Paul A. Strooper,et al.  A case study in testing distributed systems , 2001, Proceedings 3rd International Symposium on Distributed Objects and Applications.

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

[12]  Daniel Hoffman,et al.  Tools and techniques for Java API testing , 2000, Proceedings 2000 Australian Software Engineering Conference.

[13]  Per Brinch Hansen,et al.  Reproducible testing of monitors , 1978, Softw. Pract. Exp..

[14]  Richard H. Carver,et al.  Debugging Concurrent Ada Programs by Deterministic Execution , 1991, IEEE Trans. Software Eng..

[15]  Paul A. Strooper,et al.  Testing Java monitors through deterministic execution , 2001, Proceedings 2001 Australian Software Engineering Conference.

[16]  Jeff Magee,et al.  Concurrency - state models and Java programs , 2006 .