Patterns in Testing Concurrent Programs with Non-deterministic Behaviors

Concurrent programs are hard to test because of the nondeterminism inherit in them. Since non-determinism is one of the major sources of bugs, it is important to to be tested. We studied the test suites of four open source concurrent libraries and discovered that the tests fall into three different patterns. One of the patterns avoids testing nondeterminism while the other two control the schedule of the program execution to manage that.

[1]  William Pugh,et al.  Unit testing concurrent software , 2007, ASE.

[2]  Daniel Hoffman,et al.  Tool Support for Testing Concurrent Java Components , 2003, IEEE Trans. Software Eng..

[3]  Grigore Rosu,et al.  IMUnit: improved multithreaded unit testing , 2010, IWMSE '10.

[4]  Francisco Vilar Brasileiro,et al.  Improving Automated Testing of Multi-threaded Software , 2008, 2008 1st International Conference on Software Testing, Verification, and Validation.

[5]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[6]  Ralph E. Johnson,et al.  Setac : A Framework for Phased Deterministic Testing of Scala Actor Programs , 2011 .

[7]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .