A Specification-Based Methology for Testing Concurrent Programs

This paper presents and evaluates a specification-based methodology for testing concurrent programs. This methodology requires sequencing constraints, which specify restrictions on the allowed sequences of synchronization events. Sequencing constraints for a concurrent program can be derived from the program's formal or informal specification. Details of the proposed testing methodology based on the use of CSPE (Constraints on Succeeding and Preceding Events) are given. How to achieve coverage and detect violations of CSPE constraint for a concurrent program, according to deterministic and nondeterministic testing of this program, are described. A coverage criterion for CSPE-based testing is defined and analyzed. The results of our empirical studies of CSPE-based testing for two concurrent problems are reported. Our results indicate that the use of sequencing constraints for specification-based testing of concurrent programs is a promising approach.

[1]  Leslie Lamport,et al.  Specifying Concurrent Program Modules , 1983, TOPL.

[2]  David C. Luckham,et al.  TSL: task sequencing language , 1985 .

[3]  David F. McAllister,et al.  An experimental evaluation of the effectiveness of random testing of fault-tolerant software , 1986 .

[4]  David S. Rosenblum Specifying concurrent systems with TSL , 1991, IEEE Software.

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

[6]  Gerard J. Holzmann,et al.  Design and validation of computer protocols , 1991 .

[7]  Gregory R. Andrews,et al.  Concurrent programming - principles and practice , 1991 .

[8]  Richard H. Carver,et al.  Static analysis of concurrent software for deriving synchronization constraints , 1991, [1991] Proceedings. 11th International Conference on Distributed Computing Systems.

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

[10]  Richard N. Taylor,et al.  Structural Testing of Concurrent Programs , 1992, IEEE Trans. Software Eng..

[11]  R.-D. Yang,et al.  Path analysis testing of concurrent programs , 1992, Inf. Softw. Technol..

[12]  Rance Cleaveland,et al.  The concurrency workbench: a semantics-based tool for the verification of concurrent systems , 1993, TOPL.

[13]  Leslie Lamport,et al.  Verification and Specifications of Concurrent Programs , 1993, REX School/Symposium.

[14]  Kuo-Chung Tai Predicate-based test generation for computer programs , 1993, Proceedings of 1993 15th International Conference on Software Engineering.

[15]  Gregg Rothermel,et al.  An experimental evaluation of selective mutation , 1993, Proceedings of 1993 15th International Conference on Software Engineering.

[16]  Richard H. Carver,et al.  Use of sequencing constraints for specifying, testing, and debugging concurrent programs , 1994, Proceedings of 1994 International Conference on Parallel and Distributed Systems.

[17]  Richard Gerber,et al.  Compositional model checking of Ada tasking programs , 1994, Proceedings of COMPASS'94 - 1994 IEEE 9th Annual Conference on Computer Assurance.

[18]  Qing Yu,et al.  Oracles for checking temporal properties of concurrent systems , 1994, SIGSOFT '94.

[19]  Luis Ferreira Pires,et al.  Architectural notes: a framework for distributed systems development , 1994 .

[20]  Debra J. Richardson,et al.  TAOS: Testing with Analysis and Oracle Support , 1994, ISSTA '94.

[21]  Elaine J. Weyuker,et al.  Automatically Generating Test Data from a Boolean Specification , 1994, IEEE Trans. Software Eng..

[22]  Richard H. Carver,et al.  Test sequence generation from formal specifications of distributed programs , 1995, Proceedings of 15th International Conference on Distributed Computing Systems.

[23]  R. H. Carver,et al.  Integrating formal methods and testing for concurrent programs , 1995, COMPASS '95 Proceedings of the Tenth Annual Conference on Computer Assurance Systems Integrity, Software Safety and Process Security'.