This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
Predictable and Progressive Testing of Multithreaded Code
May/June 2011 (vol. 28 no. 3)
pp. 75-83
Thomas Ball, Microsoft Research
Sebastian Burckhardt, Microsoft Research
Peli de Halleux, Microsoft Research
Madan Musuvathi, Microsoft Research
Shaz Qadeer, Microsoft Research
Developing concurrent software is hard. Testing concurrent software is harder. Although sequential program testing has many useful concepts, techniques, and tools (for example, assertions, unit testing, test-driven development, code coverage, and test generation tools), the testing workbench for concurrent programs is comparatively quite bare. Chess is a new testing tool for concurrent multithreaded programs. It repeatedly executes a multithreaded program, while guaranteeing predictable and deterministic scheduling and progressively exploring more schedules to uncover errors quickly.

1. H. Sutter and J. Larus, "Software and the Concurrency Revolution," Queue, vol. 3, no. 7, 2005, pp. 54–62.
2. M. Musuvathi et al., "Finding and Reproducing Heisenbugs in Concurrent Programs," Proc. 8th Usenix Symp. Operating System Design and Implementation (OSDI 08), Usenix Assoc., 2008, pp. 267–280.
3. P. Godefroid, Partial-Order Methods for the Verification of Concurrent Systems: An Approach to the State-Explosion Problem, Springer, 1996.
4. M. Musuvathi and S. Qadeer, "Iterative Context Bounding for Systematic Testing of Multithreaded Programs," Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation (PLDI 07), ACM Press, 2007, pp. 446–455.
5. J.-D. Choi et al., "Efficient and Precise Datarace Detection for Multithreaded Object-Oriented Programs," Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation (PLDI 02), ACM Press, 2002, pp. 258–269.
6. M. Musuvathi and S. Qadeer, "Fair Stateless Model Checking," Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation (PLDI 08), ACM Press, 2008, pp. 362–371.
7. P. Joshi et al., "A Randomized Dynamic Program Analysis Technique for Detecting Real Deadlocks," Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation (PLDI 09), ACM Press, 2009, pp. 110–120.
8. D.L. Dill et al., "Protocol Verification as a Hardware Design Aid," Proc. IEEE Int'l Conf. Computer Design: VLSI in Computers and Processors (ICCD 92), IEEE CS Press, 1992, pp. 522–525.
1. R.H. Carver and K.-C. Tai, "Replay and Testing for Concurrent Programs," IEEE Software, vol. 8, no. 2, 1991, pp. 66–74.
2. 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, 1995, pp. 493–510.
3. Y. Lei and R.H. Carver, "Reachability Testing of Concurrent Programs," IEEE Trans. Software Eng., vol. 32, no. 6, 2006, pp. 382–403.
4. P. Godefroid, "Model Checking for Programming Languages Using VeriSoft," Proc. 24th ACM Sigplan-Sigact Symp. Principles of Programming Languages (POPL 97), ACM Press, 1997, pp. 174–186.
5. M. Musuvathi and S. Qadeer, "Iterative Context Bounding for Systematic Testing of Multithreaded Programs," Proc. ACM Sigplan Conf. Programming Language Design and Implementation (PLDI 07), ACM Press, 2007, pp. 446–455.
6. M. Musuvathi and S. Qadeer, "Fair Stateless Model Checking," Proc. ACM Sigplan Conf. Programming Language Design and Implementation (PLDI 08), ACM Press, 2008, pp. 362–371.
7. O. Edelstein et al., "Framework for Testing Multi-threaded Java Programs," Concurrency and Computation: Practice and Experience, vol. 15, nos. 3–5, 2003, pp. 485–499.
8. P. Joshi et al., "CalFuzzer: An Extensible Active Testing Framework for Concurrent Programs," Proc. 21st Int'l Conf. Computer Aided Verification (CAV 09), LNCS 5643, Springer, 2009, pp. 675–681.
9. S. Park, S. Lu, and Y. Zhou, "CTrigger: Exposing Atomicity Violation Bugs from Their Hiding Places," Proc. 14th Int'l Conf. Architectural Support for Programming Languages and Operating Systems (ASPLOS 09), ACM Press, 2009, pp. 25–36.

Index Terms:
Chess, sequential program, concurrency, threads scheduling, testing, nondeterminism, software
Citation:
Thomas Ball, Sebastian Burckhardt, Peli de Halleux, Madan Musuvathi, Shaz Qadeer, "Predictable and Progressive Testing of Multithreaded Code," IEEE Software, vol. 28, no. 3, pp. 75-83, May-June 2011, doi:10.1109/MS.2010.64
Usage of this product signifies your acceptance of the Terms of Use.