This Article 
 Bibliographic References 
 Add to: 
Reachability Testing of Concurrent Programs
June 2006 (vol. 32 no. 6)
pp. 382-403
One approach to testing concurrent programs, called reachability testing, generates synchronization sequences automatically and on-the-fly, without constructing any static models. In this paper, we present a general execution model for concurrent programs that allows reachability testing to be applied to several commonly used synchronization constructs. We also present a new method for performing reachability testing. This new method guarantees that every partially ordered synchronization sequence will be exercised exactly once without having to save any sequences that have already been exercised. We describe a prototype reachability testing tool called RichTest and report some empirical results, including a comparison between RichTest and a partial order reduction-based tool called VeriSoft. RichTest performed significantly better for the programs in our study.

[1] Ada Language Reference Manual, Jan. 1983.
[2] G. Andrews, Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley, 2000.
[3] A. Bechini and K.C. Tai, “Timestamps for Programs Using Messages and Shared Variables,” Proc. 18th Int'l Conf. Distributed Computing Systems, pp. 266-273, 1998.
[4] A. Bernstein, “Analysis of Programs for Parallel Processing,” IEEE Trans. Electronic Computers, vol. 15, no. 5, pp. 757-763, 1966.
[5] D.L. Bruening, “Systematic Testing of Multithreaded Java Programs,” master's thesis, Massachusetts Inst. of Tech nology, 1999.
[6] R. Carver and Y. Lei, “A General Model for Reachability Testing of Concurrent Programs,” Proc. Int'l Conf. Formal Eng. Methods, pp. 76-98, 2004.
[7] R. Carver and K.C. Tai, “Replay and Testing for Concurrent Programs,” IEEE Software, vol. 8, no. 2, pp. 66-74, Mar. 1991.
[8] R. Carver and K.C. Tai, “Use of Sequencing Constraints for Specification-Based Testing of Concurrent Programs,” IEEE Trans. Software Eng., vol. 24, no. 6, pp. 471-490, June 1998.
[9] R. Carver and K.C Tai, Modern Multithreading. Wiley, 2005.
[10] O. Edelstein, E. Farchi, Y. Nir, G. Ratsaby, and S. Ur, “Multithread Java Program Test Generation,” IBM Systems J., vol. 41, no. 1, pp. 111-125, 2002.
[11] C.J. Fidge, “Logical Time in Distributed Computing Systems,” Computer, pp. 28-33, Aug. 1991.
[12] C. Flanagan and P. Godefroid, “Dynamic Partial Order Reduction for Model Checking Software,” Proc. 32nd Symp. Principles of Programming Languages (POPL), pp. 110-121, 2005.
[13] P. Godefroid, “Software Model Checking: The VeriSoft Approach,” Formal Methods in System Design, vol. 26, no. 2, pp. 77-101, 2005.
[14] K. Havelund and T. Pressburger, “Model Checking Java Programs Using Java PathFinder,” Int'l J. Software Tools for Technology Transfer (STTT), vol. 2, no. 4, pp. 366-381, Apr. 2000.
[15] G.H. Hwang, K.C. Tai, and T.L. Huang, “Reachability Testing: An Approach to Testing Concurrent Software,” Int'l J. Software Eng. and Knowledge Eng., vol. 5, no. 4, pp. 493-510, 1995.
[16] S. Katz and D. Peled, “Defining Conditional Independence Using Collapses,” Theoretical Computer Science, vol. 101, pp. 337-359, 1992.
[17] P.V. Koppol, R.H. Carver, and K.C. Tai, “Incremental Integration Testing of Concurrent Programs,” IEEE Trans. Software Eng., vol. 28, no. 6, pp. 607-623, June 2002.
[18] L. Lamport, “Time, Clocks, and the Ordering of Events in a Distributed System,” Comm. ACM, pp. 558-565, July 1978.
[19] Y. Lei and K.C. Tai, “Efficient Reachability Testing of Asynchronous Message-Passing Programs,” Proc. Eighth IEEE Int'l Conf. Eng. for Complex Computer Systems, pp. 35-44, Dec. 2002.
[20] Y. Lei and R.H. Carver, “Reachability Testing of Semaphore-Based Programs,” Proc. 28th Computer Software and Applications Conf. (COMPSAC), pp. 312-317, 2004.
[21] Y. Lei and R. Carver, “Reachability Testing of Monitor-Based Programs,” Proc. Int'l Conf. Software Eng. and Applications, pp. 312-317, 2004.
[22] Y. Lei and R. Carver, “A New Algorithm for Reachability Testing of Concurrent Programs,” Proc. Int'l Symp. Software Reliability Eng., pp. 346-355, 2005.
[23] F. Mattern, “Virtual Time and Global States of Distributed Systems,” Parallel and Distributed Algorithms, M. Cosnard et al., eds., pp. 215-226, North Holland: Elsevier Science, 1989.
[24] R.H.B. Netzer, “Optimal Tracing and Replay for Debugging Shared-Memory Parallel Programs,” Proc. Third ACM/ONR Workshop Parallel and Distributed Debugging, pp. 1-11, 1993.
[25] G. Ricart and A.K. Agrawala, “An Optimal Algorithm for Mutual Exclusion in Computer Networks,” Comm. ACM, vol. 24, no. 1, pp. 9-17, Jan. 1981.
[26] S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson, “Eraser: A Dynamic Race Detector for Multithreaded Programs,” IEEE Trans. Computer Systems, vol. 15, no. 4, pp. 391-411, 1998.
[27] S.D. Stoller, “Testing Concurrent Java Programs Using Randomized Scheduling,” Proc. Second Workshop Runtime Verification (RV), 2002.
[28] K.C. Tai, “Race Analysis of Traces of Asynchronous Message-Passing Programs,” Proc. 17th Int'l Conf. Distributed Computing Systems, pp. 261-268, 1997.
[29] K.C. Tai, “Reachability Testing of Asynchronous Message-Passing Programs,” Proc. Second Int'l Workshop Software Eng. for Parallel and Distributed Systems, pp. 50-61, 1997.
[30] K.C. Tai, R.H. Carver, and E. Obaid, “Debugging Concurrent Ada Programs by Deterministic Execution,” IEEE Trans. Software Eng., vol. 17, no. 1, pp. 45-63, Jan. 1991.
[31] K.C. Tai and R.H. Carver, “Testing of Distributed Programs,” Handbook of Parallel and Distributed Computing, A. Zoyama, ed., chapter 33, pp. 955-978, McGraw-Hill, 1996.
[32] R.N. Taylor, “A General-Purpose Algorithm for Analyzing Concurrent Programs,” Comm. ACM, vol. 26, no. 5, pp. 362-376, 1983.
[33] R.N. Taylor, D.L. Levine, and C.D. Kelly, “Structural Testing of Concurrent Programs,” IEEE Trans. Software Eng., vol. 18, no. 3, pp. 206-214, Mar. 1992.
[34] A. Ulrich and H. Konig, “Specification-Based Testing of Concurrent Systems,” Proc. IFIP Joint Int'l Conf. Formal Description Techniques and Protocol Specification, Testing, and Verification (FORTE/PSTV '97), pp. 7-22, 1997.
[35] R.D. Yang and C.G. Chung, “A Path Analysis Approach to Concurrent Program Testing,” Information and Software Technology, vol. 34, no. 1, pp. 43-56, 1992.
[36] C. Yang, A.L. Souter, and L.L. Pollock, “All-du-Path Coverage for Parallel Programs,” Proc. Int'l Symp. Software Testing and Analysis (ISSTA), pp. 153-162, 1998.

Index Terms:
Software testing, reachability testing, concurrent programming.
Yu Lei, Richard H. Carver, "Reachability Testing of Concurrent Programs," IEEE Transactions on Software Engineering, vol. 32, no. 6, pp. 382-403, June 2006, doi:10.1109/TSE.2006.56
Usage of this product signifies your acceptance of the Terms of Use.