Improving developers' confidence in test results of multi-threaded systems: avoiding early and late assertions

Testing multi-threaded systems is challenging, especially due to their inherent non-determinism. As a result, considering the same test, we can have success and failure results for different test executions. This may happen due to bugs that are only revealed on certain thread interleavings, and which are difficult to reproduce. However, this may also be caused by a problem with the test. When the latter case happens, developers may waste a lot of time searching a bug that does not exist, or they may lose trust in the test, maybe not investigating real bugs. With this work, we want to support tests development through an approach to avoid test failures caused by a common problem with multi-threaded systems testing: assertions performed too early or too late. The approach's basic idea is to use thread monitoring and other techniques to avoid such problems during the development of tests and hence increase the developers' confidence in test results.

[1]  David Holmes,et al.  Java Concurrency in Practice , 2006 .

[2]  Scott D. Stoller,et al.  Testing Concurrent Java Programs using Randomized Scheduling , 2002, RV@FLoC.

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

[4]  Shmuel Ur,et al.  Multi-threaded Testing with AOP Is Easy, and It Finds Bugs! , 2005, Euro-Par.

[5]  Doug Lea,et al.  Concurrent Programming In Java , 1996 .

[6]  Jun Chen,et al.  Choosing Among Alternative Futures , 2005, Haifa Verification Conference.

[7]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[8]  Gerard Meszaros,et al.  xUnit Test Patterns: Refactoring Test Code , 2007 .

[9]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[10]  Mary Jean Harrold,et al.  Testing: a roadmap , 2000, ICSE '00.

[11]  James R. Larus,et al.  Software and the Concurrency Revolution , 2005, ACM Queue.

[12]  Doug Lea,et al.  Concurrent programming in Java - design principles and patterns , 1996, Java series.